private void MobileClientGarrisonDataRequestResultHandler(MobileClientGarrisonDataRequestResult msg) { PersistentFollowerData.ClearData(); PersistentMissionData.ClearData(); PersistentTalentData.ClearData(); if (this.GarrisonDataResetStartedAction != null) { this.GarrisonDataResetStartedAction.Invoke(); } GarrisonStatus.SetFaction(msg.PvpFaction); GarrisonStatus.SetGarrisonServerConnectTime(msg.ServerTime); GarrisonStatus.SetCurrencies(msg.GoldCurrency, msg.OilCurrency, msg.OrderhallResourcesCurrency); GarrisonStatus.SetCharacterName(msg.CharacterName); GarrisonStatus.SetCharacterLevel(msg.CharacterLevel); GarrisonStatus.SetCharacterClass(msg.CharacterClassID); uint num = 0u; while ((ulong)num < (ulong)((long)msg.Follower.GetLength(0))) { JamGarrisonFollower jamGarrisonFollower = msg.Follower[(int)((UIntPtr)num)]; PersistentFollowerData.AddOrUpdateFollower(jamGarrisonFollower); bool flag = (jamGarrisonFollower.Flags & 8) != 0; if (flag && jamGarrisonFollower.Durability <= 0) { Debug.Log("Follower " + jamGarrisonFollower.GarrFollowerID + " has expired."); if (this.TroopExpiredAction != null) { this.TroopExpiredAction.Invoke(jamGarrisonFollower); } } num += 1u; } uint num2 = 0u; while ((ulong)num2 < (ulong)((long)msg.Mission.GetLength(0))) { PersistentMissionData.AddMission(msg.Mission[(int)((UIntPtr)num2)]); num2 += 1u; } for (int i = 0; i < msg.Talent.GetLength(0); i++) { PersistentTalentData.AddOrUpdateTalent(msg.Talent[i]); } if (this.GarrisonDataResetFinishedAction != null) { this.GarrisonDataResetFinishedAction.Invoke(); } if (this.FollowerDataChangedAction != null) { this.FollowerDataChangedAction.Invoke(); } }