private List <AIDecisionCA> PrepareToDefense(int lineIndex) { var balance = _goldController.GetBalance(); var units = GetAvailableUnits(balance); List <AIDecisionCA> decisions = new List <AIDecisionCA>(); if (units.Count == 0) { //Debug.Log("No defense units available"); } //int maxSpawn = 2; List <UnitTransferObject> spawnedUnits = new List <UnitTransferObject>(); var baseRatio = GetNewLineRatio(lineIndex, spawnedUnits); var ratio = 1000f; while (units.Count > 0 && (ratio - baseRatio) > DEF_OVERSPAWN) { AIDecisionCA decision = new AIDecisionCA(units[0]._unitType, lineIndex, false); spawnedUnits.Add(units[0]); decisions.Add(decision); balance -= (int)units[0]._cost; ratio = GetNewLineRatio(lineIndex, spawnedUnits); units = GetAvailableUnits(balance); } return(decisions); }
private List <AIDecisionCA> PrepareToAttack(int lineIndex) { var balance = _goldController.GetBalance(); var units = GetAvailableUnits(balance); List <AIDecisionCA> decisions = new List <AIDecisionCA>(); if (units.Count == 0) { //Debug.Log("No attack units available"); } List <UnitTransferObject> spawnedUnits = new List <UnitTransferObject>(); var baseRatio = GetNewLineRatio(lineIndex, spawnedUnits); var ratio = 1000f; while (units.Count > 0 && (ratio / baseRatio) < ATCK_OVERSPAWN || _firstRound) { AIDecisionCA decision = new AIDecisionCA(units[0]._unitType, lineIndex, false); spawnedUnits.Add(units[0]); decisions.Add(decision); balance -= (int)units[0]._cost; ratio = GetNewLineRatio(lineIndex, spawnedUnits); units = GetAvailableUnits(balance); _firstRound = false; } return(decisions); }