public static SavedDungeon ConvertFrom(OverworldDungeon dungeon)
    {
        if (dungeon.dungeonData == null)
        {
            return new SavedDungeon()
                   {
                       location = SavedVector2.ConvertFrom(dungeon.position),
                       uuid     = dungeon.uuid
                   }
        }
        ;
        var output = new SavedDungeon {
            entered                     = true,
            location                    = SavedVector2.ConvertFrom(dungeon.position),
            numFloors                   = dungeon.dungeonData.numFloors,
            grid                        = dungeon.dungeonData.grid,
            maxSocialTier               = dungeon.dungeonData.maxSocialTier,
            maxDimensions               = dungeon.dungeonData.maxDimensions,
            encounterThemes             = dungeon.dungeonData.encounterThemes,
            seeds                       = dungeon.seeds,
            uuid                        = dungeon.uuid,
            lootSlotAffinities          = dungeon.dungeonData.lootSlotAffinities,
            lootPrimaryStatAffinities   = dungeon.dungeonData.lootPrimaryStatAffinities,
            lootSecondaryStatAffinities = dungeon.dungeonData.lootSecondaryStatAffinities,
            elementalAffinity           = dungeon.dungeonData.elementalAffinity,
            bossLootSlotAffinities      = dungeon.dungeonData.bossLootSlotAffinities
        };

        foreach (var kvp in dungeon.dungeonData.enemyStatBoosts)
        {
            output.enemyStatBoostEnemies.Add(kvp.Key);

            output.enemyStatBoostStats.Add(kvp.Value);
        }
        foreach (var kvp in dungeon.dungeonData.enemyBonusAbilities)
        {
            output.enemyBonusAbilityEnemies.Add(kvp.Key);
            output.enemyBonusAbilityAbilities.Add(SavedActiveAbility.ConvertFrom(kvp.Value));
        }
        foreach (var room in dungeon.dungeonData.rooms)
        {
            output.rooms.Add(SavedRoom.ConvertFrom(room));
        }
        foreach (var monster in dungeon.dungeonData.monsters)
        {
            output.monsters.Add(SavedMonsterData.ConvertFrom(monster));
        }
        foreach (var path in dungeon.dungeonData.paths)
        {
            output.paths.Add(SavedVaultPath.ConvertFrom(path));
        }
        return(output);
    }
        private void OnEnable()
        {
            // Load JEM editor resources
            JEMEditorResources.Load();

            // Apply title
            titleContent = new GUIContent("JEM Asset Builder", JEMEditorResources.JEMIconTexture);

            // Try to load configuration.
            JEMAssetsBuilderConfiguration.TryLoadConfiguration();

            // Load Saved vars.
            _assetsScroll   = new SavedVector2($"{nameof(JEMAssetBuilderWindow)}.AssetsScroll", Vector2.zero);
            _packagesScroll = new SavedVector2($"{nameof(JEMAssetBuilderWindow)}.PackagesScroll", Vector2.zero);

            // Load packages!
            LoadPackages();
        }
    public static SavedWorld ConvertFrom(GameObject go)
    {
        var obj            = new SavedWorld();
        var worldAutoSaver = go.GetComponent <WorldAutoSaver>();

        if (PlayerCharacter.localPlayer != null)
        {
            foreach (var item in PlayerCharacter.localPlayer.inventory.items)
            {
                obj.inventory.Add(SavedItem.ConvertFrom(item));
            }
        }
        obj.name = worldAutoSaver.worldName;
        if (OverworldGenerator.instance != null)
        {
            obj.savedOverworld = true;
            obj.elevation      = OverworldGenerator.instance.elevation;
            foreach (var landmark in OverworldLandmarkGenerator.landmarks)
            {
                if (landmark.type == "base")
                {
                    obj.baseCoords = SavedVector2.ConvertFrom(landmark.position);
                }
                else if (landmark.type == "dungeon")
                {
                    obj.dungeons.Add(SavedDungeon.ConvertFrom((OverworldDungeon)landmark));
                }
            }
        }
        else if (lastSavedWorld != null)
        {
            obj.savedOverworld = lastSavedWorld.savedOverworld;
            obj.elevation      = lastSavedWorld.elevation;
            obj.baseCoords     = lastSavedWorld.baseCoords;
            obj.dungeons       = lastSavedWorld.dungeons;
        }
        lastSavedWorld = obj;
        return(obj);
    }
    public static SavedRoom ConvertFrom(Room room)
    {
        var output = new SavedRoom {
            uuid        = room.uuid,
            size        = room.size,
            grandiosity = room.grandiosity,
            x           = room.x,
            y           = room.y,
            floor       = room.floor,
            xSize       = room.xSize,
            ySize       = room.ySize
        };

        foreach (var entrance in room.entrances)
        {
            output.entrances.Add(SavedVector3.ConvertFrom(entrance));
        }
        foreach (var dressingLocation in room.dressingLocations)
        {
            output.dressingLocations.Add(SavedVector2.ConvertFrom(dressingLocation));
        }
        return(output);
    }
Exemple #5
0
        private void DrawDatabases <TDatabase, TItem>() where TDatabase : DatabaseManager <TItem> where TItem : DatabaseItem
        {
            EditorGUILayout.Space();
            EditorGUILayout.Space();
            EditorGUI.indentLevel++;

            var savedPosition = new SavedVector2($"{nameof(SharedContentEditorWindow)}.{typeof(TDatabase).Name}.ScrollPosition", Vector2.zero);

            savedPosition.value = EditorGUILayout.BeginScrollView(savedPosition.value);

            // Draw External Editor
            foreach (var externalEditor in _externalEditorData)
            {
                EditorGUILayout.BeginVertical(EditorStyles.helpBox);
                GUILayout.Label(externalEditor.name, EditorStyles.boldLabel);
                DrawDatabaseRecord <TDatabase, TItem>(externalEditor);
                EditorGUILayout.EndVertical();
            }

            // Draw Local Editor
            if (_localEditorData == null)
            {
                EditorGUILayout.HelpBox("No locale editor data detected.", MessageType.Warning, true);
            }
            else
            {
                EditorGUILayout.BeginVertical(EditorStyles.helpBox);
                GUILayout.Label($"Local ({_localEditorData.name})", EditorStyles.boldLabel);
                DrawDatabaseRecord <TDatabase, TItem>(_localEditorData);
                EditorGUILayout.EndVertical();
            }

            EditorGUILayout.EndScrollView();

            EditorGUI.indentLevel--;
            EditorGUILayout.Space();
        }