From 19494c3262e32b3c34dbdef2c89b5bde2dfa9c1e Mon Sep 17 00:00:00 2001 From: Chris Forbes Date: Wed, 11 Aug 2010 20:19:38 +1200 Subject: [PATCH] much better ai bases --- OpenRA.Mods.RA/World/HackyAI.cs | 23 +++++++++-------------- 1 file changed, 9 insertions(+), 14 deletions(-) diff --git a/OpenRA.Mods.RA/World/HackyAI.cs b/OpenRA.Mods.RA/World/HackyAI.cs index f656c315fb..7edd76c9b2 100644 --- a/OpenRA.Mods.RA/World/HackyAI.cs +++ b/OpenRA.Mods.RA/World/HackyAI.cs @@ -24,14 +24,10 @@ namespace OpenRA.Mods.RA { "barr", .05f }, { "tent", .05f }, { "weap", .05f }, - { "pbox", .1f }, - { "ftur", .1f }, - { "gun", .1f }, { "atek", .01f }, { "stek", .01f }, { "silo", .05f }, - { "tsla", .1f }, - { "agun", .1f }, + { "fix", .01f }, { "hpad", .01f }, { "afld", .01f }, { "dome", .01f }, @@ -46,6 +42,8 @@ namespace OpenRA.Mods.RA int lastThinkTick = 0; + const int MaxBaseDistance = 15; + BuildState state = BuildState.WaitForFeedback; public void GameStarted(World w) @@ -98,16 +96,13 @@ namespace OpenRA.Mods.RA int2? ChooseBuildLocation(ProductionItem item) { - var bi = Rules.Info[ item.Item ].Traits.Get(); + var bi = Rules.Info[item.Item].Traits.Get(); - for( var i = -10; i < 10; i++ ) // fail distribution! - for (var j = -10; j < 10; j++) - { - var topleft = baseCenter + new int2(i,j); - if (Game.world.CanPlaceBuilding(item.Item, bi, topleft, null)) - if (Game.world.IsCloseEnoughToBase(p, item.Item, bi, topleft)) - return topleft; - } + for (var k = 0; k < MaxBaseDistance; k++) + foreach (var t in Game.world.FindTilesInCircle(baseCenter, k)) + if (Game.world.CanPlaceBuilding(item.Item, bi, t, null)) + if (Game.world.IsCloseEnoughToBase(p, item.Item, bi, t)) + return t; return null; // i don't know where to put it. }