void Awake() { _battlePlacement = GetComponentInParent <BattlePlacement>(); _battleSystem = FindObjectOfType <BattleSystem>(); _spriteRenderer = GetComponentInChildren <SpriteRenderer>(); _character = GetComponent <Character>(); }
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); }
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); }
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); }
public TargetSearch(BattlePlacement placement) { _parent = placement; }
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]); } }