Exemplo n.º 1
0
    public void RegisterCharacter(Character character)
    {
        if (!_activeCharacters.Contains(character))
        {
            LogEx.Log <BattleSystem>("Registered character: '{0}'", character.name);

            _activeCharacters.Add(character);

            character.BattleEntities.ForEach(x => x.Initialize(this));

            // Assign character into player slot.
            //character.Owner.FieldSide.Register(character);

            if (CharacterAddedToSlot != null)
            {
                CharacterAddedToSlot.Invoke(character);
            }

            if (PostCharacterAddedToSlot != null)
            {
                PostCharacterAddedToSlot.Invoke(character);
            }
        }
        else
        {
            LogEx.LogError <BattleSystem>("Cannot register character '{0}' as they are already registered.", character.name);
        }
    }
Exemplo n.º 2
0
    public void RegisterPlayer(Player player, int fieldSideID)
    {
        if (!_players.Contains(player))
        {
            LogEx.Log <BattleSystem>("Registered player: '{0}'", player.name);

            _players.Add(player);

            fieldSideID = Mathf.Clamp(fieldSideID, 0, _fieldSides.Count - 1);

            player.AssignFieldSide(_fieldSides[fieldSideID]);

            // TEMP!!!
            //RegisterCharacter(player.ActiveCharacter);

            // TEMP!!!
            //player.ActiveCharacter.BattleEntities.ForEach(x => x.Initialize(this));

            if (PlayerAdded != null)
            {
                PlayerAdded.Invoke(player);
            }
        }
        else
        {
            LogEx.LogError <BattleSystem>("Cannot register player '{0}' as they are already registered.", player.name);
        }
    }
Exemplo n.º 3
0
 public void AddPlayer(Player player, int fieldSide)
 {
     if (Players.Any(x => x.Player == player))
     {
         LogEx.LogError <SetupParams>("Cannot add player as player {0} has already been registered.", player.name);
     }
     else
     {
         Players.Add(new PlayerData(player, fieldSide));
     }
 }
Exemplo n.º 4
0
    void OnPlayerReplacementCharacterSelected(ReplaceCommand replaceCommand)
    {
        Coordinator.System.RegisterPlayerCommand(replaceCommand);

        if (_replacingPlayers.Contains(replaceCommand.Player))
        {
            _replacingPlayers.Remove(replaceCommand.Player);
        }
        else
        {
            LogEx.LogError <BattleStatePostTurn>("Player {0} cannot be removed as they were never registered.", replaceCommand.Player.name);
        }

        if (_replacingPlayers.Count == 0)
        {
            LogEx.Log <BattleStatePostTurn>("All players have chosen their replacements. Executing...");
            End();
        }
    }
Exemplo n.º 5
0
    public void UnregisterPlayer(Player player)
    {
        if (_players.Contains(player))
        {
            LogEx.Log <BattleSystem>("Unregistered player: '{0}'", player.name);

            _players.Remove(player);

            // TEMP!!!
            UnregisterCharacter(player.ActiveCharacter);

            if (PlayerRemoved != null)
            {
                PlayerRemoved.Invoke(player);
            }
        }
        else
        {
            LogEx.LogError <BattleSystem>("Cannot unregister player '{0}' as they were never registered.", player.name);
        }
    }
Exemplo n.º 6
0
    public void Start()
    {
        if (BattlePrototype != null)
        {
            var setupParams = new SetupParams();
            var players     = FindObjectsOfType <Player>();

            // Register each player to a side.
            for (int i = 0; i < players.Length; i++)
            {
                int sideID = i % 2;
                setupParams.AddPlayer(players[i], sideID);
            }

            var battleInstance = Instantiate(BattlePrototype);
            battleInstance.Initialize(setupParams);
        }
        else
        {
            LogEx.LogError <Root>("The Battle reference is missing or null. Make sure that the Battle field is referencing a prefab.");
        }
    }
Exemplo n.º 7
0
    public void UnregisterCharacter(Character character)
    {
        if (_activeCharacters.Contains(character))
        {
            LogEx.Log <BattleSystem>("Unregistered character: '{0}'", character.name);

            _activeCharacters.Remove(character);

            if (CharacterRemovedFromSlot != null)
            {
                CharacterRemovedFromSlot.Invoke(character);
            }

            if (PostCharacterRemovedFromSlot != null)
            {
                PostCharacterRemovedFromSlot.Invoke(character);
            }
        }
        else
        {
            LogEx.LogError <BattleSystem>("Cannot unregister character '{0}' as they were never registered.", character.name);
        }
    }