public string GetAttribute(int player, PlayerOffsets attr) { string retVal = ""; int loc = GetPlayerDataStart(player) + (int)attr; int val = GameSaveData[loc]; switch (attr) { case PlayerOffsets.Position: retVal = GetPlayerPosition(player); break; case PlayerOffsets.PowerRunStyle: PowerRunStyle style = (PowerRunStyle)val; retVal = style.ToString(); break; case PlayerOffsets.Face: Face f = (Face)val; retVal = f.ToString(); break; case PlayerOffsets.JerseyNumber: val = GameSaveData[loc+1] << 5 & 0x60; val += GameSaveData[loc] >> 3 & 0x1f; retVal = val.ToString(); break; case PlayerOffsets.DOB: int year = (GameSaveData[loc + 2] & 0x0f) << 3; year += GameSaveData[loc + 1] >> 5; int day = GameSaveData[loc+1] & 0x1f; int month = (int)(GameSaveData[loc] >> 4); if (year > 54) year += 1900; else year += 2000; retVal = string.Concat(new object[] { month, "/", day, "/", year }); break; case PlayerOffsets.Weight: val += 150; retVal = val.ToString(); break; case PlayerOffsets.Height: int feet = val / 12; int inches = val % 12; retVal = string.Concat(feet, "\'", inches, "\""); break; case PlayerOffsets.College: retVal = GetCollege(player); break; case PlayerOffsets.PBP: case PlayerOffsets.Photo: val = GameSaveData[loc+1] << 8; val += GameSaveData[loc]; retVal = "" + val; switch (retVal.Length) { case 3: retVal = "0" + retVal; break; case 2: retVal = "00" + retVal; break; case 1: retVal = "000" + retVal; break; } break; default: retVal += val; break; } return retVal; }
public Player(int memoryAddress, ArraySegment <byte> originalBytes, IVersion version) : base(memoryAddress, originalBytes, version) { this.PlayerOffsets = new PlayerOffsets(version); }
public void SetAttribute(int player, PlayerOffsets attr, string stringVal) { int loc = GetPlayerDataStart(player) + (int)attr; int val = 0; int v1, v2, v3; switch (attr) { case PlayerOffsets.PowerRunStyle: PowerRunStyle style = (PowerRunStyle)Enum.Parse(typeof(PowerRunStyle), stringVal); SetByte(loc, (byte)style); break; case PlayerOffsets.Face: Face f = (Face)Enum.Parse(typeof(Face), stringVal); SetByte(loc, (byte)f); break; case PlayerOffsets.JerseyNumber: val = Int32.Parse(stringVal); v1 = GameSaveData[loc] & 7; v2 = GameSaveData[loc + 1] & 0xfc; v2 += val >> 5; v1 += (val & 0x1f ) << 3; SetByte(loc, (byte)v1); SetByte(loc + 1, (byte)v2); break; case PlayerOffsets.DOB: Match m = mDobRegex.Match(stringVal); if (m != Match.Empty) { int month = Int32.Parse(m.Groups[1].Value); int day = Int32.Parse(m.Groups[2].Value); int year = Int32.Parse(m.Groups[3].Value); if (year < 1954) year = 1954; else if (year > 2050) year = 2050; if (year > 2000) year -= 2000; else if (year > 1900) year -= 1900; v1 = (GameSaveData[loc] & 0x0f) + (month << 4); v2 = day; v2 += ((year & 7) << 5); v3 = GameSaveData[loc + 2] & 0xf0; v3 += (year >> 3); SetByte(loc, (byte)v1); SetByte(loc+1, (byte)v2); SetByte(loc+2, (byte)v3); } else throw new FormatException(String.Format("Error! DOB incorrectly formatted '{0}'", stringVal)); break; case PlayerOffsets.Weight: val = Int32.Parse(stringVal); val -= 150; SetByte(loc, (byte)val); break; case PlayerOffsets.Height: val = GetInches(stringVal); SetByte(loc, (byte)val); break; case PlayerOffsets.College: SetCollege(player, stringVal); break; case PlayerOffsets.Position: Positions p = (Positions)Enum.Parse(typeof(Positions), stringVal); SetByte(loc, (byte)p); break; case PlayerOffsets.PBP: case PlayerOffsets.Photo: val = Int32.Parse(stringVal); v1 = val & 0xff; v2 = val >> 8; SetByte(loc, (byte)v1); SetByte(loc + 1, (byte)v2); break; default: val = Int32.Parse(stringVal); SetByte(loc, (byte)val); break; } }
public Player(int memoryAddress, IVersion version) : base(memoryAddress, version) { this.PlayerOffsets = new PlayerOffsets(version); }