Example #1
0
        public void OnPvpBattleComplete(PvpBattleEndResponse endResponse, object cookie)
        {
            CurrentPlayer currentPlayer = Service.Get <CurrentPlayer>();

            currentPlayer.BattleHistory.AddBattle(endResponse.BattleEntry);
            this.CurrentPvpTarget = null;
            CurrentBattle currentBattle = Service.Get <BattleController>().GetCurrentBattle();

            currentBattle.Attacker       = endResponse.BattleEntry.Attacker;
            currentBattle.Defender       = endResponse.BattleEntry.Defender;
            currentPlayer.AttackRating  += endResponse.BattleEntry.Attacker.AttackRatingDelta;
            currentPlayer.DefenseRating += endResponse.BattleEntry.Attacker.DefenseRatingDelta;
            if (endResponse.BattleEntry.Won)
            {
                CurrentPlayer expr_93    = currentPlayer;
                int           attacksWon = expr_93.AttacksWon;
                expr_93.AttacksWon = attacksWon + 1;
            }
            AchievementController achievementController = Service.Get <AchievementController>();

            achievementController.TryUnlockAchievementByValue(AchievementType.LootCreditsPvp, currentPlayer.BattleHistory.GetTotalPvpCreditsLooted());
            achievementController.TryUnlockAchievementByValue(AchievementType.LootAlloyPvp, currentPlayer.BattleHistory.GetTotalPvpMaterialLooted());
            achievementController.TryUnlockAchievementByValue(AchievementType.LootContrabandPvp, currentPlayer.BattleHistory.GetTotalPvpContrabandLooted());
            achievementController.TryUnlockAchievementByValue(AchievementType.PvpWon, currentPlayer.BattleHistory.GetTotalPvpWins());
            this.recentBattleList.Add(endResponse.BattleEntry);
            Service.Get <TournamentController>().OnPvpBattleComplete(endResponse.TournamentData, currentBattle.Attacker.TournamentRatingDelta);
        }
Example #2
0
        public PvpManager()
        {
            Service.Set <PvpManager>(this);
            this.recentBattleList = new List <BattleEntry>();
            this.CurrentPvpTarget = null;
            this.costByHqLevel    = new Dictionary <int, int>();
            string pVP_SEARCH_COST_BY_HQ_LEVEL = GameConstants.PVP_SEARCH_COST_BY_HQ_LEVEL;

            string[] array = pVP_SEARCH_COST_BY_HQ_LEVEL.Split(new char[]
            {
                ' '
            });
            this.costByHqLevel.Add(-1, Convert.ToInt32(array[0], CultureInfo.InvariantCulture));
            int i;

            for (i = 0; i < array.Length; i++)
            {
                int key   = i + 1;
                int value = Convert.ToInt32(array[i], CultureInfo.InvariantCulture);
                this.costByHqLevel.Add(key, value);
            }
            this.maxHqLevel = i;
            Service.Get <EventManager>().RegisterObserver(this, EventId.GameStateChanged, EventPriority.Default);
            this.pvpSearchTimerId = 0u;
        }
Example #3
0
        private void OnPvpTargetFound(PvpTarget target, object cookie)
        {
            this.KillSearchTimer();
            this.CurrentPvpTarget = target;
            int pvpMatchCost = this.GetPvpMatchCost();

            if (pvpMatchCost != target.CreditsCharged)
            {
                Service.Get <StaRTSLogger>().ErrorFormat("Pvp target credit cost mismatch. Client: {0}, Server: {1}", new object[]
                {
                    pvpMatchCost,
                    target.CreditsCharged
                });
            }
            else
            {
                GameUtils.SpendCurrency(target.CreditsCharged, 0, 0, false);
            }
            ISupportController supportController = Service.Get <ISupportController>();

            supportController.SimulateCheckAllContractsWithCurrentTime();
            supportController.SyncCurrentPlayerInventoryWithServer(target.AttackerDeployableServerData);
            this.OnTargetReady(target, false);
            Service.Get <UserInputInhibitor>().AllowAll();
        }
Example #4
0
        public void ReleasePvpTarget()
        {
            this.CurrentPvpTarget = null;
            PlayerIdChecksumRequest request = new PlayerIdChecksumRequest();
            PvpReleaseTargetcommand command = new PvpReleaseTargetcommand(request);

            Service.Get <ServerAPI>().Enqueue(command);
        }
