From fd228aa0c0903534e86a8be9b664d54f9e9b939e Mon Sep 17 00:00:00 2001 From: Cyberarm Date: Sun, 22 Mar 2020 12:17:28 -0500 Subject: [PATCH] Added extras menu, stubbed map editor, made asset viewer and map editor accessible from extras menu --- i-mic-fps.rb | 21 ++---------- lib/tools/asset_viewer.rb | 2 ++ lib/tools/asset_viewer/asset_viewer.rb | 12 ------- lib/tools/asset_viewer/lib/main_menu.rb | 8 ++--- lib/tools/map_editor.rb | 1 + lib/tools/map_editor/lib/main_menu.rb | 45 +++++++++++++++++++++++++ lib/ui/menus/extras_menu.rb | 20 +++++++++++ lib/ui/menus/main_menu.rb | 4 +++ 8 files changed, 79 insertions(+), 34 deletions(-) create mode 100644 lib/tools/asset_viewer.rb delete mode 100644 lib/tools/asset_viewer/asset_viewer.rb create mode 100644 lib/tools/map_editor.rb create mode 100644 lib/tools/map_editor/lib/main_menu.rb create mode 100644 lib/ui/menus/extras_menu.rb diff --git a/i-mic-fps.rb b/i-mic-fps.rb index 5fbf978..4532397 100644 --- a/i-mic-fps.rb +++ b/i-mic-fps.rb @@ -54,6 +54,7 @@ end require_relative "lib/ui/console" require_relative "lib/ui/menus/main_menu" require_relative "lib/ui/menus/settings_menu" +require_relative "lib/ui/menus/extras_menu" require_relative "lib/ui/menus/level_select_menu" require_relative "lib/ui/menus/game_pause_menu" @@ -101,24 +102,8 @@ require_relative "lib/demo" require_relative "lib/window" -if ARGV[0] == "tool" - case ARGV[1] - when "viewer" # Turn Table - require_relative "lib/tools/asset_viewer/asset_viewer" - when "editor" # Level Editor - raise NotImplementedError - else - if ARGV[1].nil? - puts "### I-MIC FPS Tools ###" - puts "viewer - 3D Turn Table" - puts "editor - Level Editor" - else - raise "No such tool: #{ARGV[1]}" - end - end - - return # Don't launch game, but load all required files -end +require_relative "lib/tools/asset_viewer" +require_relative "lib/tools/map_editor" if ARGV.join.include?("--profile") begin diff --git a/lib/tools/asset_viewer.rb b/lib/tools/asset_viewer.rb new file mode 100644 index 0000000..2d1d7da --- /dev/null +++ b/lib/tools/asset_viewer.rb @@ -0,0 +1,2 @@ +require_relative "asset_viewer/lib/main_menu" +require_relative "asset_viewer/lib/turn_table" \ No newline at end of file diff --git a/lib/tools/asset_viewer/asset_viewer.rb b/lib/tools/asset_viewer/asset_viewer.rb deleted file mode 100644 index 57d3ff0..0000000 --- a/lib/tools/asset_viewer/asset_viewer.rb +++ /dev/null @@ -1,12 +0,0 @@ -require_relative "lib/main_menu" -require_relative "lib/turn_table" - -class AssetViewerWindow < IMICFPS::Window - def initialize(*args) - super(*args) - - push_state(IMICFPS::AssetViewerTool::MainMenu) - end -end - -AssetViewerWindow.new.show \ No newline at end of file diff --git a/lib/tools/asset_viewer/lib/main_menu.rb b/lib/tools/asset_viewer/lib/main_menu.rb index 104ed0d..6768f49 100644 --- a/lib/tools/asset_viewer/lib/main_menu.rb +++ b/lib/tools/asset_viewer/lib/main_menu.rb @@ -18,6 +18,10 @@ class IMICFPS @manifests.sort_by! { |m| m.name.downcase } + button "Back", margin_bottom: 25 do + pop_state + end + flow(margin: 10) do @manifests.each do |manifest| button manifest.name do @@ -25,10 +29,6 @@ class IMICFPS end end end - - button "Exit", margin_top: 25 do - window.close - end end def update diff --git a/lib/tools/map_editor.rb b/lib/tools/map_editor.rb new file mode 100644 index 0000000..6191385 --- /dev/null +++ b/lib/tools/map_editor.rb @@ -0,0 +1 @@ +require_relative "map_editor/lib/main_menu" \ No newline at end of file diff --git a/lib/tools/map_editor/lib/main_menu.rb b/lib/tools/map_editor/lib/main_menu.rb new file mode 100644 index 0000000..72193c7 --- /dev/null +++ b/lib/tools/map_editor/lib/main_menu.rb @@ -0,0 +1,45 @@ +class IMICFPS + class MapEditorTool + class MainMenu < CyberarmEngine::GuiState + def setup + window.needs_cursor = true + + label "#{IMICFPS::NAME}", text_size: 50 + label "Map Editor", text_size: 28 + + @maps = [] + Dir.glob(GAME_ROOT_PATH + "/maps/*.json").each do |map| + begin + @maps << MapParser.new(map_file: map) + rescue + warn "Broken map file: #{map}" + end + end + + @maps.sort_by! { |m| m.metadata.name.downcase } + + button "Back", margin_bottom: 25 do + pop_state + end + + button "New Map" + + label "" + label "Edit Map" + flow(margin: 10) do + @maps.each do |map| + button map.metadata.name do + # push_state(TurnTable, manifest: manifest) + end + end + end + end + + def update + super + + window.needs_cursor = true + end + end + end +end \ No newline at end of file diff --git a/lib/ui/menus/extras_menu.rb b/lib/ui/menus/extras_menu.rb new file mode 100644 index 0000000..2f177a6 --- /dev/null +++ b/lib/ui/menus/extras_menu.rb @@ -0,0 +1,20 @@ +class IMICFPS + class ExtrasMenu < Menu + def setup + title "I-MIC FPS" + subtitle "Extras" + + link "Asset Viewer" do + push_state(IMICFPS::AssetViewerTool::MainMenu) + end + + link "Map Editor" do + push_state(IMICFPS::MapEditorTool::MainMenu) + end + + link "Back" do + pop_state + end + end + end +end \ No newline at end of file diff --git a/lib/ui/menus/main_menu.rb b/lib/ui/menus/main_menu.rb index 232c11d..f13c42a 100644 --- a/lib/ui/menus/main_menu.rb +++ b/lib/ui/menus/main_menu.rb @@ -12,6 +12,10 @@ class IMICFPS push_state(SettingsMenu) end + link "Extras" do + push_state(ExtrasMenu) + end + link "Exit" do window.close end