mirror of
https://github.com/cyberarm/i-mic-rts.git
synced 2025-12-13 14:52:35 +00:00
Added main menu which is currently not yet functional
This commit is contained in:
0
assets/.gitkeep
Normal file
0
assets/.gitkeep
Normal file
0
data/.gitkeep
Normal file
0
data/.gitkeep
Normal file
78
i-mic-rts.rb
78
i-mic-rts.rb
@@ -1,71 +1,17 @@
|
|||||||
require "gosu"
|
begin
|
||||||
|
require "cyberarm_engine"
|
||||||
|
rescue LoadError
|
||||||
|
require_relative "../cyberarm_engine/lib/cyberarm_engine"
|
||||||
|
end
|
||||||
|
|
||||||
class Window < Gosu::Window
|
require_relative "lib/states/boot"
|
||||||
def initialize
|
require_relative "lib/states/main_menu"
|
||||||
super(Gosu.screen_width, Gosu.screen_height, fullscreen: true)
|
|
||||||
@title = Gosu::Font.new(56, name: "Noto Sans Display", bold: true)
|
|
||||||
@text = Gosu::Font.new(18, name: "Noto Sans Thaana", bold: true)
|
|
||||||
@name = "I-MIC RTS"
|
|
||||||
@logo = Gosu::Image.new("../../Documents/Inkscape/ruby_clan_logo-i_mic_rts.png")
|
|
||||||
|
|
||||||
@messages = ["Loading", "Compiling Protons", "Launching Warhead", "git push origin --force"]
|
class Window < CyberarmEngine::Engine
|
||||||
@messages_index = 0
|
def setup
|
||||||
@status = @messages[@messages_index]
|
self.caption = "I-MIC RTS (#{Gosu.language})"
|
||||||
|
push_state(Boot)
|
||||||
@last_update = Gosu.milliseconds
|
|
||||||
@update_interval = 250
|
|
||||||
|
|
||||||
@background = Gosu::Color.new(0x007a0d71)
|
|
||||||
@background_two = Gosu::Color.new(0x007b6ead)
|
|
||||||
end
|
|
||||||
|
|
||||||
def draw
|
|
||||||
draw_quad(
|
|
||||||
0, 0, @background_two,
|
|
||||||
self.width, 0, @background,
|
|
||||||
0, self.height, @background,
|
|
||||||
self.width, self.height, @background_two
|
|
||||||
)
|
|
||||||
|
|
||||||
draw_rect(
|
|
||||||
0, self.height/2 - 35,
|
|
||||||
self.width, 71,
|
|
||||||
Gosu::Color.new(0xff949dad)
|
|
||||||
)
|
|
||||||
|
|
||||||
c = Gosu::Color.new(0xff55dae1)
|
|
||||||
c2 = Gosu::Color.new(0xff3c9ec5)
|
|
||||||
draw_quad(
|
|
||||||
0, self.height/2 - 30, c,
|
|
||||||
self.width, self.height/2 - 30, c2,
|
|
||||||
0, self.height/2 + 30, c,
|
|
||||||
self.width, self.height/2 + 30, c2
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
@logo.draw(self.width/2 - @logo.width/2, self.height/2 - (@logo.height/3 + 14), 0)
|
|
||||||
|
|
||||||
@text.draw_text(@status, self.width - (@text.text_width(@status.gsub(".", "")) + @text.text_width("...")), self.height - @text.height, 0)
|
|
||||||
end
|
|
||||||
|
|
||||||
def update
|
|
||||||
@background.alpha+=1
|
|
||||||
@background_two.alpha+=1
|
|
||||||
|
|
||||||
if Gosu.milliseconds > @last_update + @update_interval
|
|
||||||
@last_update = Gosu.milliseconds
|
|
||||||
|
|
||||||
|
|
||||||
split = @status.scan(".")
|
|
||||||
if split.size >= 3
|
|
||||||
@messages_index+=1
|
|
||||||
@messages_index = 0 unless @messages_index < @messages.size
|
|
||||||
@status = @messages[@messages_index]
|
|
||||||
else
|
|
||||||
@status = "#{@status}."
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
Window.new.show
|
Window.new(Gosu.screen_width, Gosu.screen_height, false).show
|
||||||
0
lib/server/.gitkeep
Normal file
0
lib/server/.gitkeep
Normal file
0
lib/states/.gitkeep
Normal file
0
lib/states/.gitkeep
Normal file
73
lib/states/boot.rb
Normal file
73
lib/states/boot.rb
Normal file
@@ -0,0 +1,73 @@
|
|||||||
|
class Boot < CyberarmEngine::GameState
|
||||||
|
def setup
|
||||||
|
@title = Gosu::Font.new(56, name: "Noto Sans Display", bold: true)
|
||||||
|
@text = Gosu::Font.new(18, name: "Noto Sans Thaana", bold: true)
|
||||||
|
@name = "I-MIC RTS"
|
||||||
|
@logo = Gosu::Image.new("../../Documents/Inkscape/ruby_clan_logo-i_mic_rts.png")
|
||||||
|
|
||||||
|
@messages = ["Loading", "Compiling Protons", "Launching Warhead", "git push origin --force"]
|
||||||
|
@messages_index = 0
|
||||||
|
@status = @messages[@messages_index]
|
||||||
|
|
||||||
|
@last_update = Gosu.milliseconds
|
||||||
|
@update_interval = 250
|
||||||
|
|
||||||
|
@background = Gosu::Color.new(0x007a0d71)
|
||||||
|
@background_two = Gosu::Color.new(0x007b6ead)
|
||||||
|
|
||||||
|
@boot_life = 5_000
|
||||||
|
@boot_started = Gosu.milliseconds
|
||||||
|
end
|
||||||
|
|
||||||
|
def draw
|
||||||
|
Gosu.draw_quad(
|
||||||
|
0, 0, @background_two,
|
||||||
|
$window.width, 0, @background,
|
||||||
|
0, $window.height, @background,
|
||||||
|
$window.width, $window.height, @background_two
|
||||||
|
)
|
||||||
|
|
||||||
|
Gosu.draw_rect(
|
||||||
|
0, $window.height/2 - 35,
|
||||||
|
$window.width, 71,
|
||||||
|
Gosu::Color.new(0xff949dad)
|
||||||
|
)
|
||||||
|
|
||||||
|
c = Gosu::Color.new(0xff55dae1)
|
||||||
|
c2 = Gosu::Color.new(0xff3c9ec5)
|
||||||
|
Gosu.draw_quad(
|
||||||
|
0, $window.height/2 - 30, c,
|
||||||
|
$window.width, $window.height/2 - 30, c2,
|
||||||
|
0, $window.height/2 + 30, c,
|
||||||
|
$window.width, $window.height/2 + 30, c2
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@logo.draw($window.width/2 - @logo.width/2, $window.height/2 - (@logo.height/3 + 14), 0)
|
||||||
|
|
||||||
|
@text.draw_text(@status, $window.width - (@text.text_width(@status.gsub(".", "")) + @text.text_width("...")), $window.height - @text.height, 0)
|
||||||
|
end
|
||||||
|
|
||||||
|
def update
|
||||||
|
@background.alpha+=1
|
||||||
|
@background_two.alpha+=1
|
||||||
|
|
||||||
|
if Gosu.milliseconds > @boot_started + @boot_life
|
||||||
|
push_state(MainMenu)
|
||||||
|
end
|
||||||
|
|
||||||
|
if Gosu.milliseconds > @last_update + @update_interval
|
||||||
|
@last_update = Gosu.milliseconds
|
||||||
|
|
||||||
|
|
||||||
|
split = @status.scan(".")
|
||||||
|
if split.size >= 3
|
||||||
|
@messages_index+=1
|
||||||
|
@messages_index = 0 unless @messages_index < @messages.size
|
||||||
|
@status = @messages[@messages_index]
|
||||||
|
else
|
||||||
|
@status = "#{@status}."
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
23
lib/states/main_menu.rb
Normal file
23
lib/states/main_menu.rb
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
class MainMenu < CyberarmEngine::Container
|
||||||
|
def setup
|
||||||
|
show_cursor = true
|
||||||
|
set_layout_y(10, 20)
|
||||||
|
|
||||||
|
flow(width: $window.width, padding: 10, margin: 10) do
|
||||||
|
image("assets/logo_small.png")
|
||||||
|
text "Main Menu", align: "center", size: 30
|
||||||
|
end
|
||||||
|
|
||||||
|
stack(width: 250) do
|
||||||
|
button("Play")
|
||||||
|
button("About")
|
||||||
|
button("Exit") do
|
||||||
|
close
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def draw
|
||||||
|
fill(Gosu::Color.new(0xff7a0d71))
|
||||||
|
end
|
||||||
|
end
|
||||||
Reference in New Issue
Block a user