コード例 #1
0
ファイル: PickUpable.cs プロジェクト: WillRosen/Astrodition
    //this is used to process the incomming data from the item
    public override void recieveNetworkData(CSteamID steamID, string[] dataSplit)
    {
        PlayerNetworkIndividualController playerNetworkIndividualController = GameReference.self.playerNetwork.getIndividualController(steamID);

        base.recieveNetworkData(steamID, dataSplit);
        if (dataSplit[1] == "InPlayerHand")
        {
            onEnterHandsNetwork(playerNetworkIndividualController);
        }
        else if (dataSplit[1] == "OutPlayerHand")
        {
            //print(rig.velocity);
            onExitHandsNetwork(playerNetworkIndividualController, false);
            transform.parent   = null;
            transform.position = new Vector3(float.Parse(dataSplit[2]), float.Parse(dataSplit[3]), float.Parse(dataSplit[4]));
            transform.rotation = new Quaternion(float.Parse(dataSplit[5]), float.Parse(dataSplit[6]), float.Parse(dataSplit[7]), float.Parse(dataSplit[8]));

            rig.velocity        = new Vector3(float.Parse(dataSplit[9]), float.Parse(dataSplit[10]), float.Parse(dataSplit[11]));
            rig.angularVelocity = new Vector3(float.Parse(dataSplit[12]), float.Parse(dataSplit[13]), float.Parse(dataSplit[14]));

            rig.isKinematic = false;
        }
        else if (dataSplit[1] == "Dropped")
        {
            onExitHandsNetwork(playerNetworkIndividualController, true);
            transform.parent   = null;
            transform.position = new Vector3(float.Parse(dataSplit[2]), float.Parse(dataSplit[3]), float.Parse(dataSplit[4]));
            transform.rotation = new Quaternion(float.Parse(dataSplit[5]), float.Parse(dataSplit[6]), float.Parse(dataSplit[7]), float.Parse(dataSplit[8]));

            rig.velocity        = new Vector3(float.Parse(dataSplit[9]), float.Parse(dataSplit[10]), float.Parse(dataSplit[11]));
            rig.angularVelocity = new Vector3(float.Parse(dataSplit[12]), float.Parse(dataSplit[13]), float.Parse(dataSplit[14]));

            rig.isKinematic = false;
        }
        else if (dataSplit[1] == "InInv")
        {
            onPutInContainerNetwork(Savable.findGameObjectByID((int)StringToFloat(dataSplit[2])).GetComponent <Container>(), playerNetworkIndividualController);
        }
        else if (dataSplit[1] == "OutInv")
        {
            onTakenOutOfContainerNetwork();
            transform.position = new Vector3(float.Parse(dataSplit[2]), float.Parse(dataSplit[3]), float.Parse(dataSplit[4]));
            transform.rotation = new Quaternion(float.Parse(dataSplit[5]), float.Parse(dataSplit[6]), float.Parse(dataSplit[7]), float.Parse(dataSplit[8]));

            rig.velocity        = new Vector3(float.Parse(dataSplit[9]), float.Parse(dataSplit[10]), float.Parse(dataSplit[11]));
            rig.angularVelocity = new Vector3(float.Parse(dataSplit[12]), float.Parse(dataSplit[13]), float.Parse(dataSplit[14]));
        }
        else if (dataSplit[1] == "Anim")
        {
            anim.SetBool(dataSplit[2], StringToBool(dataSplit[3]));
        }
        else if (dataSplit[1] == "InvRot")
        {
            rotatedItem = StringToBool(dataSplit[2]);
        }
    }
コード例 #2
0
ファイル: SaveManager.cs プロジェクト: likia/Imprint.Kernel
 private void SaveFlush()
 {
     SavedObject.Clear();
     foreach (DictionaryEntry Entry in ObjectHandler)
     {
         string  Name    = (string)Entry.Key;
         Savable Handler = (Savable)Entry.Value;
         SavedObject.Add(Name, Handler.Save());
     }
 }
コード例 #3
0
ファイル: GameManager.cs プロジェクト: danielmsorensen/Phi
 public void LoadSavables()
 {
     foreach (string s in currentWorld.savables)
     {
         if (Savable.GetRealm(s) == currentWorld.realm)
         {
             Savable.Deserialize(s);
         }
     }
 }
コード例 #4
0
ファイル: SaveManager.cs プロジェクト: likia/Imprint.Kernel
 public bool Handle(string Name, Savable Handler)
 {
     if (ObjectHandler.Contains(Name))
     {
         return(false);
     }
     ObjectHandler.Add(Name, Handler);
     if (SavedObject.Contains(Name))
     {
         Handler.Load(SavedObject[Name]);
     }
     return(true);
 }
コード例 #5
0
        public override void OnInspectorGUI()
        {
            DrawDefaultInspector();
            Savable savable = (Savable)target;

            if (string.IsNullOrEmpty(savable.PrefabId))
            {
                if (GUILayout.Button("Assign Prefab Id"))
                {
                    savable.PrefabId = Guid.NewGuid().ToString();
                }
            }
        }
