Add RS badge flags

make logic generic
This commit is contained in:
Kurt
2018-07-07 17:01:47 -07:00
parent 990eb73f8a
commit d4c1093dd9
2 changed files with 22 additions and 21 deletions

View File

@@ -321,24 +321,30 @@ public int Badges
{
get
{
switch (Version)
{
case GameVersion.E: return BitConverter.ToUInt16(Data, BlockOfs[2] + 0x3FC) >> 7 & 0xFF;
case GameVersion.FRLG: return Data[BlockOfs[2] + 0x64];
default: return 0; // RS
}
int startFlag = BadgeFlagStart;
int val = 0;
for (int i = 0; i < 8; i++)
if (GetEventFlag(startFlag + i))
val |= 1 << i;
return val;
}
set
{
switch (Version)
{
case GameVersion.E:
var val = BitConverter.ToUInt16(Data, BlockOfs[2] + 0x3FC) & ~(0xFF << 7) | (value << 7);
BitConverter.GetBytes((ushort)val).CopyTo(Data, BlockOfs[2] + 0x3FC);
break;
case GameVersion.FRLG: Data[BlockOfs[2] + 0x64] = (byte)value; break;
default: return; // RS
}
int startFlag = BadgeFlagStart;
for (int i = 0; i < 8; i++)
SetEventFlag(startFlag + i, (value & (1 << i)) != 0);
}
}
private int BadgeFlagStart
{
get
{
if (Version == GameVersion.FRLG)
return 800; // dec
if (Version == GameVersion.RS)
return 0x807; // hex
return 0x867; // emerald
}
}
public override uint Money

View File

@@ -88,12 +88,7 @@ public SAV_SimpleTrainer(SaveFile sav)
if (SAV is SAV3 sav3)
{
GB_Map.Visible = false;
switch (sav3.Version)
{
case GameVersion.E: badgeval = sav3.Badges; break;
case GameVersion.FRLG: badgeval = sav3.Badges; break;
default: GB_Badges.Visible = false; break; // RS
}
badgeval = sav3.Badges;
L_Started.Visible = L_Fame.Visible = false;
CAL_AdventureStartDate.Visible = CAL_HoFDate.Visible = false;