Esempio n. 1
0
 private void DoLoad(GotoData.SceneData sceneData, GotoData.SpawnData spawnData = null)
 {
     // Load with spawn
     if (spawnData != null)
     {
         SceneAndRoomHelper.LoadScene(sceneData.realSceneName, spawnData.realSpawnName);
     }
     // Load with fallback spawn
     else
     {
         SceneAndRoomHelper.LoadScene(sceneData.realSceneName);
     }
 }
Esempio n. 2
0
        private void SaveTempData()
        {
            /*
             * // Store Transforms of all Entities in the current room
             * List<Entity> ents = UnityEngine.Object.FindObjectsOfType<Entity>().ToList();
             *
             * for (int i = 0; i < ents.Count; i++)
             * {
             *      Entity ent = ents[i];
             *
             *      if (ent.gameObject.activeInHierarchy && ent.GetComponent<Moveable>() != null)
             *      {
             *              EntityInfo entInfo = ent.GetComponent<EntityInfo>();
             *              string entName = entInfo != null ? entInfo.uniqueName : ent.name;
             *
             *              SaveManager.SaveToSaveFile("mod/savestate/objects/" + entName + "/position/x", ent.transform.position.x.ToString(), false);
             *              SaveManager.SaveToSaveFile("mod/savestate/objects/" + entName + "/position/y", ent.transform.position.y.ToString(), false);
             *              SaveManager.SaveToSaveFile("mod/savestate/objects/" + entName + "/position/z", ent.transform.position.z.ToString(), false);
             *      }
             */

            // Store scene & room
            SaveManager.SaveToSaveFile("mod/savestate/scene", SceneAndRoomHelper.GetLoadedScene().name, false);
            SaveManager.SaveToSaveFile("mod/savestate/room", SceneAndRoomHelper.GetLoadedRoom().RoomName, false);

            // Save player position
            Transform playerTrans = VarHelper.PlayerObj.transform;

            SaveManager.SaveToSaveFile("mod/savestate/objects/PlayerEnt/position/x", playerTrans.position.x.ToString(), false);
            SaveManager.SaveToSaveFile("mod/savestate/objects/PlayerEnt/position/y", playerTrans.position.y.ToString(), false);
            SaveManager.SaveToSaveFile("mod/savestate/objects/PlayerEnt/position/z", playerTrans.position.z.ToString(), false);
            SaveManager.SaveToSaveFile("mod/savestate/objects/PlayerEnt/rotation/x", playerTrans.localEulerAngles.x.ToString(), false);
            SaveManager.SaveToSaveFile("mod/savestate/objects/PlayerEnt/rotation/y", playerTrans.localEulerAngles.y.ToString(), false);
            SaveManager.SaveToSaveFile("mod/savestate/objects/PlayerEnt/rotation/z", playerTrans.localEulerAngles.z.ToString(), false);

            // Save state
            SaveManager.GetSaverOwner().SaveAll(true, delegate(bool success, string error)
            {
                DeleteTempData();
            });
            VarHelper.PlayerObj.GetComponent <Entity>().SaveState();
        }
Esempio n. 3
0
        private void LoadTempData()
        {
            string scene = SaveManager.LoadFromSaveFile("mod/savestate/scene");
            string room  = SaveManager.LoadFromSaveFile("mod/savestate/room");
            float  posX  = float.Parse(SaveManager.LoadFromSaveFile("mod/savestate/objects/PlayerEnt/position/x"));
            float  posY  = float.Parse(SaveManager.LoadFromSaveFile("mod/savestate/objects/PlayerEnt/position/y"));
            float  posZ  = float.Parse(SaveManager.LoadFromSaveFile("mod/savestate/objects/PlayerEnt/position/z"));
            float  rotX  = float.Parse(SaveManager.LoadFromSaveFile("mod/savestate/objects/PlayerEnt/rotation/x"));
            float  rotY  = float.Parse(SaveManager.LoadFromSaveFile("mod/savestate/objects/PlayerEnt/rotation/y"));
            float  rotZ  = float.Parse(SaveManager.LoadFromSaveFile("mod/savestate/objects/PlayerEnt/rotation/z"));

            // Update player transform
            Vector3 playerPos = new Vector3(posX, posY, posZ);             // Teleport player
            Vector3 playerRot = new Vector3(rotX, rotY, rotZ);             // Rotate player

            VarHelper.PlayerObj.GetComponent <Entity>().LoadState();
            SceneAndRoomHelper.LoadRoom(scene, room, false, false, playerPos, playerRot, true);             // Load scene/room

            DeleteTempData();
        }
Esempio n. 4
0
        public override string Activate(string[] args)
        {
            // If args given
            if (args.Length > 0)
            {
                string             wantedScene = args[0];
                GotoData.SceneData sceneData   = GotoData.GetSceneData(wantedScene);

                // If valid scene
                if (sceneData != null)
                {
                    // If spawn is given
                    if (args.Length > 1)
                    {
                        string wantedSpawn = args[1];

                        // If valid room
                        for (int i = 0; i < sceneData.rooms.Count; i++)
                        {
                            GotoData.RoomData room = sceneData.rooms[i];

                            if (StringHelper.DoStringsMatch(room.roomName, wantedSpawn))
                            {
                                // Load room
                                SceneAndRoomHelper.LoadRoom(sceneData.realSceneName, room.roomName, true, true, room.spawnPosition, room.facingAngle);
                                return("Now loading <in>" + sceneData.sceneName + "</in> room <in>" + room.roomName + "</in>...");
                            }
                        }

                        GotoData.SpawnData spawnData = GotoData.GetSpawnData(sceneData.realSceneName, wantedSpawn);

                        // If valid spawn
                        if (spawnData != null)
                        {
                            // Load scene at spawn point
                            DoLoad(sceneData, spawnData);
                            return("Now loading <in>" + sceneData.sceneName + "</in> at <in>" + spawnData.spawnName + "</in>...");
                        }

                        // If invalid spawn, check if there's a 2nd scene
                        sceneData = GotoData.GetSceneData(sceneData.realSceneName + "2");
                        if (sceneData != null)
                        {
                            spawnData = GotoData.GetSpawnData(sceneData.realSceneName, wantedSpawn);
                        }

                        // If valid spawn
                        if (spawnData != null)
                        {
                            // Load scene at spawn point
                            DoLoad(sceneData, spawnData);
                            return("Now loading <in>" + sceneData.sceneName + "</in> at <in>" + spawnData.spawnName + "</in>...");
                        }

                        // If invalid spawn
                        return(DebugManager.LogToConsole("<in>" + wantedSpawn + "</in> is not a valid spawn or room for <in>" + wantedScene + "</in>. Use <out>help goto</out> for more info.", DebugManager.MessageType.Error));
                    }
                    // If no spawn given
                    else
                    {
                        // Load scene at fallback spawn
                        DoLoad(sceneData);
                        return("Now loading <in>" + sceneData.sceneName + "</in> at default spawn...");
                    }
                }

                // If invalid scene
                return(DebugManager.LogToConsole("<in>" + wantedScene + "</in> is not a valid scene. Use <out>help goto</out> for more info.", DebugManager.MessageType.Error));
            }

            // Return help text if no args given
            return(DebugManager.LogToConsole(GetHelp()));
        }