/// Handle incoming commands from the client. void ClientCommandHandler(NetworkMessage netMsg) { switch (netMsg.msgType) { case LevelMsgType.LevelRequest: /// Player has notified of current position. Check to see if regions of interest /// need to be updated. { LevelSyncMessage m = netMsg.ReadMessage <LevelSyncMessage>(); // Debug.Log ("Got message: " + netMsg.conn.connectionId + " : "); sendPlayerUpdate(netMsg.conn.connectionId, m.playerPosition, m.visibleRadius); updatePlayerProxy(netMsg.conn.connectionId); } break; case LevelMsgType.LevelUpdate: /// Player has changed the level in a way that affects other players. { Debug.Log("Changed level"); BlockAddMessage m = netMsg.ReadMessage <BlockAddMessage>(); levelStructure.setBlock(m.px + 0.5f, m.pz + 0.5f, m.height, m.blocktype, netMsg.conn.connectionId); } break; case LevelMsgType.EmoteSingleSender: /// Receiving a single emote from a player. { SendEmoteMessageAndClientID m = netMsg.ReadMessage <SendEmoteMessageAndClientID> (); sendAllClientEmote(m.netId, m.emoteType); Debug.Log("Emote Received from Client."); } break; case LevelMsgType.ResourceUpdate: { ResourceTakeMessage m = netMsg.ReadMessage <ResourceTakeMessage> (); int height = Math.Max((int)(m.position.y), (int)WorldManager.minLevelHeight); int blockHeight = (int)(height - WorldManager.minLevelHeight); levelStructure.updateResource(m.position.x + 0.5f, m.position.z + 0.5f, blockHeight, m.amount); } break; case LevelMsgType.PlayerFlagRequest: { PlayerFlagMessage m = netMsg.ReadMessage <PlayerFlagMessage> (); int height = Math.Max((int)(m.position.y), (int)WorldManager.minLevelHeight); int blockHeight = (int)(height - WorldManager.minLevelHeight); levelStructure.updateFlag(m.position.x + 0.5f, m.position.z + 0.5f, blockHeight, netMsg.conn.connectionId); } break; default: { Debug.Log("Unexpected message type"); } break; } }
public void DestroyStuff() { if (!isServer) { return; } // Instantiate(, CloudPosition, CloudRotation); //Get the area of the cloud //print(this.transform.position); Vector3 LightningOrigin = this.transform.position; //Generate the direction for the raycast and make sure its inbounds with the cloud object float Xspawnpos = Random.Range(LightningOrigin.x - (CloudX / 2), LightningOrigin.x + (CloudX / 2)); float Yspawnpos = LightningOrigin.y - 1; float Zspawnpos = Random.Range(LightningOrigin.z - (CloudX / 2), LightningOrigin.z + (CloudX / 2)); LightningOrigin = new Vector3(Xspawnpos, Yspawnpos, Zspawnpos); RaycastHit ObjectHit; if (Physics.Raycast(LightningOrigin, -Vector3.up, out ObjectHit, 100)) { //print("Found an object - distance: " + ObjectHit.distance); // print("Found an object - Name: " + ObjectHit.collider.name); // print("Found an object - Tag: " + ObjectHit.collider.tag); if (ObjectHit.collider.tag == "Block" || ObjectHit.collider.tag == "Resource") { // Destroy(ObjectHit.collider.gameObject.gameObject); //ObjectHit.collider.gameObject. //Destroy(ObjectHit.collider.gameObject); ResourceTakeMessage m = new ResourceTakeMessage(); m.position = ObjectHit.collider.transform.position; m.amount = -2; NetworkManager.singleton.client.Send(LevelMsgType.ResourceUpdate, m); print("Object: Destoryed"); } } }
public void takeResource() { if (inTrigger == true && ResourceName == "WoodResourceBrick(Clone)") { QuestManager.qManager.AddQItem("Harvest a block", 1); //Debug.LogError ("In resource trigger range!!!!!!!!!!!!!!!!!!!!!!"); changeResource(0, 0.05f); OnChangeResources(resourceChanged); //pmove = gameObject.GetComponent<PlayerMove> (); inTrigger = false; ResourceTakeMessage m = new ResourceTakeMessage(); m.position = ResourcePosition; m.amount = -1; NetworkManager.singleton.client.Send(LevelMsgType.ResourceUpdate, m); } if (inTrigger == true && ResourceName == "DirtResourceBrick(Clone)") { QuestManager.qManager.AddQItem("Harvest a block", 1); //Debug.LogError ("In resource trigger range!!!!!!!!!!!!!!!!!!!!!!"); changeResource(1, 0.05f); OnChangeResources(resourceChanged); //pmove = gameObject.GetComponent<PlayerMove> (); inTrigger = false; ResourceTakeMessage m = new ResourceTakeMessage(); m.position = ResourcePosition; m.amount = -1; NetworkManager.singleton.client.Send(LevelMsgType.ResourceUpdate, m); } if (inTrigger == true && ResourceName == "CrystalResourceBrick(Clone)") { QuestManager.qManager.AddQItem("Harvest a block", 1); //Debug.LogError ("In resource trigger range!!!!!!!!!!!!!!!!!!!!!!"); changeResource(2, 0.05f); OnChangeResources(resourceChanged); //pmove = gameObject.GetComponent<PlayerMove> (); inTrigger = false; ResourceTakeMessage m = new ResourceTakeMessage(); m.position = ResourcePosition; m.amount = -1; NetworkManager.singleton.client.Send(LevelMsgType.ResourceUpdate, m); } }