public override void DeserializeFromJson(string json)
    {
        base.DeserializeFromJson(json);
        Dictionary <string, object> data = SerializationUtilitites.DeserializeFromJson <Dictionary <string, object> >(json);

        Protection = Convert.ToInt32(data["Protection"]);
    }
Exemple #2
0
    public void SaveGame()
    {
        string savedGameName = "SavedGame"; // TODO Replace this by a user provided name or the current date?
        string rootPath      = Path.Combine(_rootDataPath, savedGameName);

        // Save the Game State
        string   savePath = Path.Combine(rootPath, "GameSata.json");
        FileInfo saveFile = new FileInfo(savePath);

        saveFile.Directory.Create();
        Dictionary <string, string> data = new Dictionary <string, string>();

        data["Location"]         = SceneManager.GetActiveScene().name;
        data["PreviousLocation"] = PreviousSceneName;
        File.WriteAllText(saveFile.FullName, SerializationUtilitites.SerializeToJson(data));
        Debug.Log(string.Format("Saved Game to: {0}", savePath));

        // Save the Character
        foreach (BaseCharacter player in CharacterSet.Items)
        {
            savePath = Path.Combine(Path.Combine(rootPath, "Characters"), player.Stats.Name + ".json");
            saveFile = new FileInfo(savePath);
            saveFile.Directory.Create();
            File.WriteAllText(saveFile.FullName, SerializationUtilitites.SerializeToJson(player.SerializeToData()));
            Debug.Log(string.Format("Saved {0} to: {1}", player.Stats.Name, savePath));
        }
    }
 public void DeserializeFromData(Dictionary <string, object> data)
 {
     float[] position = SerializationUtilitites.DeserializeFromObject <float[]>(data["Position"]);
     Position = new Vector3(position[0], position[1], position[2]);
     Radius   = Convert.ToInt32(data["Radius"]);
     Angle    = Convert.ToInt32(data["Angle"]);
 }
    public void DeserializeFromJson(string json)
    {
        Dictionary <string, object> data = JsonConvert.DeserializeObject <Dictionary <string, object> >(json);

        Stats.DeserializeFromData(SerializationUtilitites.DeserializeFromObject <Dictionary <string, object> >(data["Stats"]));
        Inventory.DeserializeFromData(SerializationUtilitites.DeserializeFromObject <Dictionary <string, object> >(data["Inventory"]));

        float[] transformData = JsonConvert.DeserializeObject <float[]>(JsonConvert.SerializeObject(data["Transform"]));
        transform.position = new Vector3(transformData[0], transformData[1], transformData[2]);
    }
