Refactored LoadingState to use Menu

This commit is contained in:
2019-02-07 12:00:11 -06:00
parent f4a81f1e36
commit 5c623f1540
4 changed files with 37 additions and 23 deletions

View File

@@ -64,6 +64,7 @@ require_relative "lib/managers/shader_manager"
require_relative "lib/managers/object_manager" require_relative "lib/managers/object_manager"
require_relative "lib/managers/light_manager" require_relative "lib/managers/light_manager"
require_relative "lib/managers/network_manager" require_relative "lib/managers/network_manager"
require_relative "lib/managers/collision_manager"
require_relative "lib/renderer/renderer" require_relative "lib/renderer/renderer"
require_relative "lib/renderer/shader" require_relative "lib/renderer/shader"
@@ -71,9 +72,9 @@ require_relative "lib/renderer/opengl_renderer"
require_relative "lib/renderer/bounding_box_renderer" require_relative "lib/renderer/bounding_box_renderer"
require_relative "lib/states/game_state" require_relative "lib/states/game_state"
require_relative "lib/states/game_states/loading_state"
require_relative "lib/states/game_states/game"
require_relative "lib/states/menu" require_relative "lib/states/menu"
require_relative "lib/states/game_states/game"
require_relative "lib/states/game_states/loading_state"
require_relative "lib/states/menus/main_menu" require_relative "lib/states/menus/main_menu"
require_relative "lib/objects/text" require_relative "lib/objects/text"

View File

@@ -1,10 +1,11 @@
class IMICFPS class IMICFPS
class LoadingState < GameState class LoadingState < Menu
def setup def setup
@header = Text.new("I-MIC FPS", y: 10, size: 100, alignment: :center) title "I-MIC FPS"
#@header = Text.new("I-MIC FPS", y: 10, size: 100, alignment: :center)
@subheading = Text.new("Loading Assets", y: 100, size: 50, alignment: :center) @subheading = Text.new("Loading Assets", y: 100, size: 50, alignment: :center)
@state = Text.new("Preparing...", y: window.height/2-40, size: 40, alignment: :center) @state = Text.new("Preparing...", y: window.height/2-40, size: 40, alignment: :center)
@percentage = Text.new("0%", y: window.height-50-25, size: 50, alignment: :center) @percentage = Text.new("0%", y: window.height - 100 + 25, size: 50, alignment: :center)
@dummy_game_object = nil @dummy_game_object = nil
@assets = [] @assets = []
@@ -22,22 +23,16 @@ class IMICFPS
@completed_for_ms = 0 @completed_for_ms = 0
@lock = false @lock = false
@base_color = Gosu::Color.rgb(0, 180, 180)
end end
def draw def draw
@header.draw super
@subheading.draw @subheading.draw
@state.draw @state.draw
# fill()
color = Gosu::Color.rgb(255, 127, 0)
color_two = Gosu::Color.rgb(200, 100, 0)
Gosu.draw_quad(
0, 0, color,
window.width, 0, color_two,
0, window.height, color,
window.width, window.height, color_two
)
progressbar progressbar
end end
@@ -75,10 +70,25 @@ class IMICFPS
@assets << {type: type, path: path} @assets << {type: type, path: path}
end end
def progressbar def progressbar(x = window.width/4, y = window.height - 104)
@percentage.draw @percentage.draw
progress = (@asset_index.to_f/@assets.count)*window.width progress = (@asset_index.to_f/@assets.count)*window.width/2
draw_rect(0, window.height-100, progress, 100, Gosu::Color.rgb(255,127,0)) height = 100
dark_color= Gosu::Color.rgb(@base_color.red - 100, @base_color.green - 100, @base_color.blue - 100)#Gosu::Color.rgb(64, 127, 255)
color = Gosu::Color.rgb(@base_color.red - 50, @base_color.green - 50, @base_color.blue - 50)#Gosu::Color.rgb(0,127,127)
color_two = Gosu::Color.rgb(@base_color.red + 50, @base_color.green + 50, @base_color.blue + 50)#Gosu::Color.rgb(64, 127, 255)
draw_rect(x, y-2, x + window.width/4, height+4, dark_color)
Gosu.clip_to(x, y, progress, height) do
Gosu.draw_quad(
x, y, color,
x + x + window.width/4, y, color_two,
x, y + height, color,
x + x + window.width/4, y + height, color_two
)
end
end end
end end
end end

View File

@@ -1,12 +1,12 @@
class IMICFPS class IMICFPS
class Menu < GameState class Menu < GameState
def initialize def initialize(*args)
@elements = [] @elements = []
@size = 50 @size = 50
@slope = 250 @slope = 250
@color_step = 10 @color_step = 10
@base_color = Gosu::Color.rgb(255, 127, 0) @base_color = Gosu::Color.rgb(255, 127, 0)
super super(*args)
end end
def title(text, color = @base_color) def title(text, color = @base_color)
@@ -44,7 +44,7 @@ class IMICFPS
draw_rect( draw_rect(
$window.width/4, 0, $window.width/4, 0,
$window.width/2, $window.height, $window.width/2, $window.height,
Gosu::Color.rgba(100, 100, 100, 150) Gosu::Color.rgba(0, 0, 0, 150)
# Gosu::Color.rgba(@base_color.red+@color_step, @base_color.green+@color_step, @base_color.blue+@color_step, 200) # Gosu::Color.rgba(@base_color.red+@color_step, @base_color.green+@color_step, @base_color.blue+@color_step, 200)
) )
@@ -56,10 +56,10 @@ class IMICFPS
# Cursor # Cursor
fill_quad( fill_quad(
mouse_x, mouse_y, mouse_x, mouse_y,
mouse_x+16, mouse_y+16, mouse_x+16, mouse_y,
mouse_x, mouse_y+16, mouse_x, mouse_y+16,
mouse_x, mouse_y+16, mouse_x, mouse_y+16,
Gosu::Color::RED, Float::INFINITY Gosu::Color::WHITE, Float::INFINITY
) )
end end

View File

@@ -5,6 +5,9 @@ class IMICFPS
link "Single Player" do link "Single Player" do
push_game_state(LoadingState.new(forward: Game)) push_game_state(LoadingState.new(forward: Game))
end end
link "Settings" do
# push_game_state(SettingsMenu)
end
link "Exit" do link "Exit" do
window.close window.close
end end