An abstract implemtation of IPlayer. This class contains all the code common to both OwnerPlayers and ProxyPlayers. This class handles any IPlayer fields that need to be synchronized by simply forwarding the gets and sets to the corresponding fields in the PlayerState.
Inheritance: MonoBehaviour, IPlayer
        internal override void ComputePlayerCombatReplayActors(AbstractPlayer p, ParsedEvtcLog log, CombatReplay replay)
        {
            List <AbstractBuffEvent> eggs = GetFilteredList(log.CombatData, 31623, p, true, true);
            int eggStart = 0;

            foreach (AbstractBuffEvent c in eggs)
            {
                if (c is BuffApplyEvent)
                {
                    eggStart = (int)c.Time;
                }
                else
                {
                    int eggEnd = (int)c.Time;
                    replay.Decorations.Add(new CircleDecoration(true, 0, 180, (eggStart, eggEnd), "rgba(255, 160, 0, 0.3)", new AgentConnector(p)));
                }
            }
        }
Exemple #2
0
        static void Main(string[] args)
        {
            PlayerDataBase playerDataBase = new PlayerDataBase();

            playerDataBase.AddNewPlayer(new Player("青羊小霸王"));
            playerDataBase.AddNewPlayer(new Player("武侯一霸"));

            AbstractPlayer player = playerDataBase.GetPlayer("青羊小霸王");

            player.Show();


            player = playerDataBase.GetPlayer("武侯一霸");
            player.Show();

            player = playerDataBase.GetPlayer("高新区方少");
            player.Show();
        }
Exemple #3
0
        internal override void ComputePlayerCombatReplayActors(AbstractPlayer p, ParsedEvtcLog log, CombatReplay replay)
        {
            var spiritTransform = log.CombatData.GetBuffData(SkillIDs.FracturedSpirit).Where(x => x.To == p.AgentItem && x is BuffApplyEvent).ToList();

            foreach (AbstractBuffEvent c in spiritTransform)
            {
                int duration = 30000;
                AbstractBuffEvent removedBuff = log.CombatData.GetBuffRemoveAllData(SkillIDs.MortalCoilStatueOfDeath).FirstOrDefault(x => x.To == p.AgentItem && x.Time > c.Time && x.Time < c.Time + duration);
                int start = (int)c.Time;
                int end   = start + duration;
                if (removedBuff != null)
                {
                    end = (int)removedBuff.Time;
                }
                replay.Decorations.Add(new CircleDecoration(true, 0, 100, (start, end), "rgba(0, 50, 200, 0.3)", new AgentConnector(p)));
                replay.Decorations.Add(new CircleDecoration(true, start + duration, 100, (start, end), "rgba(0, 50, 200, 0.5)", new AgentConnector(p)));
            }
        }
 /**
  * 添加一个
  */
 public void add(AbstractPlayer p)
 {
     //如果重复则返回
     if (list.Contains(p))
     {
         return;
     }
     //若达到上限则删除第一个再添加
     if (list.Count() >= limit)
     {
         list.RemoveAt(0);
         list.Add(p);
     }
     else
     {
         list.Add(p);
     }
 }
        /// <summary>
        /// 计算两个玩家之间的距离
        /// 两者各按逆时针计算,取最小值
        /// </summary>
        /// <param name="p"></param>
        /// <returns></returns>
        public int GetDistance(AbstractPlayer p)
        {
            AbstractPlayer pNext = player.GetNextPlayer();
            int            i     = 1;
            int            j     = 1;

            while (pNext != p)
            {
                i++;
                pNext = pNext.GetNextPlayer();
            }
            pNext = p.GetNextPlayer();
            while (pNext != player)
            {
                j++;
                pNext = pNext.GetNextPlayer();
            }
            return(i <= j ? i : j);
        }
