コード例 #1
0
 void Awake()
 {
     _battlePlacement = GetComponentInParent <BattlePlacement>();
     _battleSystem    = FindObjectOfType <BattleSystem>();
     _spriteRenderer  = GetComponentInChildren <SpriteRenderer>();
     _character       = GetComponent <Character>();
 }
コード例 #2
0
    public override bool Application(BattleCharacter whoUsing, BattlePlacement battlePlacement)
    {
        whoUsing.CreateAction(new CharacterActionEvent(new CharacterActionEvent.OnTarget(
                                                           whoUsing,
                                                           whoUsing,
                                                           CharacterActionEvent.ActionOnTarget.Heal,
                                                           whoUsing.Attack * _percentageOfAttack / 100)));

        return(true);
    }
コード例 #3
0
    public List <CharacterActionEvent> Fight(BattlePlacement battlePlacement, List <BattleCharacter> queue)
    {
        _experiences = new Dictionary <BattleCharacter, CharacterExperience>();
        _queue       = queue;

        foreach (var member in battlePlacement.Search.AllTeam())
        {
            member.ActionEvent += OnAction;
            member.ChangedCharacteristics();
            _characters.Add(member);
            // _queue.Add(member);
            _experiences.Add(member, new CharacterExperience());
        }

        OnAction(new CharacterActionEvent(new CharacterActionEvent.System(CharacterActionEvent.ActionSystem.StartFight)));

        _isFinishGame = false;
        _queueNumber  = 0;
        while (!_isFinishGame)
        {
            _queue[_queueNumber].ActionSelection();

            while (_actionQueue.Count > 0)
            {
                ActionHandler(_actionQueue[0]);
                _actionQueue.Remove(_actionQueue[0]);
            }
        }

        Debug.Log("All Action:");
        foreach (var action in _allAction)
        {
            Debug.Log(action.ToString());
        }

        ChangeExperienceInInspector();
        foreach (var member in battlePlacement.Search.AllTeam())
        {
            member.ActionEvent -= OnAction;
        }

        return(_allAction);
    }
    public override bool Application(BattleCharacter whoUsing, BattlePlacement battlePlacement)
    {
        BattleCharacter enemy = battlePlacement.Search.FirstEnemyPositionOnMyLine(whoUsing);

        if (enemy != null)
        {
            whoUsing.CreateAction(new CharacterActionEvent(new CharacterActionEvent.OnTarget(
                                                               whoUsing,
                                                               enemy,
                                                               CharacterActionEvent.ActionOnTarget.Attack,
                                                               whoUsing.Attack * _percentageOfAttack / 100)));
        }
        else
        {
            whoUsing.CreateAction(new CharacterActionEvent(new CharacterActionEvent.System(CharacterActionEvent.ActionSystem.EndGame)));
        }

        return(true);
    }
コード例 #5
0
    public override bool Application(BattleCharacter whoUsing, BattlePlacement battlePlacement)
    {
        List <BattleCharacter> enemies = battlePlacement.Search.AllEnemyLivingTeam(whoUsing);

        foreach (var enemy in enemies)
        {
            whoUsing.CreateAction(new CharacterActionEvent(new CharacterActionEvent.OnTarget(
                                                               whoUsing,
                                                               enemy,
                                                               CharacterActionEvent.ActionOnTarget.Attack,
                                                               whoUsing.Attack * _percentageOfAttack / 100)));
        }

        if (enemies.Count == 0)
        {
            whoUsing.CreateAction(new CharacterActionEvent(new CharacterActionEvent.System(CharacterActionEvent.ActionSystem.EndGame)));
        }

        return(true);
    }
コード例 #6
0
 public TargetSearch(BattlePlacement placement)
 {
     _parent = placement;
 }
