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(); } }
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>(); } }
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); }
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); } }