コード例 #1
0
ファイル: BattleManager.cs プロジェクト: AdrienMarcenat/LD43
 public void Attack(int damage)
 {
     if (m_IsPlayerTurn)
     {
         if (m_EnnemyCharacters.Peek().TakeDamage(damage))
         {
             m_EnnemyCharacters.Pop();
             if (m_EnnemyCharacters.Count == 0)
             {
                 m_Actions.Clear();
             }
         }
     }
     else
     {
         if (m_PlayerCharacters.Peek().TakeDamage(damage))
         {
             Character player = m_PlayerCharacters.Pop();
             TeamManagerProxy.Get().RemoveCharacter(player.GetModel().GetName());
             if (m_PlayerCharacters.Count == 0)
             {
                 m_Actions.Clear();
             }
         }
     }
 }
コード例 #2
0
 public override void OnEnter()
 {
     LevelManagerProxy.Get().LoadScene("Scenes/MainMenu");
     LevelManagerProxy.Get().SetLevelIndex(0);
     TeamManagerProxy.Get().SayGoodbye();
     TeamManagerProxy.Get().AddCharacter(new CharacterModel("Prince", ECharacterClass.Prince));
     this.RegisterAsListener("Game", typeof(GameFlowEvent));
 }
コード例 #3
0
    public void OnGameEvent(OnEdgeClick edgeEvent)
    {
        gameObject.SetActive(true);
        UpdaterProxy.Get().SetPause(true);
        m_CurrentEdge = edgeEvent.GetEdge();
        m_ChoosePathButton.interactable = m_Player.CanMoveToEdge(m_CurrentEdge);

        EdgeResource tempEdgeResource = m_CurrentEdge.GetEdgeResource();

        switch (tempEdgeResource.GetEdgeType())
        {
        case EEdgeType.Normal:
            m_MoveType = EEdgeType.Normal;
            break;

        case EEdgeType.Combat:
            if (TeamManagerProxy.Get().IsNotTooMuchCharacters(tempEdgeResource.GetEdgeCharacterNumber()))
            {
                m_MoveType = EEdgeType.Normal;
            }
            else
            {
                m_MoveType = EEdgeType.Combat;
            }
            break;

        case EEdgeType.Obstacle:
            if (TeamManagerProxy.Get().IsCharacterClass(tempEdgeResource.GetEdgeCharacterClass()))
            {
                m_MoveType = EEdgeType.Normal;
            }
            else
            {
                m_MoveType = EEdgeType.Obstacle;
                m_ChoosePathButton.interactable = false;
            }
            break;

        case EEdgeType.Diversion:
            if (TeamManagerProxy.Get().IsNotTooMuchCharacters(tempEdgeResource.GetEdgeCharacterNumber()))
            {
                m_MoveType = EEdgeType.Normal;
            }
            else
            {
                m_MoveType = EEdgeType.Diversion;
            }
            break;
        }

        m_Description.text = tempEdgeResource.GetDescription();
    }
コード例 #4
0
ファイル: BattlePanel.cs プロジェクト: AdrienMarcenat/LD43
    IEnumerator Init(List <ECharacterClass> enemies)
    {
        yield return(null);

        m_CurrentIndex     = 0;
        m_ShoudDoEnemyTurn = false;
        m_IsEnemyTurn      = false;
        m_IsApplyingAction = false;
        m_Team             = new List <Character> ();
        m_Healths          = new Dictionary <Character, Image> ();
        m_Animators        = new Dictionary <Character, Animator> ();
        int index = 0;

        foreach (CharacterModel model in TeamManagerProxy.Get().GetSortedTeam())
        {
            m_Team.Add(new Character(model));
            m_PlayerThumbnails[index].gameObject.SetActive(true);
            m_PlayerThumbnails[index].sprite = RessourceManager.LoadSprite("Models/" + model.GetClass().ToString(), 0);
            m_Animators.Add(m_Team[index], m_PlayerThumbnails[index].GetComponent <Animator>());
            m_Healths.Add(m_Team[index], m_PlayerThumbnails[index].transform.Find("Health").GetComponent <Image> ());
            index++;
        }
        for (int i = index; i < m_PlayerThumbnails.Count; ++i)
        {
            m_PlayerThumbnails[i].gameObject.SetActive(false);
        }
        m_CurrentPlayer = m_Team[0];
        ActivateButtons(true);

        m_Enemies = new List <Character> ();
        index     = 0;
        foreach (ECharacterClass characterClass in enemies)
        {
            m_Enemies.Add(new Character(new CharacterModel("Enemy", characterClass)));
            m_EnemiesThumbnails[index].gameObject.SetActive(true);
            m_EnemiesThumbnails[index].sprite = RessourceManager.LoadSprite("Models/" + characterClass.ToString(), 0);
            m_Animators.Add(m_Enemies[index], m_EnemiesThumbnails[index].GetComponent <Animator> ());
            m_Healths.Add(m_Enemies[index], m_EnemiesThumbnails[index].transform.Find("Health").GetComponent <Image> ());
            index++;
        }
        for (int i = index; i < m_EnemiesThumbnails.Count; ++i)
        {
            m_EnemiesThumbnails[i].gameObject.SetActive(false);
        }
        BattleManagerProxy.Get().Init(m_Team, m_Enemies);
        m_IsInBattle = true;
        UpdateUI();
    }
