Exemplo n.º 1
0
        private void DrawGlobalHeatmap()
        {
            var state = _gameInstance.State;

            var mouseMob = state.AtCoord(_camera.MouseHex, true);
            var heatmap  = Heatmap.BuildHeatmap(_gameInstance, mouseMob);

            DrawHeatmap(heatmap);
        }
Exemplo n.º 2
0
        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);
                }
            }
        }
Exemplo n.º 3
0
        /// <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);
            }
        }