Exemple #5
0
    public void SerializePlayer()
    {
        PlayerA.transform.position = new Vector3(1, 2, 3);
        string jsonPlayerA = SerializationUtilitites.SerializeToJson(PlayerA.SerializeToData());

        PlayerB.DeserializeFromJson(jsonPlayerA);
        string jsonPlayerB = SerializationUtilitites.SerializeToJson(PlayerB.SerializeToData());

        Debug.Log(jsonPlayerA);
        Debug.Log(jsonPlayerB);
        Assert.AreEqual(jsonPlayerB, jsonPlayerA);
    }
    private void UpdateItems <T>() where T : Item
    {
        string         itemType           = typeof(T).FullName;
        string         aspectDatabasePath = "Assets/ScriptableObjects/Aspects/AspectDatabase.asset";
        AspectDatabase aspectDatabase     = (AspectDatabase)AssetDatabase.LoadAssetAtPath(aspectDatabasePath, typeof(AspectDatabase));
        string         itemsDir           = Path.Combine(Path.Combine(jsonRootDir, "Items"), itemType);

        foreach (string file in Directory.GetFiles(itemsDir, "*.json"))
        {
            string json = File.ReadAllText(file);
            string name = new FileInfo(file).Name.Split('.')[0];
            string path = string.Format("Assets/ScriptableObjects/Items/{0}/{1}.asset", itemType, name);
            T      item = default(T);
            if (File.Exists(path))
            {
                item = (T)AssetDatabase.LoadAssetAtPath(path, typeof(T));
            }
            else
            {
                item = ScriptableObject.CreateInstance <T>();
                SaveAsset(item, path);
            }
            item.AspectDatabase = aspectDatabase;
            item.DeserializeFromJson(json);
            string prefabPath = string.Format("Assets/Prefabs/Items/Items/{0}.asset", name);
            if (File.Exists(prefabPath))
            {
                GameObject prefab = (GameObject)AssetDatabase.LoadAssetAtPath(prefabPath, typeof(GameObject));
                item.Prefab = prefab;
            }
            string[] spriteFiles = Directory.GetFiles(string.Format("Assets/Sprites/Items/{0}", itemType), string.Format("{0}.*", name));
            if (spriteFiles.Length > 0)
            {
                Sprite sprite = (Sprite)AssetDatabase.LoadAssetAtPath(spriteFiles[0], typeof(Sprite));
                item.Sprite = sprite;
            }

            if (itemType == "Weapon")
            {
                string        skillDatabasePath = "Assets/ScriptableObjects/Characters/Skills/SkillDatabase.asset";
                SkillDatabase skillDatabase     = (SkillDatabase)AssetDatabase.LoadAssetAtPath(skillDatabasePath, typeof(SkillDatabase));
                Weapon        weapon            = item as Weapon;
                string        skill             = Convert.ToString(SerializationUtilitites.DeserializeFromJson <Dictionary <string, object> >(json)["Skill"]);
                weapon.Skill = skillDatabase.SkillByName(skill);
            }
        }

        AssetDatabase.SaveAssets();
        // TODO: Update the Database
    }
Exemple #7
0
    public void Serialize_Inventory()
    {
        InventoryA.AddItem(TestItem, 10);
        string json = SerializationUtilitites.SerializeToJson(InventoryA.SerializeToData());

        InventoryB.DeserializeFromData(SerializationUtilitites.DeserializeFromJson <Dictionary <string, object> >(json));

        Assert.AreEqual(InventoryA.Entries.Count, InventoryB.Entries.Count);
        for (int i = 0; i < InventoryA.Entries.Count; i++)
        {
            Assert.AreEqual(InventoryA.Entries[i].Amount, InventoryB.Entries[i].Amount);
            Assert.AreSame(InventoryA.Entries[i].Item, InventoryB.Entries[i].Item);
            Assert.AreSame(Database.ItemByIdentifier <Item>(InventoryA.Entries[i].Item.Identifier), InventoryB.Entries[i].Item);
        }
    }
Exemple #8
0
    public void JsonSerialization()
    {
        string json = TestUtilities.JsonResourceFromFile("Item");

        Item deserializedItem = ScriptableObject.CreateInstance <Item>();

        JsonConvert.PopulateObject(json, deserializedItem);

        Item fromSerialized = ScriptableObject.CreateInstance <Item>();

        json = SerializationUtilitites.SerializeToJson(deserializedItem);
        JsonConvert.PopulateObject(json, fromSerialized);

        Assert.AreEqual(deserializedItem.Id, fromSerialized.Id);
        Assert.AreEqual(deserializedItem.Name, fromSerialized.Name);
    }
    public override void DeserializeFromJson(string json)
    {
        base.DeserializeFromJson(json);
        Dictionary <string, object> data = SerializationUtilitites.DeserializeFromJson <Dictionary <string, object> >(json);

        Damage = Convert.ToInt32(data["Damage"]);
        Speed  = Convert.ToInt32(data["Speed"]);

        List <AttackShapeMarker> attackShapes = new List <AttackShapeMarker>();

        foreach (Dictionary <string, object> shapeData in SerializationUtilitites.DeserializeFromObject <Dictionary <string, object>[]>(data["AttackShape"]))
        {
            AttackShapeMarker attackShape = new AttackShapeMarker();
            attackShape.DeserializeFromData(shapeData);
            attackShapes.Add(attackShape);
        }
        AttackShape = attackShapes.ToArray();
    }
