public override ActionEventData HandleMouse(MouseData mouse, IDataRogueControlRenderer renderer, ISystemContainer systemContainer)
        {
            if (mouse.IsLeftClick)
            {
                var mapEditor = systemContainer.ActivitySystem.MapEditorActivity;

                var command = renderer.StringFromMouseData(this, systemContainer, mouse);

                if (command == "Primary Cell")
                {
                    mapEditor.ShowChangePrimaryCellDialogue();
                }

                if (command == "Secondary Cell")
                {
                    mapEditor.ShowChangeSecondaryCellDialogue();
                }

                if (command == "Default Cell")
                {
                    mapEditor.ShowChangeDefaultCellDialogue();
                }
            }

            return(null);
        }
Beispiel #2
0
        protected IDataRogueControlRenderer GetCachedRenderer(List <IDataRogueControlRenderer> controlRenderers)
        {
            if (_cachedRenderer == null)
            {
                _cachedRenderer = controlRenderers.Single(r => r.DisplayType == GetType());
            }

            return(_cachedRenderer);
        }
Beispiel #3
0
        public override ActionEventData HandleMouse(MouseData mouse, IDataRogueControlRenderer renderer, ISystemContainer systemContainer)
        {
            MapCoordinate mapCoordinate = GetMapCoordinate(mouse, systemContainer);

            systemContainer.ControlSystem.HoveredCoordinate = mapCoordinate;

            var player = systemContainer.PlayerSystem.Player;

            if (mouse.IsLeftClick && systemContainer.TimeSystem.WaitingForInput && CanAutowalkToCoordinate(systemContainer, mapCoordinate))
            {
                var playerLocation = systemContainer.PositionSystem.CoordinateOf(player);
                var map            = systemContainer.MapSystem.MapCollection[systemContainer.RendererSystem.CameraPosition.Key];
                var path           = _pathfindingAlgorithm.Path(map, playerLocation, mapCoordinate);

                if (path != null)
                {
                    var action = new ActionEventData {
                        Action = ActionType.FollowPath, Parameters = string.Join(";", path.Select(m => m.ToString()))
                    };

                    return(action);
                }
            }

            if (mouse.IsRightClick && systemContainer.TimeSystem.WaitingForInput)
            {
                var map = systemContainer.MapSystem.MapCollection[systemContainer.RendererSystem.CameraPosition.Key];

                if (map.SeenCoordinates.Contains(mapCoordinate))
                {
                    var playerFov = FOVHelper.CalculatePlayerFov(systemContainer);

                    var entities = systemContainer.PositionSystem.EntitiesAt(mapCoordinate);

                    if (!playerFov.Contains(mapCoordinate))
                    {
                        entities = entities.Where(e => e.Has <Memorable>()).ToList();
                    }

                    IEntity entityToShow = entities.OrderByDescending(e => e.Has <Appearance>() ? e.Get <Appearance>().ZOrder : int.MinValue).First();

                    var action = new ActionEventData {
                        Action = ActionType.Examine, Parameters = entityToShow.EntityId.ToString()
                    };

                    return(action);
                }
            }

            return(null);
        }
Beispiel #4
0
        public override ActionEventData HandleMouse(MouseData mouse, IDataRogueControlRenderer renderer, ISystemContainer systemContainer)
        {
            var mapEditor = systemContainer.ActivitySystem.MapEditorActivity;

            if ((mouse.LeftButtonDown && !mapEditor.CurrentTool.RequiresClick) || mouse.IsLeftClick)
            {
                MapCoordinate mapCoordinate = systemContainer.RendererSystem.Renderer.GetMapEditorMapCoordinateFromMousePosition(systemContainer.RendererSystem.CameraPosition, mouse.X, mouse.Y);
                mapEditor.ApplyTool(mapCoordinate, mapEditor.PrimaryCell, mapEditor.SecondaryCell);
            }

            if ((mouse.RightButtonDown && !mapEditor.CurrentTool.RequiresClick) || mouse.IsRightClick)
            {
                MapCoordinate mapCoordinate = systemContainer.RendererSystem.Renderer.GetMapEditorMapCoordinateFromMousePosition(systemContainer.RendererSystem.CameraPosition, mouse.X, mouse.Y);
                mapEditor.ApplyTool(mapCoordinate, mapEditor.SecondaryCell, mapEditor.PrimaryCell);
            }

            return(null);
        }
        public void Render(ISystemContainer systemContainer, IActivity activity, int activityIndex)
        {
            if (activity.RendersEntireSpace)
            {
                _console.Clear();
            }

            var playerFov = systemContainer.ActivitySystem.GameplayActivity.Running ? FOVHelper.CalculatePlayerFov(systemContainer) : null;

            DoLayout(systemContainer, activity, playerFov);

            foreach (var control in activity.Controls)
            {
                control.SetActivityIndex(activityIndex);
                IDataRogueControlRenderer controlRenderer = GetRendererFor(control);
                controlRenderer.Paint(_console, control, systemContainer, playerFov);
            }
        }
Beispiel #6
0
        public override ActionEventData HandleMouse(MouseData mouse, IDataRogueControlRenderer renderer, ISystemContainer systemContainer)
        {
            if (mouse.IsLeftClick)
            {
                var hoveredSkill = renderer.EntityFromMouseData(this, systemContainer, mouse);
                if (hoveredSkill != null)
                {
                    return(new ActionEventData
                    {
                        Action = ActionType.UseSkill,
                        IsAction = true,
                        Parameters = hoveredSkill.Get <Prototype>().Name
                    });
                }
            }

            return(null);
        }
        public override ActionEventData HandleMouse(MouseData mouse, IDataRogueControlRenderer renderer, ISystemContainer systemContainer)
        {
            if (mouse.IsLeftClick)
            {
                var tool = renderer.EntityFromMouseData(this, systemContainer, mouse);
                if (tool != null)
                {
                    return(new ActionEventData
                    {
                        Action = ActionType.ChangeMapEditorTool,
                        IsAction = false,
                        Parameters = tool.DescriptionName
                    });
                }
            }

            return(null);
        }
Beispiel #8
0
 public virtual ActionEventData HandleMouse(MouseData mouse, IDataRogueControlRenderer renderer, ISystemContainer systemContainer) => null;