예제 #1
0
    public void GenerateFromSeed(string _jsonSeed)
    {
        ResetWorld();
        SerializedWorld sWorld = JsonUtility.FromJson <SerializedWorld>(_jsonSeed);

        foreach (SerializedModule sMod in sWorld.modules)
        {
            RoomModule newModule = Instantiate(GetSpecificModule(sMod.code), sMod.position, Quaternion.Euler(0, sMod.rotation, 0), transform).GetComponent <RoomModule>();
            newModule.gameObject.SetActive(true);

            m_spawnedModules.Add(newModule);
            m_roomCount++;
            newModule.SetId(m_roomCount);
            newModule.gameObject.name = ("Room " + m_roomCount + " : " + newModule.moduleCode);
        }

        for (int m = 0; m < m_spawnedModules.Count; m++)
        {
            for (int c = 0; c < m_spawnedModules[m].connectors.Count; c++)
            {
                if (m_spawnedModules[m].connectors[c].linkedModule == null)
                {
                    m_spawnedModules[m].connectors[c].parentModule   = m_spawnedModules[m];
                    m_spawnedModules[m].connectors[c].UniqueId       = sWorld.modules[m].connections[c].uniqueId;
                    m_spawnedModules[m].connectors[c].LinkedUniqueId = sWorld.modules[m].connections[c].linkedUniqueId;
                    LinkModules(GetConnectorFromId(m_spawnedModules[m].connectors[c].UniqueId), GetConnectorFromId(m_spawnedModules[m].connectors[c].LinkedUniqueId));
                }
            }
        }

        timeUi.text    = "Time : 0";
        genUi.text     = "Generation : " + m_currentAttempts;
        modulesUi.text = "Modules : " + m_spawnedModules.Count;
        Debug.Log("SPAWNED WORLD FROM SEED");
    }
예제 #2
0
    public void CreateWorldSeed()
    {
        if (m_spawnedModules.Count >= 1)
        {
            SerializedWorld sWorld = new SerializedWorld();
            sWorld.modules = new SerializedModule[m_spawnedModules.Count];
            for (int m = 0; m < m_spawnedModules.Count; m++)
            {
                SerializedModule sMod = new SerializedModule();
                RoomModule       mod  = m_spawnedModules[m];

                sMod.id                   = mod.GetId();
                sMod.code                 = mod.moduleCode;
                sMod.position             = mod.transform.position;
                sMod.rotation             = Mathf.RoundToInt(mod.transform.eulerAngles.y);
                sMod.connectedModuleId    = new int[mod.connectors.Count];
                sMod.connectedModuleCodes = new string[mod.connectors.Count];
                sMod.connections          = new SerializedConnector[mod.connectors.Count];

                for (int c = 0; c < mod.connectors.Count; c++)
                {
                    sMod.connectedModuleId[c]    = mod.connectors[c].linkedModule.GetId();
                    sMod.connectedModuleCodes[c] = mod.connectors[c].linkedModule.moduleCode;
                    sMod.connections[c]          = new SerializedConnector(mod.connectors[c].UniqueId, mod.connectors[c].LinkedUniqueId);
                }

                sWorld.modules[m] = sMod;
            }

            string jsonWorld = JsonUtility.ToJson(sWorld);
            worldSeed = jsonWorld;

            Debug.Log("CREATED WORLD SEED : " + jsonWorld);
        }
    }
예제 #3
0
        public void Save(Model.World world, FileInfo file)
        {
            var serializer = createXmlSerializer();

            using (var fs = file.Create())
                serializer.Serialize(fs, SerializedWorld.FromWorld(world));

            var doc = new XDocument(genericDatastore.Serialize());

            doc.Save(Path.ChangeExtension(file.FullName, "data.xml"));
        }