mirror of
https://github.com/kwsch/PKHeX
synced 2024-09-20 22:32:00 +00:00
MarkByte => MarkValue
Includes marking coloring for main form as well changes type from byte to int
This commit is contained in:
parent
91dfe269c9
commit
d72db5ae72
15 changed files with 116 additions and 32 deletions
|
@ -1448,14 +1448,31 @@ namespace PKHeX
|
|||
private void setMarkings()
|
||||
{
|
||||
PictureBox[] pba = { PB_Mark1, PB_Mark2, PB_Mark3, PB_Mark4, PB_Mark5, PB_Mark6 };
|
||||
for (int i = 0; i < 6; i++)
|
||||
pba[i].Image = Util.ChangeOpacity(pba[i].InitialImage, pkm.Markings[i] ? 1 : 0.1);
|
||||
for (int i = 0; i < pba.Length; i++)
|
||||
pba[i].Image = Util.ChangeOpacity(pba[i].InitialImage, pkm.Markings[i] != 0 ? 1 : 0.1);
|
||||
|
||||
PB_MarkShiny.Image = Util.ChangeOpacity(PB_MarkShiny.InitialImage, !BTN_Shinytize.Enabled ? 1 : 0.1);
|
||||
PB_MarkCured.Image = Util.ChangeOpacity(PB_MarkCured.InitialImage, CHK_Cured.Checked ? 1 : 0.1);
|
||||
|
||||
PB_MarkPentagon.Image = Util.ChangeOpacity(PB_MarkPentagon.InitialImage, pkm.Gen6 ? 1 : 0.1);
|
||||
|
||||
// Gen7 Markings
|
||||
if (pkm.Format != 7)
|
||||
return;
|
||||
|
||||
PB_MarkAlola.Image = Util.ChangeOpacity(PB_MarkAlola.InitialImage, pkm.Gen7 ? 1 : 0.1);
|
||||
for (int i = 0; i < pba.Length; i++)
|
||||
{
|
||||
switch (pkm.Markings[i])
|
||||
{
|
||||
case 1:
|
||||
pba[i].Image = Util.ChangeAllColorTo(pba[i].Image, Color.FromArgb(000, 191, 255));
|
||||
break;
|
||||
case 2:
|
||||
pba[i].Image = Util.ChangeAllColorTo(pba[i].Image, Color.FromArgb(255, 117, 179));
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
// Clicked Label Shortcuts //
|
||||
private void clickQR(object sender, EventArgs e)
|
||||
|
@ -1554,9 +1571,25 @@ namespace PKHeX
|
|||
{
|
||||
PictureBox[] pba = { PB_Mark1, PB_Mark2, PB_Mark3, PB_Mark4, PB_Mark5, PB_Mark6 };
|
||||
int index = Array.IndexOf(pba, sender);
|
||||
bool[] markings = pkm.Markings;
|
||||
markings[index] ^= true;
|
||||
pkm.Markings = markings;
|
||||
|
||||
// Handling Gens 3-6
|
||||
int[] markings = pkm.Markings;
|
||||
switch (pkm.Format)
|
||||
{
|
||||
case 3:
|
||||
case 4:
|
||||
case 5:
|
||||
case 6: // on/off
|
||||
markings[index] ^= 1; // toggle
|
||||
pkm.Markings = markings;
|
||||
break;
|
||||
case 7: // 0 (none) | 1 (blue) | 2 (pink)
|
||||
markings[index] = (markings[index]+1)%3; // cycle
|
||||
pkm.Markings = markings;
|
||||
break;
|
||||
default:
|
||||
return;
|
||||
}
|
||||
setMarkings();
|
||||
}
|
||||
private void clickStatLabel(object sender, MouseEventArgs e)
|
||||
|
|
|
@ -62,7 +62,7 @@ namespace PKHeX
|
|||
}
|
||||
public override int OT_Friendship { get { return Data[0x14]; } set { Data[0x14] = (byte)value; } }
|
||||
public override int Ability { get { return Data[0x15]; } set { Data[0x15] = (byte)value; } }
|
||||
public override byte MarkByte { get { return Data[0x16]; } protected set { Data[0x16] = value; } }
|
||||
public override int MarkValue { get { return Data[0x16]; } protected set { Data[0x16] = (byte)value; } }
|
||||
public override int Language { get { return Data[0x17]; } set { Data[0x17] = (byte)value; } }
|
||||
public override int EV_HP { get { return Data[0x18]; } set { Data[0x18] = (byte)value; } }
|
||||
public override int EV_ATK { get { return Data[0x19]; } set { Data[0x19] = (byte)value; } }
|
||||
|
|
|
@ -170,7 +170,7 @@ namespace PKHeX
|
|||
public override int AbilityNumber { get { return Data[0xCC]; } set { Data[0xCC] = (byte)(value & 1); } }
|
||||
public override bool Valid { get { return Data[0xCD] == 0; } set { if (value) Data[0xCD] = 0; } }
|
||||
// 0xCE unknown
|
||||
public override byte MarkByte { get { return Data[0xCF]; } protected set { Data[0xCF] = value; } }
|
||||
public override int MarkValue { get { return Data[0xCF]; } protected set { Data[0xCF] = (byte)value; } }
|
||||
public override int PKRS_Days { get { return Math.Max((sbyte)Data[0xD0], (sbyte)0); } set { Data[0xD0] = (byte)(value == 0 ? 0xFF : value & 0xF); } }
|
||||
public int ShadowID { get { return BigEndian.ToUInt16(Data, 0xD8); } set { BigEndian.GetBytes((ushort)value).CopyTo(Data, 0xD8); } }
|
||||
public int Purification { get { return BigEndian.ToInt32(Data, 0xDC); } set { BigEndian.GetBytes(value).CopyTo(Data, 0xDC); } }
|
||||
|
|
|
@ -240,7 +240,7 @@ namespace PKHeX
|
|||
public override int TSV => 0x0000;
|
||||
public override int PSV => 0xFFFF;
|
||||
public override int Characteristic => -1;
|
||||
public override byte MarkByte { get { return 0; } protected set { } }
|
||||
public override int MarkValue { get { return 0; } protected set { } }
|
||||
public override int CurrentFriendship { get { return 0; } set { } }
|
||||
public override int Ability { get { return 0; } set { } }
|
||||
public override int CurrentHandler { get { return 0; } set { } }
|
||||
|
|
|
@ -314,7 +314,7 @@ namespace PKHeX
|
|||
public override int TSV => 0x0000;
|
||||
public override int PSV => 0xFFFF;
|
||||
public override int Characteristic => -1;
|
||||
public override byte MarkByte { get { return 0; } protected set { } }
|
||||
public override int MarkValue { get { return 0; } protected set { } }
|
||||
public override int Ability { get { return 0; } set { } }
|
||||
public override int CurrentHandler { get { return 0; } set { } }
|
||||
public override int Egg_Location { get { return 0; } set { } }
|
||||
|
|
|
@ -55,7 +55,7 @@ namespace PKHeX
|
|||
Array.Resize(ref strdata, 7);
|
||||
strdata.CopyTo(Data, 0x14); } }
|
||||
|
||||
public override byte MarkByte { get { return Data[0x1B]; } protected set { Data[0x1B] = value; } }
|
||||
public override int MarkValue { get { return Data[0x1B]; } protected set { Data[0x1B] = (byte)value; } }
|
||||
public override ushort Checksum { get { return BitConverter.ToUInt16(Data, 0x1C); } set { BitConverter.GetBytes(value).CopyTo(Data, 0x1C); } }
|
||||
public override ushort Sanity { get { return BitConverter.ToUInt16(Data, 0x1E); } set { BitConverter.GetBytes(value).CopyTo(Data, 0x1E); } }
|
||||
|
||||
|
|
|
@ -43,7 +43,7 @@ namespace PKHeX
|
|||
public override uint EXP { get { return BitConverter.ToUInt32(Data, 0x10); } set { BitConverter.GetBytes(value).CopyTo(Data, 0x10); } }
|
||||
public override int OT_Friendship { get { return Data[0x14]; } set { Data[0x14] = (byte)value; } }
|
||||
public override int Ability { get { return Data[0x15]; } set { Data[0x15] = (byte)value; } }
|
||||
public override byte MarkByte { get { return Data[0x16]; } protected set { Data[0x16] = value; } }
|
||||
public override int MarkValue { get { return Data[0x16]; } protected set { Data[0x16] = (byte)value; } }
|
||||
public override int Language { get { return Data[0x17]; } set { Data[0x17] = (byte)value; } }
|
||||
public override int EV_HP { get { return Data[0x18]; } set { Data[0x18] = (byte)value; } }
|
||||
public override int EV_ATK { get { return Data[0x19]; } set { Data[0x19] = (byte)value; } }
|
||||
|
|
|
@ -43,7 +43,7 @@ namespace PKHeX
|
|||
public override uint EXP { get { return BitConverter.ToUInt32(Data, 0x10); } set { BitConverter.GetBytes(value).CopyTo(Data, 0x10); } }
|
||||
public override int OT_Friendship { get { return Data[0x14]; } set { Data[0x14] = (byte)value; } }
|
||||
public override int Ability { get { return Data[0x15]; } set { Data[0x15] = (byte)value; } }
|
||||
public override byte MarkByte { get { return Data[0x16]; } protected set { Data[0x16] = value; } }
|
||||
public override int MarkValue { get { return Data[0x16]; } protected set { Data[0x16] = (byte)value; } }
|
||||
public override int Language { get { return Data[0x17]; } set { Data[0x17] = (byte)value; } }
|
||||
public override int EV_HP { get { return Data[0x18]; } set { Data[0x18] = (byte)value; } }
|
||||
public override int EV_ATK { get { return Data[0x19]; } set { Data[0x19] = (byte)value; } }
|
||||
|
|
|
@ -93,7 +93,7 @@ namespace PKHeX
|
|||
public override int CNT_Smart { get { return Data[0x27]; } set { Data[0x27] = (byte)value; } }
|
||||
public override int CNT_Tough { get { return Data[0x28]; } set { Data[0x28] = (byte)value; } }
|
||||
public override int CNT_Sheen { get { return Data[0x29]; } set { Data[0x29] = (byte)value; } }
|
||||
public override byte MarkByte { get { return Data[0x2A]; } protected set { Data[0x2A] = value; } }
|
||||
public override int MarkValue { get { return Data[0x2A]; } protected set { Data[0x2A] = (byte)value; } }
|
||||
private byte PKRS { get { return Data[0x2B]; } set { Data[0x2B] = value; } }
|
||||
public override int PKRS_Days { get { return PKRS & 0xF; } set { PKRS = (byte)(PKRS & ~0xF | value); } }
|
||||
public override int PKRS_Strain { get { return PKRS >> 4; } set { PKRS = (byte)(PKRS & 0xF | value << 4); } }
|
||||
|
|
|
@ -70,8 +70,7 @@ namespace PKHeX
|
|||
}
|
||||
public override int Ability { get { return Data[0x14]; } set { Data[0x14] = (byte)value; } }
|
||||
public override int AbilityNumber { get { return Data[0x15]; } set { Data[0x15] = (byte)value; } }
|
||||
public int TrainingBagHits { get { return Data[0x16]; } set { Data[0x16] = (byte)value; } }
|
||||
public int TrainingBag { get { return Data[0x17]; } set { Data[0x17] = (byte)value; } }
|
||||
public override int MarkValue { get { return BitConverter.ToUInt16(Data, 0x16); } protected set { BitConverter.GetBytes((ushort)value).CopyTo(Data, 0x16); } }
|
||||
public override uint PID
|
||||
{
|
||||
get { return BitConverter.ToUInt32(Data, 0x18); }
|
||||
|
@ -93,7 +92,7 @@ namespace PKHeX
|
|||
public override int CNT_Smart { get { return Data[0x27]; } set { Data[0x27] = (byte)value; } }
|
||||
public override int CNT_Tough { get { return Data[0x28]; } set { Data[0x28] = (byte)value; } }
|
||||
public override int CNT_Sheen { get { return Data[0x29]; } set { Data[0x29] = (byte)value; } }
|
||||
public override byte MarkByte { get { return Data[0x2A]; } protected set { Data[0x2A] = value; } }
|
||||
// public override byte MarkValue { get { return Data[0x2A]; } protected set { Data[0x2A] = value; } }
|
||||
private byte PKRS { get { return Data[0x2B]; } set { Data[0x2B] = value; } }
|
||||
public override int PKRS_Days { get { return PKRS & 0xF; } set { PKRS = (byte)(PKRS & ~0xF | value); } }
|
||||
public override int PKRS_Strain { get { return PKRS >> 4; } set { PKRS = (byte)(PKRS & 0xF | value << 4); } }
|
||||
|
@ -423,7 +422,6 @@ namespace PKHeX
|
|||
public bool IsUntradedEvent6 => Geo1_Country == 0 && Geo1_Region == 0 && Met_Location / 10000 == 4 && Gen6;
|
||||
|
||||
// Complex Generated Attributes
|
||||
|
||||
public override int Characteristic
|
||||
{
|
||||
get
|
||||
|
@ -440,6 +438,27 @@ namespace PKHeX
|
|||
}
|
||||
}
|
||||
|
||||
public override int[] Markings
|
||||
{
|
||||
get
|
||||
{
|
||||
int[] marks = new int[8];
|
||||
int val = MarkValue;
|
||||
for (int i = 0; i < marks.Length; i++)
|
||||
marks[i] = (val >> (i*2)) & 3;
|
||||
return marks;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value.Length > 8)
|
||||
return;
|
||||
int v = 0;
|
||||
for (int i = 0; i < value.Length; i++)
|
||||
v |= (value[i] & 3) << (i*2);
|
||||
MarkValue = v;
|
||||
}
|
||||
}
|
||||
|
||||
// Methods
|
||||
public override byte[] Encrypt()
|
||||
{
|
||||
|
|
|
@ -121,7 +121,7 @@ namespace PKHeX
|
|||
public abstract int TSV { get; }
|
||||
public abstract int PSV { get; }
|
||||
public abstract int Characteristic { get; }
|
||||
public abstract byte MarkByte { get; protected set; }
|
||||
public abstract int MarkValue { get; protected set; }
|
||||
public abstract int Met_Location { get; set; }
|
||||
public abstract int Egg_Location { get; set; }
|
||||
public abstract int OT_Friendship { get; set; }
|
||||
|
@ -285,12 +285,12 @@ namespace PKHeX
|
|||
public bool PKRS_Cured => PKRS_Days == 0 && PKRS_Strain > 0;
|
||||
public virtual bool ChecksumValid => Checksum == CalculateChecksum();
|
||||
public int CurrentLevel => PKX.getLevel(Species, EXP);
|
||||
public bool MarkCircle { get { return (MarkByte & (1 << 0)) == 1 << 0; } set { MarkByte = (byte)(MarkByte & ~(1 << 0) | (value ? 1 << 0 : 0)); } }
|
||||
public bool MarkTriangle { get { return (MarkByte & (1 << 1)) == 1 << 1; } set { MarkByte = (byte)(MarkByte & ~(1 << 0) | (value ? 1 << 0 : 0)); } }
|
||||
public bool MarkSquare { get { return (MarkByte & (1 << 2)) == 1 << 2; } set { MarkByte = (byte)(MarkByte & ~(1 << 0) | (value ? 1 << 0 : 0)); } }
|
||||
public bool MarkHeart { get { return (MarkByte & (1 << 3)) == 1 << 3; } set { MarkByte = (byte)(MarkByte & ~(1 << 0) | (value ? 1 << 0 : 0)); } }
|
||||
public bool MarkStar { get { return (MarkByte & (1 << 4)) == 1 << 4; } set { MarkByte = (byte)(MarkByte & ~(1 << 0) | (value ? 1 << 0 : 0)); } }
|
||||
public bool MarkDiamond { get { return (MarkByte & (1 << 5)) == 1 << 5; } set { MarkByte = (byte)(MarkByte & ~(1 << 0) | (value ? 1 << 0 : 0)); } }
|
||||
public bool MarkCircle { get { return (MarkValue & (1 << 0)) == 1 << 0; } set { MarkValue = (byte)(MarkValue & ~(1 << 0) | (value ? 1 << 0 : 0)); } }
|
||||
public bool MarkTriangle { get { return (MarkValue & (1 << 1)) == 1 << 1; } set { MarkValue = (byte)(MarkValue & ~(1 << 0) | (value ? 1 << 0 : 0)); } }
|
||||
public bool MarkSquare { get { return (MarkValue & (1 << 2)) == 1 << 2; } set { MarkValue = (byte)(MarkValue & ~(1 << 0) | (value ? 1 << 0 : 0)); } }
|
||||
public bool MarkHeart { get { return (MarkValue & (1 << 3)) == 1 << 3; } set { MarkValue = (byte)(MarkValue & ~(1 << 0) | (value ? 1 << 0 : 0)); } }
|
||||
public bool MarkStar { get { return (MarkValue & (1 << 4)) == 1 << 4; } set { MarkValue = (byte)(MarkValue & ~(1 << 0) | (value ? 1 << 0 : 0)); } }
|
||||
public bool MarkDiamond { get { return (MarkValue & (1 << 5)) == 1 << 5; } set { MarkValue = (byte)(MarkValue & ~(1 << 0) | (value ? 1 << 0 : 0)); } }
|
||||
public Image Sprite => PKX.getSprite(this);
|
||||
public string ShowdownText => ShowdownSet.getShowdownText(this);
|
||||
public string[] QRText => PKX.getQRText(this);
|
||||
|
@ -343,13 +343,13 @@ namespace PKHeX
|
|||
}
|
||||
}
|
||||
|
||||
public bool[] Markings
|
||||
public virtual int[] Markings
|
||||
{
|
||||
get
|
||||
{
|
||||
bool[] mark = new bool[8];
|
||||
int[] mark = new int[8];
|
||||
for (int i = 0; i < 8; i++)
|
||||
mark[i] = ((MarkByte >> i) & 1) == 1;
|
||||
mark[i] = (MarkValue >> i) & 1;
|
||||
return mark;
|
||||
}
|
||||
set
|
||||
|
@ -358,8 +358,8 @@ namespace PKHeX
|
|||
return;
|
||||
byte b = 0;
|
||||
for (int i = 0; i < value.Length; i++)
|
||||
b |= (byte)(value[i] ? 1 << i : 0);
|
||||
MarkByte = b;
|
||||
b |= (byte)((value[i] & 1) << i);
|
||||
MarkValue = b;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -57,7 +57,7 @@ namespace PKHeX
|
|||
public override int Stat_Level { get { return Data[0x11]; } set { Data[0x11] = (byte)value; } }
|
||||
public override int CNT_Sheen { get { return Data[0x12]; } set { Data[0x12] = (byte)value; } }
|
||||
public override int PKRS_Strain { get { return Data[0x13] & 0xF; } set { Data[0x13] = (byte)(value & 0xF); } }
|
||||
public override byte MarkByte { get { return Data[0x14]; } protected set { Data[0x14] = value; } }
|
||||
public override int MarkValue { get { return Data[0x14]; } protected set { Data[0x14] = (byte)value; } }
|
||||
public override int PKRS_Days { get { return Math.Max((sbyte)Data[0x15], (sbyte)0); } set { Data[0x15] = (byte)(value == 0 ? 0xFF : value & 0xF); } }
|
||||
// 0x16-0x1C Battle Related
|
||||
private int XDPKMFLAGS { get { return Data[0x1D]; } set { Data[0x1D] = (byte)value; } }
|
||||
|
|
|
@ -63,7 +63,7 @@ namespace PKHeX
|
|||
public int Smart => pkm.CNT_Smart;
|
||||
public int Tough => pkm.CNT_Tough;
|
||||
public int Sheen => pkm.CNT_Sheen;
|
||||
public int Markings => pkm.MarkByte;
|
||||
public int Markings => pkm.MarkValue;
|
||||
|
||||
public string NotOT => pkm.Format > 5 ? ((PK6) pkm).HT_Name : "N/A";
|
||||
|
||||
|
|
|
@ -41,6 +41,38 @@ namespace PKHeX
|
|||
Marshal.Copy(data, 0, ptr, len);
|
||||
bmp.UnlockBits(bmpData);
|
||||
|
||||
return bmp;
|
||||
}
|
||||
internal static Bitmap ChangeAllColorTo(Image img, Color c)
|
||||
{
|
||||
if (img == null)
|
||||
return null;
|
||||
if (img.PixelFormat.HasFlag(PixelFormat.Indexed))
|
||||
return (Bitmap)img;
|
||||
|
||||
Bitmap bmp = (Bitmap)img.Clone();
|
||||
BitmapData bmpData = bmp.LockBits(new Rectangle(0, 0, bmp.Width, bmp.Height), ImageLockMode.ReadWrite, PixelFormat.Format32bppArgb);
|
||||
IntPtr ptr = bmpData.Scan0;
|
||||
|
||||
int len = bmp.Width * bmp.Height * 4;
|
||||
byte[] data = new byte[len];
|
||||
|
||||
Marshal.Copy(ptr, data, 0, len);
|
||||
|
||||
byte R = c.R;
|
||||
byte G = c.G;
|
||||
byte B = c.B;
|
||||
for (int i = 0; i < data.Length; i += 4)
|
||||
if (data[i + 3] != 0)
|
||||
{
|
||||
data[i + 0] = B;
|
||||
data[i + 1] = G;
|
||||
data[i + 2] = R;
|
||||
}
|
||||
|
||||
Marshal.Copy(data, 0, ptr, len);
|
||||
bmp.UnlockBits(bmpData);
|
||||
|
||||
return bmp;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -541,7 +541,7 @@ namespace PKHeX.Tests.PKM
|
|||
}
|
||||
}
|
||||
|
||||
public override byte MarkByte
|
||||
public override int MarkValue
|
||||
{
|
||||
get
|
||||
{
|
||||
|
|
Loading…
Reference in a new issue