Exemple #10
0
    public virtual void DeserializeFromJson(string json)
    {
        Dictionary <string, object> data = SerializationUtilitites.DeserializeFromJson <Dictionary <string, object> >(json);

        Id          = Convert.ToString(data["Id"]);
        Name        = Convert.ToString(data["Name"]);
        Description = Convert.ToString(data["Description"]);
        List <Aspect> aspects = new List <Aspect>();

        foreach (string aspectName in SerializationUtilitites.DeserializeFromObject <string[]>(data["Aspects"]))
        {
            Aspect aspect = AspectDatabase.AspectByName(aspectName);
            if (aspect != null)
            {
                aspects.Add(aspect);
            }
        }
        Aspects = aspects.ToArray();
        Tags    = SerializationUtilitites.DeserializeFromObject <string[]>(data["Tags"]);
    }
    public void DeserializeFromData(Dictionary <string, object> data)
    {
        // Attributes
        Name = Convert.ToString(data["Name"]);
        Type = Convert.ToString(data["Type"]);
        Health.DeserializeFromData(SerializationUtilitites.DeserializeFromObject <Dictionary <string, object> >(data["Health"]));

        List <SkillSlot> skills = new List <SkillSlot>();

        foreach (KeyValuePair <string, int> entry in SerializationUtilitites.DeserializeFromObject <Dictionary <string, int> >(data["Skills"]))
        {
            skills.Add(new SkillSlot(SkillDatabase.SkillByName(entry.Key), entry.Value));
        }
        Skills = skills.ToArray();

        // Equipment
        List <EquipmentSlot> equipment = new List <EquipmentSlot>();

        foreach (KeyValuePair <string, object> entry in SerializationUtilitites.DeserializeFromObject <Dictionary <string, object> >(data["Equipment"]))
        {
            equipment.Add(new EquipmentSlot(entry.Key, ItemDatabase.ItemByIdentifier(Convert.ToString(entry.Value))));
        }
        Equipment = equipment.ToArray();

        // Aspects and Tags
        Tags    = SerializationUtilitites.DeserializeFromObject <List <string> >(data["Tags"]);
        Aspects = new List <Aspect>();
        foreach (string name in SerializationUtilitites.DeserializeFromObject <string[]>(data["Aspects"]))
        {
            Aspects.Add(AspectDatabase.AspectByName(name));
        }

        // Other data
        XP              = Convert.ToInt32(data["XP"]);
        SkillPoints     = Convert.ToInt32(data["SkillPoints"]);
        Radius          = (float)Convert.ToDouble(data["Radius"]);
        AlertnessRadius = (float)Convert.ToDouble(data["AlertnessRadius"]);
    }
Exemple #12
0
    public void LoadGame()
    {
        string savedGameName = "SavedGame"; // TODO Replace this by a user provided name or the current date?
        string rootPath      = Path.Combine(_rootDataPath, savedGameName);

        // Game State
        string savePath = Path.Combine(rootPath, "GameSata.json");
        string json     = File.ReadAllText(savePath);
        Dictionary <string, string> data = SerializationUtilitites.DeserializeFromJson <Dictionary <string, string> >(json);

        InitializeGame(data);
        Debug.Log(string.Format("Loaded Game from: {0}", savePath));

        // Characters
        savePath = Path.Combine(rootPath, "Characters");
        foreach (string file in Directory.GetFiles(savePath, "*.json"))
        {
            json = File.ReadAllText(file);
            PlayerCharacter player = Instantiate(PlayerPrefab);
            player.DeserializeFromJson(json);
            Debug.Log(string.Format("Loaded Character from: {0}", file));
        }
    }
Exemple #13
0
    public void NewGame()
    {
        Dictionary <string, string> data = SerializationUtilitites.DeserializeFromJson <Dictionary <string, string> >(DefaultGame.text);

        InitializeGame(data);
    }