コード例 #1
0
        private void ProcessSkin(GeometryTag cookie)
        {
            if (!(cookie.geometry is TroopTypeVO))
            {
                return;
            }
            TroopTypeVO     troop         = cookie.geometry as TroopTypeVO;
            ProjectorConfig projector     = cookie.projector;
            TeamType        team          = TeamType.Attacker;
            CurrentBattle   currentBattle = Service.BattleController.GetCurrentBattle();

            if (currentBattle != null && !string.IsNullOrEmpty(currentBattle.MissionId))
            {
                CampaignMissionVO campaignMissionVO = Service.StaticDataController.Get <CampaignMissionVO>(currentBattle.MissionId);
                if (campaignMissionVO != null && campaignMissionVO.IsRaidDefense())
                {
                    team = TeamType.Defender;
                }
            }
            SkinTypeVO applicableSkin = this.GetApplicableSkin(troop, cookie.armory, cookie.battle, team);

            if (applicableSkin != null)
            {
                ProjectorConfig config = ProjectorUtils.GenerateGeometryConfig(applicableSkin, projector.FrameSprite, projector.closeup);
                projector.MakeEquivalentTo(config);
            }
        }
コード例 #2
0
 private void CompleteChain(ActionChain chain)
 {
     Service.Get <EventManager>().UnregisterObserver(this, EventId.StoryChainCompleted);
     if (chain == this.introChain)
     {
         this.processor.OnIntroHookComplete();
         return;
     }
     if (chain == this.successChain)
     {
         this.processor.OnSuccessHookComplete();
         if (Service.Get <CurrentPlayer>().CampaignProgress.FueInProgress)
         {
             return;
         }
         CampaignVO        campaignVO  = Service.Get <IDataController>().Get <CampaignVO>(this.MissionVO.CampaignUid);
         CampaignMissionVO lastMission = Service.Get <CampaignController>().GetLastMission(this.MissionVO.CampaignUid);
         bool flag  = this.MissionVO == lastMission;
         bool flag2 = Service.Get <CurrentPlayer>().CampaignProgress.GetTotalCampaignStarsEarned(campaignVO) >= campaignVO.TotalMasteryStars;
         if (flag | flag2)
         {
             if (Service.Get <GameStateMachine>().CurrentState is HomeState)
             {
                 Service.Get <ScreenController>().AddScreen(new CampaignCompleteScreen(campaignVO));
             }
             else
             {
                 Service.Get <EventManager>().RegisterObserver(this, EventId.MissionCompleteScreenDisplayed, EventPriority.Default);
             }
         }
         if (!(Service.Get <GameStateMachine>().CurrentState is HomeState))
         {
             Service.Get <EventManager>().RegisterObserver(this, EventId.WorldInTransitionComplete, EventPriority.Default);
             Service.Get <EventManager>().RegisterObserver(this, EventId.HomeStateTransitionComplete, EventPriority.Default);
             return;
         }
         if (!lastMission.IsRaidDefense())
         {
             Service.Get <ScreenController>().AddScreen(new MissionCompleteScreen(this.MissionVO));
             return;
         }
     }
     else
     {
         if (chain == this.failureChain)
         {
             this.processor.OnFailureHookComplete();
             return;
         }
         if (chain == this.GoalFailureChain)
         {
             this.processor.OnGoalFailureHookComplete();
         }
     }
 }
コード例 #3
0
        public void StartDefenseMission(CampaignMissionVO mission)
        {
            if (this.activeDefenseBattle)
            {
                Service.Logger.WarnFormat("Mission {0} is already in progress.  Cannot start Mission {1}.", new object[]
                {
                    this.currentMission.Uid,
                    mission.Uid
                });
                return;
            }
            this.troopController     = Service.TroopController;
            this.eventManager        = Service.EventManager;
            this.activeDefenseBattle = true;
            this.autoMoveCamera      = false;
            this.currentMission      = mission;
            this.randomizeWaves      = !mission.FixedWaves;
            this.waves         = DefensiveBattleController.ParseWaves(this.currentMission.Waves);
            this.wavesDeployed = 0;
            this.waveCount     = this.waves.Count;
            this.AllWavesClear = false;
            if (mission.IsRaidDefense())
            {
                Service.RaidDefenseController.OnStartRaidDefenseMission();
            }
            this.eventManager.RegisterObserver(this, EventId.EntityKilled, EventPriority.BeforeDefault);
            this.eventManager.RegisterObserver(this, EventId.UserStartedCameraMove, EventPriority.Default);
            this.eventManager.RegisterObserver(this, EventId.CameraFinishedMoving, EventPriority.Default);
            this.eventManager.RegisterObserver(this, EventId.PreEntityKilled, EventPriority.Default);
            this.eventManager.RegisterObserver(this, EventId.EntityHit, EventPriority.Default);
            TrapViewController  trapViewController = Service.TrapViewController;
            NodeList <TrapNode> trapNodeList       = Service.BuildingLookupController.TrapNodeList;

            for (TrapNode trapNode = trapNodeList.Head; trapNode != null; trapNode = trapNode.Next)
            {
                trapViewController.UpdateTrapVisibility((SmartEntity)trapNode.Entity);
            }
            Vector3 zero = Vector3.zero;

            Service.WorldInitializer.View.ZoomTo(0.7f);
            Service.WorldInitializer.View.PanToLocation(zero);
            this.DeployNextWave(0u, null);
        }