Exemple #6
0
        internal override void ComputePlayerCombatReplayActors(AbstractPlayer p, ParsedEvtcLog log, CombatReplay replay)
        {
            IReadOnlyList <AbstractCastEvent> cls = p.GetCastEvents(log, 0, log.FightData.FightEnd);
            var shieldCast = cls.Where(x => x.SkillId == 52780).ToList();

            foreach (AbstractCastEvent c in shieldCast)
            {
                int     start         = (int)c.Time;
                int     duration      = 10000;
                int     radius        = 300;
                Point3D shieldNextPos = replay.PolledPositions.FirstOrDefault(x => x.Time >= start);
                Point3D shieldPrevPos = replay.PolledPositions.LastOrDefault(x => x.Time <= start);
                if (shieldNextPos != null || shieldPrevPos != null)
                {
                    replay.Decorations.Add(new CircleDecoration(true, 0, radius, (start, start + duration), "rgba(255, 0, 255, 0.1)", new InterpolatedPositionConnector(shieldPrevPos, shieldNextPos, start)));
                    replay.Decorations.Add(new CircleDecoration(false, 0, radius, (start, start + duration), "rgba(255, 0, 255, 0.3)", new InterpolatedPositionConnector(shieldPrevPos, shieldNextPos, start)));
                }
            }
        }
        /// <summary>
        ///  重写use 在目标玩家的所有牌中选择一张 删除
        /// </summary>
        /// <param name="AbstractPlayer"></param>
        public new void Use(AbstractPlayer p, List <AbstractPlayer> players)
        {
            base.Use(p, players);
            // 触发技能
            p.GetTrigger().AfterMagic();

            // 如果无懈,则return
            AskWuXieKeJi(p, players);
            if (isWuXie)
            {
                //ViewManagement.getInstance().printBattleMsg(GetName() + "无效");
                //ViewManagement.getInstance().refreshAll();
                return;
            }
            if (p.GetState().IsAI())
            {
                AbstractPlayer target = players.ElementAt(0);
                if (target.GetState().GetCardList().Count() > 0)
                {
                    AbstractCard c = target.GetState().GetCardList().ElementAt(0);
                    target.GetAction().RemoveCard(c);
                    c.Gc();
                    //ModuleManagement.getInstance().getBattle().addOneCard(c);
                    p.RefreshView();
                    target.RefreshView();
                }
            }
            else
            {
                // pc = (Panel_Control)p.getPanel();
                //ps = new Panel_SelectCard(p, targetPlayers.ElementAt(0),
                //        Panel_SelectCard.CHAI);
                //// 显示选择面板等待处理
                //try {
                //    SwingUtilities.invokeAndWait(run);
                //} catch (InterruptedException e) {
                //    e.printStackTrace();
                //} catch (InvocationTargetException e) {
                //    e.printStackTrace();
                //}
            }
        }
 /**
  * 牌的丢弃方法,提供一些通用操作
  */
 public void throwIt(AbstractPlayer p)
 {
     // 当前出牌区域清空
     p.GetState().GetUsedCard().Clear();
     // 手牌中删除
     p.GetAction().RemoveCard(this);
     if (!p.GetState().IsAI())
     {
         p.UpdateCards();
     }
     // 放入当前出牌区
     // p.getState().getUsedCard().add(this);
     //// 战场中添加
     //ModuleManagement.getInstance().getBattle().addOneCard(this);
     // 丢入弃牌堆
     Gc();
     //// 打印消息
     //ViewManagement.getInstance().printMsg(
     //        p.getInfo().getName() + "丢弃" + this.ToString());
 }
Exemple #9
0
    public void DetermineState(AbstractPlayer player)
    {
        if (!fam.CanShoot())
        {
            SetState("no_uses");
            return;
        }

        if (player.GetActiveFamiliar().GetComponent <BaseFamiliar>() == fam)
        {
            // we are active
            if (fam.requiresTarget && player.focusedThing == null)
            {
                SetState("no_target");
                return;
            }
        }

        SetState("default");
    }
