diff options
| author | Amir Rajan <[email protected]> | 2021-04-10 03:51:14 -0500 |
|---|---|---|
| committer | Amir Rajan <[email protected]> | 2021-04-10 03:51:14 -0500 |
| commit | 00e85147c9a1dd35a0857f361e5833a1c25f4a0a (patch) | |
| tree | 52534d292ca3fa5733584eb926116228cb3551af /samples/07_advanced_rendering/08_z_targeting_camera | |
| parent | a2d92c2bf09bcdc494f1391af69b707cca281a16 (diff) | |
| download | dragonruby-game-toolkit-contrib-00e85147c9a1dd35a0857f361e5833a1c25f4a0a.tar.gz dragonruby-game-toolkit-contrib-00e85147c9a1dd35a0857f361e5833a1c25f4a0a.zip | |
Synced from DRGTK 2.10.
Diffstat (limited to 'samples/07_advanced_rendering/08_z_targeting_camera')
| -rw-r--r-- | samples/07_advanced_rendering/08_z_targeting_camera/app/main.rb | 106 | ||||
| -rw-r--r-- | samples/07_advanced_rendering/08_z_targeting_camera/metadata/game_metadata.txt | 6 | ||||
| -rw-r--r-- | samples/07_advanced_rendering/08_z_targeting_camera/metadata/icon.png | bin | 0 -> 14417 bytes | |||
| -rw-r--r-- | samples/07_advanced_rendering/08_z_targeting_camera/sprites/arena.png | bin | 0 -> 1072678 bytes | |||
| -rw-r--r-- | samples/07_advanced_rendering/08_z_targeting_camera/sprites/player.png | bin | 0 -> 9510 bytes | |||
| -rw-r--r-- | samples/07_advanced_rendering/08_z_targeting_camera/sprites/square/black.png | bin | 0 -> 250 bytes |
6 files changed, 112 insertions, 0 deletions
diff --git a/samples/07_advanced_rendering/08_z_targeting_camera/app/main.rb b/samples/07_advanced_rendering/08_z_targeting_camera/app/main.rb new file mode 100644 index 0000000..ecdbfd3 --- /dev/null +++ b/samples/07_advanced_rendering/08_z_targeting_camera/app/main.rb @@ -0,0 +1,106 @@ +class Game + attr_gtk + + def tick + defaults + render + input + calc + end + + def defaults + outputs.background_color = [219, 208, 191] + player.x ||= 634 + player.y ||= 153 + player.angle ||= 90 + player.distance ||= arena_radius + target.x ||= 634 + target.y ||= 359 + end + + def render + outputs[:scene].sprites << ([0, 0, 933, 700, 'sprites/arena.png'].center_inside_rect grid.rect) + outputs[:scene].sprites << target_sprite + outputs[:scene].sprites << player_sprite + outputs.sprites << scene + end + + def target_sprite + { + x: target.x, y: target.y, + w: 10, h: 10, + path: 'sprites/square/black.png' + }.anchor_rect 0.5, 0.5 + end + + def input + if inputs.up && player.distance > 30 + player.distance -= 2 + elsif inputs.down && player.distance < 200 + player.distance += 2 + end + + player.angle += inputs.left_right * -1 + end + + def calc + player.x = target.x + ((player.angle * 1).vector_x player.distance) + player.y = target.y + ((player.angle * -1).vector_y player.distance) + end + + def player_sprite + { + x: player.x, + y: player.y, + w: 50, + h: 100, + path: 'sprites/player.png', + angle: (player.angle * -1) + 90 + }.anchor_rect 0.5, 0 + end + + def center_map + { x: 634, y: 359 } + end + + def zoom_factor_single + 2 - ((args.geometry.distance player, center_map).fdiv arena_radius) + end + + def zoom_factor + zoom_factor_single ** 2 + end + + def arena_radius + 206 + end + + def scene + { + x: (640 - player.x) + (640 - (640 * zoom_factor)), + y: (360 - player.y - (75 * zoom_factor)) + (320 - (320 * zoom_factor)), + w: 1280 * zoom_factor, + h: 720 * zoom_factor, + path: :scene, + angle: player.angle - 90, + angle_anchor_x: (player.x.fdiv 1280), + angle_anchor_y: (player.y.fdiv 720) + } + end + + def player + state.player + end + + def target + state.target + end +end + +def tick args + $game ||= Game.new + $game.args = args + $game.tick +end + +$gtk.reset diff --git a/samples/07_advanced_rendering/08_z_targeting_camera/metadata/game_metadata.txt b/samples/07_advanced_rendering/08_z_targeting_camera/metadata/game_metadata.txt new file mode 100644 index 0000000..3ad3a1a --- /dev/null +++ b/samples/07_advanced_rendering/08_z_targeting_camera/metadata/game_metadata.txt @@ -0,0 +1,6 @@ +devid=dragonruby +devtitle=DragonRuby LLC +gameid=httpserverexample +gametitle=DragonRuby GTK HTTP Server Example +version=0.1 +icon=metadata/icon.png diff --git a/samples/07_advanced_rendering/08_z_targeting_camera/metadata/icon.png b/samples/07_advanced_rendering/08_z_targeting_camera/metadata/icon.png Binary files differnew file mode 100644 index 0000000..57254fe --- /dev/null +++ b/samples/07_advanced_rendering/08_z_targeting_camera/metadata/icon.png diff --git a/samples/07_advanced_rendering/08_z_targeting_camera/sprites/arena.png b/samples/07_advanced_rendering/08_z_targeting_camera/sprites/arena.png Binary files differnew file mode 100644 index 0000000..5c92e91 --- /dev/null +++ b/samples/07_advanced_rendering/08_z_targeting_camera/sprites/arena.png diff --git a/samples/07_advanced_rendering/08_z_targeting_camera/sprites/player.png b/samples/07_advanced_rendering/08_z_targeting_camera/sprites/player.png Binary files differnew file mode 100644 index 0000000..332a80b --- /dev/null +++ b/samples/07_advanced_rendering/08_z_targeting_camera/sprites/player.png diff --git a/samples/07_advanced_rendering/08_z_targeting_camera/sprites/square/black.png b/samples/07_advanced_rendering/08_z_targeting_camera/sprites/square/black.png Binary files differnew file mode 100644 index 0000000..cea7bd7 --- /dev/null +++ b/samples/07_advanced_rendering/08_z_targeting_camera/sprites/square/black.png |