コード例 #6
0
    public static Savable Deserialize(string json)
    {
        Data    data = JsonUtility.FromJson <Data>(json);
        Savable s    = Instantiate(Resources.Load <Savable>(data.resourcePath), data.position, data.rotation);

        s.resourcePath = data.resourcePath;
        s.data         = data.data;

        if (s.OnDeserialized != null)
        {
            s.OnDeserialized.Invoke();
        }

        return(s);
    }
コード例 #7
0
ファイル: DataManagment.cs プロジェクト: Kemsou/RPG-Jam-2019
    void save()
    {
        MonoBehaviour[] sceneActive = FindObjectsOfType <MonoBehaviour>();
        foreach (MonoBehaviour mono in sceneActive)
        {
            FieldInfo[] objectFields = mono.GetType().GetFields(BindingFlags.Instance | BindingFlags.Public);
            for (int i = 0; i < objectFields.Length; i++)
            {
                Savable attribute = Attribute.GetCustomAttribute(objectFields[i], typeof(Savable)) as Savable;
                if (attribute != null)
                {
                    if (!datas.ContainsKey(sceneActiveName))
                    {
                        datas.Add(sceneActiveName, new List <Data>());
                    }

                    switch (objectFields[i].GetValue(mono).GetType().ToString())
                    {
                    case "Character":
                        Console.WriteLine("Character");
                        Character     tempChar      = (Character)objectFields[i].GetValue(mono);
                        List <string> tempInventory = new List <string>();
                        foreach (Item item in tempChar.inventory)
                        {
                            tempInventory.Add(item.ToString().Substring(0, tempChar.armor.ToString().IndexOf('(') - 1));
                        }
                        datas[sceneActiveName].Add(new CharacterData(sceneActiveName, mono.name, mono.GetType().ToString(), objectFields[i].Name, objectFields[i].GetValue(mono).ToString(), objectFields[i].GetValue(mono).GetType().ToString(),
                                                                     tempChar.name, tempChar.lvl, tempChar.isAlly, tempChar.currentHealth, tempChar.currentMana, tempInventory, tempChar.armor.ToString().Substring(0, tempChar.armor.ToString().IndexOf('(') - 1), tempChar.weapon.ToString().Substring(0, tempChar.weapon.ToString().IndexOf('(') - 1), tempChar.gold));
                        break;

                    case "2":

                        break;

                    default:
                        datas[sceneActiveName].Add(new Data(sceneActiveName, mono.name, mono.GetType().ToString(), objectFields[i].Name, objectFields[i].GetValue(mono).ToString(), objectFields[i].GetValue(mono).GetType().ToString()));
                        break;
                    }

                    // Debug.Log("#1#" + mono.GetType() + " #2#" + objectFields[i].Name + " #3#" + objectFields[i].GetValue(mono) + " #4#" + mono.name + " #5#" + objectFields[i].GetValue(mono).GetType());
                }                 //Componenet name         //valueName                 // value
            }
        }
        sqlite.Save(this.datas);
    }
コード例 #8
0
ファイル: GameManager.cs プロジェクト: danielmsorensen/Phi
 public static void SaveWorld(World world)
 {
     for (int i = 0; i < world.savables.Count; i++)
     {
         string s = world.savables[i];
         if (Savable.GetRealm(s) == world.realm)
         {
             world.savables.Remove(s);
         }
     }
     Savable[] savables = FindObjectsOfType <Savable>();
     foreach (Savable s in savables)
     {
         world.savables.Add(s.Serialize());
     }
     SaveObject(world.name.ToLower(), world, "Worlds");
     print(savables.Length + " savables found");
     print("Saved world: " + world.name);
 }
コード例 #9
0
        private static PrefabStatus GetPrefabStatus(GameObject prefab, Dictionary <Type, Type> surrogateMap)
        {
            Savable savable = prefab.GetComponent <Savable>();

            if (savable == null)
            {
                return(PrefabStatus.MissingSavable);
            }

            if (string.IsNullOrEmpty(savable.PrefabId))
            {
                return(PrefabStatus.MissingId);
            }

            if (prefab.GetComponents <MonoBehaviour>().Any(component => !surrogateMap.ContainsKey(component.GetType()) && !component.GetType().GetAttributes <DontSaveAttribute>(false).Any()))
            {
                return(PrefabStatus.MissingSurrogate);
            }

            return(PrefabStatus.Savable);
        }
コード例 #10
0
ファイル: PickUpable.cs プロジェクト: WillRosen/Astrodition
    //sets the item's attributes once loaded from a text file
    public override void setAttributes(List <Attribute> attributes)
    {
        base.setAttributes(attributes);

        bool testHidden = false;

        foreach (Attribute attr in attributes)
        {
            if (attr.Key == "InvRot")
            {
                rotatedItem = StringToBool(attr.Value);
                //if (rotatedItem) {
                //  Debug.Break();
                // }
            }
            if (attr.Key == "Hidden")
            {
                testHidden = true;
            }
            if (attr.Key == "containerIn")
            {
                if (attr.Value != "-1")
                {
//                    Debug.Log(attr.Value, gameObject);
                    isWithinContainer = Savable.findGameObjectByID((int)StringToFloat(attr.Value)).GetComponent <Container>();
                }
            }
        }

        if (testHidden)
        {
            hideFromWorld();
        }
        else
        {
            showToWorld();
        }
    }