示例#1
0
 public Controller()
 {
     mainPlayer             = new MainPlayer();
     this.gunRepository     = new GunRepository();
     this.civilPlayers      = new List <Player>();
     this.gangNeighbourhood = new GangNeighbourhood();
 }
示例#2
0
    public override void ResultServerExec(IResultControl control)
    {
        base.ResultServerExec(control);
        Actor actor = ActorManager.Singleton.Lookup(TargetID);

        if (null == actor)
        {
            return;
        }
        if (actor.Type == ActorType.enMain)
        {
            MainPlayer player = actor as MainPlayer;
            //通知头像
            player.NotifyChanged((int)Actor.ENPropertyChanged.enMainHead, EnMainHeadType.enActorRelive);
        }
        if (actor.Type == ActorType.enMain || actor.Type == ActorType.enPlayer)
        {        //主控角色或其他玩家
            if (!actor.IsActorExit)
            {    //战斗中
                actor.ForceMoveToPosition(SM.RandomRoomLevel.Singleton.m_sceneCampReliveNode[actor.Camp]);
            }
        }
        if (actor.Type == ActorType.enMain && !actor.IsActorExit)
        {
            MainGame.Singleton.MainCamera.MoveAtOnce(actor);
        }
        //设置头顶血条
        ActorAction action = actor.ActionControl.AddAction(ActorAction.ENType.enReliveAction);

        if (action == null)
        {//添加复活action失败,则删除所有的action,再添加复活action
            actor.ActionControl.RemoveAll();
            actor.ActionControl.AddAction(ActorAction.ENType.enReliveAction);
        }
    }
示例#3
0
    public override void ResultServerExec(IResultControl control)
    {
        base.ResultServerExec(control);
        Actor target = ActorManager.Singleton.Lookup(TargetID);

        if (null == target)
        {
            return;
        }
        target.Props.SetProperty_Int32(ENProperty.Exp, m_curtExp);
        target.Props.SetProperty_Int32(ENProperty.LevelUpPoint, m_levelUpPoint);
        if (m_isLevelUp)
        {
            target.Props.SetProperty_Int32(ENProperty.level, m_level);
        }
        MainPlayer mainPlayer = ActorManager.Singleton.MainActor;

        if (mainPlayer.ID == TargetID)
        {
            mainPlayer.UpDataSkillLevelUp();
            if (m_isLevelUp)
            {
                //播放升级特效
                mainPlayer.UpdataMainHeadLevel();
            }
        }
        //是否需要显示获得经验数字
    }
        public string Fight()
        {
            MainPlayer mainPlayer = (MainPlayer)this.players
                                    .FirstOrDefault(p => p.GetType().Name == nameof(MainPlayer));

            List <IPlayer> civilPlayers = this.players
                                          .Where(p => p.GetType().Name != nameof(MainPlayer))
                                          .ToList();

            this.neighbourhood.Action(mainPlayer, civilPlayers);

            StringBuilder sb = new StringBuilder();

            if (civilPlayers.Any(p => p.IsAlive) && mainPlayer?.LifePoints == 100)
            {
                sb.AppendLine("Everything is okay!");
            }
            else
            {
                sb.AppendLine("A fight happened:");

                sb.AppendLine($"Tommy live points: {mainPlayer?.LifePoints}!");

                sb.AppendLine($"Tommy has killed: {civilPlayers.Count(p => p.IsAlive == false)} players!");
                sb.AppendLine($"Left Civil Players: {civilPlayers.Count(p => p.IsAlive)}!");
            }

            return(sb.ToString().TrimEnd());
        }
