public CursorInfoDisplay(MouseController mouseController, BuildModeController buildModeController) { mc = mouseController; bmc = buildModeController; }
private void UpdateDrag() { //RETURN OVER UI if (EventSystem.current.IsPointerOverGameObject()) { return; } //!Start of drag if (Input.GetMouseButtonDown(0)) { dragStartPos = currFramePos; } int startX = Mathf.FloorToInt(dragStartPos.x); int endX = Mathf.FloorToInt(currFramePos.x); int startY = Mathf.FloorToInt(dragStartPos.y); int endY = Mathf.FloorToInt(currFramePos.y); if (endX < startX) // IF we are dragging from the left. { int temp = endX; endX = startX; startX = temp; } if (endY < startY) // IF we are dragging from the left. { int temp = endY; endY = startY; startY = temp; } //Clean up old drag previews while (dragPreviewGO.Count > 0) { { GameObject go = dragPreviewGO[0]; dragPreviewGO.RemoveAt(0); SimplePool.Despawn(go); } } if (Input.GetMouseButton(0)) { //Display a preview of drag area for (int x = startX; x <= endX; x++) { for (int y = startY; y <= endY; y++) { Tile t = WorldController.Instance.World.GetTileAt(x, y); if (t != null) { //Display Building hint ontop of tile GameObject go = SimplePool.Spawn(cursorPrefab, new Vector3(x, y, 0), Quaternion.identity); go.transform.SetParent(this.transform, true); dragPreviewGO.Add(go); } } } } //! end drag if (Input.GetMouseButtonUp(0)) { BuildModeController bmc = GameObject.FindObjectOfType <BuildModeController>(); for (int x = startX; x <= endX; x++) { for (int y = startY; y <= endY; y++) { Tile t = WorldController.Instance.World.GetTileAt(x, y); if (t != null) { //Call build mode controller do build bmc.DoBuild(t); } } } } }
// Use this for initialization. public KeyboardController(BuildModeController buildModeController, WorldController worldController) { bmc = buildModeController; wc = worldController; }
public void Start() { // Create GameObject so we can have access to a transform which has a position of "Vector3.zero". new GameObject("VisualPath", typeof(VisualPath)); GameObject go; TileSpriteController = new TileSpriteController(World); CharacterSpriteController = new CharacterSpriteController(World); FurnitureSpriteController = new FurnitureSpriteController(World); UtilitySpriteController = new UtilitySpriteController(World); JobSpriteController = new JobSpriteController(World, FurnitureSpriteController, UtilitySpriteController); InventorySpriteController = new InventorySpriteController(World, inventoryUI); ShipSpriteController = new ShipSpriteController(World); BuildModeController = new BuildModeController(); SpawnInventoryController = new SpawnInventoryController(); MouseController = new MouseController(BuildModeController, FurnitureSpriteController, UtilitySpriteController, circleCursorPrefab); QuestController = new QuestController(); CameraController = new CameraController(); TradeController = new TradeController(); AutosaveManager = new AutosaveManager(); // Register inputs actions KeyboardManager.Instance.RegisterInputAction("DevMode", KeyboardMappedInputType.KeyDown, ChangeDevMode); // Hiding Dev Mode spawn inventory controller if devmode is off. SpawnInventoryController.SetUIVisibility(SettingsKeyHolder.DeveloperMode); CameraController.Initialize(); // Initialising controllers. GameObject canvas = GameObject.Find("Canvas"); go = Instantiate(Resources.Load("UI/ContextMenu"), canvas.transform.position, canvas.transform.rotation, canvas.transform) as GameObject; go.name = "ContextMenu"; GameObject timeScale = Instantiate(Resources.Load("UI/TimeScale"), GameObject.Find("TopRight").transform, false) as GameObject; timeScale.name = "TimeScale"; GameObject dateTimeDisplay = Instantiate(Resources.Load("UI/DateTimeDisplay"), canvas.transform, false) as GameObject; dateTimeDisplay.name = "DateTimeDisplay"; GameController.Instance.IsModal = false; // Settings UI is a 'dialog box' (kinda), so it comes here. // Where as DevConsole is a constant menu item (it can appear 'anywhere' so it appears after) GameObject settingsMenu = (GameObject)Instantiate(Resources.Load("UI/SettingsMenu/SettingsMenu")); if (settingsMenu != null) { settingsMenu.name = "Settings Menu"; settingsMenu.transform.SetParent(canvas.transform, false); settingsMenu.SetActive(true); } // This will place it after context menu (and the inventory menu) and settings menu DialogBoxManager = GameObject.Find("Dialog Boxes").GetComponent <DialogBoxManager>(); DialogBoxManager.transform.SetAsLastSibling(); GameObject devConsole = (GameObject)Instantiate(Resources.Load("UI/Console/DevConsole")); if (devConsole != null) { devConsole.name = "DevConsole-Spawned"; devConsole.transform.SetParent(canvas.transform, false); devConsole.transform.SetAsLastSibling(); devConsole.SetActive(true); DeveloperConsole.DevConsole.Close(); } }
private void UpdateDragging() { //If over UI element, break if (EventSystem.current.IsPointerOverGameObject()) { return; } //Start LMB drag if (Input.GetMouseButtonDown(0)) { dragStartPosition = currentMousePosition; } int start_x = Mathf.RoundToInt(dragStartPosition.x); int end_x = Mathf.RoundToInt(currentMousePosition.x); if (end_x < start_x) { int tmp = end_x; end_x = start_x; start_x = tmp; } int start_y = Mathf.RoundToInt(dragStartPosition.y); int end_y = Mathf.RoundToInt(currentMousePosition.y); if (end_y < start_y) { int tmp = end_y; end_y = start_y; start_y = tmp; } //clean up old drag previews while (dragPreviews.Count > 0) { GameObject go = dragPreviews[0]; dragPreviews.RemoveAt(0); SimplePool.Despawn(go); } //checks if LMB is currently dragging if (Input.GetMouseButton(0)) { //display preview of drag area for (int x = start_x; x <= end_x; x++) { for (int y = start_y; y <= end_y; y++) { Tile t = WorldController.World.GetTileAt(x, y); if (t != null) { //display the building hint on this tile position GameObject go = SimplePool.Spawn(circleCursorPrefab, new Vector3(x, y, 0), Quaternion.identity); go.transform.SetParent(this.transform, true); dragPreviews.Add(go); } } } } //end LMB drag if (Input.GetMouseButtonUp(0)) { BuildModeController bmc = FindObjectOfType <BuildModeController>(); for (int x = start_x; x <= end_x; x++) { for (int y = start_y; y <= end_y; y++) { Tile t = WorldController.World.GetTileAt(x, y); if (t != null) { bmc.DoBuild(t); } } } } }
/// <summary> /// updates the info of the object, and it's surrounding tiles, /// and checks to make sure the position that the object is attempting to be placed at is valid /// </summary> /// <param name="obj">Object that is trying to be moved</param> /// <param name="pos">position that the object is trying to be placed at</param> /// <param name="rotLevel">rotLevel, which helps to determine the position and rotation of the object</param> /// <param name="moveNeighbors">moveNeighbors, defaults to true and determines whether the Object's neighbors should be moved</param> public static void MoveObject(Object obj, Vector3 pos, int rotLevel, bool moveNeighbors = true) { switch (obj.type) { case ObjType.Wall: Wall.MoveObject((Wall)obj, pos, rotLevel, moveNeighbors); break; case ObjType.Table: Table.MoveObject((Table)obj, pos, rotLevel, moveNeighbors); break; case ObjType.Chair: Chair.MoveObject((Chair)obj, pos, rotLevel, moveNeighbors); break; default: BuildModeController bmc = WorldController.Instance.MouseController.bmc; Tile prevT = WorldController.Instance.World.GetTileAt(Mathf.RoundToInt(obj.pos.x), Mathf.RoundToInt(obj.pos.z), bmc.ActiveFloor); Tile newT = WorldController.Instance.World.GetTileAt(Mathf.RoundToInt(pos.x), Mathf.RoundToInt(pos.z), bmc.ActiveFloor); if (moveNeighbors == true && obj.connectsToNeighbors == true) { foreach (Object n in obj.neighbors) { Vector3 nPos = pos - (obj.pos - n.pos); Tile nNewT = WorldController.Instance.World.GetTileAt(Mathf.RoundToInt(nPos.x), Mathf.RoundToInt(nPos.z), bmc.ActiveFloor); foreach (Object otherObj in nNewT.objs) { if (otherObj.pos == nPos && otherObj != n && n.neighbors.Contains(otherObj) == false) { Debug.LogError("MoveObject: Trying to place an Object where there is already one"); return; } } if (nNewT.Type == TileType.Empty) { Debug.LogError("MoveObject: Trying to assign an Object to an empty tile!"); return; } } } else { foreach (Object otherObj in newT.objs) { if (otherObj.pos == pos && otherObj != obj && obj.neighbors.Contains(otherObj) == false) { Debug.LogError("MoveObject: Trying to place an Object where there is already one"); return; } } if (newT.Type == TileType.Empty) { Debug.LogError("MoveObject: Trying to assign an Object to an empty tile!"); return; } } if (prevT.objs.Contains(obj) == true) { prevT.objs.Remove(obj); } if (obj.tiles.Contains(prevT) == true) { obj.tiles.Remove(prevT); } Vector3 diffPos = pos - obj.pos; diffPos.y = 0; obj.diffPos = diffPos; //obj.pos = new Vector3(newT.x,obj.defaultY + (2.75f * bmc.ActiveFloor),newT.y); obj.pos = new Vector3(newT.x, obj.defaultY, newT.y); if (obj.connectsToNeighbors == true && Object.moveNeighbors == true && moveNeighbors == true) { obj.MoveNeighbors(obj); } Quaternion rot = Quaternion.identity; rot.eulerAngles = new Vector3(0f, 90f * rotLevel, 0f); obj.rot = rot; newT.objs.Add(obj); obj.tiles.Add(newT); if (obj.cbObjectChanged != null) { obj.cbObjectChanged(obj); } break; } }
void UpdateDragging() { // If we're over a UI element, then bail out from this. if (EventSystem.current.IsPointerOverGameObject()) { return; } // Start Drag if (Input.GetMouseButtonDown(0)) { dragStartPosition = currFramePosition; } int start_x = Mathf.FloorToInt(dragStartPosition.x); int end_x = Mathf.FloorToInt(currFramePosition.x); int start_y = Mathf.FloorToInt(dragStartPosition.y); int end_y = Mathf.FloorToInt(currFramePosition.y); // We may be dragging in the "wrong" direction, so flip things if needed. if (end_x < start_x) { int tmp = end_x; end_x = start_x; start_x = tmp; } if (end_y < start_y) { int tmp = end_y; end_y = start_y; start_y = tmp; } // Clean up old drag previews while (dragPreviewGameObjects.Count > 0) { GameObject go = dragPreviewGameObjects[0]; dragPreviewGameObjects.RemoveAt(0); SimplePool.Despawn(go); } if (Input.GetMouseButton(0)) { // Display a preview of the drag area for (int x = start_x; x <= end_x; x++) { for (int y = start_y; y <= end_y; y++) { Tile t = WorldController.Instance.world.GetTileAt(x, y); if (t != null) { // Display the building hint on top of this tile position GameObject go = SimplePool.Spawn(circleCursorPrefab, new Vector3(x, y, 0), Quaternion.identity); go.transform.SetParent(this.transform, true); dragPreviewGameObjects.Add(go); } } } } // End Drag if (Input.GetMouseButtonUp(0)) { BuildModeController bmc = GameObject.FindObjectOfType <BuildModeController>(); // Loop through all the tiles for (int x = start_x; x <= end_x; x++) { for (int y = start_y; y <= end_y; y++) { Tile t = WorldController.Instance.world.GetTileAt(x, y); if (t == null) { continue; } bmc.DoBuild(t); } } } }
void UpdateDragging() { //if we are over a UI element, bail out !! if (EventSystem.current.IsPointerOverGameObject()) { return; } //Start drag //down, ça veut dire que on a cliqué sur les frames précédentes if (Input.GetMouseButtonDown(0)) { dragStartPosition = currFramePosition; } int start_x = Mathf.FloorToInt(dragStartPosition.x); int end_x = Mathf.FloorToInt(currFramePosition.x); int start_y = Mathf.FloorToInt(dragStartPosition.y); int end_y = Mathf.FloorToInt(currFramePosition.y); // on swappe si en drag & drop vers la gauche la "mauvaise" direction //perso je trouve ça sale if (end_x < start_x) { int tmp = end_x; end_x = start_x; start_x = tmp; } if (end_y < start_y) { int tmp = end_y; end_y = start_y; start_y = tmp; } //clean up old drag previews //tant que y'a un gameobject dans dragpreviewmescouilles, (si y'en a un avec l'entree [0] ) tu l'enlève et le delete while (dragPreviewGameObjects.Count > 0) { GameObject go = dragPreviewGameObjects[0]; dragPreviewGameObjects.RemoveAt(0); //au lieu de le delete, on va le despawn du simplepool, comme ça ça évite de créer détruire à mort plein d'éléments //ça fait économiser des ressources SimplePool.Despawn(go); } //juste le getmousedbutton, ça veut dire qu'on viens JUSTE de clique, sur CETTE frame if (Input.GetMouseButton(0)) { //display a preview of the drag area for (int x = start_x; x <= end_x; x++) { for (int y = start_y; y <= end_y; y++) { Tile t = WorldController.Instance.world.GetTileAt(x, y); if (t != null) { //display the building hint on top of this tile positon //Quaternion.identity c'est pour créer un vector sans rotation // on créé un gameobject qui s'appelle go, et on l'ajoute (add) a la liste de gameobject dragpreviewmescouilles //et on le créé avec le script en CC simplepool GameObject go = SimplePool.Spawn(circleCursorPrefab, new Vector3(x, y, 0), Quaternion.identity); //ça permet juste de faire en sorte que les novueaux objets go soient apparentés à mousecontroller //c'est plus propre dans la hierarchy des objets créés go.transform.SetParent(this.transform, true); dragPreviewGameObjects.Add(go); } } } } //end drag (drop) if (Input.GetMouseButtonUp(0)) { BuildModeController bmc = GameObject.FindObjectOfType <BuildModeController>(); //go on loope through all the tiles for (int x = start_x; x <= end_x; x++) { for (int y = start_y; y <= end_y; y++) { Tile t = WorldController.Instance.world.GetTileAt(x, y); if (t != null) { // call BuildMOdeController :: DoBuild() bmc.DoBuild(t); } } } } }