summaryrefslogtreecommitdiffhomepage
path: root/samples/07_advanced_rendering/09_z_targeting_camera
diff options
context:
space:
mode:
Diffstat (limited to 'samples/07_advanced_rendering/09_z_targeting_camera')
-rw-r--r--samples/07_advanced_rendering/09_z_targeting_camera/app/main.rb106
-rw-r--r--samples/07_advanced_rendering/09_z_targeting_camera/metadata/game_metadata.txt6
-rw-r--r--samples/07_advanced_rendering/09_z_targeting_camera/metadata/icon.pngbin0 -> 14417 bytes
-rw-r--r--samples/07_advanced_rendering/09_z_targeting_camera/replay.txt185
-rw-r--r--samples/07_advanced_rendering/09_z_targeting_camera/sprites/arena.pngbin0 -> 1072678 bytes
-rw-r--r--samples/07_advanced_rendering/09_z_targeting_camera/sprites/player.pngbin0 -> 9510 bytes
-rw-r--r--samples/07_advanced_rendering/09_z_targeting_camera/sprites/square/black.pngbin0 -> 250 bytes
7 files changed, 297 insertions, 0 deletions
diff --git a/samples/07_advanced_rendering/09_z_targeting_camera/app/main.rb b/samples/07_advanced_rendering/09_z_targeting_camera/app/main.rb
new file mode 100644
index 0000000..ecdbfd3
--- /dev/null
+++ b/samples/07_advanced_rendering/09_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/09_z_targeting_camera/metadata/game_metadata.txt b/samples/07_advanced_rendering/09_z_targeting_camera/metadata/game_metadata.txt
new file mode 100644
index 0000000..3ad3a1a
--- /dev/null
+++ b/samples/07_advanced_rendering/09_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/09_z_targeting_camera/metadata/icon.png b/samples/07_advanced_rendering/09_z_targeting_camera/metadata/icon.png
new file mode 100644
index 0000000..57254fe
--- /dev/null
+++ b/samples/07_advanced_rendering/09_z_targeting_camera/metadata/icon.png
Binary files differ
diff --git a/samples/07_advanced_rendering/09_z_targeting_camera/replay.txt b/samples/07_advanced_rendering/09_z_targeting_camera/replay.txt
new file mode 100644
index 0000000..db9130a
--- /dev/null
+++ b/samples/07_advanced_rendering/09_z_targeting_camera/replay.txt
@@ -0,0 +1,185 @@
+replay_version 2.0
+stopped_at 741
+seed 100
+recorded_at Sat Jul 17 09:24:36 2021
+[:mouse_button_up, 1, 0, 1, 1, 4]
+[:key_down_raw, 1073741906, 0, 2, 2, 104]
+[:key_down_raw, 1073741906, 0, 2, 3, 118]
+[:key_down_raw, 1073741906, 0, 2, 4, 120]
+[:key_down_raw, 1073741906, 0, 2, 5, 122]
+[:key_down_raw, 1073741906, 0, 2, 6, 124]
+[:key_down_raw, 1073741906, 0, 2, 7, 126]
+[:key_down_raw, 1073741906, 0, 2, 8, 128]
+[:key_down_raw, 1073741906, 0, 2, 9, 130]
+[:key_down_raw, 1073741906, 0, 2, 10, 132]
+[:key_down_raw, 1073741906, 0, 2, 11, 134]
+[:key_down_raw, 1073741906, 0, 2, 12, 136]
+[:key_down_raw, 1073741906, 0, 2, 13, 138]
+[:key_down_raw, 1073741906, 0, 2, 14, 140]
+[:key_down_raw, 1073741906, 0, 2, 15, 142]
+[:key_down_raw, 1073741906, 0, 2, 16, 144]
+[:key_down_raw, 1073741906, 0, 2, 17, 146]
+[:key_down_raw, 1073741906, 0, 2, 18, 148]
+[:key_down_raw, 1073741906, 0, 2, 19, 150]
+[:key_down_raw, 1073741906, 0, 2, 20, 152]
+[:key_down_raw, 1073741906, 0, 2, 21, 154]
+[:key_up_raw, 1073741906, 0, 2, 22, 156]
+[:key_down_raw, 1073741904, 0, 2, 23, 165]
+[:key_down_raw, 1073741904, 0, 2, 24, 180]
+[:key_down_raw, 1073741904, 0, 2, 25, 182]
+[:key_down_raw, 1073741904, 0, 2, 26, 184]
+[:key_down_raw, 1073741904, 0, 2, 27, 186]
+[:key_down_raw, 1073741904, 0, 2, 28, 188]
+[:key_down_raw, 1073741904, 0, 2, 29, 190]
+[:key_down_raw, 1073741904, 0, 2, 30, 192]
+[:key_down_raw, 1073741904, 0, 2, 31, 194]
+[:key_down_raw, 1073741904, 0, 2, 32, 196]
+[:key_down_raw, 1073741904, 0, 2, 33, 198]
+[:key_down_raw, 1073741904, 0, 2, 34, 200]
+[:key_down_raw, 1073741904, 0, 2, 35, 202]
+[:key_down_raw, 1073741904, 0, 2, 36, 204]
+[:key_down_raw, 1073741904, 0, 2, 37, 206]
+[:key_down_raw, 1073741904, 0, 2, 38, 208]
+[:key_down_raw, 1073741904, 0, 2, 39, 210]
+[:key_down_raw, 1073741904, 0, 2, 40, 212]
+[:key_down_raw, 1073741904, 0, 2, 41, 214]
+[:key_down_raw, 1073741904, 0, 2, 42, 216]
+[:key_down_raw, 1073741904, 0, 2, 43, 218]
+[:key_down_raw, 1073741904, 0, 2, 44, 220]
+[:key_down_raw, 1073741904, 0, 2, 45, 222]
+[:key_down_raw, 1073741904, 0, 2, 46, 224]
+[:key_down_raw, 1073741904, 0, 2, 47, 226]
+[:key_down_raw, 1073741904, 0, 2, 48, 228]
+[:key_down_raw, 1073741904, 0, 2, 49, 230]
+[:key_down_raw, 1073741904, 0, 2, 50, 232]
+[:key_down_raw, 1073741904, 0, 2, 51, 234]
+[:key_down_raw, 1073741904, 0, 2, 52, 236]
+[:key_down_raw, 1073741904, 0, 2, 53, 238]
+[:key_down_raw, 1073741904, 0, 2, 54, 240]
+[:key_down_raw, 1073741904, 0, 2, 55, 242]
+[:key_down_raw, 1073741904, 0, 2, 56, 244]
+[:key_down_raw, 1073741904, 0, 2, 57, 246]
+[:key_down_raw, 1073741904, 0, 2, 58, 248]
+[:key_down_raw, 1073741904, 0, 2, 59, 250]
+[:key_down_raw, 1073741904, 0, 2, 60, 252]
+[:key_down_raw, 1073741904, 0, 2, 61, 254]
+[:key_down_raw, 1073741906, 0, 2, 62, 256]
+[:key_down_raw, 1073741906, 0, 2, 63, 271]
+[:key_down_raw, 1073741906, 0, 2, 64, 273]
+[:key_down_raw, 1073741906, 0, 2, 65, 275]
+[:key_down_raw, 1073741906, 0, 2, 66, 277]
+[:key_down_raw, 1073741906, 0, 2, 67, 279]
+[:key_down_raw, 1073741906, 0, 2, 68, 281]
+[:key_down_raw, 1073741906, 0, 2, 69, 283]
+[:key_down_raw, 1073741906, 0, 2, 70, 285]
+[:key_down_raw, 1073741906, 0, 2, 71, 287]
+[:key_down_raw, 1073741906, 0, 2, 72, 289]
+[:key_down_raw, 1073741906, 0, 2, 73, 291]
+[:key_down_raw, 1073741906, 0, 2, 74, 293]
+[:key_down_raw, 1073741906, 0, 2, 75, 295]
+[:key_down_raw, 1073741906, 0, 2, 76, 297]
+[:key_down_raw, 1073741906, 0, 2, 77, 299]
+[:key_down_raw, 1073741906, 0, 2, 78, 301]
+[:key_down_raw, 1073741906, 0, 2, 79, 303]
+[:key_down_raw, 1073741906, 0, 2, 80, 305]
+[:key_down_raw, 1073741906, 0, 2, 81, 307]
+[:key_down_raw, 1073741906, 0, 2, 82, 309]
+[:key_down_raw, 1073741906, 0, 2, 83, 311]
+[:key_down_raw, 1073741906, 0, 2, 84, 313]
+[:key_up_raw, 1073741906, 0, 2, 85, 314]
+[:key_up_raw, 1073741904, 0, 2, 86, 316]
+[:key_down_raw, 1073741903, 0, 2, 87, 338]
+[:key_down_raw, 1073741903, 0, 2, 88, 353]
+[:key_down_raw, 1073741903, 0, 2, 89, 355]
+[:key_down_raw, 1073741903, 0, 2, 90, 357]
+[:key_down_raw, 1073741903, 0, 2, 91, 359]
+[:key_down_raw, 1073741903, 0, 2, 92, 361]
+[:key_down_raw, 1073741903, 0, 2, 93, 363]
+[:key_down_raw, 1073741903, 0, 2, 94, 365]
+[:key_down_raw, 1073741903, 0, 2, 95, 367]
+[:key_down_raw, 1073741903, 0, 2, 96, 369]
+[:key_down_raw, 1073741903, 0, 2, 97, 371]
+[:key_down_raw, 1073741903, 0, 2, 98, 373]
+[:key_down_raw, 1073741903, 0, 2, 99, 375]
+[:key_down_raw, 1073741903, 0, 2, 100, 377]
+[:key_down_raw, 1073741903, 0, 2, 101, 379]
+[:key_down_raw, 1073741903, 0, 2, 102, 381]
+[:key_down_raw, 1073741905, 0, 2, 103, 382]
+[:key_down_raw, 1073741905, 0, 2, 104, 397]
+[:key_down_raw, 1073741905, 0, 2, 105, 399]
+[:key_down_raw, 1073741905, 0, 2, 106, 401]
+[:key_down_raw, 1073741905, 0, 2, 107, 403]
+[:key_down_raw, 1073741905, 0, 2, 108, 405]
+[:key_down_raw, 1073741905, 0, 2, 109, 407]
+[:key_down_raw, 1073741905, 0, 2, 110, 409]
+[:key_down_raw, 1073741905, 0, 2, 111, 411]
+[:key_down_raw, 1073741905, 0, 2, 112, 413]
+[:key_down_raw, 1073741905, 0, 2, 113, 415]
+[:key_down_raw, 1073741905, 0, 2, 114, 417]
+[:key_down_raw, 1073741905, 0, 2, 115, 419]
+[:key_down_raw, 1073741905, 0, 2, 116, 421]
+[:key_down_raw, 1073741905, 0, 2, 117, 423]
+[:key_down_raw, 1073741905, 0, 2, 118, 425]
+[:key_down_raw, 1073741905, 0, 2, 119, 427]
+[:key_down_raw, 1073741905, 0, 2, 120, 429]
+[:key_down_raw, 1073741905, 0, 2, 121, 431]
+[:key_down_raw, 1073741905, 0, 2, 122, 433]
+[:key_up_raw, 1073741905, 0, 2, 123, 435]
+[:key_down_raw, 1073741905, 0, 2, 124, 447]
+[:key_up_raw, 1073741905, 0, 2, 125, 460]
+[:key_down_raw, 1073741905, 0, 2, 126, 485]
+[:key_down_raw, 1073741905, 0, 2, 127, 500]
+[:key_down_raw, 1073741905, 0, 2, 128, 502]
+[:key_down_raw, 1073741905, 0, 2, 129, 504]
+[:key_down_raw, 1073741905, 0, 2, 130, 506]
+[:key_up_raw, 1073741905, 0, 2, 131, 507]
+[:key_up_raw, 1073741903, 0, 2, 132, 548]
+[:key_down_raw, 1073741905, 0, 2, 133, 561]
+[:key_down_raw, 1073741905, 0, 2, 134, 576]
+[:key_down_raw, 1073741905, 0, 2, 135, 578]
+[:key_down_raw, 1073741905, 0, 2, 136, 580]
+[:key_down_raw, 1073741905, 0, 2, 137, 582]
+[:key_up_raw, 1073741905, 0, 2, 138, 584]
+[:key_down_raw, 96, 0, 2, 139, 648]
+[:key_up_raw, 96, 0, 2, 140, 653]
+[:mouse_move, 815, 98, 2, 141, 654]
+[:mouse_move, 816, 101, 2, 142, 655]
+[:mouse_move, 816, 104, 2, 143, 656]
+[:mouse_move, 816, 112, 2, 144, 657]
+[:mouse_move, 816, 117, 2, 145, 658]
+[:mouse_move, 810, 130, 2, 146, 659]
+[:mouse_move, 803, 137, 2, 147, 660]
+[:mouse_move, 782, 157, 2, 148, 661]
+[:mouse_move, 767, 168, 2, 149, 662]
+[:mouse_move, 734, 188, 2, 150, 663]
+[:mouse_move, 716, 197, 2, 151, 664]
+[:mouse_move, 682, 215, 2, 152, 665]
+[:mouse_move, 665, 223, 2, 153, 666]
+[:mouse_move, 645, 234, 2, 154, 667]
+[:mouse_move, 643, 235, 2, 155, 668]
+[:mouse_move, 643, 236, 2, 156, 669]
+[:mouse_move, 647, 237, 2, 157, 672]
+[:mouse_move, 670, 244, 2, 158, 673]
+[:mouse_move, 687, 245, 2, 159, 674]
+[:mouse_move, 720, 242, 2, 160, 675]
+[:mouse_move, 737, 237, 2, 161, 676]
+[:mouse_move, 764, 224, 2, 162, 677]
+[:mouse_move, 777, 216, 2, 163, 678]
+[:mouse_move, 796, 197, 2, 164, 679]
+[:mouse_move, 804, 187, 2, 165, 680]
+[:mouse_move, 815, 164, 2, 166, 681]
+[:mouse_move, 820, 152, 2, 167, 682]
+[:mouse_move, 825, 142, 2, 168, 683]
+[:mouse_move, 831, 128, 2, 169, 684]
+[:mouse_move, 832, 126, 2, 170, 685]
+[:mouse_move, 832, 125, 2, 171, 686]
+[:mouse_move, 833, 123, 2, 172, 688]
+[:mouse_move, 836, 120, 2, 173, 690]
+[:mouse_move, 837, 118, 2, 174, 691]
+[:mouse_move, 842, 113, 2, 175, 692]
+[:mouse_move, 844, 112, 2, 176, 693]
+[:mouse_move, 844, 111, 2, 177, 694]
+[:mouse_move, 844, 110, 2, 178, 696]
+[:mouse_move, 845, 110, 2, 179, 697]
+[:mouse_move, 845, 109, 2, 180, 699]
+[:key_down_raw, 13, 0, 2, 181, 741]
diff --git a/samples/07_advanced_rendering/09_z_targeting_camera/sprites/arena.png b/samples/07_advanced_rendering/09_z_targeting_camera/sprites/arena.png
new file mode 100644
index 0000000..5c92e91
--- /dev/null
+++ b/samples/07_advanced_rendering/09_z_targeting_camera/sprites/arena.png
Binary files differ
diff --git a/samples/07_advanced_rendering/09_z_targeting_camera/sprites/player.png b/samples/07_advanced_rendering/09_z_targeting_camera/sprites/player.png
new file mode 100644
index 0000000..332a80b
--- /dev/null
+++ b/samples/07_advanced_rendering/09_z_targeting_camera/sprites/player.png
Binary files differ
diff --git a/samples/07_advanced_rendering/09_z_targeting_camera/sprites/square/black.png b/samples/07_advanced_rendering/09_z_targeting_camera/sprites/square/black.png
new file mode 100644
index 0000000..cea7bd7
--- /dev/null
+++ b/samples/07_advanced_rendering/09_z_targeting_camera/sprites/square/black.png
Binary files differ