private void DrawGlobalHeatmap() { var state = _gameInstance.State; var mouseMob = state.AtCoord(_camera.MouseHex, true); var heatmap = Heatmap.BuildHeatmap(_gameInstance, mouseMob); DrawHeatmap(heatmap); }
private void DrawHoverHeatmap(int currentMob) { if (_gameInstance.Pathfinder.IsValidCoord(_camera.MouseHex)) { var state = _gameInstance.State; var mouseMob = state.AtCoord(_camera.MouseHex, true); if (mouseMob.HasValue) { var heatmap = Heatmap.BuildHeatmap(_gameInstance, mouseMob); DrawHeatmap(heatmap); } } }
/// <summary> /// Generates a number of defensive move actions based on a heatmap. /// </summary> public static void GenerateDefensiveMoveActions(GameInstance state, CachedMob mob, List <UctAction> result) { var heatmap = Heatmap.BuildHeatmap(state, null, false); var coords = new List <AxialCoord>(); var mobInstance = mob.MobInstance; var mobId = mob.MobId; foreach (var coord in heatmap.Map.AllCoords) { if (heatmap.Map[coord] != heatmap.MinValue) { continue; } if (state.Map[coord] == HexType.Wall) { continue; } if (state.State.AtCoord(coord, true).HasValue) { continue; } bool canMoveTo = state.Pathfinder.Distance(mobInstance.Coord, coord) <= mobInstance.Ap; if (!canMoveTo) { continue; } coords.Add(coord); } coords.Shuffle(); int maximumMoveActions = Math.Max(0, 3 - result.Count); for (int i = 0; i < Math.Min(coords.Count, maximumMoveActions); i++) { var action = UctAction.DefensiveMoveAction(mobId, coords[i]); GameInvariants.AssertValidAction(state, action); result.Add(action); } }