Exemple #10
0
    public void Use(AbstractPlayer _player, AbstractMonster _monster)
    {
        bool          tIsPowerExist = false;
        AbstractPower tPower;

        for (int i = 0; i < _player.powers.Count; i++)
        {
            tPower = _player.powers[i];
            if (tPower.ID.Equals("Barricade"))
            {
                tIsPowerExist = true;
                break;
            }
        }

        if (!tIsPowerExist)
        {
            AbstractDungeon.ActionManager.AddToBottom(new ApplyPowerAction(_player, _player, new BarricadePower(_player)));
        }
    }
 /// <summary>
 /// 牌的use方法,提供一些通用操作
 /// </summary>
 /// <param name="p"></param>
 /// <param name="players"></param>
 public void Use(AbstractPlayer p, List <AbstractPlayer> players)
 {
     //// 清空战场
     //ModuleManagement.getInstance().getBattle().clear();
     // 当前出牌区域清空
     p.GetState().GetUsedCard().Clear();
     // 放入当前出牌区
     p.GetState().GetUsedCard().Add(this);
     // 手牌中删除
     p.GetAction().RemoveCard(this);
     //// 战场中添加
     //ModuleManagement.getInstance().getBattle().addOneCard(this);
     // 丢入弃牌堆
     Gc();
     // 使用者手牌刷新
     // 此处注释掉的原因是如果在这里刷新,会把一些状态数值给刷掉
     // 所以刷新留到子类具体实现的时候视情况再用
     // p.refreshView();
     DrawEffect(p, players);
 }
 /// <summary>
 /// 被动响应打出
 /// </summary>
 /// <param name="p"></param>
 /// <param name="players"></param>
 /// <returns></returns>
 public bool RequestUse(AbstractPlayer p,
                        List <AbstractPlayer> players)
 {
     // 当前出牌区域清空
     p.GetState().GetUsedCard().Clear();
     // 放入当前出牌区
     p.GetState().GetUsedCard().Add(this);
     // 手牌中删除
     p.GetAction().RemoveCard(this);
     //// 战场中添加
     //ModuleManagement.getInstance().getBattle().addOneCard(this);
     // 丢入弃牌堆
     Gc();
     //// 打印消息
     //ViewManagement.getInstance().printBattleMsg(
     //p.getInfo().getName() + "打出" + this.ToString());
     // 使用者手牌刷新
     p.RefreshView();
     return(true);
 }
Exemple #13
0
        internal override void ComputePlayerCombatReplayActors(AbstractPlayer p, ParsedEvtcLog log, CombatReplay replay)
        {
            List <AbstractBuffEvent> boltBreaks = GetFilteredList(log.CombatData, BoltBreak, p, true, true);
            int boltBreakStart = 0;

            foreach (AbstractBuffEvent c in boltBreaks)
            {
                if (c is BuffApplyEvent)
                {
                    boltBreakStart = (int)c.Time;
                }
                else
                {
                    int boltBreakEnd = (int)c.Time;
                    int radius       = 180;
                    replay.Decorations.Add(new CircleDecoration(true, 0, radius, (boltBreakStart, boltBreakEnd), "rgba(255, 150, 0, 0.3)", new AgentConnector(p)));
                    replay.Decorations.Add(new CircleDecoration(true, boltBreakEnd, radius, (boltBreakStart, boltBreakEnd), "rgba(255, 150, 0, 0.3)", new AgentConnector(p)));
                }
            }
        }
 /// <summary>
 /// 询问无懈可击
 /// 无懈可击的实现方法: 锦囊牌中都有一个bool值表示是否被无懈 这个方法用来询问场上是否有无懈,如果打出无懈则将bool值取反
 /// 锦囊最终将在子类具体实现时候根据bool值判定是否发动效果</summary>
 /// <param name="p"></param>
 /// <param name="players"></param>
 public void AskWuXieKeJi(AbstractPlayer p, List <AbstractPlayer> players)
 {
     //if (HasWuxiekejiInBattle())
     //{
     //    p.RefreshView();
     //    Console.WriteLine("场上有无懈");
     //    // 询问无懈
     //    List<AbstractPlayer> askPlayers = ModuleManagement.getInstance()
     //            .getPlayerList();
     //    for (int i = 0; i < askPlayers.Count(); i++)
     //    {
     //        // 如果有人出无懈
     //        if (askPlayers.ElementAt(i).GetRequest().RequestWuXie())
     //        {
     //            isWuXie = true;
     //            break;
     //        }
     //    }
     //}
 }
        private void ProcessJoinResponses(LoginRequest request, AbstractPlayer newPlayer)
        {
            foreach (var targetLogin in serverInputService.LoginResponses.Keys)
            {
                if (targetLogin == request.Login)
                {
                    continue;
                }

                var response = new ServerResponse
                {
                    Type  = ResponseType.PlayerJoin,
                    Login = request.Login,
                    Pair  = new Pair {
                        Y = newPlayer.Position.Y, X = newPlayer.Position.X
                    }
                };
                serverInputService.LoginResponses[targetLogin].Enqueue(response);
            }
        }