示例#5
0
        public void Update(GameTime gameTime)
        {
            MapRenderer.Update(MapCurrent, gameTime);

            if (IsTransitionActive == false && IsAreaTransitionActive == false)
            {
                MainPlayer.Update(gameTime);

                if (IsAreaTransitionActive == true)
                {
                    return;
                }

                MapCamera.Position = MainPlayer.Position - new Vector2(MapCamera.BoundingRectangle.Width / 2, MapCamera.BoundingRectangle.Height / 2);
                UpdateCameraPosition(ActiveArea);

                for (int i = 0; i <= Entities.Count() - 1; i++)
                {
                    Entities.ElementAt(i).Update(gameTime);
                }
            }
            else if (IsAreaTransitionActive == true)
            {
                float deltaTime = (float)gameTime.ElapsedGameTime.TotalSeconds;

                AreaTransitionTimer += deltaTime;

                if (AreaTransitionTimer > 0.15f)
                {
                    // Move Camera and Player into New Area
                    if (MainPlayer.TransitionMoveState == PlayerActor.AreaTransitionMoveState.Complete)
                    {
                        IsAreaTransitionActive = false;
                        AreaTransitionTimer    = 0f;
                        MainPlayer.ResetAreaTransitionState();
                    }
                    else
                    {
                        MainPlayer.MoveToNewArea(AreaTransitionCollisionRectangle, ActiveArea, gameTime);
                        AreaTransitionCameraUpdate(MainPlayer.TransitionMoveState, gameTime);
                    }
                }
            }
            else
            {
                if (MapTransition.State == MapTransitionHandler.TransitionState.MapChange)
                {
                    UnloadMap();
                }
                else if (MapTransition.State == MapTransitionHandler.TransitionState.Complete)
                {
                    IsTransitionActive = false;
                    MapTransition      = null;
                }
                else
                {
                    MapTransition.Update(gameTime);
                }
            }
        }
        /// <summary>
        /// Handles game termination gracefully.
        /// </summary>
        public void EndGame(GameEndedEventArgs e)
        {
            // Give Game over Message etc. Here
            switch (e.Reason)
            {
            case GameEndedEventArgs.Circumstance.WON:
                HTW.Instance.CurrentGameState.manager.placeRandomEnemies();
                break;

            case GameEndedEventArgs.Circumstance.LOST:
                PlayerProfile.Points /= 3;
                _Livingdrawers.Clear();
                MainPlayer.Cleanup();
                IsReady = false;

                HuntTheWumpus.GameAndStuff.HTW.Instance.start = false;


                return;

                break;

            case GameEndedEventArgs.Circumstance.QUIT:
                HTW.Instance.Exit();
                break;
            }
        }
