From b8614162cdbb3817a7a58ceadf8b6b0d05fae952 Mon Sep 17 00:00:00 2001 From: Frederico Linhares Date: Wed, 24 May 2023 14:50:01 -0300 Subject: feat Recreate the Menu --- test/src/main.rb | 107 ++++++++++++++----------------------------------------- 1 file changed, 26 insertions(+), 81 deletions(-) (limited to 'test/src/main.rb') diff --git a/test/src/main.rb b/test/src/main.rb index bc28ffc..98dcb9f 100644 --- a/test/src/main.rb +++ b/test/src/main.rb @@ -12,104 +12,49 @@ # See the License for the specific language governing permissions and # limitations under the License. -CAMERA_ROTATION_SPEED = Math::PI/45; -BOX_ROTATION_SPEED = Math::PI/180; -TRANSLATION_SPEED = 0.5; +def change_mode(new_mode) + $next_stage = new_mode; + $quit_stage = true; +end def config() CandyGear.game_name = "Candy Gear Test"; CandyGear::Graphic.display_width = 1280; CandyGear::Graphic.display_height = 720; + CandyGear::Graphic.fps = 60; end def init() - texture = CandyGear::Texture.from_image("textures/color_texture.qoi"); - mesh = CandyGear::Mesh.new("meshes/cube.cgmesh"); + menu_texture = CandyGear::Texture.from_image("textures/menu.qoi"); # FIXME: Text rendering crashes with this font: - # font = CandyGear::Font.new("/usr/share/fonts/TTF/sazanami-mincho.ttf", 16); + # font = CandyGear::Font.new( + # "/usr/share/fonts/TTF/sazanami-mincho.ttf", 16); # FIXME: This font, under this path, may not be present in all Linuxes: - font = CandyGear::Font.new("/usr/share/fonts/TTF/HanaMinA.ttf", 30); - japanese_text = CandyGear::Texture.from_text(font, "こんにちは世界!"); - english_text = CandyGear::Texture.from_text( - font, "The quick brown fox jumps"); - - $color = CandyGear::Vector3D.new(0.8, 0.2, 0.2); - $model = CandyGear::Model.new(mesh, texture); - $sprite = CandyGear::Sprite.new( - texture, CandyGear::Vector4D.new(0, 0, 1.0, 1.0)); - $rectangle = CandyGear::Vector4D.new(103.0, 1.0, 100.0, 100.0); - $sprite_position = CandyGear::Vector4D.new(1.0, 1.0, 100.0, 100.0); - $japanese_text_sprite = CandyGear::Sprite.new( - japanese_text, CandyGear::Vector4D.new(0, 0, 1.0, 1.0)); - $japanese_text_position = CandyGear::Vector4D.new( - 204.0, 1.0, japanese_text.width, japanese_text.height); - $english_text_sprite = CandyGear::Sprite.new( - english_text, CandyGear::Vector4D.new(0, 0, 1.0, 1.0)); - $english_text_position = CandyGear::Vector4D.new( - 204.0, japanese_text.height + 2.0, - english_text.width, english_text.height); - - $instances = [ - CandyGear::Vector3D.new(5.0, 0.0, 0.0), - CandyGear::Vector3D.new(-5.0, 0.0, 0.0), - CandyGear::Vector3D.new(0.0, 5.0, 0.0), - CandyGear::Vector3D.new(0.0, -5.0, 0.0), - CandyGear::Vector3D.new(0.0, 0.0, 5.0), - CandyGear::Vector3D.new(0.0, 0.0, -5.0) - ]; - $instances_rotation = CandyGear::Rotation3D.new(0.0, 0.0, 0.0); - - $camera_position = CandyGear::Vector3D.new(0.0, 0.0, 0.0); - $camera_rotation = CandyGear::Rotation3D.new(0.0, 0.0, 0.0); - - color = CandyGear::Vector3D.new(0.12, 0.12, 0.18); - $view1 = CandyGear::View2D.new( - CandyGear::Vector4D.new(0, 0, 1280, 240), 640, 120); - $view2 = CandyGear::View3D.new( - CandyGear::Vector4D.new(0, 240, 1280, 480), 1280, 480); - CandyGear.views = [$view1, $view2]; + font = CandyGear::Font.new("/usr/share/fonts/TTF/HanaMinA.ttf", 18); + $global_data = { + font: font, + menu_view: CandyGear::Menu::BorderedView.new(menu_texture, font, 16, 16) + } - $view2.camera_position = $camera_position; - $view2.camera_rotation = $camera_rotation; + change_mode(:title); end -def key_down(key) - case key - when CandyGear::Key::I - $camera_rotation.rotate(-CAMERA_ROTATION_SPEED, 0.0); - when CandyGear::Key::K - $camera_rotation.rotate(CAMERA_ROTATION_SPEED, 0.0); - when CandyGear::Key::J - $camera_rotation.rotate(0.0, CAMERA_ROTATION_SPEED); - when CandyGear::Key::L - $camera_rotation.rotate(0.0, -CAMERA_ROTATION_SPEED); - when CandyGear::Key::E - $camera_position.translate( - CandyGear::Vector3D.new(0.0, 0.0, -TRANSLATION_SPEED), $camera_rotation); - when CandyGear::Key::D - $camera_position.translate( - CandyGear::Vector3D.new(0.0, 0.0, TRANSLATION_SPEED), $camera_rotation); - when CandyGear::Key::S - $camera_position.translate( - CandyGear::Vector3D.new(-TRANSLATION_SPEED, 0.0, 0.0), $camera_rotation); - when CandyGear::Key::F - $camera_position.translate( - CandyGear::Vector3D.new(TRANSLATION_SPEED, 0.0, 0.0), $camera_rotation); - end -end +def key_down(key) = $mode.key_down(key); -def key_up(key) -end +def key_up(key) = $mode.key_up(key); def quit() = CandyGear.quit(); def tick() - $sprite.draw($view1, $sprite_position); - $japanese_text_sprite.draw($view1, $japanese_text_position); - $english_text_sprite.draw($view1, $english_text_position); - $instances_rotation.rotate(0.0, BOX_ROTATION_SPEED); - $rectangle.draw_rectangle($view1, $color); - $instances.each do |i| - $model.draw(i, $instances_rotation); + if $quit_stage then + case $next_stage + when :title + $mode = Mode::Title.new(); + else + $mode = Mode::Demo.new(); + end + $quit_stage = false; end + + $mode.tick(); end -- cgit v1.2.3