Exemple #16
0
        public override void Execute()
        {
            if (!(Actor is AbstractPlayer))
            {
                return;
            }

            AbstractPlayer player       = (AbstractPlayer)Actor;
            MapBlock       currentBlock = player.Position;

            if (currentBlock == null || currentBlock.Item == null)
            {
                throw new NoItemToPickUpException(player);
            }
            else if (currentBlock.Item is AbstractInventoryItem)
            {
                // normal item, just pick it up
                if (player.IsInventoryFull())
                {
                    throw new InventoryIsFullException(player);
                }

                player.AddItemToInventory((AbstractInventoryItem)(currentBlock.PickUpItem()));
            }
            else if (currentBlock.Item is AbstractWeapon)
            {
                // weapon
                AbstractWeapon oldWeapon = player.SwapWeapon((AbstractWeapon)(currentBlock.PickUpItem()));
                currentBlock.Item = oldWeapon;
            }
            else if (currentBlock.Item is AbstractArmor)
            {
                // armor
                AbstractArmor oldArmor = player.SwapArmor((AbstractArmor)(currentBlock.PickUpItem()));
                currentBlock.Item = oldArmor;
            }
            else
            {
                throw new PickUpUnknownItemException(player, currentBlock.Item);
            }
        }
        internal override void ComputePlayerCombatReplayActors(AbstractPlayer p, ParsedEvtcLog log, CombatReplay replay)
        {
            // Bombs
            List <AbstractBuffEvent> xeraFury = GetFilteredList(log.CombatData, XerasFury, p, true, true);
            int xeraFuryStart = 0;

            foreach (AbstractBuffEvent c in xeraFury)
            {
                if (c is BuffApplyEvent)
                {
                    xeraFuryStart = (int)c.Time;
                }
                else
                {
                    int xeraFuryEnd = (int)c.Time;
                    replay.Decorations.Add(new CircleDecoration(true, 0, 550, (xeraFuryStart, xeraFuryEnd), "rgba(200, 150, 0, 0.2)", new AgentConnector(p)));
                    replay.Decorations.Add(new CircleDecoration(true, xeraFuryEnd, 550, (xeraFuryStart, xeraFuryEnd), "rgba(200, 150, 0, 0.4)", new AgentConnector(p)));
                }
            }
            //fixated Statue
            var fixatedStatue       = GetFilteredList(log.CombatData, StatueFixated1, p, true, true).Concat(GetFilteredList(log.CombatData, StatueFixated2, p, true, true)).ToList();
            int fixationStatueStart = 0;
            NPC statue = null;

            foreach (AbstractBuffEvent c in fixatedStatue)
            {
                if (c is BuffApplyEvent)
                {
                    fixationStatueStart = (int)c.Time;
                    statue = TrashMobs.FirstOrDefault(x => x.AgentItem == c.CreditedBy);
                }
                else
                {
                    int fixationStatueEnd = (int)c.Time;
                    if (statue != null)
                    {
                        replay.Decorations.Add(new LineDecoration(0, (fixationStatueStart, fixationStatueEnd), "rgba(255, 0, 255, 0.5)", new AgentConnector(p), new AgentConnector(statue)));
                    }
                }
            }
        }