示例#7
0
    private void FinishSync(Message m)
    {
        Debug.Log("Finishing sync");
        foreach (var a in ConnectionUI)
        {
            a.SetActive(false);
        }
        GameObject p = Instantiate(mainPlayerPrefab, Vector3.zero, Quaternion.identity);

        mainPlayer = p.GetComponent <MainPlayer>();

        if (mainPlayer != null)
        {
            mainPlayer.SendMovementInfo();
            mainPlayer.id       = player.Id;
            mainPlayer.nickName = player.Name;
            mainPlayer.alive    = false;
        }
        else
        {
            Debug.Log("Player was null");
        }

        p.SetActive(false);

        playersList.Add(player.Id, p);
        player.GameState = GameState.GameStarted;

        gameManager.RegisterMainPlayer(p);
        gameManager.SpawnSpectator();
    }
        public void CalculateAvailableForQueen_ThreeBlackCheckers_Should_Have_5_Paths()
        {
            //  Arrange
            var mainPlayCheckers = new List <CheckerModel> {
                new CheckerModel(4, 6, PieceType.Queen, Side.White)
            };
            var secondPlayerCheckers = new List <CheckerModel>()
            {
                new CheckerModel(2, 4, PieceType.Checker, Side.Black),
                new CheckerModel(1, 1, PieceType.Checker, Side.Black),
                new CheckerModel(6, 4, PieceType.Checker, Side.Black),
            };
            DataProvider dataProvider = new DataProvider(mainPlayCheckers, secondPlayerCheckers);
            var          mainPlayer   = new MainPlayer(dataProvider, Side.White);
            var          robotPlayer  = new RobotPlayer(dataProvider, Side.Black);
            var          emptyPlayer  = new EmptyUserPlayer(dataProvider);
            var          game         = new RussianCheckers.Core.Game(mainPlayer, robotPlayer, emptyPlayer, dataProvider);

            //  Act
            game.ReCalculateNeighborsAndPaths();

            //  Assert
            var availablePaths = mainPlayer.CalculateAvailablePaths();

            Assert.AreEqual(5, availablePaths.Count());
        }
        public void CalculateAvailablePaths_Returns_Paths_MaxIs_9()
        {
            //  Arrange
            var mainPlayCheckers = new List <CheckerModel>()
            {
                new CheckerModel(4, 2, PieceType.Checker, Side.White),
            };
            var secondPlayerCheckers = new List <CheckerModel>()
            {
                new CheckerModel(3, 3, PieceType.Checker, Side.Black),
                new CheckerModel(5, 3, PieceType.Checker, Side.Black),
                new CheckerModel(3, 5, PieceType.Checker, Side.Black),
                new CheckerModel(5, 5, PieceType.Checker, Side.Black),
                new CheckerModel(1, 5, PieceType.Checker, Side.Black),
            };

            DataProvider dataProvider = new DataProvider(mainPlayCheckers, secondPlayerCheckers);

            var mainPlayer  = new MainPlayer(dataProvider, Side.White);
            var robotPlayer = new RobotPlayer(dataProvider, Side.Black);
            var emptyPlayer = new EmptyUserPlayer(dataProvider);

            //  Act
            var game = new RussianCheckers.Core.Game(mainPlayer, robotPlayer, emptyPlayer, dataProvider);

            game.ReCalculateNeighborsAndPaths();
            var availablePathsForWhite = mainPlayer.CalculateAvailablePaths();

            //  Assert
            Assert.AreEqual(9, availablePathsForWhite.Max(x => x.Count));
        }
 void OnEnable()
 {
     Slot = int.Parse(gameObject.name);
     MPC  = transform.parent.parent.GetComponent <Tab_0>().MPC;
     EI   = transform.parent.parent.Find("EquipmentInfo").GetComponent <EquipmentInfo>();
     UpdateSlot();
 }
示例#11
0
        public void Update()
        {
            MainPlayer.Update();
            foreach (Chunk chunk in Chunks.Values)
            {
                chunk.Update();
            }

            // Calculate collisions

            //if (MainPlayer.Chunk == null)
            //    return;
            //
            //foreach(Block block in MainPlayer.Chunk.Blocks.Values)
            //{
            //    AxisAlignedBB blockAabb = block.BoundingBox;
            //    AxisAlignedBB playerAabb = MainPlayer.BoundingBox;
            //
            //    if (playerAabb.IntersectsAABB(blockAabb))
            //    {
            //        Vector3 intersectAmount = new Vector3()
            //        {
            //            X = playerAabb.IntersectionAmountX(blockAabb, false), // ye
            //            Y = playerAabb.IntersectionAmountY(blockAabb, false), // ye
            //            Z = playerAabb.IntersectionAmountZ(blockAabb, false), // ye
            //        };
            //
            //        Vector3 difference = MainPlayer.Position - MainPlayer.PreviousPosition;
            //
            //        MainPlayer.MoveTowards(-difference);
            //    }
            //}
        }
示例#12
0
    void Update()
    {
        if (!raycastOn)
        {
            return;
        }

        laserLine.SetPosition(0, startPoint.position);

        RaycastHit hit;
        Vector3    fwd = startPoint.TransformDirection(Vector3.forward);

        if (Physics.Raycast(startPoint.position, fwd, out hit))
        {
            if (hit.transform.tag == "Player")
            {
                MainPlayer mainPlayer = hit.transform.GetComponent <MainPlayer>();
                if (!mainPlayer.IsDead())
                {
                    mainPlayer.GetHit();
                }
            }

            laserLine.SetPosition(1, hit.point);
        }
        else
        {
            laserLine.SetPosition(1, fwd * Mathf.Infinity);
        }

        particleSystem.startLifetime = hit.distance / particleSystem.startSpeed;
    }
