Exemplo n.º 1
0
    //In theory, this should sync devices between server and client. In practice, I worry there may be a race condition, so, watch out for that I guess.

    /// <summary>
    /// Function to update devices from observed slots in storage. Mostly used on client.
    /// </summary>
    public void UpdateDevices()
    {
        hackProcess.RemoveAllDevices();
        foreach (ItemSlot deviceSlot in hackProcess.ItemStorage.GetItemSlots())
        {
            Pickupable devicePickup = deviceSlot.Item;
            if (devicePickup != null)
            {
                HackingDevice device = devicePickup.GetComponent <HackingDevice>();
                hackProcess.AddHackingDevice(device);
            }
        }
    }
    public override void Process()
    {
        LoadMultipleObjects(new uint[] { Player, HackableObject, HackingDevice });

        var                playerScript   = NetworkObjects[0].GetComponent <PlayerScript>();
        var                hackObject     = NetworkObjects[1];
        HackingDevice      hackDevice     = NetworkObjects[2].GetComponent <HackingDevice>();
        HackingProcessBase hackingProcess = hackObject.GetComponent <HackingProcessBase>();

        if (hackingProcess.ServerPlayerCanAddDevice(playerScript, hackDevice))
        {
            hackingProcess.AddHackingDevice(hackDevice);
            hackingProcess.ServerStoreHackingDevice(hackDevice);
            HackingNodeConnectionList.Send(NetworkObjects[0], hackObject, hackingProcess.GetNodeConnectionList());
        }
    }