Exemple #18
0
    public void Cast(AbstractPlayer player, BaseFamiliar fam, float travelTime)
    {
        this.player       = player;
        this.fam          = fam;
        this.travelTime   = travelTime;
        this.focusedThing = player.focusedThing;

        if (player.focusedThing != null)
        {
            destinationTransform = player.focusedThing.transform;
        }
        destination   = Camera.main.ScreenToWorldPoint(Input.mousePosition);
        destination.z = 0.0f;

        wasCast = true;

        foreach (IOnCast oc in OnCastEffects)
        {
            oc.Action(this);
        }
    }
Exemple #19
0
    virtual public bool DoAbility(AbstractPlayer player, Vector3 pos)
    {
        var ce = (GameObject)Instantiate(
            Resources.Load("Effects/CastEffect") as GameObject,
            player.transform.position,
            player.transform.rotation
            );
        var spell = ce.GetComponent <Spell>();

        spell.destination = pos;

        if (!QueueAbilities(spell))
        {
            return(false);
        }
        ;

        spell.Cast(player, this, 1.0f);

        return(true);
    }
        private FinalDPS GetFinalDPS(AbstractPlayer player, int phaseIndex, Boss target)
        {
            PhaseData phase         = _statistics.Phases[phaseIndex];
            double    phaseDuration = (phase.GetDuration()) / 1000.0;
            double    damage;
            double    dps   = 0.0;
            FinalDPS  final = new FinalDPS();

            //DPS
            damage = player.GetDamageLogs(target, _log,
                                          phase.Start, phase.End).Sum(x => x.Damage);

            if (phaseDuration > 0)
            {
                dps = damage / phaseDuration;
            }
            final.Dps    = (int)dps;
            final.Damage = (int)damage;
            //Condi DPS
            damage = player.GetDamageLogs(target, _log,
                                          phase.Start, phase.End).Where(x => x.IsCondi > 0).Sum(x => x.Damage);

            if (phaseDuration > 0)
            {
                dps = damage / phaseDuration;
            }
            final.CondiDps    = (int)dps;
            final.CondiDamage = (int)damage;
            //Power DPS
            damage = final.Damage - final.CondiDamage;
            if (phaseDuration > 0)
            {
                dps = damage / phaseDuration;
            }
            final.PowerDps          = (int)dps;
            final.PowerDamage       = (int)damage;
            final.PlayerPowerDamage = player.GetJustPlayerDamageLogs(target, _log,
                                                                     phase.Start, phase.End).Where(x => x.IsCondi == 0).Sum(x => x.Damage);
            return(final);
        }
Exemple #21
0
        public BattlefieldViewInteractionService(
            BattlefieldView battlefieldView,
            BattlefieldViewStyleUpdateService battlefieldViewStyleUpdateService,
            AbstractPlayer player = null
            )
        {
            BattlefieldView = battlefieldView;
            BattlefieldViewStyleUpdateService = battlefieldViewStyleUpdateService;
            Player = player;

            foreach (var coordinateView in BattlefieldView.Children.OfType <CoordinateView>())
            {
                coordinateView.MouseEnter               += CoordinateView_MouseEnter;
                coordinateView.MouseLeftButtonDown      += CoordinateView_MouseLeftButtonDown;
                coordinateView.PreviewMouseLeftButtonUp += CoordinateView_PreviewMouseLeftButtonUp;
                coordinateView.MouseLeftButtonUp        += CoordinateView_MouseLeftButtonUp;
                coordinateView.MouseLeave               += CoordinateView_MouseLeave;
                coordinateView.Coordinate.OnChecked     += Coordinate_OnChecked;
            }

            BattlefieldViewStyleUpdateService.UpdateStyle();
        }
