using CommonAI.Data; using CommonAI.RTS.Manhattan; using CommonAI.Zone; using CommonAI.Zone.Helper; using CommonLang; using System; using System.Collections.Generic; using System.Linq; using System.Text; //using System.Threading.Tasks; namespace CommonAI.ZoneServer.JSGModule { class AstarManhattanCache { public class AStartCacheData { public ZoneManhattanMap mManhattanMap; public AstarManhattan mAstartManhattan; } private static readonly HashMap> mCacheAstar = new HashMap>(); public static void CacheSceneAstart(int sceneID, ZoneInfo info, TerrainDefinitionMap terrainMap, SceneType type) { List astarList = mCacheAstar.Get(sceneID); if(astarList == null) { astarList = new List(1); mCacheAstar.Put(sceneID, astarList); } AStartCacheData cacheTemp = new AStartCacheData(); cacheTemp.mManhattanMap = new ZoneManhattanMap(info.Clone() as ZoneInfo, terrainMap); cacheTemp.mAstartManhattan = new AstarManhattan(cacheTemp.mManhattanMap, true, JSGModule.GetSpaceDiveSize(type)); astarList.Add(cacheTemp); } public static AStartCacheData GetCacheAStart(int sceneID) { List astarList = mCacheAstar.Get(sceneID); if (astarList != null && astarList.Count > 0) { AStartCacheData result = astarList[0]; astarList.RemoveAt(0); if(astarList.Count <= 0) { mCacheAstar.Remove(sceneID); } return result; } return null; } } }