示例#13
0
    void Awake()
    {
        player = GetComponent <MainPlayer> ();
        input  = GetComponent <TeamAssignment> ();
        key    = GetComponent <KeyframeScript> ();
        stats  = GetComponent <PlayerStats> ();
        play   = GetComponent <Playback> ();

        gameManager = GameObject.Find("[GameManager]").GetComponent <GameManager> ();


//		recUI.enabled = false;
//		playUI.enabled = false;


        // Set up Line Renderer

        lr                 = player.gameObject.GetComponentInChildren <LineRenderer> ();
        lr.enabled         = false;
        lr.widthMultiplier = 0.2f;
        lr.material        = mat;
        lr.receiveShadows  = true;
        lr.alignment       = LineAlignment.View;
        lr.textureMode     = LineTextureMode.Tile;
    }
示例#14
0
    private void Awake()
    {
        playerInput = new MainPlayer();
        cinemachine = GetComponent <CinemachineFreeLook>();

        CameraSetting();
    }
示例#15
0
 public Controller()
 {
     this.PlayersList       = new List <IPlayer>();
     this.gunRepository     = new GunRepository();
     this.mainPlayer        = new MainPlayer();
     this.gangNeighbourhood = new GangNeighbourhood();
 }
        public void CalculateAvailableForQueen_SameBehaviorAsChecker_ShouldBe_23()
        {
            //  Arrange
            var mainPlayCheckers = new List <CheckerModel>()
            {
                new CheckerModel(4, 2, PieceType.Queen, Side.White),
            };
            var secondPlayerCheckers = new List <CheckerModel>()
            {
                new CheckerModel(3, 3, PieceType.Checker, Side.Black),
                new CheckerModel(5, 3, PieceType.Checker, Side.Black),
                new CheckerModel(3, 5, PieceType.Checker, Side.Black),
                new CheckerModel(5, 5, PieceType.Checker, Side.Black),
                new CheckerModel(1, 5, PieceType.Checker, Side.Black),
                new CheckerModel(5, 1, PieceType.Checker, Side.Black),
            };
            DataProvider dataProvider = new DataProvider(mainPlayCheckers, secondPlayerCheckers);
            var          mainPlayer   = new MainPlayer(dataProvider, Side.White);
            var          robotPlayer  = new RobotPlayer(dataProvider, Side.Black);
            var          emptyPlayer  = new EmptyUserPlayer(dataProvider);
            var          game         = new RussianCheckers.Core.Game(mainPlayer, robotPlayer, emptyPlayer, dataProvider);

            //  Act
            game.ReCalculateNeighborsAndPaths();

            //  Assert
            var availablePaths = mainPlayer.CalculateAvailablePaths();

            Assert.AreEqual(23, availablePaths.Count());
        }
