示例#1
0
    // Remove an item
    public void Remove(GameObject item)
    {
        items.Remove(item);     // Remove item from list
        inventoryUI.RemoveItem(item);
        PlayerAsset playerAsset = Player.instance.PlayerAsset;

        if (item.CompareTag("Object"))
        {
            nbItems -= 1;
            for (int i = 0; i < 2; i++)
            {
                if (playerAsset.ObjectsList[i] == item)
                {
                    playerAsset.ObjectsList[i] = null;
                    break;
                }
            }
        }

        else if (item.CompareTag("Weapon"))
        {
            nbWeapons -= 1;
            for (int i = 0; i < 2; i++)
            {
                if (playerAsset.WeaponsList[i] == item)
                {
                    playerAsset.WeaponsList[i] = null;
                    break;
                }
            }
        }
    }
示例#2
0
    public static void LoadingPlayerData(ref PlayerAsset playerData, ref UnlockedItemsAsset unlockedItems)
    {
        string path;

        if (Application.isEditor)
        {
            path = Path.Combine(Path.GetDirectoryName(Application.dataPath), "playerData.bin");
        }
        else
        {
            path = Path.Combine(Application.persistentDataPath, "playerData.bin");
        }
        Debug.Log("File path: " + path); //DEBUG
        //Binary save file opening
        Stream streamRestauration = new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.Read);

        //Loading the GameSave object from the binary file
        Saver.PlayerSave save  = (Saver.PlayerSave) new BinaryFormatter().Deserialize(streamRestauration);
        string           test  = save.playerData;
        string           test2 = save.unlockedItems;

        JsonUtility.FromJsonOverwrite(save.playerData, playerData);
        JsonUtility.FromJsonOverwrite(save.unlockedItems, unlockedItems);

        streamRestauration.Close();

        //GameObject.FindGameObjectWithTag("SoundManager").GetComponent<SoundManager>().ChangeBO(.GetComponent<Player>().PlayerAsset.Floor + 2);
    }
示例#3
0
 public void BuildContent(int num)//初始化,在Grid创建中调用
 {
     specialitem1 = specialitem2 = 1;
     contents     = new content[num];
     TotalNum     = num;
     Total        = num;
     Nothing      = Total - ResourceNum - ElectricNum - FirstAidNum - MResourceNum - MElectricNum - MFirstAidNum - ChipNum - IncidentNum - 2 - 2;//2为起点加终点+2个specialitem
     Resource     = ResourceNum;
     Electric     = ElectricNum;
     FirstAid     = FirstAidNum;
     MResource    = MResourceNum;
     MElectric    = MElectricNum;
     MFirstAid    = MFirstAidNum;
     Incident     = IncidentNum;
     Chip         = ChipNum;
     grid         = GameObject.FindWithTag("Grid").GetComponent <HexGrid>();
     asset        = GameObject.FindWithTag("Player").GetComponent <PlayerAsset>();
     solve        = GameObject.FindWithTag("Player").GetComponent <SolveInput>();
     Portal       = 9 * 20 + 8;
     si1image     = 16 * 20 + 12;
     si2image     = 6 * 20 + 17;
     printlist    = new int[num];
     MonsterNum   = new int[num];
     for (int i = 0; i < MonsterNum.Length; i++)
     {
         MonsterNum[i] = 1;
     }
     portalsee = sisee = false;
 }
示例#4
0
    private void OnAssetUpdatedByClient(NetMessagePlayerAssets netMessage, INetworkInterfaceConnection source)
    {
        if (netMessage.Assets == null || netMessage.Assets.Length == 0)
        {
            return;
        }

        UpdateOrCreateLocalAssets(netMessage);

        List <PlayerAsset> assetsToSend = new List <PlayerAsset>(netMessage.Assets.Length);

        for (int i = 0; i < netMessage.Assets.Length; i++)
        {
            PlayerAsset playerAsset = GetAsset(netMessage.Assets[i].Guid);
            if (playerAsset != null)
            {
                assetsToSend.Add(playerAsset);
            }
        }

        List <INetworkInterfaceConnection> clientsToSendTo = _session.Connections.ToList();

        clientsToSendTo.Remove(source);

        SendPlayerAssetsToClients(assetsToSend.ToArray(), clientsToSendTo.ToArray());
    }
示例#5
0
 public Data(PlayerAsset playerAsset)
 {
     Guid            = playerAsset.Guid;
     Type            = playerAsset.Type;
     Author          = playerAsset.Author;
     UtcCreationTime = playerAsset.UtcCreationTime;
     AssetData       = playerAsset.Serialize();
 }
示例#6
0
    protected override void PublishAssetChangesInternal(PlayerAsset playerAsset)
    {
        if (_session == null)
        {
            return;
        }

        SendPlayerAssetsToClients(new PlayerAsset[] { playerAsset }, _session.Connections.ToArray());
    }
示例#7
0
    private void OnAssetCreated(PlayerAsset asset)
    {
        // If the newly created asset matches our guid, assign it!
        // This generally occurs when the simulation mentions a doodle BEFORE our PlayerAssetManager finishes downloading the asset its creator.

        if (_doodleAssetGuid.Get() == asset.Guid && asset is PlayerDoodleAsset doodleAsset)
        {
            _doodleAssetGuid.ClearDirty();
            _doodleAsset.Set(doodleAsset);
        }
    }
        public HttpResponseMessage GetPlayerAsset()
        {
            string      steamId           = User.Identity.Name;
            int         playerId          = PlayerDataSql.PlayerId(steamId);
            PlayerAsset playerAsset       = PlayerDataSql.GetPlayerAsset(playerId);
            string      serializedElement = JsonConvert.SerializeObject(playerAsset);
            var         response          = new HttpResponseMessage(HttpStatusCode.OK);

            response.Content = new StringContent(serializedElement);
            return(response);
        }
