示例#1
0
        public Battle(Player firstPlayer, Player secondPlayer)
        {
            _battleHelper = new BattleHelper(firstPlayer, secondPlayer);
            _battleState  = new Init();

            OnBattleStart();
        }
示例#2
0
 public void Add(BattleState battleState, IBattleState state)
 {
     if (!states.ContainsKey(battleState))
     {
         states[battleState] = state;
     }
 }
示例#3
0
        public Game1()
        {
            graphics = new GraphicsDeviceManager(this);
            Content.RootDirectory = "Content";

            screenRectangle = new Rectangle(0, 0, 1280, 720);

            graphics.PreferredBackBufferWidth  = ScreenRectangle.Width;
            graphics.PreferredBackBufferHeight = ScreenRectangle.Height;

            gameStateManager = new GameStateManager(this);
            Components.Add(gameStateManager);

            this.IsMouseVisible = true;

            titleIntroState   = new TitleIntroState(this);
            startMenuState    = new MainMenuState(this);
            gamePlayState     = new GamePlayState(this);
            conversationState = new ConversationState(this);
            battleState       = new BattleState(this);

            gameStateManager.ChangeState((TitleIntroState)titleIntroState, PlayerIndex.One);

            characterManager = CharacterManager.Instance;
        }
示例#4
0
 public void SelectLevel(int ID)
 {
     int[] levelData = levelDatabase[ID];
     spawn.SpawnSystem(spawnGoodGuy, SpawnBadGuy, levelData);
     currentState = startCombatState;
     DisableButtons();
 }
示例#5
0
 private void Update()
 {
     currentBattleState = GetState(m_currentState);
     if (currentBattleState != null)
     {
         currentBattleState.OnUpdate();
     }
 }
 void Update()
 {
     if (Network.isClient || Network.isServer)
     {
         this.currentBattleState = this.currentBattleState.UpdateState(this);
         this.currentBattleState.Update(this);
     }
 }
示例#7
0
    private void Awake()
    {
        startCombatState = new StartCombat(this);
        playerTurnState  = new PlayerTurn(this);
        enemyTurnState   = new EnemyTurn(this);
        battleLostState  = new BattleLost(this);
        battleWonState   = new BattleWon(this);
        blankState       = new BlankState(this);
        currentState     = blankState;

        missionButtonArray = GameObject.FindGameObjectsWithTag("MissionButton");
    }
示例#8
0
    public void Change(BattleState next, IAction action = null)
    {
        // exit current state
        if (state != null)
        {
            state.OnExit();
        }

        // set new state
        state = states[next];

        state.OnEnter(action);
    }
示例#9
0
        internal BattleStateComponent(BattleData data, IBattleState actionState, IBattleState characterSetState, IBattleState executionState, IEventCreator eventCreator)
        {
            actionState.CheckNull("actionState");
            characterSetState.CheckNull("characterSetState");
            executionState.CheckNull("executionState");
            eventCreator.CheckNull("eventCreator");

            ActionState = actionState;
            CharacterSetState = characterSetState;
            ExecutionState = executionState;
            this.eventCreator = eventCreator;
            this.data = data;
        }
示例#10
0
    public void StopStateMechine(BattleResult result)
    {
        //清理所有格子
        BattleboxHelper.Instance.ClearAllBlocks();
        //相机照射主角
        CameraHelper.Instance.ChangeFollow(GameRuntimeData.Instance.Player.View.transform);
        //Jyx2_UIManager.Instance.HideUI("BattleActionOrderPanel");
        IBattleState curState = GetState(m_currentState);

        if (curState != null)
        {
            curState.OnLeaveState();
        }
        if (m_roleFocusRing != null)
        {
            Jyx2ResourceHelper.ReleasePrefabInstance(m_roleFocusRing);
            m_roleFocusRing = null;
        }
        m_currentState = BattleManager.BattleViewStates.None;
        CurrentRole    = null;
        m_callback?.Invoke(result);
    }