コード例 #7
0
    private void Start()
    {
        _battleTeams    = (new SaveBattleSystem()).BattleTeams;
        _characterViews = new Dictionary <BattleCharacter, FightCharacterView>();
        List <BattleCharacterPlacement>   teamA      = new List <BattleCharacterPlacement>();
        List <BattleCharacterPlacement>   teamB      = new List <BattleCharacterPlacement>();
        List <BattleCharacter>            queue      = new List <BattleCharacter>();
        Dictionary <BattleCharacter, int> queueTeamA = new Dictionary <BattleCharacter, int>();
        Dictionary <BattleCharacter, int> queueTeamB = new Dictionary <BattleCharacter, int>();

        foreach (var member in _battleTeams.FightTeamA.Characters)
        {
            DatabaseCharacter databaseCharacter = _database.GetDatabaseCharacter(member.Id);
            BattleCharacter   character         = new BattleCharacter(databaseCharacter.BattleCharacter, databaseCharacter.Characteristics, null);
            PlacementPosition position          = new PlacementPosition(member.LinePosition, member.ColumnPosition);

            teamA.Add(new BattleCharacterPlacement(character, position));
            queueTeamA.Add(character, member.PlaceInQueue);
        }

        foreach (var member in _battleTeams.FightTeamB.Characters)
        {
            DatabaseCharacter databaseCharacter = _database.GetDatabaseCharacter(member.Id);
            BattleCharacter   character         = new BattleCharacter(databaseCharacter.BattleCharacter, databaseCharacter.Characteristics, null);
            PlacementPosition position          = new PlacementPosition(member.LinePosition, member.ColumnPosition);

            teamB.Add(new BattleCharacterPlacement(character, position));
            queueTeamB.Add(character, member.PlaceInQueue);
        }

        _battlePlacement = new BattlePlacement(teamA, teamB);

        foreach (var member in _battlePlacement.Search.AllTeam())
        {
            member.SetBattlePlacement(_battlePlacement);
        }

        foreach (var member in teamA)
        {
            FightSpawnPoint    spawnPoint     = _teamASpownPoints[member.Position.Line].points[member.Position.Column];
            FightCharacterView fightCharacter = Instantiate(_prefabCharacter, spawnPoint.transform);
            _characterViews.Add(member.Character, fightCharacter);
        }

        foreach (var member in teamB)
        {
            FightSpawnPoint    spawnPoint     = _teamBSpownPoints[member.Position.Line].points[member.Position.Column];
            FightCharacterView fightCharacter = Instantiate(_prefabCharacter, spawnPoint.transform);
            _characterViews.Add(member.Character, fightCharacter);
        }

        for (int i = 0; queueTeamA.Count > 0 || queueTeamB.Count > 0; i++)
        {
            if (i % 2 == 0)
            {
                if (queueTeamA.Count > 0)
                {
                    BattleCharacter battleCharacter = null;
                    int             j = int.MaxValue;

                    foreach (var key in queueTeamA.Keys)
                    {
                        if (queueTeamA[key] < j)
                        {
                            battleCharacter = key;
                            j = queueTeamA[key];
                        }
                    }

                    if (battleCharacter != null)
                    {
                        queue.Add(battleCharacter);
                        queueTeamA.Remove(battleCharacter);
                    }
                }
            }
            else
            {
                if (queueTeamB.Count > 0)
                {
                    BattleCharacter battleCharacter = null;
                    int             j = int.MaxValue;

                    foreach (var key in queueTeamB.Keys)
                    {
                        if (queueTeamB[key] < j)
                        {
                            battleCharacter = key;
                            j = queueTeamB[key];
                        }
                    }

                    if (battleCharacter != null)
                    {
                        queue.Add(battleCharacter);
                        queueTeamB.Remove(battleCharacter);
                    }
                }
            }
        }

        _timer          = 0;
        _fightControler = GetComponent <FightControler>();

        _allAction = _fightControler.Fight(_battlePlacement, queue);

        for (_countAction = 0; _countAction < _allAction.Count; _countAction++)
        {
            if (_allAction[_countAction].Act == CharacterActionEvent.Action.System)
            {
                if (_allAction[_countAction].ActSystem.SystemEnum == CharacterActionEvent.ActionSystem.StartFight)
                {
                    return;
                }
            }

            ActionHandler(_allAction[_countAction]);
        }
    }