示例#17
0
    public void UpdatMainHeadLevel()
    {
        MainPlayer MainPlayer = ActorManager.Singleton.MainActor;
        int        level      = MainPlayer.Props.GetProperty_Int32(ENProperty.level);

        m_levelLabel.text = "LV" + level;
    }
        public void Checker_ConvertsTakeCheckerAndActsAsQueen_ShouldTakeSecondChecker()
        {
            //  Arrange
            var mainPlayCheckers = new List <CheckerModel>()
            {
                new CheckerModel(5, 5, PieceType.Checker, Side.White),
            };
            var secondPlayerCheckers = new List <CheckerModel>()
            {
                new CheckerModel(4, 6, PieceType.Checker, Side.Black),
                new CheckerModel(1, 5, PieceType.Checker, Side.Black),
            };
            DataProvider dataProvider = new DataProvider(mainPlayCheckers, secondPlayerCheckers);
            var          mainPlayer   = new MainPlayer(dataProvider, Side.White);
            var          robotPlayer  = new RobotPlayer(dataProvider, Side.Black);
            var          emptyPlayer  = new EmptyUserPlayer(dataProvider);
            var          game         = new RussianCheckers.Core.Game(mainPlayer, robotPlayer, emptyPlayer, dataProvider);

            //  Act
            game.ReCalculateNeighborsAndPaths();

            //  Assert
            var availablePaths = mainPlayer.CalculateAvailablePaths();

            Assert.IsTrue(availablePaths.Any(x => x.Last.Value.Column == 0 && x.Last.Value.Row == 4));
        }
        public void Initialize()
        {
            //  Camera.Instance.Type = CameraType.CENTERED;
            Camera.Instance.Type = CameraType.CENTERED; // <-- Uncomment this to change to a different style

            // Initialize GameManger
            manager = new SinglePlayerGameManager();

            manager.EntityAdded   += new EntityChangeHandler(EntityAdded);
            manager.EntityRemoved += new EntityChangeHandler(EntityRemoved);
            manager.GameEnded     += new GameEndedEventHandler(EndGame);

            // Register Player
            var playerEntity = manager.registerPlayer(PlayerProfile);

            MainPlayer.SetupEntity(playerEntity);

            playerEntity.PlayerGainedPointsEvent += new PlayerEntity.PlayerGainedPointsEventHandler(PlayerGainedPoints);
            // Listen for termination signals.
            _controls.KeyPressed += new KeyPressEventHandler(controls_KeyPressed);
            _cursor.SetupCursor
                (HTW.Instance.ScreenWidth / 2, HTW.Instance.ScreenHeight / 2);

            IsReady = true;

            //Start Game -- Crude
            NewGame();
        }
示例#20
0
 public GameApi()
 {
     this.shop   = new Shop(this);
     this.camera = new Camera(this);
     this.chat   = new Chat(this);
     this.player = new MainPlayer(this);
 }
        public void GetWinnerSide_QueensMoved15TimesWithTaking_NoDraw()
        {
            //  Arrange
            var playerCheckersFirstPlayer = new List <CheckerModel> {
                new CheckerModel(0, 0, PieceType.Queen, Side.White)
            };
            var playerCheckersSecondPlayer = new List <CheckerModel> {
                new CheckerModel(7, 1, PieceType.Queen, Side.Black)
            };
            DataProvider dataProvider   = new DataProvider(playerCheckersFirstPlayer, playerCheckersSecondPlayer);
            var          mainPlayer     = new MainPlayer(dataProvider, Side.White);
            var          robotPlayer    = new RobotPlayer(dataProvider, Side.Black);
            var          actionsHistory = new Stack <HistoryMove>(GetHistoryActionsWithTaking(playerCheckersFirstPlayer.Single(), playerCheckersSecondPlayer.Single()));

            //  Act
            mainPlayer.CalculateNeighbors();
            robotPlayer.CalculateNeighbors();
            mainPlayer.CalculateAvailablePaths();
            robotPlayer.CalculateAvailablePaths();
            var  gameStatusChecker = new GameStatusChecker(mainPlayer, robotPlayer, actionsHistory);
            Side winnerSide        = gameStatusChecker.GetWinnerSide();

            //  Assert
            Assert.AreEqual(Side.None, winnerSide);
        }
示例#22
0
 public Controller()
 {
     this.civilPlayers  = new List <IPlayer>();
     this.guns          = new GunRepository();
     this.mainPlayer    = new MainPlayer();
     this.neighbourhood = new Neighbourhood();
 }
