Ejemplo n.º 1
0
    private void Update()
    {
        switch (nowState)
        {
        case BattleSceneState.BATTLE_START:
            OnBattleStart?.Invoke(this, EventArgs.Empty);
            nowState = BattleSceneState.PLAYER_TURN_START;
            OnPlayerTurnStart?.Invoke(this, EventArgs.Empty);
            break;

        case BattleSceneState.PLAYER_TURN_START:
            if (!BattleEventManager.Instance.Execute())
            {
                nowState = BattleSceneState.PLAYER_TURN_UPDATE;
            }
            break;

        case BattleSceneState.PLAYER_TURN_UPDATE:
            break;

        case BattleSceneState.PLAYER_TURN_END:
            if (!BattleEventManager.Instance.Execute())
            {
                nowState = BattleSceneState.ENEMY_TURN_START;
                OnEnemyTurnStart?.Invoke(this, EventArgs.Empty);
            }
            break;

        case BattleSceneState.ENEMY_TURN_START:
            if (!BattleEventManager.Instance.Execute())
            {
                nowState = BattleSceneState.ENEMY_TURN_UPDATE;
            }
            break;

        case BattleSceneState.ENEMY_TURN_UPDATE:
            if (!BattleEventManager.Instance.Execute())
            {
                nowState = BattleSceneState.ENEMY_TURN_END;
                OnEnemyTurnEnd?.Invoke(this, EventArgs.Empty);
            }
            break;

        case BattleSceneState.ENEMY_TURN_END:
            if (!BattleEventManager.Instance.Execute())
            {
                nowState = BattleSceneState.PLAYER_TURN_START;
                OnPlayerTurnStart?.Invoke(this, EventArgs.Empty);
            }
            break;

        case BattleSceneState.BATTLE_END:

            break;
        }
    }
Ejemplo n.º 2
0
    // Start is called before the first frame update
    public override void Init()
    {
        base.Init();

        startSceneState  = new StartSceneState();
        mainSceneState   = new MainSceneState();
        battleSceneState = new BattleSceneState();

        //GameObject.DontDestroyOnLoad(gameObject);
    }
 void Start()
 {
     state = BattleSceneState.characterInfo;
     isAlreadyBeginingPose = false;
     isFightIconDestroyed  = false;
     soundManager.StartDelayedMusic(musicArenas [ArenaChoosenManager.statSelectedArena]);
     loadArenaSprite(ArenaChoosenManager.statSelectedArena);
     loadCBISprite(CharacterChoosenManager.statSelectedCharacter1, CharacterChoosenManager.statSelectedCharacter2);
     loadGameModeSprite(ModeChoosenManager.statSelectedMode);
 }
Ejemplo n.º 4
0
 private void ResolveTurn()
 {
     if (battleQueue.Count != 0)
     {
         battleQueue.Pop().Resolve();
         //battleQueue.Dequeue().Resolve();
     }
     else
     {
         currentState = BattleSceneState.ResolveStatusEffectsAfter;
     }
 }
Ejemplo n.º 5
0
        public BattleScene(SpellswordGame game, Character player, Character enemy) : base(game, null)
        {
            this.game = game;
            ChangeCombatants(game, player, enemy);
            bothAlive = true;

            currentMenu  = null;
            currentState = BattleSceneState.Idle;

            battleQueue = new Stack <BattleAction>();

            gameOver = false;
        }
Ejemplo n.º 6
0
        public override void Update(GameTime gameTime)
        {
            switch (currentState)
            {
            case BattleSceneState.Idle:
                TakeTurn();
                break;

            case BattleSceneState.ResolveStatusEffectsBefore:
                enemy.ThisEntity.ResolveStatusEffectsBefore();
                player.ThisEntity.ResolveStatusEffectsBefore();
                CheckForDeath();
                this.currentState = BattleSceneState.Waiting;
                break;

            case BattleSceneState.Waiting:
                player.Update();
                enemy.Update();
                if (currentMenu != null)
                {
                    currentMenu.Update();
                }
                break;

            case BattleSceneState.InProgress:
                ResolveTurn();
                CheckForDeath();
                break;

            case BattleSceneState.ResolveStatusEffectsAfter:
                enemy.ThisEntity.ResolveStatusEffectsAfter();
                player.ThisEntity.ResolveStatusEffectsAfter();
                CheckForDeath();
                this.currentState = BattleSceneState.Idle;
                break;
            }
        }