Example #5
0
        private void OnTargetReady(PvpTarget target, bool isRevenge)
        {
            Service.Get <CurrentPlayer>().ProtectedUntil = 0u;
            BattleInitializationData data = BattleInitializationData.CreateFromPvpTargetData(target, isRevenge);
            IState currentState           = Service.Get <GameStateMachine>().CurrentState;

            if (currentState is BattleStartState)
            {
                BattleStartState.GoToBattleStartState((BattleStartState)currentState, data, new TransitionCompleteDelegate(this.OnBattleReady));
                return;
            }
            BattleStartState.GoToBattleStartState(data, new TransitionCompleteDelegate(this.OnBattleReady));
        }
Example #6
0
        public static BattleInitializationData CreateFromPvpTargetData(PvpTarget target, bool isRevenge)
        {
            BattleInitializationData battleInitializationData = new BattleInitializationData();

            battleInitializationData.RecordId   = target.BattleId;
            battleInitializationData.BattleType = BattleType.Pvp;
            CurrentPlayer currentPlayer = Service.CurrentPlayer;

            battleInitializationData.Attacker = new BattleParticipant(currentPlayer.PlayerId, currentPlayer.PlayerName, currentPlayer.Faction);
            battleInitializationData.Attacker.AttackRating  = currentPlayer.AttackRating;
            battleInitializationData.Attacker.DefenseRating = currentPlayer.DefenseRating;
            battleInitializationData.Defender = new BattleParticipant(target.PlayerId, target.PlayerName, target.PlayerFaction);
            battleInitializationData.Defender.AttackRating    = target.PlayerAttackRating;
            battleInitializationData.Defender.DefenseRating   = target.PlayerDefenseRating;
            battleInitializationData.AttackerDeployableData   = BattleDeploymentData.CreateEmpty();
            battleInitializationData.DefenderDeployableData   = BattleDeploymentData.CreateEmpty();
            battleInitializationData.AllowMultipleHeroDeploys = false;
            battleInitializationData.OverrideDeployables      = false;
            battleInitializationData.BattleLength             = GameConstants.PVP_MATCH_DURATION;
            battleInitializationData.PlanetId                     = target.BaseMap.Planet.Uid;
            battleInitializationData.LootCreditsAvailable         = target.AvailableCredits;
            battleInitializationData.LootMaterialsAvailable       = target.AvailableMaterials;
            battleInitializationData.LootContrabandAvailable      = target.AvailableContraband;
            battleInitializationData.BuildingLootCreditsMap       = target.BuildingLootCreditsMap;
            battleInitializationData.BuildingLootMaterialsMap     = target.BuildingLootMaterialsMap;
            battleInitializationData.BuildingLootContrabandMap    = target.BuildingLootContrabandMap;
            battleInitializationData.PvpTarget                    = target;
            battleInitializationData.VictoryConditions            = Service.VictoryConditionController.GetDefaultConditions();
            battleInitializationData.DefenderGuildTroopsAvailable = target.GuildDonatedTroops;
            battleInitializationData.DefenderChampionsAvailable   = target.Champions;
            battleInitializationData.AttackerGuildTroopsAvailable = BattleInitializationData.GetCurrentPlayerGuildTroops();
            battleInitializationData.DisabledBuildings            = new List <string>();
            for (int i = 0; i < target.Contracts.Count; i++)
            {
                if (target.Contracts[i].ContractType == ContractType.Build || target.Contracts[i].ContractType == ContractType.Upgrade)
                {
                    battleInitializationData.DisabledBuildings.Add(target.Contracts[i].BuildingKey);
                }
            }
            battleInitializationData.IsReplay          = false;
            battleInitializationData.IsRevenge         = isRevenge;
            battleInitializationData.AllowReplay       = true;
            battleInitializationData.AttackerEquipment = BattleInitializationData.GetCurrentPlayerEquipment(battleInitializationData.PlanetId);
            battleInitializationData.DefenderEquipment = target.Equipment;
            return(battleInitializationData);
        }
Example #7
0
 private void OnPvpRevengeFound(PvpTarget target, object cookie)
 {
     this.CurrentPvpTarget = target;
     this.OnTargetReady(target, true);
 }
Example #8
0
 private void OnPvpCheatTargetFound(PvpTarget target, object cookie)
 {
     this.CurrentPvpTarget = target;
     this.OnTargetReady(target, false);
     Service.Get <UserInputInhibitor>().AllowAll();
 }
Example #9
0
 public PvpMapDataLoader Initialize(BattleInitializationData battleData)
 {
     this.battleData = battleData;
     this.pvpTarget  = battleData.PvpTarget;
     return(this);
 }