示例#9
0
    /// <summary>
    /// Create a brand new asset
    /// </summary>
    private PlayerAsset CreateAsset(Type type)
    {
        if (AssetTypeToEnum(type) == PlayerAssetType.Invalid)
        {
            throw new Exception($"Unsupported asset type {type.GetPrettyName()}.");
        }

        PlayerAsset asset = CreateAssetInternal(Guid.NewGuid(), AssetTypeToEnum(type));

        asset.Author          = Environment.UserName;
        asset.UtcCreationTime = DateTime.UtcNow;

        return(asset);
    }
示例#10
0
    // Add a new item. If there is enough room we
    // return true. Else we return false.
    public bool Add(GameObject item)
    {
        if (item.CompareTag("Object") && item.GetComponent <Object>().ObjectsAsset.passive)
        {
            item.GetComponent <Object>().PassiveChange();
            return(true);
        }
        // Check if out of space
        if (items.Count < space)
        {
            PlayerAsset playerAsset = Player.instance.PlayerAsset;

            if (item.CompareTag("Object") && nbItems != 2)
            {
                nbItems += 1;
                items.Add(item);    // Add item to list
                InventoryUI.instance.AddItem(item);
                for (int i = 0; i < 2; i++)
                {
                    if (playerAsset.ObjectsList[i] == null || GetComponent <Player>().PlayerAsset.ObjectsList[i] == item)
                    {
                        playerAsset.ObjectsList[i] = item;
                        break;
                    }
                }

                return(true);
            }

            if (item.CompareTag("Weapon") && nbWeapons != 2)
            {
                nbWeapons += 1;
                items.Add(item);    // Add item to list
                InventoryUI.instance.AddItem(item);

                for (int i = 0; i < 2; i++)
                {
                    if (playerAsset.WeaponsList[i] == null || playerAsset.WeaponsList[i] == item)
                    {
                        playerAsset.WeaponsList[i] = item;
                        break;
                    }
                }
                return(true);
            }
        }

        return(false);
    }
示例#11
0
    /// <summary>
    /// Create an asset using an existing meta data set (Can be useful when an online player shares an asset he/she has created before)
    /// </summary>
    protected PlayerAsset CreateAssetInternal(Guid guid, PlayerAssetType assetType)
    {
        if (assetType == PlayerAssetType.Invalid)
        {
            throw new Exception($"Unsupported asset type.");
        }

        PlayerAsset asset = (PlayerAsset)Activator.CreateInstance(AssetTypeFromEnum(assetType), guid);

        _assetMap.Add(asset.Guid, asset);

        AssetCreated?.InvokeCatchException(asset);

        return(asset);
    }
示例#12
0
    protected override void PublishAssetChangesInternal(PlayerAsset playerAsset)
    {
        if (_session == null)
        {
            return;
        }

        NetMessagePlayerAssets.Data[] asset = new NetMessagePlayerAssets.Data[]
        {
            new NetMessagePlayerAssets.Data(playerAsset)
        };

        // send message
        _session.BeginLargeDataTransfer(new NetMessagePlayerAssets()
        {
            Assets = asset
        }, _session.ServerConnection, "Doodle");
    }
示例#13
0
    protected void UpdateOrCreateLocalAssets(NetMessagePlayerAssets netMessage)
    {
        foreach (var item in netMessage.Assets)
        {
            if (item.Type == PlayerAssetType.Invalid)
            {
                logDiscardReason($"Invalid asset type");
                continue;
            }

            if (item.Guid == Guid.Empty)
            {
                logDiscardReason($"Invalid guid");
                continue;
            }

            if (item.AssetData == null)
            {
                logDiscardReason($"Null asset data");
                continue;
            }

            PlayerAsset asset = GetAsset(item.Guid);
            if (asset == null)
            {
                asset = CreateAssetInternal(item.Guid, item.Type);
            }

            asset.Author          = item.Author;
            asset.UtcCreationTime = item.UtcCreationTime;
            asset.Load(item.AssetData);
        }

        void logDiscardReason(string reason)
        {
            Log.Warning($"{reason} in {nameof(NetMessagePlayerAssets)}. Discarding asset.");
        }
    }
示例#14
0
 protected abstract void PublishAssetChangesInternal(PlayerAsset playerAsset);
示例#15
0
 //init playerData and turn off the toggle and ExPoints
 private void Start()
 {
     PlayerData = ScriptableObject.CreateInstance <PlayerAsset>();
 }
示例#16
0
 public static void SavePlayerData(PlayerAsset playerData, UnlockedItemsAsset unlockedItems)
 {
     Saving(new PlayerSave(playerData, unlockedItems));
 }
示例#17
0
 private void Start()
 {
     player = Player.instance.PlayerAsset;
 }
 protected override void PublishAssetChangesInternal(PlayerAsset playerAsset)
 {
 }                                                                               // nothing to do
示例#19
0
 public PlayerSave(PlayerAsset playerData, UnlockedItemsAsset unlockedItems)
 {
     this.playerData    = JsonUtility.ToJson(playerData);
     this.unlockedItems = JsonUtility.ToJson(unlockedItems);
 }