Ejemplo n.º 7
0
    public void SetBattleEnd(bool isPlayerWin)
    {
        if (nowState != BattleSceneState.BATTLE_END)
        {
            BattleEventManager.Instance.Clear();
            nowState = BattleSceneState.BATTLE_END;

            if (isPlayerWin)
            {
                if (MapData.Instance.isLastMap())
                {
                    Instantiate(playerGameClear, BattleEventManager.Instance.transform);
                }
                else
                {
                    Instantiate(playerWin, BattleEventManager.Instance.transform);
                }
            }
            else
            {
                Instantiate(playerLose, BattleEventManager.Instance.transform);
            }
        }
    }
Ejemplo n.º 8
0
 private void Start()
 {
     nowState           = BattleSceneState.BATTLE_START;
     OnPlayerTurnStart += BattleStateManager_OnPlayerTurnStart;
 }
Ejemplo n.º 9
0
 public void PlayerTurnEnd()
 {
     CardEffectExecutor.Instance?.CleaeModCard();
     nowState = BattleSceneState.PLAYER_TURN_END;
     OnPlayerTurnEnd?.Invoke(this, EventArgs.Empty);
 }
    IEnumerator WinLoseMenuDelayActivating()
    {
        yield return(new WaitForSeconds(2f));

        state = BattleSceneManager.BattleSceneState.winLoseInfo;
    }
    void Update()
    {
        switch (state)
        {
        case BattleSceneState.characterInfo:         //0
            if (!alreadySummoned)
            {
                summonPlayerPrefab(CharacterChoosenManager.statSelectedCharacter1);
                summonEnemyPrefab(CharacterChoosenManager.statSelectedCharacter2);
                alreadySummoned = true;
            }
            break;

        case BattleSceneState.beginingPose:         //1
            if (!isAlreadyBeginingPose)
            {
                Player.Instance.CharaAnimator.SetBool("beginingPose", true);
                Enemy.Instance.CharaAnimator.SetBool("beginingPose", true);
                isAlreadyBeginingPose = true;
            }
            else
            {
                if (!Player.Instance.CharaAnimator.GetBool("beginingPose") &&
                    !Enemy.Instance.CharaAnimator.GetBool("beginingPose"))
                {
                    state = BattleSceneState.battle;
                    fightIcon.GetComponent <SpriteRenderer> ().enabled = true;
                }
            }
            break;

        case BattleSceneState.battle:         //2
            if (!isFightIconDestroyed)
            {
                if (fightIcon.transform.position.y < 1f)
                {
                    fightIcon.transform.position = Vector3.MoveTowards(fightIcon.transform.position,
                                                                       new Vector3(0, 1f, 0), 0.3f);
                }
                else
                {
                    Destroy(fightIcon);
                    isFightIconDestroyed = true;
                }
            }
            break;

        case BattleSceneState.battlePause:         //3
            break;

        case BattleSceneState.winLosePose:         //4
            textWinLoseState.GetComponent <Text> ().enabled = true;
            if (WinLoseManager.Instance.isPlayer1Win())
            {
                textWinLoseState.text = "Player 1 Win";
                loadWinCharacterImage(CharacterChoosenManager.statSelectedCharacter1);
                winIdCharacter.text = "1";
                Player.Instance.CharaAnimator.SetBool("winPose", true);
            }
            else if (WinLoseManager.Instance.isPlayer2Win())
            {
                textWinLoseState.text = "Player 2 Win";
                loadWinCharacterImage(CharacterChoosenManager.statSelectedCharacter2);
                winIdCharacter.text = "2";
                Enemy.Instance.CharaAnimator.SetBool("winPose", true);
            }

            //WAKTU PEMANGGILAN MENGGUNAKAN DELAY
            StartCoroutine(WinLoseMenuDelayActivating());
            break;

        case BattleSceneState.winLoseInfo:         //5
            textWinLoseState.enabled = false;
            winLoseMenu.SetActive(true);
            if (Input.GetKeyDown(KeyCode.Backspace) || Input.GetKeyDown("joystick button 12"))
            {
                PlayerPrefs.SetInt("playingTime", PlayerPrefs.GetInt("playingTime") + 1);
                if (useFSM)
                {
                    StartCoroutine(hsController.savingFSMLogHistory());
                }
                else
                {
                    StartCoroutine(hsController.savingFuSMsLogHistory());
                }

                /*StartCoroutine(hsController.connectFuSMsLogHistory());
                 * int playingTime = PlayerPrefs.GetInt("playingTime");
                 * int i = 0;
                 * while (i < FuSMsLogHistory.Instance.getTransitionData().Count)
                 * {
                 *   if (delaySaveLogTime < maxDelaySaveLogTime)
                 *   {
                 *       delaySaveLogTime += 1;
                 *   }
                 *   else
                 *   {
                 *       StartCoroutine(hsController.savingFuSMsLogHistory(
                 *           FuSMsLogHistory.Instance.getTransitionData()[i].transitionNumber,
                 *           playingTime,
                 *           FuSMsLogHistory.Instance.getTransitionData()[i].previousState,
                 *           FuSMsLogHistory.Instance.getTransitionData()[i].range,
                 *           FuSMsLogHistory.Instance.getTransitionData()[i].totalAttackType.light,
                 *           FuSMsLogHistory.Instance.getTransitionData()[i].totalAttackType.heavy,
                 *           FuSMsLogHistory.Instance.getTransitionData()[i].totalAttackType.ranged,
                 *           FuSMsLogHistory.Instance.getTransitionData()[i].totalAttackDirection.up,
                 *           FuSMsLogHistory.Instance.getTransitionData()[i].totalAttackDirection.middle,
                 *           FuSMsLogHistory.Instance.getTransitionData()[i].totalAttackDirection.down,
                 *           FuSMsLogHistory.Instance.getTransitionData()[i].nextStatePersentage.idle,
                 *           FuSMsLogHistory.Instance.getTransitionData()[i].nextStatePersentage.walk,
                 *           FuSMsLogHistory.Instance.getTransitionData()[i].nextStatePersentage.walkBackward,
                 *           FuSMsLogHistory.Instance.getTransitionData()[i].nextStatePersentage.lightAttack,
                 *           FuSMsLogHistory.Instance.getTransitionData()[i].nextStatePersentage.heavyAttack,
                 *           FuSMsLogHistory.Instance.getTransitionData()[i].nextStatePersentage.rangedAttack,
                 *           FuSMsLogHistory.Instance.getTransitionData()[i].nextStatePersentage.jump,
                 *           FuSMsLogHistory.Instance.getTransitionData()[i].nextStatePersentage.crouch,
                 *           FuSMsLogHistory.Instance.getTransitionData()[i].choosenStage));
                 *       i = i + 1;
                 *       delaySaveLogTime = 0;
                 *       if(i%100 == 0)
                 *       {
                 *           maxDelaySaveLogTime = 60 * 6;
                 *       }
                 *       else
                 *       {
                 *           maxDelaySaveLogTime = 60;
                 *       }
                 *       //
                 *   }
                 * }*/
            }
            else if (Input.GetKeyDown(KeyCode.Return) || Input.GetKeyDown("joystick button 11"))
            {
                StopAllCoroutines();
                JumpToOtherScene.quickGoToScene("modechoosen");
            }
            break;
        }
    }
Ejemplo n.º 12
0
 private void OnPlayerFinishedTurn()
 {
     currentState = BattleSceneState.InProgress;
 }
Ejemplo n.º 13
0
 private void TakeTurn()
 {
     player.TakeTurn();
     enemy.TakeTurn();
     currentState = BattleSceneState.ResolveStatusEffectsBefore;
 }