public override void Activate() { _battleModel = Model.BattleModel; _frontRow = _battleModel.FrontRow; _enemies = _battleModel.Enemies; _partyMinions = _battleModel.PlayerMinions; _enemyMinions = _battleModel.EnemyMinions; _logDrawer.Activate(); }
/// <summary> /// Initializes a new instance of the <see cref="BattleControllerImpl{ICharacterModel firstCharacter, ICharacterModel secondCharacter, IBattleModel model}"/> class. /// </summary> public BattleControllerImpl(ICharacterModel firstCharacter, ICharacterModel secondCharacter, IBattleModel model) { this.firstCharacter = firstCharacter; this.secondCharacter = secondCharacter; this.model = model; this.turn = 1; this.roll = true; countFate = new List <int>(2); for (int i = 0; i < 2; i++) { countFate.Add(0); } }
public override void InitializeImpl() { _battleModel = Model.BattleModel; _spell = Factories.RFactory.CreateMenuItem("Spell", () => Master.SetCurrentState((int)BattleMenuState.SelectSpell)); _switch = Factories.RFactory.CreateMenuItem("Switch", () => Master.SetCurrentState((int)BattleMenuState.Switch)); _convince = Factories.RFactory.CreateMenuItem("Convert", () => Master.SetCurrentState((int)BattleMenuState.Convince)); _formation = Factories.RFactory.CreateMenuItem("Set Formation", () => Master.SetCurrentState((int)BattleMenuState.SetFormation)); _controller = new MenuController(); Model.MenuModel.BattleMenu = this; }
public override void Run() { _battleModel = Model.BattleModel; _currentAttacker = _battleModel.CurrentAttacker; _targetInfo = _battleModel.TargetInfo; _enemyTurn = _battleModel.IsEnemyTurn; ++_frameCounter; if (_frameCounter == ConsequenceFrames) { FrameLimitReached(); return; } if (_frameCounter > 1) { FramesCounting(); return; } Calculate(); }
public override void InitializeImpl() { _battleModel = Model.BattleModel; }
public ITargetInfo SelectSpell(ICharacter character, IBattleModel battleModel, bool isEnemy) { // TODO Check if Boss has Rotation var targetInfo = new TargetInfo(); var lowHP = character.CurrentHP / character.Stats.GetTotalStat(BaseStat.HP) <= .3d; var lowMP = character.CurrentMP <= 75d; var silenced = character.IsSilenced; var defendAvailable = silenced || lowHP || lowMP; var spellSelectCount = 0; var initialSpellIndex = defendAvailable ? 1 : 2; var spellList = character.Spells; do { if (spellList.Count == 1) { targetInfo.Spell = spellList[0]; break; } ++spellSelectCount; if (spellSelectCount == 10) { initialSpellIndex = 0; } targetInfo.Spell = spellList[RHelper.Roll(silenced ? 0 : initialSpellIndex, silenced ? 1 : spellList.Count - 1)]; } while (targetInfo.Spell.MPCost >= character.CurrentMP + 1f); targetInfo.Target = null; var targetType = targetInfo.Spell.TargetType; if (targetType == TargetType.Allies || targetType == TargetType.Enemies) { return(targetInfo); } if (targetType == TargetType.Myself) { targetInfo.Target = character; return(targetInfo); } var enemies = battleModel.Enemies; var frontRow = battleModel.FrontRow; if (targetInfo.Spell.IsSupportSpell) { var rollMax = isEnemy ? enemies.Count - 1 : frontRow.Count - 1; do { targetInfo.Target = isEnemy ? enemies[RHelper.Roll(rollMax)] : frontRow[RHelper.Roll(rollMax)]; } while (targetInfo.Target.IsDead); return(targetInfo); } targetInfo.Target = isEnemy ? GetTarget(frontRow) : GetTarget(enemies); return(targetInfo); }
public BattleLog(IBattleModel battleModel) { _battleModel = battleModel; }
private bool UpdateAI(IList <ICharacter> list, ref int counter, bool enemyTurn, IBattleModel battleModel) { for (var i = counter; i < list.Count; ++i) { if (!list[i].UpdateTurnCounter()) { continue; } battleModel.TargetInfo = _spellSelect.SelectSpell(list[i], battleModel, enemyTurn); counter = i + 1; battleModel.CurrentBattleState = BattleState.Consequences; battleModel.CurrentAttacker = list[i]; battleModel.IsEnemyTurn = enemyTurn; _lastAttacker = list[i]; return(false); } counter = 0; return(true); }