From face4b092a707a735dd4f9461002adcf4441072c Mon Sep 17 00:00:00 2001 From: Cyberarm Date: Sun, 3 May 2020 23:25:33 -0500 Subject: [PATCH] Added boot screen, added logo --- Gemfile.lock | 33 +++++++++ i-mic-fps.rb | 2 + lib/common_methods.rb | 40 +++++++++++ lib/states/game_states/boot.rb | 59 +++++++++++++++ lib/ui/menu.rb | 33 +-------- lib/window.rb | 2 +- static/logo.png | Bin 0 -> 7933 bytes svg/logo.svg | 128 +++++++++++++++++++++++++++++++++ 8 files changed, 264 insertions(+), 33 deletions(-) create mode 100644 lib/states/game_states/boot.rb create mode 100644 static/logo.png create mode 100644 svg/logo.svg diff --git a/Gemfile.lock b/Gemfile.lock index b72daa2..a6d60df 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -9,21 +9,54 @@ GIT GEM remote: https://rubygems.org/ specs: + async (1.25.2) + console (~> 1.0) + nio4r (~> 2.3) + timers (~> 4.1) + async-http (0.52.0) + async (~> 1.25) + async-io (~> 1.28) + async-pool (~> 0.2) + protocol-http (~> 0.18.0) + protocol-http1 (~> 0.12.0) + protocol-http2 (~> 0.14.0) + async-io (1.29.0) + async (~> 1.14) + async-pool (0.3.0) + async (~> 1.25) + async-websocket (0.14.0) + async-http (~> 0.51) + async-io (~> 1.23) + protocol-websocket (~> 0.7.0) + console (1.8.2) gosu (0.15.1) gosu (0.15.1-x64-mingw32) gosu_more_drawables (0.3.0) mini_portile2 (2.5.0) + nio4r (2.5.2) nokogiri (1.11.0.rc2) mini_portile2 (~> 2.5.0) nokogiri (1.11.0.rc2-x64-mingw32) ocra (1.3.11) opengl-bindings (1.6.10) + protocol-hpack (1.4.2) + protocol-http (0.18.0) + protocol-http1 (0.12.0) + protocol-http (~> 0.18) + protocol-http2 (0.14.0) + protocol-hpack (~> 1.4) + protocol-http (~> 0.18) + protocol-websocket (0.7.4) + protocol-http (~> 0.2) + protocol-http1 (~> 0.2) + timers (4.3.0) PLATFORMS ruby x64-mingw32 DEPENDENCIES + async-websocket cyberarm_engine! nokogiri (>= 1.11.0.rc1) ocra diff --git a/i-mic-fps.rb b/i-mic-fps.rb index edea256..99c1510 100644 --- a/i-mic-fps.rb +++ b/i-mic-fps.rb @@ -59,6 +59,8 @@ require_relative "lib/ui/menus/extras_menu" require_relative "lib/ui/menus/level_select_menu" require_relative "lib/ui/menus/game_pause_menu" +require_relative "lib/states/game_states/boot" +# require_relative "lib/states/game_states/close" require_relative "lib/states/game_states/game" require_relative "lib/states/game_states/loading_state" diff --git a/lib/common_methods.rb b/lib/common_methods.rb index 397be67..6e9366a 100644 --- a/lib/common_methods.rb +++ b/lib/common_methods.rb @@ -42,6 +42,46 @@ class IMICFPS def fill(color = Gosu::Color::WHITE) draw_rect(0, 0, window.width, window.height, color) end + def fill_quad(x1, y1, x2, y2, x3, y3, x4, y4, color = Gosu::Color::WHITE, z = 0, mode = :default) + draw_quad( + x1,y1, color, + x2,y2, color, + x3,y3, color, + x4,y4, color, + z, mode + ) + end + + def menu_background(color, color_step, transparency, bar_size, slope) + ((Gosu.screen_height + slope) / bar_size).times do |i| + fill_quad( + 0, i * bar_size, + 0, slope + (i * bar_size), + window.width / 2, (-slope) + (i * bar_size), + window.width / 2, i * bar_size, + Gosu::Color.rgba( + color.red - i * color_step, + color.green - i * color_step, + color.blue - i * color_step, + transparency + ), + -2 + ) + fill_quad( + window.width, i * bar_size, + window.width, slope + (i * bar_size), + window.width / 2, (-slope) + (i * bar_size), + window.width / 2, i * bar_size, + Gosu::Color.rgba( + color.red - i * color_step, + color.green - i * color_step, + color.blue - i * color_step, + transparency + ), + -2 + ) + end + end def gl_error? e = glGetError() diff --git a/lib/states/game_states/boot.rb b/lib/states/game_states/boot.rb new file mode 100644 index 0000000..5248704 --- /dev/null +++ b/lib/states/game_states/boot.rb @@ -0,0 +1,59 @@ +class IMICFPS + class Boot < GameState + require_relative "../../../../gosu_more_drawables/lib/gosu_more_drawables/draw_circle" + + def setup + @primary_color = Gosu::Color.rgba(255, 127, 0, 200) + @accent_color = Gosu::Color.rgba(155, 27, 0, 200) + + @title = Text.new(IMICFPS::NAME, size: 100, z: 0, color: Gosu::Color.new(0xff000000), shadow: false, font: "Droid Serif") + @logo = get_image(IMICFPS::GAME_ROOT_PATH + "/static/logo.png") + + @start_time = Gosu.milliseconds + @time_to_live = 3_000 + end + + def draw + menu_background(@primary_color, 10, 200, 50, 250) + + fraction_left = ((Gosu.milliseconds - @start_time) / (@time_to_live - 250).to_f) + + Gosu.draw_quad( + 0, 0, @primary_color, + window.width, 0, @primary_color, + window.width, window.height, @accent_color, + 0, window.height, @accent_color + ) + + if fraction_left <= 1.15 + Gosu.draw_circle( + window.width / 2, + window.height / 2, + @logo.width / 2, 128, Gosu::Color.new(0x11ffffff) + ) + + Gosu.draw_arc( + window.width / 2, + window.height / 2, + @logo.width / 2, fraction_left.clamp(0.0, 1.0), 128, 8, Gosu::Color.new(0x33ff8800) + ) + + @logo.draw(window.width / 2 - @logo.width / 2, window.height / 2 - @logo.height / 2, 0) + + @title.draw + + end + end + + def update + @title.x = window.width / 2 - @title.width / 2 + @title.y = 0 + + push_state(MainMenu) if Gosu.milliseconds - @start_time >= @time_to_live + end + + def button_up(id) + push_state(MainMenu) + end + end +end \ No newline at end of file diff --git a/lib/ui/menu.rb b/lib/ui/menu.rb index 12bca4d..add5879 100644 --- a/lib/ui/menu.rb +++ b/lib/ui/menu.rb @@ -31,7 +31,7 @@ class IMICFPS end def draw - draw_background + menu_background(@base_color, @color_step, @background_alpha, @size, @slope) draw_menu_box draw_menu @@ -46,27 +46,6 @@ class IMICFPS end end - def draw_background - ((Gosu.screen_height+@slope)/@size).times do |i| - fill_quad( - 0, i*@size, - 0, @slope+(i*@size), - window.width/2, (-@slope)+(i*@size), - window.width/2, i*@size, - Gosu::Color.rgba(@base_color.red-i*@color_step, @base_color.green-i*@color_step, @base_color.blue-i*@color_step, @background_alpha), - -2 - ) - fill_quad( - window.width, i*@size, - window.width, @slope+(i*@size), - window.width/2, (-@slope)+(i*@size), - window.width/2, i*@size, - Gosu::Color.rgba(@base_color.red-i*@color_step, @base_color.green-i*@color_step, @base_color.blue-i*@color_step, @background_alpha), - -2 - ) - end - end - def draw_menu_box draw_rect( window.width/4, 0, @@ -95,16 +74,6 @@ class IMICFPS @__version_text.y = window.height - (@__version_text.height + 10) end - def fill_quad(x1, y1, x2, y2, x3, y3, x4, y4, color = Gosu::Color::WHITE, z = 0, mode = :default) - draw_quad( - x1,y1, color, - x2,y2, color, - x3,y3, color, - x4,y4, color, - z, mode - ) - end - def button_up(id) if id == Gosu::MsLeft @elements.each do |e| diff --git a/lib/window.rb b/lib/window.rb index fa91cdc..30ddce7 100644 --- a/lib/window.rb +++ b/lib/window.rb @@ -34,7 +34,7 @@ class IMICFPS @config.save! end - push_state(MainMenu) + push_state(Boot) @delta_time = Gosu.milliseconds end diff --git a/static/logo.png b/static/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..3dd64df249c12f4713e9a7609589bbd86a7809b0 GIT binary patch literal 7933 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 literal 0 HcmV?d00001 diff --git a/svg/logo.svg b/svg/logo.svg new file mode 100644 index 0000000..d7a8885 --- /dev/null +++ b/svg/logo.svg @@ -0,0 +1,128 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + I-MIC FPS + +