Exemplo n.º 1
0
        public override void HandleInput(InputEvent inputEvent)
        {
            if (inputEvent is MapTileClickedInput)
            {
                MapTileClickedInput mapTileClickedInput = inputEvent as MapTileClickedInput;

                m_TargetCoordinate = mapTileClickedInput.coordinate;
                MapTile mapTile = mapController.GetMapTileAtCoordinate(m_TargetCoordinate);
                if (mapTile.entities.Count > 0)
                {
                    m_Target = mapTile.entities[0];
                }
                PerformAction();
            }
        }
Exemplo n.º 2
0
        public override void HandleInput(InputEvent inputEvent)
        {
            if (inputEvent is MapTileClickedInput)
            {
                MapTileClickedInput mapTileClickedInput = inputEvent as MapTileClickedInput;

                MapTile mapTile = mapController.GetMapTileAtCoordinate(mapTileClickedInput.coordinate);

                if (mapTile.entities.Count > 0 && player.GetEntity(mapTile.entities[0].Id) != null)
                {
                    SelectedStateData selectedStateData = ScriptableObject.CreateInstance <SelectedStateData>();
                    selectedStateData.coordinate = mapTileClickedInput.coordinate;

                    dispatcher.Dispatch <SelectedState>(selectedStateData);
                }
            }

            if (inputEvent is CycleSelectionInput)
            {
                Entity availableEntity = player.entities.Find(entity => entity.ActionPoints > 0);
                if (availableEntity != null)
                {
                    Coordinate        coordinate        = mapController.GetPositionOfEntity(availableEntity.Id);
                    SelectedStateData selectedStateData = ScriptableObject.CreateInstance <SelectedStateData>();
                    selectedStateData.coordinate = coordinate;

                    dispatcher.Dispatch <SelectedState>(selectedStateData);
                }
            }

            if (inputEvent is OpenResearchInput)
            {
                dispatcher.Dispatch <ResearchState>();
            }

            if (inputEvent is EndOfTurnInput)
            {
                dispatcher.Dispatch <WaitingState>();
            }
        }
Exemplo n.º 3
0
        private void AddMapTileToMap(object sender, MapTileAddedArgs args)
        {
            GameObject newMapTileWidgetInstance = Instantiate(MapTilePrefabReference, transform);

            newMapTileWidgetInstance.name = "Tile (" + args.coordinate.x.ToString() + "," + args.coordinate.y.ToString() + ")";

            MapTileWidget mapTileWidget = newMapTileWidgetInstance.GetComponent <MapTileWidget>();

            mapTileWidget.mapTile = args.mapTile;

            mapTileWidget.MapTileClicked += delegate(object sentBy, MapTileWidget.MapTileClickedEventArgs e)
            {
                switch (e.pointerEventData.button)
                {
                case UnityEngine.EventSystems.PointerEventData.InputButton.Left:

                    MapTileClickedInput mapTileClickedInput = new MapTileClickedInput()
                    {
                        coordinate = args.coordinate,
                        mapTile    = args.mapTile
                    };
                    inputController.RegisterInputEvent(mapTileClickedInput);

                    break;

                default:

                    break;
                }
            };

            mapTileWidget.MapTileHover += (sentBy, e) => ShowEntityInspectorCanvas(mapTileWidget);

            mapTileWidget.MapTileUnHover += (sentBy, e) => HideEntityInspectorCanvas();

            m_CoordinateToTransform.Add(args.coordinate, newMapTileWidgetInstance.transform);
        }
Exemplo n.º 4
0
        public override void HandleInput(InputEvent inputEvent)
        {
            if (inputEvent is MapTileClickedInput)
            {
                MapTileClickedInput mapTileClickedInput = inputEvent as MapTileClickedInput;
                MoveAction          moveAction          = m_CurrentlySelectedEntity.GetAction <MoveAction>();

                if (m_Paths.ContainsKey(mapTileClickedInput.coordinate) && moveAction.CanExecute(player, m_CurrentlySelectedEntity, mapTileClickedInput.coordinate, null))
                {
                    PerformingActionStateData stateData = ScriptableObject.CreateInstance <PerformingActionStateData>();
                    stateData.action           = moveAction;
                    stateData.source           = m_CurrentlySelectedEntity;
                    stateData.targetCoordinate = mapTileClickedInput.coordinate;

                    dispatcher.Dispatch <PerformingActionState>(stateData);
                }
                else if (mapTileClickedInput.mapTile.entities.Count > 0 && player.GetEntity(mapTileClickedInput.mapTile.entities[0].Id) != null)
                {
                    SelectedStateData selectedStateData = ScriptableObject.CreateInstance <SelectedStateData>();
                    selectedStateData.coordinate = mapTileClickedInput.coordinate;

                    dispatcher.Dispatch <SelectedState>(selectedStateData);
                }
                else
                {
                    dispatcher.Dispatch <IdleState>();
                }
            }

            if (inputEvent is CycleSelectionInput)
            {
                int    currentIndex    = player.entities.FindIndex(entity => entity.Id == CurrentlySelectedEntity.Id);
                Entity availableEntity = player.entities
                                         .GetRange(currentIndex + 1, player.entities.Count - currentIndex - 1)
                                         .Find(entity => entity.ActionPoints > 0);

                if (availableEntity != null)
                {
                    Coordinate        coordinate        = mapController.GetPositionOfEntity(availableEntity.Id);
                    SelectedStateData selectedStateData = ScriptableObject.CreateInstance <SelectedStateData>();
                    selectedStateData.coordinate = coordinate;

                    dispatcher.Dispatch <SelectedState>(selectedStateData);
                }
                else
                {
                    dispatcher.Dispatch <IdleState>();
                }
            }

            if (inputEvent is ActionButtonClickedInput)
            {
                ActionButtonClickedInput  actionButtonClickedInput = inputEvent as ActionButtonClickedInput;
                PerformingActionStateData stateData = ScriptableObject.CreateInstance <PerformingActionStateData>();
                stateData.action = m_CurrentlySelectedEntity.GetAction(actionButtonClickedInput.actionType);
                stateData.source = m_CurrentlySelectedEntity;
                stateData.target = actionButtonClickedInput.target;

                dispatcher.Dispatch <PerformingActionState>(stateData);
            }
        }