private static void RefreshDatabase() { DatabaseManager m = new DatabaseManager(); spawns = new SpawnSection(); mobs = new MobsSection(); items = new ItemsSection(); skills = new SkillsSection(); SpritesManager.Initialize(); mobs.LoadMobs(); items.LoadData(); spawns.LoadMobs(); skills.LoadMobs(); }
void OnGUI() { globalTab = GUILayout.Toolbar(globalTab, new string[] { "Global", "Mobs", "Items", "Spawner", "Skills" }); switch (globalTab) { case 0: GUILayout.Label("Tabs:"); tab = GUILayout.Toolbar(tab, new string[] { "Stats", "Packets", "Items" }); switch (tab) { case 0: GUILayout.Label("Stats Settings", EditorStyles.boldLabel); DrawStatsSection(); break; case 1: DrawPacketsSection(); break; case 2: DrawItemsSection(); break; } break; case 1: GUILayout.Label("Tabs:"); mobsTab = GUILayout.Toolbar(mobsTab, new string[] { "List", "Edit" }); switch (mobsTab) { case 0: if (GUILayout.Button("Connect to Database...")) { try { mobs.LoadMobs(); } catch (Exception ex) { EditorUtility.DisplayDialog("Error", "Can't load database: " + ex.ToString(), "Ok"); } } if (GUILayout.Button("Save to JSON")) { mobs.SaveToJson(); } if (GUILayout.Button("Add")) { mobs.editingData = new MobData(); mobsTab = 1; mobs.newEntry = true; } foreach (var item in mobs.mobs) { GUILayout.BeginHorizontal(); if (GUILayout.Button("Edit", GUILayout.Width(60))) { mobs.newEntry = false; mobs.EditObject(item.Key); mobsTab = 1; } GUILayout.Label(item.Key + ": " + item.Value.stats[StatType.NAME]); GUILayout.EndHorizontal(); } break; case 1: if (mobs.editingData == null) { GUILayout.Label("Select data first from the list..."); } else { GUILayout.Label("Id"); GUILayout.Label(mobs.editingData.id.ToString()); GUILayout.Label("Name"); mobs.editingData.stats[StatType.NAME] = GUILayout.TextField((string)mobs.editingData.stats[StatType.NAME]); GUILayout.Label("Health"); mobs.editingData.stats[StatType.HEALTH] = EditorGUILayout.IntField((int)mobs.editingData.stats[StatType.HEALTH]); GUILayout.Label("Lvl"); mobs.editingData.stats[StatType.LEVEL] = (byte)EditorGUILayout.IntField((byte)mobs.editingData.stats[StatType.LEVEL]); GUILayout.Label("Base Model"); mobs.editingData.baseModel = EditorGUILayout.TextField(mobs.editingData.baseModel); GUILayout.Label("Damage"); GUILayout.BeginHorizontal(); mobs.editingData.stats[StatType.MIN_DMG] = EditorGUILayout.IntField((int)mobs.editingData.stats[StatType.MIN_DMG]); mobs.editingData.stats[StatType.MAX_DMG] = EditorGUILayout.IntField((int)mobs.editingData.stats[StatType.MAX_DMG]); GUILayout.EndHorizontal(); if (GUILayout.Button("Save", GUILayout.Width(60))) { mobs.SaveEditedObject(); mobsTab = 0; mobs.editingData = null; RefreshDatabase(); } if (GUILayout.Button("Back", GUILayout.Width(60))) { mobsTab = 0; mobs.editingData = null; RefreshDatabase(); } } break; } break; case 2: GUILayout.Label("Tabs:"); itemsTab = GUILayout.Toolbar(itemsTab, new string[] { "List", "Edit" }); switch (itemsTab) { case 0: if (GUILayout.Button("Connect to Database...")) { try { items.LoadData(); } catch (Exception ex) { EditorUtility.DisplayDialog("Error", "Can't load database: " + ex.ToString(), "Ok"); } } if (GUILayout.Button("Save to JSON")) { items.SaveToJson(); } if (GUILayout.Button("Add")) { items.editingData = new ItemData(); itemsTab = 1; items.newEntry = true; } foreach (var item in items.items) { GUILayout.BeginHorizontal(); if (GUILayout.Button("Edit", GUILayout.Width(60))) { items.newEntry = false; items.EditObject(item.Key); itemsTab = 1; } GUILayout.Label(item.Key + ": " + item.Value.name); GUILayout.EndHorizontal(); } break; case 1: if (items.editingData == null) { GUILayout.Label("Select data first from the list..."); } else { GUILayout.Label("Id"); GUILayout.Label(items.editingData.id.ToString()); items.icon = (Sprite)EditorGUILayout.ObjectField("Icon", items.icon, typeof(Sprite), allowSceneObjects: false); GUILayout.Label("Name"); items.editingData.name = GUILayout.TextField(items.editingData.name); GUILayout.Label("Slot"); items.editingData.slot = (byte)(ItemSlot)EditorGUILayout.EnumPopup((ItemSlot)items.editingData.slot); if (GUILayout.Button("Save", GUILayout.Width(60))) { items.SaveEditedObject(); itemsTab = 0; items.editingData = null; RefreshDatabase(); } if (GUILayout.Button("Back", GUILayout.Width(60))) { itemsTab = 0; items.editingData = null; RefreshDatabase(); } } break; } break; case 3: GUILayout.Label("Tabs:"); spawnsTab = GUILayout.Toolbar(spawnsTab, new string[] { "List", "Edit" }); switch (spawnsTab) { case 0: if (GUILayout.Button("Connect to Database...")) { try { spawns.LoadMobs(); } catch (Exception ex) { EditorUtility.DisplayDialog("Error", "Can't load database: " + ex.ToString(), "Ok"); } } if (GUILayout.Button("Add")) { spawns.editingData = new SpawnData(); spawnsTab = 1; spawns.newEntry = true; } foreach (var item in spawns.spawns) { GUILayout.BeginHorizontal(); if (GUILayout.Button("Edit", GUILayout.Width(60))) { spawns.newEntry = false; spawns.EditObject(item.Key); spawnsTab = 1; } if (GUILayout.Button("Delete", GUILayout.Width(60))) { if (EditorUtility.DisplayDialog("Delete entry", "Are you really want to delete this entry?", "Yes", "No")) { spawns.RemoveObject(item.Key); RefreshDatabase(); } } GUILayout.Label(item.Key + ": " + item.Value.mobId + "[" + item.Value.pos.ToString() + "]"); GUILayout.EndHorizontal(); } break; case 1: if (spawns.editingData == null) { GUILayout.Label("Select data first from the list..."); } else { GUILayout.Label("Id"); GUILayout.Label(spawns.editingData.id.ToString()); GUILayout.Label("Mob Id"); spawns.editingData.mobId = EditorGUILayout.IntField(spawns.editingData.mobId); GUILayout.Label("Rotation"); spawns.editingData.rot = (short)EditorGUILayout.IntField(spawns.editingData.rot); GUILayout.Label("Position"); GUILayout.BeginHorizontal(); spawns.editingData.pos.X = EditorGUILayout.FloatField(spawns.editingData.pos.X); spawns.editingData.pos.Y = EditorGUILayout.FloatField(spawns.editingData.pos.Y); spawns.editingData.pos.Z = EditorGUILayout.FloatField(spawns.editingData.pos.Z); GUILayout.EndHorizontal(); if (GUILayout.Button("Save")) { spawns.SaveEditedObject(); spawnsTab = 0; spawns.editingData = null; RefreshDatabase(); } if (GUILayout.Button("Back")) { spawnsTab = 0; spawns.editingData = null; RefreshDatabase(); } } break; } break; case 4: GUILayout.Label("Tabs:"); skillsTab = GUILayout.Toolbar(skillsTab, new string[] { "List", "Edit" }); switch (skillsTab) { case 0: if (GUILayout.Button("Connect to Database...")) { try { skills.LoadMobs(); } catch (Exception ex) { EditorUtility.DisplayDialog("Error", "Can't load database: " + ex.ToString(), "Ok"); } } if (GUILayout.Button("Save to JSON")) { skills.SaveToJson(); } if (GUILayout.Button("Add")) { skills.editingData = new SkillData(); skillsTab = 1; skills.newEntry = true; } foreach (var item in skills.skills) { GUILayout.BeginHorizontal(); if (GUILayout.Button("Edit", GUILayout.Width(60))) { skills.newEntry = false; skills.EditObject(item.Key); skillsTab = 1; } if (GUILayout.Button("Delete", GUILayout.Width(60))) { if (EditorUtility.DisplayDialog("Delete entry", "Are you really want to delete this entry?", "Yes", "No")) { skills.RemoveObject(item.Key); RefreshDatabase(); } } GUILayout.Label(item.Key + ": " + item.Value.name); GUILayout.EndHorizontal(); } break; case 1: if (skills.editingData == null) { GUILayout.Label("Select data first from the list..."); } else { GUILayout.Label("Id"); GUILayout.Label(skills.editingData.id.ToString()); skills.icon = (Sprite)EditorGUILayout.ObjectField("Icon", skills.icon, typeof(Sprite), allowSceneObjects: false); GUILayout.Label("Name"); skills.editingData.name = GUILayout.TextField(skills.editingData.name); GUILayout.Label("Description"); skills.editingData.description = GUILayout.TextField(skills.editingData.description); if (GUILayout.Button("Save", GUILayout.Width(60))) { skills.SaveEditedObject(); skillsTab = 0; skills.editingData = null; RefreshDatabase(); } if (GUILayout.Button("Back", GUILayout.Width(60))) { skillsTab = 0; skills.editingData = null; RefreshDatabase(); } } break; } break; } }