Exemple #22
0
        /// <summary>
        /// Returns a list of the opponent's AbstractPieces that aren't captured .
        /// </summary>
        /// <param name="oppositeSide"></param>
        /// <returns></returns>
        public List <AbstractPiece> getNotCapturedEnemies(AbstractPlayer oppositeSide)
        {
            List <AbstractPiece> enemyPieces = new List <AbstractPiece>();

            for (int x = 0; x < 8; x++)
            {
                for (int y = 0; y < 8; y++)
                {
                    for (int z = 0; z < thirdDimension; z++)
                    {
                        if (matrix[x, y, z] != null)
                        {
                            if ((matrix[x, y, z].player != oppositeSide) && (!matrix[x, y, z].IsCaptured))
                            {
                                enemyPieces.Add(matrix[x, y, z]);
                            }
                        }
                    }
                }
            }
            return(enemyPieces);
        }
Exemple #23
0
    //Sponsor Logic is the same for both Ai variants this method returns a false value if it will not sponsor the quest and a true if it will
    // Ai will only sponsor if it Can Sponsor which is a bool i asumed is determined by Quest and if case 1 is false Ai will often sponsor a quest if able
    public bool SponserQuest(List <GameObject> pl, int reward, QuestController Qc, bool CanSponsor)
    {
        int r = 0;

        if (CanSponsor)
        {
            for (int i = 0; i < pl.Count; i++)
            {
                AbstractPlayer tempPlayer = pl[i].GetComponent <AbstractPlayer>();
                r = tempPlayer.PlayerRank.rank;
                if (reward + tempPlayer.PlayerRank.Sheild >= lv[r])
                {
                    return(false);
                }
            }
            return(true);
        }
        else
        {
            return(false);
        }
    }
Exemple #24
0
 virtual public bool ConsumeShot(AbstractPlayer player, Vector3 pos)
 {
     if (energy >= baseEnergyPerUse)
     {
         if (requiresTarget && player.focusedThing == null)
         {
             return(false);
         }
         else
         {
             var ret = DoAbility(player, pos);
             if (ret)
             {
                 energy -= baseEnergyPerUse;
             }
             return(ret);
         }
     }
     else
     {
         return(false);
     }
 }
Exemple #25
0
        void OnGameOver(AbstractPlayer winner)
        {
            int difficulty = PlayerProfile.PreferredDifficulty;

            // Update player stats
            if (winner == null)
            {
                PlayerProfile.Draws.IncrementValue(difficulty);
            }
            else if (winner is IUserControlledPlayer)
            {
                PlayerProfile.Wins.IncrementValue(difficulty);
            }
            else
            {
                PlayerProfile.Losses.IncrementValue(difficulty);
            }

            _machine.changeState <GameoverState>();
            _context.hudManager.ChangeGameState(GameState.GameOver, winner);

            this.PlayGameOverSFX(winner);
        }
 /// <summary>
 /// 执行杀牌的杀流程
 /// </summary>
 /// <param name="p"></param>
 /// <param name="toP"></param>
 public void ExecuteSha(AbstractPlayer p, AbstractPlayer toP)
 {
     if (!toP.GetAction().AvoidSha(p, this))
     {
         // 如果使用者带武器,则调用武器的杀
         AbstractWeaponCard awc = (AbstractWeaponCard)p.GetState()
                 .GetEquipment().GetWeapons();
         if (awc != null)
         {
             awc.ShaWithEquipment(p, toP, this);
         }
         else
         {
             // 判定防具
             IArmor am = (IArmor)toP.GetState().GetEquipment().GetArmor();
             if (am == null || !am.Check(this, toP))
             {
                 p.GetAction().Sha(toP);
             }
         }
     }
     p.RefreshView();
 }
    public void CalculateWinner()
    {
        HandleTextFile.WriteLog("Action Log: Calculate Tournament Winner", GameControler.SName);
        int        TBP = 0;
        int        winingPlayer;
        List <int> RoundTotal = new List <int>();

        for (int i = 0; i < players.Count; i++)
        {
            if (joined2[i] == true)
            {
                AbstractPlayer LeadPlayer = players[i].GetComponent <AbstractPlayer>();
                TBP = LeadPlayer.SetBP(dzones[i].UpdateBP("!"));
                RoundTotal.Add(TBP);
            }

            else
            {
                RoundTotal.Add(0);
            }
        }
        winingPlayer = TieBreaker(RoundTotal);
        if (winingPlayer < 4)
        {
            AbstractPlayer WinPlayer = players[winingPlayer].GetComponent <AbstractPlayer>();
            HandleTextFile.WriteLog("Action Log: Player " + WinPlayer.playerID + " Wins", GameControler.SName);
            WinPlayer.SetSheilds(Reward + joinedPlayers);
            InatiatedBy.TournamentWinner        = winingPlayer;
            InatiatedBy.TournamentWinnerShields = (Reward + joinedPlayers);
            pop.EnableTournamentWinnerPopup(players[winingPlayer], (Reward + joinedPlayers), winingPlayer);
        }

        for (int i = 0; i < 4; i++)
        {
            FlipDropzone(dzones[i], false);
        }
    }
        public GameManager(AbstractPlayer p1, AbstractPlayer p2, int finalturn, int fps)
        {
            P1        = p1;
            P2        = p2;
            FinalTurn = finalturn;

            //gamestate.NotCurrentPlayer = FieldObject.P2;

            playerList.Add(p1);
            playerList.Add(p2);

            Evil = Square.P1Evil;
            Good = Square.P1Good;

            P1_EvilGhostNum = 4;
            P1_GoodGhostNum = 4;

            P2_EvilGhostNum = 4;
            P2_GoodGhostNum = 4;

            this.processFPS = fps;

            gamestate = new GameState(P1.InitialPlacement, P2.InitialPlacement, FinalTurn);
        }
