// ================================================================ // Doers: Room Tiles // ================================================================ private void SelectTile(RoomTile tile) { if (tile.IsSelected) { return; } // Safety check. /* * // First, check if we're trying to set ANOTHER, different roomTile as roomTileDragging. * if (roomTileDragging != null && thisRoomTile != null && roomTileDragging != thisRoomTile) { * Debug.LogWarning("Hey, whoa! We're trying to set roomTileDragging to a RoomTile, but it's not already null!"); * return; * } * // Was dragging a RoomTile? Update its visuals! * if (roomTileDragging != null) { * roomTileDragging.UpdateBorderLine(); * } * // Set it! * roomTileDragging = thisRoomTile; * // Update its visuals! * if (roomTileDragging != null) { * roomTileDragging.UpdateBorderLine(); * } * // We DID specifiy a roomTile? * if (roomTileDragging != null) { * SetMouseClickOffset(roomTileDragging.transform.localPosition); * // SetMouseClickOffset(roomTileDragging.Pos);//new PVector(roomTileDragging.pos.x+roomTileDragging.w*0.5, roomTileDragging.pos.y+roomTileDragging.h*0.5)); * } */ // Add it to my list! tilesSelected.Add(tile); // Tell it what's up! tile.OnSelected(MousePosWorld); }
private void OnClickRoomTile(RoomTile tile) { //// Conditions are right for selecting the tile! //if (CanSelectARoomTile()) { // Determine which tiles are affected. List <RoomTile> tiles = GetTilesInClick(tile); bool doSelect = !tile.IsSelected; // MULTI-SELECT key is down??... if (isKeyMultiSelection) { if (doSelect) { SelectTiles(tiles); } else { DeselectTiles(tiles); } } // MULTI-SELECT key ISN'T down...! else { // This tile's NOT already selected. Deselect all tiles first. if (!tile.IsSelected) { DeselectTilesSelected(); } // Select the affected tiles! SelectTiles(tiles); } //} }
private void OnMouseDown() { int mouseButton = InputController.GetMouseButtonDown(); // LEFT click? if (mouseButton == 0) { // Tell ALL selected tiles to update their click offset! foreach (RoomTile roomTile in tilesSelected) { roomTile.SetMouseClickOffset(MousePosWorld); } RoomTile tileOver = GetVisibleTileAtPoint(MousePosWorld); // YES over a tile??... if (tileOver != null) { OnClickRoomTile(tileOver); } else // Not over ANY tile?? Deselect Tiles and activate selectionRect! { DeselectTilesSelected(); selectionRect.Activate(); } } // RIGHT click? else if (mouseButton == 1) { Debug.Log("mousePosWorld: " + MousePosWorld); } // Update on-mouse-down vectors! MousePosScreenOnDown = MousePosScreen; }
private void SelectTiles(List <string> roomKeys) { foreach (string roomKey in roomKeys) { RoomTile tile = GetRoomTileByKey(roomKey); SelectTile(tile); } }
// ================================================================ // Initialize // ================================================================ public void Initialize(RoomTile _roomTile) { myRoomTile = _roomTile; myRD = myRoomTile.MyRoomData; t_roomName.GetComponent <Renderer>().sortingOrder = 110; // render roomName over its contents. designerFlag.UpdateDesignerFlagButtonVisuals(); }
private void DeselectTile(RoomTile tile) { if (!tile.IsSelected) { return; } // Safety check. tile.OnDeselected(); tilesSelected.Remove(tile); }
private void OnMouseDoubleClicked() { // Am I over any room?? Load it!! RoomTile tileOver = GetVisibleTileAtPoint(MousePosWorld); if (tileOver != null && tileOver.IsMouseOverBodyColl) // also check our mouse is directly over this tile's body collider. { SceneHelper.OpenGameplayScene(tileOver.WorldIndex, tileOver.RoomKey); } }
/// Returns all RoomTiles that're connected to this one (including this one). private List <RoomTile> GetConnectedTiles(RoomTile firstTile) { RoomData firstRD = firstTile.MyRoomData; List <RoomData> roomDatas = RoomUtils.GetRoomsConnectedToRoom(firstRD); List <RoomTile> tiles = new List <RoomTile>(); foreach (RoomData rd in roomDatas) { tiles.Add(GetRoomTileByKey(rd.RoomKey)); } return(tiles); }
private List <RoomTile> GetTilesInClick(RoomTile sourceTile) { // SHIFT = Consider ALL CONNECTED tiles! if (InputController.IsKey_shift) { return(GetConnectedTiles(sourceTile)); } // Otherwise, just return the ONE Tile. return(new List <RoomTile> { sourceTile }); }
private RoomTile GetVisibleTileAtPoint(Vector2 point) { if (CurrWorldRoomTiles == null) { return(null); } // Safety check for runtime compile. for (int i = CurrWorldRoomTiles.Count - 1; i >= 0; --i) // loop thru backwards so we click NEWER tiles before older ones. { RoomTile tile = CurrWorldRoomTiles[i]; if (!tile.IsFullyVisible) { continue; } // Tile's not available?? Skip it! if (tile.BoundsGlobalBL.Contains(point)) { return(tile); } } return(null); }
private void LoadAllRoomTiles() { // Destroy 'em first! DestroyAllRoomTiles(); // Make 'em hot & fresh! allRoomTiles = new List <List <RoomTile> >(); GameObject prefab = ResourcesHandler.Instance.MapEditor_RoomTile; // For every world... for (int worldIndex = 0; worldIndex < dataManager.NumWorldDatas; worldIndex++) { allRoomTiles.Add(new List <RoomTile>()); // For every room in this world... WorldData wd = dataManager.GetWorldData(worldIndex); Transform parent = worldLayerGOs[worldIndex].transform; foreach (RoomData roomData in wd.RoomDatas.Values) { RoomTile newRoomTile = Instantiate(prefab).GetComponent <RoomTile>(); newRoomTile.Initialize(this, roomData, parent); allRoomTiles[worldIndex].Add(newRoomTile); } } //currWorldIndex = -1; // reset this! 'cause there's no world selected right now. }