public void OnBuildHoverEnter(int id) { var elem = ModularRoomFactory.BuildModularRoom((RoomType)id, null); _explanationPanelScript.gameObject.SetActive(true); _explanationPanelScript.Name.text = elem.GetName(); _explanationPanelScript.Description.text = elem.GetDescription(); }
private void Update() { // We want the user to click and release his mouse on the same element if (Input.GetMouseButtonDown(0)) { currInfoD = null; var mousePos = Input.mousePosition; mousePos.z = -Camera.main.transform.position.z; var pos = Camera.main.ScreenToWorldPoint(mousePos); var pos2d = (Vector2)pos; var room = MapManager.S.MapRooms.FirstOrDefault((x) => { var xSize = x.Size.x / 2f; return(pos2d.x > x.GameObject.transform.position.x - xSize && pos2d.x < x.GameObject.transform.position.x + xSize && pos2d.y > x.GameObject.transform.position.y && pos2d.y < x.GameObject.transform.position.y + x.Size.y); }); if (room != null) { if (_currentSelection != null && room.IsBuilt) // We want to change the type of a room { clicked = room as GenericRoom; if (clicked != null && !clicked.RoomType.IsEmpty()) { clicked = null; } } else // Display info about a room { _roomInfo.Name.text = room.GetName(); _roomInfo.Description.text = room.GetDescription(); if (_roomInfo.DetailPanel.transform.childCount > 0) { Destroy(_roomInfo.DetailPanel.transform.GetChild(0).gameObject); } var gRoom = room as GenericRoom; if (gRoom != null || room.IsBuilt) { var p = room.IsBuilt ? gRoom.RoomType.GetDescriptionPanel() : room.GetDescriptionPanel(); if (p != null) { var go = Instantiate(p, _roomInfo.DetailPanel.transform); var t = (RectTransform)go.transform; var pT = (RectTransform)_roomInfo.DetailPanel.transform; t.sizeDelta = Vector2.zero; t.position = pT.position; if (room.IsBuilt) { gRoom.RoomType.SetupConfigPanel(go); } else { room.SetupConfigPanel(go); } } } _roomInfo.gameObject.SetActive(true); currInfoD = gRoom; } } else if (Input.mousePosition.x < Screen.width - 200 || Input.mousePosition.y < Screen.height - 300) { _roomInfo.gameObject.SetActive(false); } } if (Input.GetMouseButtonUp(0) && clicked != null && clicked.IsBuilt) { clicked.RoomType = ModularRoomFactory.BuildModularRoom(_currentSelection.Value, clicked); int index; if (clicked.Size.x == 2) { if (clicked.Size.y == 1) { index = 0; } else { index = 1; } } else { if (clicked.Size.y == 1) { index = 2; } else { index = 3; } } GameObject go; if (_currentSelection.Value == RoomType.AIRLOCK) { go = PAirlock[index]; } else if (_currentSelection.Value == RoomType.DEFENSE) { go = PDefense[index]; } else if (_currentSelection.Value == RoomType.FACTORY) { go = PFactory[index]; } else if (_currentSelection.Value == RoomType.MINING) { go = PMining[index]; } else if (_currentSelection.Value == RoomType.STORAGE) { go = PStorage[index]; } else { go = null; } if (go != null) { var n = Instantiate(go, clicked.GameObject.transform.position, Quaternion.Euler(0f, 180f, 0f)); Destroy(clicked.GameObject); clicked.GameObject = n; } EventManager.S.NotifyManager(Events.Event.RoomSetType, clicked); clicked = null; SetCurrentBuild(-1); } if (Input.GetMouseButtonDown(1)) // Reset selection { currInfoD = null; if (_currentSelection != null) { SetCurrentBuild(-1); } SubmarineManager.S.RemoveSubmarinePlacementMode(); } }