// This method destroys the targeted block private void destroyblock() { if (blockToDestroy.name != "Ground") { CreatedBlock blockToDelete = blockData.gameData.Find(x => x.blockId == blockToDestroy.GetInstanceID()); blockData.gameData.Remove(blockToDelete); Destroy(blockToDestroy); } }
// This method creates the block at the targetted location private void placeBlock() { GameObject newBlock = Instantiate(blockPrefab, buildPos, Quaternion.identity) as GameObject; // Create new block object Block tempBlock = bSys.allBlocks[blockSelectCounter]; // Spawn new block from dictionary newBlock.name = tempBlock.blockName + "-Block"; newBlock.GetComponent <MeshRenderer>().material = tempBlock.blockMaterial; // Adding to Dictionary CreatedBlock createdBlock = new CreatedBlock(newBlock.GetInstanceID(), buildPos.x, buildPos.y, buildPos.z, blockSelectCounter); blockData.gameData.Add(createdBlock); }
public void loadMazeBlocks(string mazeTitle, bool buildMode, bool playMode, string mapAuthor) { // Getting the Maze Data username_static.newMaze = false; username_static.mazeTitle = mazeTitle; if (buildMode && !playMode) { FirebaseDatabase.DefaultInstance.GetReference("users").Child(username_static.userId).Child(mazeTitle).GetValueAsync().ContinueWith(task => { if (task.IsFaulted) { //Handle Error Debug.Log("ERROR ==" + task.IsFaulted); } else if (task.IsCompleted) { DataSnapshot snapshot = task.Result; DataSnapshot mazeData = snapshot.Child("createdBlockData"); List <CreatedBlock> createdBlocks = new List <CreatedBlock>(); foreach (DataSnapshot createdBlockData in mazeData.Children) { int blockId = 0; float buildPosX = 0; float buildPosY = 0; float buildPosZ = 0; int blockSelectCounter = 0; foreach (DataSnapshot a in createdBlockData.Children) { switch (a.Key) { case "blockId": blockId = int.Parse(a.Value.ToString()); break; case "buildPosX": buildPosX = float.Parse(a.Value.ToString()); break; case "buildPosY": buildPosY = float.Parse(a.Value.ToString()); break; case "buildPosZ": buildPosZ = float.Parse(a.Value.ToString()); break; case "blockSelectCounter": blockSelectCounter = int.Parse(a.Value.ToString()); break; } } CreatedBlock block = new CreatedBlock(blockId, buildPosX, buildPosY, buildPosZ, blockSelectCounter); createdBlocks.Add(block); } loadBlocks(createdBlocks, buildMode, playMode); } }); } else if (!buildMode && playMode) { FirebaseDatabase.DefaultInstance.GetReference("users").Child(mapAuthor).Child(mazeTitle).GetValueAsync().ContinueWith(task => { if (task.IsFaulted) { //Handle Error Debug.Log("ERROR ==" + task.IsFaulted); } else if (task.IsCompleted) { DataSnapshot snapshot = task.Result; DataSnapshot mazeData = snapshot.Child("createdBlockData"); List <CreatedBlock> createdBlocks = new List <CreatedBlock>(); foreach (DataSnapshot createdBlockData in mazeData.Children) { int blockId = 0; float buildPosX = 0; float buildPosY = 0; float buildPosZ = 0; int blockSelectCounter = 0; foreach (DataSnapshot a in createdBlockData.Children) { switch (a.Key) { case "blockId": blockId = int.Parse(a.Value.ToString()); break; case "buildPosX": buildPosX = float.Parse(a.Value.ToString()); break; case "buildPosY": buildPosY = float.Parse(a.Value.ToString()); break; case "buildPosZ": buildPosZ = float.Parse(a.Value.ToString()); break; case "blockSelectCounter": blockSelectCounter = int.Parse(a.Value.ToString()); break; } } CreatedBlock block = new CreatedBlock(blockId, buildPosX, buildPosY, buildPosZ, blockSelectCounter); createdBlocks.Add(block); } loadBlocks(createdBlocks, buildMode, playMode); } }); } }