コード例 #5
0
    private void UpdateUI()
    {
        m_Models = new List <CharacterModel> ();
        int index = 0;

        foreach (CharacterModel model in TeamManagerProxy.Get().GetSortedTeam())
        {
            m_Models.Add(model);
            m_Players[index].SetActive(true);
            m_Players[index].GetComponentInChildren <Image>().sprite = RessourceManager.LoadSprite("Models/" + model.GetClass().ToString(), 0);
            index++;
        }
        for (int i = index; i < m_Players.Count; ++i)
        {
            m_Players[i].SetActive(false);
        }
    }
コード例 #6
0
ファイル: World.cs プロジェクト: AdrienMarcenat/LD43
    // This should be called before any other gameobject awakes
    private void Awake()
    {
        // Singleton pattern : this is the only case where it should be used
        if (ms_Instance == null)
        {
            ms_Instance = this;
            DontDestroyOnLoad(gameObject);

            // Keep the Updater first, as the other members might want to register to it
            m_Logger = new UnityLogger();
            LoggerProxy.Open(m_Logger);
            m_Updater = new Updater();
            UpdaterProxy.Open(m_Updater);
            m_GameEventManager = new GameEventManager();
            GameEventManagerProxy.Open(m_GameEventManager);
            m_InputManager = new InputManager();
            InputManagerProxy.Open(m_InputManager);
            m_CommandStack = new CommandStack();
            CommandStackProxy.Open(m_CommandStack);
            m_SoundManager = new SoundManager();
            SoundManagerProxy.Open(m_SoundManager);
            m_SoundManager.SetMusicSource(m_MusicSource);
            m_SoundManager.SetFXSource(m_EfxSource);
            m_LevelManager = new LevelManager();
            LevelManagerProxy.Open(m_LevelManager);
            m_TeamManager = new TeamManager();
            TeamManagerProxy.Open(m_TeamManager);
            m_BattleManager = new BattleManager();
            BattleManagerProxy.Open(m_BattleManager);

            m_GameFlowHSM = new GameFlowHSM();
            m_GameFlowHSM.Start(typeof(GameFlowMenuState));
        }
        else if (ms_Instance != this)
        {
            Destroy(gameObject);
            return;
        }
    }
コード例 #7
0
 public void ConfirmRemove()
 {
     m_WarningPanel.SetActive(false);
     TeamManagerProxy.Get().RemoveCharacterWithDialogue(m_Models[m_PendingRemoveIndex].GetName());
 }
コード例 #8
0
 public void OnGameEvent(OnDiversionEvent diversionEvent)
 {
     gameObject.SetActive(true);
     TeamManagerProxy.Get().WaitForDiversion();
 }
コード例 #9
0
ファイル: NodeView.cs プロジェクト: AdrienMarcenat/LD43
    private void OnEnter()
    {
        new CameraUnfollowEvent().Push();

        if (!m_IsVisited)
        {
            string tag = m_Resource.GetDialogueTag();
            m_IsVisited = true;

            switch (m_Resource.GetNodeType())
            {
            case ENodeType.Normal:
                if (tag != "")
                {
                    DialogueManagerProxy.Get().TriggerDialogue(tag);
                }
                break;

            case ENodeType.Battle:
                new OnNodeBattleGameEvent(true, this).Push();
                break;

            case ENodeType.Recruitment:
                DialogueManagerProxy.Get().TriggerDialogue(tag);
                break;

            case ENodeType.Key:
                DialogueManagerProxy.Get().TriggerDialogue("Key Found");
                TeamManagerProxy.Get().GetKey();
                break;

            case ENodeType.End:
                if (m_Resource.NeedKey())
                {
                    if (TeamManagerProxy.Get().HasKey())
                    {
                        DialogueManagerProxy.Get().TriggerDialogue(tag);
                        new GameFlowEvent(EGameFlowAction.LevelWon).Push();
                    }
                    else
                    {
                        DialogueManagerProxy.Get().TriggerDialogue("No Key");
                        m_IsVisited = false;
                    }
                }
                else
                {
                    DialogueManagerProxy.Get().TriggerDialogue(tag);
                    new GameFlowEvent(EGameFlowAction.LevelWon).Push();
                }
                break;

            default:
                if (tag != "")
                {
                    DialogueManagerProxy.Get().TriggerDialogue(tag);
                }
                break;
            }
        }
    }
コード例 #10
0
 public void Action()
 {
     TeamManagerProxy.Get().UseCharacterCapacity(m_CharacterName);
 }
コード例 #11
0
 public void Action()
 {
     TeamManagerProxy.Get().RemoveCharacterWithDialogue(m_CharacterName);
 }
コード例 #12
0
 public void Action()
 {
     TeamManagerProxy.Get().SayGoodbye();
 }
コード例 #13
0
 public void Action()
 {
     TeamManagerProxy.Get().AddCharacter(new CharacterModel(m_CharacterName, m_CharacterClass));
 }