Exemple #29
0
    public void ChangeGameState(GameState newState, AbstractPlayer winner)
    {
        this.UnsubsribeAllPagesEvents();
        this.pageGameplayController.UpdateGameStats();

        switch (newState)
        {
        case GameState.Gameplay:
            this.pageGameplayController.OnGameStateTransitionRequested += this.OnGameStateTransitionRequested;
            this.pageGameplayController.Open(null);
            this.popupGameoverController.Close(null);
            break;

        case GameState.GameOver:
            this.popupGameoverController.OnGameStateTransitionRequested += this.OnGameStateTransitionRequested;
            this.popupGameoverController.SetWinningType(winner == null ? (TileMark?)null : winner.Type);
            this.popupGameoverController.Open(this.pageGameplayController);
            break;

        case GameState.Loading:
            this.pageLoadingController.OpenAndLoadScene(0, this.pageGameplayController);
            break;
        }
    }
Exemple #30
0
    void OnTriggerEnter(Collider other)
    {
        if (!isEnabled || !BoltNetwork.isServer)
        {
            return;
        }
        AbstractPlayer     p    = other.gameObject.GetComponentInParent <AbstractPlayer>();
        CaptureTheFlagMode mode = (CaptureTheFlagMode)GameManager.instance.gameMode;

        //You can only pick up this flag if
        // - you are a player
        // - there is not already someone picking up this flag
        // - either you are
        //    - on the enemy team, so you can pick it up wherever
        //    - or your a friendly player but the flag is not at spawn
        if (p != null && player == null && (p.Team != teamID || (p.Team == teamID && !mode.isFlagAtBaseForTeam(teamID))))
        {
            //Update who is holding flag
            this.gameObject.transform.parent = other.gameObject.transform;
            player       = p;
            state.Holder = player.Username;
            isEnabled    = false;
        }
    }
Exemple #31
0
 void Start()
 {
     IsOverheating = false;
     Temperature = 0f;
     look = GetComponentInParent<CustomMouseLook>();
     player = (AbstractPlayer)GameManager.instance.CurrentPlayer;
 }
 void Start()
 {
     lightning = GetComponent<Lightning>();
     lightning.maxLength = maxDistance;
     beamSpeedTimer = 0;
     GrapplePhysics.reelSpeed = reelSpeed;
     GrapplePhysics.stabilizer = stabilizer;
     player = (AbstractPlayer)GameManager.instance.CurrentPlayer;
 }