From f7e9909909e178f39d0a7fb17ebf651ec44584a9 Mon Sep 17 00:00:00 2001 From: 01010100b Date: Sun, 14 Nov 2021 10:51:39 +0100 Subject: [PATCH] m --- AoE2Lib/Bots/GameElements/Unit.cs | 8 +++----- AoE2Lib/Bots/GameState.cs | 12 ++++++++---- Unary/Managers/UnitsManager.cs | 1 - Unary/UnitControllers/IdlerController.cs | 2 +- .../MilitaryControllers/DeerPusherController.cs | 4 ++++ .../MilitaryControllers/ScoutController.cs | 7 +++++-- 6 files changed, 21 insertions(+), 13 deletions(-) diff --git a/AoE2Lib/Bots/GameElements/Unit.cs b/AoE2Lib/Bots/GameElements/Unit.cs index 39b9576..f191887 100644 --- a/AoE2Lib/Bots/GameElements/Unit.cs +++ b/AoE2Lib/Bots/GameElements/Unit.cs @@ -50,13 +50,11 @@ public Unit GetTarget() var id = this[ObjectData.TARGET_ID]; - try + if (Bot.GameState.TryGetUnit(id, out Unit unit)) { - var target = Bot.GameState.GetUnit(id); - - return target; + return unit; } - catch (ArgumentOutOfRangeException) + else { return null; } diff --git a/AoE2Lib/Bots/GameState.cs b/AoE2Lib/Bots/GameState.cs index d1021f0..4c4c6ea 100644 --- a/AoE2Lib/Bots/GameState.cs +++ b/AoE2Lib/Bots/GameState.cs @@ -91,15 +91,19 @@ public UnitType GetUnitType(int id) return UnitTypes[id]; } - public Unit GetUnit(int id) + public bool TryGetUnit(int id, out Unit unit) { - if (Units.TryGetValue(id, out Unit unit)) + if (Units.TryGetValue(id, out Unit u)) { - return unit; + unit = u; + + return true; } else { - throw new ArgumentOutOfRangeException(nameof(id)); + unit = null; + + return false; } } diff --git a/Unary/Managers/UnitsManager.cs b/Unary/Managers/UnitsManager.cs index c8e4d26..da9cfbb 100644 --- a/Unary/Managers/UnitsManager.cs +++ b/Unary/Managers/UnitsManager.cs @@ -76,7 +76,6 @@ private void UpdateControllers() var controllers = GetControllers(); foreach (var controller in controllers) { - controller.Unit.RequestUpdate(); if (controller.Unit.Targetable) { controller.Update(); diff --git a/Unary/UnitControllers/IdlerController.cs b/Unary/UnitControllers/IdlerController.cs index 0fc4934..35bcbcc 100644 --- a/Unary/UnitControllers/IdlerController.cs +++ b/Unary/UnitControllers/IdlerController.cs @@ -20,7 +20,7 @@ protected override void Tick() { if (Unit[ObjectData.CMDID] == (int)CmdId.VILLAGER) { - if (Unary.UnitsManager.GetControllers().Count == 0) + if (Unary.UnitsManager.GetControllers().Count < 3 && Unary.UnitsManager.GetControllers().Count > 0) { new HunterController(Unit, Unary); } diff --git a/Unary/UnitControllers/MilitaryControllers/DeerPusherController.cs b/Unary/UnitControllers/MilitaryControllers/DeerPusherController.cs index ac19347..537ed08 100644 --- a/Unary/UnitControllers/MilitaryControllers/DeerPusherController.cs +++ b/Unary/UnitControllers/MilitaryControllers/DeerPusherController.cs @@ -49,6 +49,10 @@ private void ChooseDeer() { Deer = deer[0]; } + else + { + Deer = null; + } } private void PushDeer() diff --git a/Unary/UnitControllers/MilitaryControllers/ScoutController.cs b/Unary/UnitControllers/MilitaryControllers/ScoutController.cs index 08bfae8..2b62c46 100644 --- a/Unary/UnitControllers/MilitaryControllers/ScoutController.cs +++ b/Unary/UnitControllers/MilitaryControllers/ScoutController.cs @@ -32,9 +32,12 @@ protected override void MilitaryTick() if (deer > 0) { - new DeerPusherController(Unit, Unary); + if (Unary.UnitsManager.GetControllers().Count == 0) + { + new DeerPusherController(Unit, Unary); - return; + return; + } } if (State == null)