示例#23
0
        public string Fight()
        {
            MainPlayer mainPlayer = new MainPlayer();

            GangNeighbourhood gangNeighbourhood = new GangNeighbourhood();

            gangNeighbourhood.Action(mainPlayer, civilPlayers);

            StringBuilder sb = new StringBuilder();

            if (civilPlayers.Any(p => p.IsAlive == true) &&
                mainPlayer.LifePoints == 100)
            {
                sb.AppendLine("Everything is okay!");
            }
            else
            {
                sb.AppendLine("A fight happened:");
                sb.AppendLine($"Tommy live points: {mainPlayer.LifePoints}!");
                sb.AppendLine($"Tommy has killed: {civilPlayers.Where(p => p.IsAlive == false).Count()} players!");
                sb.AppendLine($"Left Civil Players: {civilPlayers.Where(p => p.IsAlive == true).Count()}!");
            }

            return(sb.ToString().TrimEnd());
        }
    public IEnumerator Channelling(GameObject pPlayer)
    {
        PlayChargeSFX();
        // Set current time to zero
        currentTime = 0;
        // Get MainPlayer script from the other player
        MainPlayer pPlayerMainPlayer = pPlayer.GetComponent <MainPlayer>();

        // Must hold teleportkey for channelTime to activate teleport
        while (currentTime < channelTime)
        {
            // Cancel channelling if player is not in sight, player is not channelling, other player is busy or any other button is pressed
            if (!IsPlayerInSight() || !MainPlayer.IsChannelling() ||
                pPlayerMainPlayer.IsBusy() || CheckAnyButton())
            {
                StopChargeSFX();
                // print(!IsPlayerInSight() +","+  !MainPlayer.IsChannelling() + "," + pPlayerMainPlayer.IsBusy() + "," + CheckAnyButton());
                StopChannelling();
                yield break;
            }
            currentTime += Time.deltaTime;
            yield return(new WaitForEndOfFrame());
        }

        // Set teleport values for the other players
        //pPlayerMainPlayer.teleportTarget = gameObject.transform.position +
        //    (pPlayer.transform.position - gameObject.transform.position).normalized * outerRadius;
        //pPlayerMainPlayer.CurrentState = MainPlayer.State.Teleported;
        StopChannelling();
        MainPlayer.teleportTarget = pPlayer.transform.position +
                                    (-pPlayer.transform.position + gameObject.transform.position).normalized * outerRadius;
        MainPlayer.CurrentState = MainPlayer.State.Teleported;
        UpdateChannelTimeRatio();
    }
示例#25
0
        public void Draw(SpriteBatch spriteBatch)
        {
            if (MapTransition != null && MapTransition.State == MapTransitionHandler.TransitionState.MapChange)
            {
                MapTransition.Draw(spriteBatch);
            }
            else
            {
                MapRenderer.Draw(MapCurrent, MapCamera.GetViewMatrix());

                if (MainPlayer.IsActive == true)
                {
                    MainPlayer.Draw(spriteBatch);
                }

                foreach (MapEntity entity in Entities)
                {
                    entity.Draw(spriteBatch);
                }

                if (IsTransitionActive == true)
                {
                    MapTransition.Draw(spriteBatch);
                }
            }
        }
    public IEnumerator StartTeleport()
    {
        PlayTeleportInSFX();
        // Change alpha value to 0
        StartCoroutine(MainPlayer.AlphaFade());

        // Start teleport effect on new location
        fxTeleport = Instantiate(teleportEffect, MainPlayer.teleportTarget, transform.rotation);

        // Dissepear on current location
        SkinnedMeshRenderer[] body = GetComponentsInChildren <SkinnedMeshRenderer>();
        foreach (SkinnedMeshRenderer i in body)
        {
            i.enabled = false;
        }

        // Delay in teleport
        yield return(new WaitForSeconds(teleportDelay));

        // Appear in new location
        foreach (SkinnedMeshRenderer i in body)
        {
            i.enabled = true;
        }

        // Set new position
        gameObject.transform.position = MainPlayer.teleportTarget;

        // Change alpha value to 1
        StartCoroutine(MainPlayer.AlphaFade(1));

        MainPlayer.CurrentState = MainPlayer.State.Idle;
        doTeleport = false;
        PlayTeleportOutSFX();
    }
示例#27
0
 public Controller()
 {
     this.players       = new List <IPlayer>();
     this.guns          = new List <IGun>();
     this.mainPlayer    = new MainPlayer();
     this.neighbourhood = new GangNeighbourhood();
 }