コード例 #4
0
        public static BattleInitializationData CreateFromDefensiveCampaignMissionVO(CampaignMissionVO vo)
        {
            StaticDataController staticDataController = Service.StaticDataController;
            string uid = vo.Uid;
            BattleInitializationData battleInitializationData = new BattleInitializationData();
            CurrentPlayer            currentPlayer            = Service.CurrentPlayer;

            battleInitializationData.Attacker   = new BattleParticipant(vo.OpponentName, vo.OpponentName, FactionType.Invalid);
            battleInitializationData.Defender   = new BattleParticipant(currentPlayer.PlayerId, currentPlayer.PlayerName, currentPlayer.Faction);
            battleInitializationData.PlanetId   = currentPlayer.Map.Planet.Uid;
            battleInitializationData.BattleType = BattleType.PveDefend;
            battleInitializationData.MissionUid = vo.Uid;
            BattleDeploymentData battleDeploymentData = new BattleDeploymentData();

            battleDeploymentData.TroopData = new Dictionary <string, int>();
            List <DefenseWave> list = DefensiveBattleController.ParseWaves(vo.Waves);

            foreach (DefenseWave current in list)
            {
                List <DefenseTroopGroup> list2 = DefensiveBattleController.ParseTroopGroups(uid, current.Encounter.WaveGroup, 0);
                foreach (DefenseTroopGroup current2 in list2)
                {
                    if (battleDeploymentData.TroopData.ContainsKey(current2.TroopUid))
                    {
                        Dictionary <string, int> dictionary;
                        string troopUid;
                        (dictionary = battleDeploymentData.TroopData)[troopUid = current2.TroopUid] = dictionary[troopUid] + current2.Quantity;
                    }
                    else
                    {
                        battleDeploymentData.TroopData.Add(current2.TroopUid, current2.Quantity);
                    }
                }
            }
            battleInitializationData.AttackerDeployableData = battleDeploymentData;
            if (vo.Map != null)
            {
                battleInitializationData.BattleVO = staticDataController.Get <BattleTypeVO>(vo.Map);
                battleInitializationData.AllowMultipleHeroDeploys = (battleInitializationData.BattleVO.MultipleHeroDeploys || vo.IsRaidDefense());
                battleInitializationData.OverrideDeployables      = battleInitializationData.BattleVO.OverridePlayerUnits;
                battleInitializationData.BattleLength             = battleInitializationData.BattleVO.BattleTime;
                battleInitializationData.DefenderDeployableData   = BattleDeploymentData.Copy(battleInitializationData.BattleVO);
            }
            else
            {
                battleInitializationData.DefenderDeployableData   = BattleDeploymentData.CreateEmpty();
                battleInitializationData.AllowMultipleHeroDeploys = vo.IsRaidDefense();
                battleInitializationData.OverrideDeployables      = false;
            }
            Inventory inventory = currentPlayer.Inventory;

            battleInitializationData.LootCreditsAvailable    = inventory.GetItemAmount("credits");
            battleInitializationData.LootMaterialsAvailable  = inventory.GetItemAmount("materials");
            battleInitializationData.LootContrabandAvailable = inventory.GetItemAmount("contraband");
            if (battleInitializationData.BattleLength == 0)
            {
                battleInitializationData.BattleLength = GameConstants.PVP_MATCH_DURATION;
            }
            battleInitializationData.BattleMusic       = vo.BattleMusic;
            battleInitializationData.AmbientMusic      = vo.AmbientMusic;
            battleInitializationData.VictoryConditions = vo.Conditions;
            if (!string.IsNullOrEmpty(vo.FailureCondition))
            {
                battleInitializationData.FailureCondition = staticDataController.Get <ConditionVO>(vo.FailureCondition);
            }
            battleInitializationData.DisabledBuildings = new List <string>();
            List <Contract> list3 = Service.ISupportController.FindAllContractsThatConsumeDroids();

            for (int i = 0; i < list3.Count; i++)
            {
                if (list3[i].DeliveryType != DeliveryType.ClearClearable)
                {
                    battleInitializationData.DisabledBuildings.Add(list3[i].ContractTO.BuildingKey);
                }
            }
            battleInitializationData.IsReplay    = false;
            battleInitializationData.IsRevenge   = false;
            battleInitializationData.AllowReplay = false;
            if (vo.IsRaidDefense() && Service.RaidDefenseController.SquadTroopDeployAllowed())
            {
                battleInitializationData.DefenderGuildTroopsAvailable = new Dictionary <string, int>();
                List <SquadDonatedTroop> troops = Service.SquadController.StateManager.Troops;
                for (int j = 0; j < troops.Count; j++)
                {
                    string troopUid2   = troops[j].TroopUid;
                    int    totalAmount = troops[j].GetTotalAmount();
                    if (battleInitializationData.DefenderGuildTroopsAvailable.ContainsKey(troopUid2))
                    {
                        Dictionary <string, int> dictionary;
                        string key;
                        (dictionary = battleInitializationData.DefenderGuildTroopsAvailable)[key = troopUid2] = dictionary[key] + totalAmount;
                    }
                    else
                    {
                        battleInitializationData.DefenderGuildTroopsAvailable.Add(troopUid2, totalAmount);
                    }
                }
            }
            battleInitializationData.AttackerEquipment = null;
            battleInitializationData.DefenderEquipment = BattleInitializationData.GetCurrentPlayerEquipment(battleInitializationData.PlanetId);
            return(battleInitializationData);
        }