示例#11
0
        private void OnBattleContinuation()
        {
            while (_battleState.GetRound() < Config.MaxRoundCount)
            {
                for (var i = 0; i < Config.MaxRoundCount; i++)
                {
                    while (_battleHelper.GetCurrentAttackQueue().Count != 0)
                    {
                        var action = _battleHelper.OnNextAction();
                        if (action is Defence)
                        {
                            Config.Logger.LogMessage($"{action.Stack().Unit.GetType().Name} is defending");
                        }
                        else if (action is Await)
                        {
                            _battleHelper.OnAwait(action.Stack());
                        }

                        var loser = _battleHelper.CheckLoser();
                        if (loser == null)
                        {
                            continue;
                        }
                        var winner = loser.Equals(_battleHelper.GetFirstPlayer())
                            ? _battleHelper.GetFirstPlayer()
                            : _battleHelper.GetSecondPlayer();
                        _battleState = new PlayerWon(_battleState.GetRound(), winner);
                        OnBattleFinish();
                        return;
                    }
                    _battleHelper.OnNextTurn();
                }
                _battleState = new InProgress(_battleState.GetRound() + 1);
            }

            _battleState = new TimeLimit();
            OnBattleFinish();
        }
示例#12
0
    public void SwitchState(BattleManager.BattleViewStates toState)
    {
        if (toState == m_currentState)
        {
            IBattleState temp = GetState(toState);
            temp.RefreshState();//说明是刷新状态
            return;
        }
        IBattleState toObj = GetState(toState);

        if (toObj == null)
        {
            Debug.LogError("不存在状态" + toState.ToString() + ",无法完成转换");
            return;
        }
        IBattleState curState = GetState(m_currentState);

        if (curState != null)
        {
            curState.OnLeaveState();
        }
        m_currentState = toState;
        toObj.OnEnterState();
    }
 public void ChangeState(IBattleState newState)
 {
     Debug.Log("Battle state changed from '" + currentState + "' to '" + newState + "'");
     currentState = newState;
     currentState.Enter();
 }
示例#14
0
 /// <summary>
 /// 生成時
 /// </summary>
 public BattleContext()
 {
     CurrentState = stateInit;
     CurrentState.ExecuteEntry(this);
 }
示例#15
0
 private void OnPause(Player pausedBy) => _battleState = new Pause(_battleState.GetRound(), pausedBy);
示例#16
0
 private void OnBattleStart()
 {
     _battleState = new InProgress(_battleState.GetRound() + 1);
     OnBattleContinuation();
 }
示例#17
0
 /// <summary>
 /// ステート遷移
 /// </summary>
 /// <param name="state">遷移先のステート</param>
 public void ChangeState(IBattleState state)
 {
     CurrentState.ExecuteExit(this);
     CurrentState = state;
     CurrentState.ExecuteEntry(this);
 }
示例#18
0
 public void NewStateCallback(IBattleState state)
 {
     stateMachine.ChangeState(state);
 }
示例#19
0
 public void SelectLevel(int ID)
 {
     int[] levelData = levelDatabase[ID];
     spawn.SpawnSystem(spawnGoodGuy, SpawnBadGuy, levelData);
     currentState = startCombatState;
     DisableButtons();
 }
示例#20
0
        private void SetNextState()
        {
            if (!CurrentState.IsDone)
                return;

            var nextState = GetNextState(CurrentState);
            nextState.Init(data);
            while (nextState.IsDone)
            {
                nextState = GetNextState(nextState);
                nextState.Init(data);
            }

            CurrentState = nextState;
        }
示例#21
0
 public void Initialize()
 {
     CurrentState = CharacterSetState;
     CurrentState.Init(data);
 }
 void Awake()
 {
     this.canvas             = GetComponentInParent <Canvas> ();
     this.currentBattleState = new CountdownState(this);
 }
示例#23
0
    private void Awake()
    {
        startCombatState = new StartCombat(this);
        playerTurnState = new PlayerTurn(this);
        enemyTurnState = new EnemyTurn(this);
        battleLostState = new BattleLost(this);
        battleWonState = new BattleWon(this);
        blankState = new BlankState(this);
        currentState = blankState;

        missionButtonArray = GameObject.FindGameObjectsWithTag("MissionButton");
    }
示例#24
0
        private IBattleState GetNextState(IBattleState current)
        {
            if (current == ActionState)
                return ExecutionState;
            else if (current == CharacterSetState)
                return ActionState;
            else if (current == ExecutionState)
                return CharacterSetState;

            throw new InvalidOperationException("Current state is unkown");
        }