Exemple #1
0
 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;
 }
Exemple #2
0
 public Player(int memoryAddress, ArraySegment <byte> originalBytes, IVersion version)
     : base(memoryAddress, originalBytes, version)
 {
     this.PlayerOffsets = new PlayerOffsets(version);
 }
Exemple #3
0
        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;
            }
        }
Exemple #4
0
 public Player(int memoryAddress, IVersion version)
     : base(memoryAddress, version)
 {
     this.PlayerOffsets = new PlayerOffsets(version);
 }