Пример #1
0
    /// 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;
        }
    }
Пример #2
0
    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");
            }
        }
    }
Пример #3
0
 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);
     }
 }