示例#28
0
        public string Fight()
        {
            MainPlayer mainPlayer = (MainPlayer)this.players
                                    .FirstOrDefault(p => p.GetType().Name == nameof(MainPlayer));

            List <IPlayer> civilPlayers = this.players
                                          .Where(p => p.GetType().Name != nameof(MainPlayer))
                                          .ToList();

            this.gangNeighbourhood.Action(mainPlayer, civilPlayers);

            StringBuilder sb = new StringBuilder();

            if (civilPlayers.Any(p => p.IsAlive == true) &&
                mainPlayer.LifePoints == InitialMainPlayerHealthPoints)
            {
                sb.AppendLine(OutputMessages.EverythingIsOkay);
            }
            else
            {
                sb.AppendLine(OutputMessages.FightHappened);

                sb.AppendLine(string.Format(OutputMessages.TommyLifePoints, mainPlayer.LifePoints));

                sb.AppendLine(string.Format(OutputMessages.KilledPlayers,
                                            civilPlayers.Where(p => p.IsAlive == false).Count()));
                sb.AppendLine(string.Format(OutputMessages.LeftPlayers,
                                            civilPlayers.Where(p => p.IsAlive == true).Count()));
            }

            return(sb.ToString().TrimEnd());
        }
示例#29
0
        public void EncounterMain(ref MainPlayer player)
        {
            string         message = "";
            ConsoleKeyInfo i;

            do
            {
                Console.Clear();
                Console.WriteLine("");
                Console.WriteLine("Player");
                Console.WriteLine("===================");
                Console.WriteLine("Health: " + player.GetHealth());
                Console.WriteLine("Potions: " + player.GetPotions());
                Console.WriteLine("");
                Console.WriteLine("");
                Console.WriteLine("Layton Blevins");
                Console.WriteLine("===================");
                Console.WriteLine("Health: " + enemy.GetHealth());
                Console.WriteLine("");
                Console.WriteLine("");

                if (message != "")
                {
                    Console.WriteLine("");
                    Console.WriteLine(message);
                    Console.WriteLine("");
                }

                Console.WriteLine("");
                Console.WriteLine("Make your selection:");
                Console.WriteLine("==========================");
                Console.WriteLine("1 - Attack");
                Console.WriteLine("2 - Use Potion");
                Console.WriteLine("");

                i = Console.ReadKey(false);
                switch (i.KeyChar)
                {
                case '1':
                    enemy.TakeDamage(player.GetAttackDamage());
                    break;

                case '2':
                    player.UsePotion();
                    break;
                }

                // EnemyEncounter Action
                if (enemy.GetHealth() > 0)
                {
                    player.TakeDamage(enemy.GetAttackDamage());
                    message = "Layton attacks you for 10 damage.";
                }
            }while (player.GetHealth() > 0 && enemy.GetHealth() > 0);

            if (enemy.GetHealth() <= 0 && player.GetHealth() > 0)
            {
                isEncounterSuccessful = true;
            }
        }
示例#30
0
    private void OnTriggerExit(Collider other)
    {
        MainPlayer player      = other.GetComponent <MainPlayer>();
        Minion     minion      = other.GetComponent <Minion>();
        bool       someoneLeft = false;

        if (player && player.team != MyMinion.team)
        {
            players.Remove(player);
            someoneLeft = true;
        }
        else if (minion && minion.team != MyMinion.team)
        {
            minions.Remove(minion);
            someoneLeft = true;
        }
        if (someoneLeft && MyMinion.state == MinionState.approaching)
        {
            if (players.Count > 0)
            {
                // get next player
                // else get next minion
            }
        }
    }
    void Awake()
    {
        _instance = this;

        _rig = GetComponent<Rigidbody2D>();
        _anim = GetComponent<SkeletonAnimation>();

        playerControllers.Add(GetComponent<Player_01>());
        playerControllers.Add(GetComponent<Player_02>());
        playerControllers.Add(GetComponent<Player_03>());
        playerControllers.Add(GetComponent<Player_04>());
        playerControllers.Add(GetComponent<Player_05>());

        foreach (var controller in playerControllers)
        {
            controller.OnFinishLevelEvent += OnLevelFinishEvent;
        }
    }