MarkByte => MarkValue

Includes marking coloring for main form as well
changes type from byte to int
This commit is contained in:
Kaphotics 2016-10-30 19:15:48 -07:00
parent 91dfe269c9
commit d72db5ae72
15 changed files with 116 additions and 32 deletions

View file

@ -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)

View file

@ -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; } }

View file

@ -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); } }

View file

@ -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 { } }

View file

@ -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 { } }

View file

@ -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); } }

View file

@ -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; } }

View file

@ -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; } }

View file

@ -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); } }

View file

@ -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()
{

View file

@ -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;
}
}

View file

@ -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; } }

View file

@ -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";

View file

@ -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;
}
}

View file

@ -541,7 +541,7 @@ namespace PKHeX.Tests.PKM
}
}
public override byte MarkByte
public override int MarkValue
{
get
{