From 4233a560dd7589e0b7bd2f0f7b93726a15555e98 Mon Sep 17 00:00:00 2001 From: Gordon Pedersen Date: Thu, 20 Jul 2023 14:37:03 +1000 Subject: [PATCH] new, bigger menu image and replaced black bars with dirt --- .gitattributes | 1 + 🕹️cube-tube/app/scenes/cube_tube.rb | 8 ++++++++ 🕹️cube-tube/app/scenes/intro.rb | 9 +++++++++ 🕹️cube-tube/app/scenes/menu.rb | 2 +- 🕹️cube-tube/app/sprites_list.rb | 2 ++ 🕹️cube-tube/sprites/dirt.png | Bin 0 -> 18532 bytes 🕹️cube-tube/sprites/menu_l.png | 3 +++ 7 files changed, 24 insertions(+), 1 deletion(-) create mode 100644 .gitattributes create mode 100644 🕹️cube-tube/sprites/dirt.png create mode 100644 🕹️cube-tube/sprites/menu_l.png diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..5c173a9 --- /dev/null +++ b/.gitattributes @@ -0,0 +1 @@ +🕹️cube-tube/sprites/menu_l.png filter=lfs diff=lfs merge=lfs -text diff --git a/🕹️cube-tube/app/scenes/cube_tube.rb b/🕹️cube-tube/app/scenes/cube_tube.rb index da0848b..20b3871 100644 --- a/🕹️cube-tube/app/scenes/cube_tube.rb +++ b/🕹️cube-tube/app/scenes/cube_tube.rb @@ -123,6 +123,14 @@ class CubeTubeGame < GameplayScene end @bg_x %= @bg_w if @bg_x >= @bg_w + dirt = Sprite.for(:dirt) + 10.times do |i| + dirt.render(@args, { x: @bg_x + (i * (dirt.w)), y: 0 - dirt.h + 1 }) + dirt.render(@args, { x: @bg_x - (i * (dirt.w)), y: 0 - dirt.h + 1 }) + dirt.render(@args, { x: @bg_x + (i * (dirt.w)), y: @args.grid.h }) + dirt.render(@args, { x: @bg_x - (i * (dirt.w)), y: @args.grid.h }) + end + Sprite.for(:tunnel_loop).render(@args, { x: @bg_x + @bg_w, y: 0, w: @bg_w, h: 720 }) Sprite.for(:tunnel_loop).render(@args, { x: @bg_x, y: 0, w: @bg_w, h: 720 }) Sprite.for(:tunnel_loop).render(@args, { x: @bg_x - @bg_w, y: 0, w: @bg_w, h: 720 }) diff --git a/🕹️cube-tube/app/scenes/intro.rb b/🕹️cube-tube/app/scenes/intro.rb index 54089f8..1f0c89a 100644 --- a/🕹️cube-tube/app/scenes/intro.rb +++ b/🕹️cube-tube/app/scenes/intro.rb @@ -9,6 +9,7 @@ class Intro < GameplayScene @train_spline = [ [1.0, 0.25, 0, 0] ] + @full_station_w = Sprite.for(:station_loop).w + Sprite.for(:station_end).w @station_start_w = Sprite.for(:station_start).w @tunnel_w = Sprite.for(:tunnel_loop).w @full_station_start_w = @station_start_w + @tunnel_w @@ -64,6 +65,14 @@ class Intro < GameplayScene end end + dirt = Sprite.for(:dirt) + dx = 0 - @full_station_start_w - @tunnel_w + while dx < @full_station_w + dirt.render(args, { x: @station_pos + dx, y: 0 - dirt.h + 1 }) + dirt.render(args, { x: @station_pos + dx, y: args.grid.h }) + dx += dirt.w + end + Sprite.for(:station_loop).render(args, { x: @station_pos }) Sprite.for(:station_start).render(args, { x: @station_pos - @station_start_w }) Sprite.for(:tunnel_loop).render(args, { x: @station_pos - @full_station_start_w }) diff --git a/🕹️cube-tube/app/scenes/menu.rb b/🕹️cube-tube/app/scenes/menu.rb index 1622b0c..7c4a76e 100644 --- a/🕹️cube-tube/app/scenes/menu.rb +++ b/🕹️cube-tube/app/scenes/menu.rb @@ -88,7 +88,7 @@ class MenuScene < SceneInstance super @first_render = args.state.tick_count if @first_render.nil? - Sprite.for(:menu).render(args) + Sprite.for(:menu_l).render(args) args.outputs.labels << label( @title.to_s.upcase, diff --git a/🕹️cube-tube/app/sprites_list.rb b/🕹️cube-tube/app/sprites_list.rb index 1bdd44d..716c592 100644 --- a/🕹️cube-tube/app/sprites_list.rb +++ b/🕹️cube-tube/app/sprites_list.rb @@ -25,8 +25,10 @@ module Sprite screen_s3: SpriteInstance.new({ w: 250, h: 210, path: 'sprites/screen-s3.png' }), screen_s4: SpriteInstance.new({ w: 250, h: 210, path: 'sprites/screen-s4.png' }), menu: SpriteInstance.new({ w: 1280, h: 720, path: 'sprites/menu.png' }), + menu_l: SpriteInstance.new({ w: 2760, h: 1550, path: 'sprites/menu_l.png', x: -740, y: -415 }), tunnel_loop: SpriteInstance.new({ w: 1358, h: 720, path: 'sprites/tunnel-loop.png' }), tracks: SpriteInstance.new({ w: 1358, h: 55, path: 'sprites/tracks.png' }), + dirt: SpriteInstance.new({ w: 194, h: 150, path: 'sprites/dirt.png' }), station_loop: SpriteInstance.new({ w: 1811, h: 720, path: 'sprites/station-loop.png' }), station_start: SpriteInstance.new({ w: 618, h: 720, path: 'sprites/station-start.png' }), station_end: SpriteInstance.new({ w: 518, h: 720, path: 'sprites/station-end.png' }) diff --git a/🕹️cube-tube/sprites/dirt.png b/🕹️cube-tube/sprites/dirt.png new file mode 100644 index 0000000000000000000000000000000000000000..571d6347178476bc988c7335333ca81c2bccc317 GIT binary patch literal 18532 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