diff options
| author | Amir Rajan <[email protected]> | 2020-09-22 06:27:46 -0500 |
|---|---|---|
| committer | Amir Rajan <[email protected]> | 2020-09-22 06:27:46 -0500 |
| commit | 20d5b4057b44ffcf92478b2a8e9476ace2fdc0f5 (patch) | |
| tree | b4742e4f9acfd5400a04f314164812606a71df9f /samples/99_genre_rpg_tactical/hexagonal_grid | |
| parent | 5b2311900072cfff9582bb0296140cfb354cb911 (diff) | |
| download | dragonruby-game-toolkit-contrib-20d5b4057b44ffcf92478b2a8e9476ace2fdc0f5.tar.gz dragonruby-game-toolkit-contrib-20d5b4057b44ffcf92478b2a8e9476ace2fdc0f5.zip | |
synced with 1.22
Diffstat (limited to 'samples/99_genre_rpg_tactical/hexagonal_grid')
| -rw-r--r-- | samples/99_genre_rpg_tactical/hexagonal_grid/app/main.rb | 68 | ||||
| -rw-r--r-- | samples/99_genre_rpg_tactical/hexagonal_grid/license-for-sample.txt | 9 | ||||
| -rw-r--r-- | samples/99_genre_rpg_tactical/hexagonal_grid/replay.txt | 276 | ||||
| -rw-r--r-- | samples/99_genre_rpg_tactical/hexagonal_grid/sprites/hexagon-black.png | bin | 0 -> 2602 bytes | |||
| -rw-r--r-- | samples/99_genre_rpg_tactical/hexagonal_grid/sprites/hexagon-gray.png | bin | 0 -> 5184 bytes |
5 files changed, 353 insertions, 0 deletions
diff --git a/samples/99_genre_rpg_tactical/hexagonal_grid/app/main.rb b/samples/99_genre_rpg_tactical/hexagonal_grid/app/main.rb new file mode 100644 index 0000000..b522ace --- /dev/null +++ b/samples/99_genre_rpg_tactical/hexagonal_grid/app/main.rb @@ -0,0 +1,68 @@ +class HexagonTileGame + attr_gtk + + def defaults + state.tile_scale = 1.3 + state.tile_size = 80 + state.tile_w = Math.sqrt(3) * state.tile_size.half + state.tile_h = state.tile_size * 3/4 + state.tiles_x_count = 1280.idiv(state.tile_w) - 1 + state.tiles_y_count = 720.idiv(state.tile_h) - 1 + state.world_width_px = state.tiles_x_count * state.tile_w + state.world_height_px = state.tiles_y_count * state.tile_h + state.world_x_offset = (1280 - state.world_width_px).half + state.world_y_offset = (720 - state.world_height_px).half + state.tiles ||= state.tiles_x_count.map_with_ys(state.tiles_y_count) do |ordinal_x, ordinal_y| + { + ordinal_x: ordinal_x, + ordinal_y: ordinal_y, + offset_x: (ordinal_y.even?) ? + (state.world_x_offset + state.tile_w.half.half) : + (state.world_x_offset - state.tile_w.half.half), + offset_y: state.world_y_offset, + w: state.tile_w, + h: state.tile_h, + type: :blank, + path: "sprites/hexagon-gray.png", + a: 20 + }.associate do |h| + h.merge(x: h[:offset_x] + h[:ordinal_x] * h[:w], + y: h[:offset_y] + h[:ordinal_y] * h[:h]).scale_rect(state.tile_scale) + end.associate do |h| + h.merge(center: { + x: h[:x] + h[:w].half, + y: h[:y] + h[:h].half + }, radius: [h[:w].half, h[:h].half].max) + end + end + end + + def input + if inputs.click + tile = state.tiles.find { |t| inputs.click.point_inside_circle? t[:center], t[:radius] } + if tile + tile[:a] = 255 + tile[:path] = "sprites/hexagon-black.png" + end + end + end + + def tick + defaults + input + render + end + + def render + outputs.sprites << state.tiles + end +end + +$game = HexagonTileGame.new + +def tick args + $game.args = args + $game.tick +end + +$gtk.reset diff --git a/samples/99_genre_rpg_tactical/hexagonal_grid/license-for-sample.txt b/samples/99_genre_rpg_tactical/hexagonal_grid/license-for-sample.txt new file mode 100644 index 0000000..100dcec --- /dev/null +++ b/samples/99_genre_rpg_tactical/hexagonal_grid/license-for-sample.txt @@ -0,0 +1,9 @@ +Copyright 2019 DragonRuby LLC + +MIT License + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/samples/99_genre_rpg_tactical/hexagonal_grid/replay.txt b/samples/99_genre_rpg_tactical/hexagonal_grid/replay.txt new file mode 100644 index 0000000..9e646bc --- /dev/null +++ b/samples/99_genre_rpg_tactical/hexagonal_grid/replay.txt @@ -0,0 +1,276 @@ +replay_version 2.0 +stopped_at 488 +seed 100 +recorded_at Sat Feb 01 20:02:13 2020 +[:mouse_move, 643, 259, 2, 1, 46] +[:mouse_move, 618, 246, 2, 2, 47] +[:mouse_move, 544, 211, 2, 3, 48] +[:mouse_move, 477, 179, 2, 4, 49] +[:mouse_move, 435, 158, 2, 5, 50] +[:mouse_move, 350, 117, 2, 6, 51] +[:mouse_move, 304, 96, 2, 7, 52] +[:mouse_move, 267, 84, 2, 8, 53] +[:mouse_move, 242, 76, 2, 9, 54] +[:mouse_move, 188, 72, 2, 10, 55] +[:mouse_move, 164, 75, 2, 11, 56] +[:mouse_move, 151, 81, 2, 12, 57] +[:mouse_move, 135, 89, 2, 13, 58] +[:mouse_move, 117, 102, 2, 14, 59] +[:mouse_move, 114, 105, 2, 15, 59] +[:mouse_move, 99, 116, 2, 16, 60] +[:mouse_move, 90, 121, 2, 17, 61] +[:mouse_move, 81, 130, 2, 18, 62] +[:mouse_move, 75, 136, 2, 19, 63] +[:mouse_move, 72, 149, 2, 20, 64] +[:mouse_move, 66, 183, 2, 21, 65] +[:mouse_move, 64, 218, 2, 22, 66] +[:mouse_move, 64, 273, 2, 23, 67] +[:mouse_move, 70, 305, 2, 24, 68] +[:mouse_move, 85, 347, 2, 25, 69] +[:mouse_move, 133, 418, 2, 26, 70] +[:mouse_move, 174, 441, 2, 27, 71] +[:mouse_move, 225, 453, 2, 28, 72] +[:mouse_move, 277, 453, 2, 29, 73] +[:mouse_move, 328, 448, 2, 30, 74] +[:mouse_move, 421, 434, 2, 31, 75] +[:mouse_move, 492, 433, 2, 32, 76] +[:mouse_move, 571, 433, 2, 33, 77] +[:mouse_move, 656, 432, 2, 34, 78] +[:mouse_move, 824, 403, 2, 35, 79] +[:mouse_move, 903, 386, 2, 36, 80] +[:mouse_move, 996, 373, 2, 37, 81] +[:mouse_move, 1053, 371, 2, 38, 82] +[:mouse_move, 1092, 371, 2, 39, 83] +[:mouse_move, 1098, 372, 2, 40, 84] +[:mouse_move, 1117, 368, 2, 41, 92] +[:mouse_move, 1148, 368, 2, 42, 93] +[:mouse_move, 1212, 381, 2, 43, 94] +[:mouse_move, 1246, 398, 2, 44, 95] +[:mouse_move, 1282, 423, 2, 45, 96] +[:mouse_move, 1303, 449, 2, 46, 97] +[:mouse_move, 1309, 465, 2, 47, 98] +[:mouse_move, 1314, 481, 2, 48, 99] +[:mouse_move, 1314, 497, 2, 49, 100] +[:mouse_move, 1301, 504, 2, 50, 101] +[:mouse_move, 1288, 507, 2, 51, 102] +[:mouse_move, 1259, 515, 2, 52, 103] +[:mouse_move, 1238, 523, 2, 53, 104] +[:mouse_move, 1225, 529, 2, 54, 105] +[:mouse_move, 1216, 531, 2, 55, 106] +[:mouse_move, 1207, 533, 2, 56, 107] +[:mouse_move, 1205, 532, 2, 57, 108] +[:mouse_move, 1207, 526, 2, 58, 109] +[:mouse_move, 1213, 518, 2, 59, 110] +[:mouse_move, 1222, 507, 2, 60, 111] +[:mouse_move, 1233, 493, 2, 61, 112] +[:mouse_move, 1237, 482, 2, 62, 113] +[:mouse_move, 1239, 468, 2, 63, 114] +[:mouse_move, 1239, 444, 2, 64, 115] +[:mouse_move, 1237, 413, 2, 65, 116] +[:mouse_move, 1235, 403, 2, 66, 117] +[:mouse_move, 1234, 395, 2, 67, 118] +[:mouse_move, 1234, 392, 2, 68, 119] +[:mouse_move, 1234, 390, 2, 69, 120] +[:mouse_move, 1234, 389, 2, 70, 122] +[:mouse_move, 1234, 386, 2, 71, 123] +[:mouse_move, 1233, 386, 2, 72, 125] +[:mouse_move, 1190, 395, 2, 73, 126] +[:mouse_move, 1054, 412, 2, 74, 127] +[:mouse_move, 862, 421, 2, 75, 128] +[:mouse_move, 720, 421, 2, 76, 129] +[:mouse_move, 616, 419, 2, 77, 130] +[:mouse_move, 580, 416, 2, 78, 131] +[:mouse_move, 567, 410, 2, 79, 140] +[:mouse_move, 518, 394, 2, 80, 141] +[:mouse_move, 422, 388, 2, 81, 142] +[:mouse_move, 292, 398, 2, 82, 143] +[:mouse_move, 217, 420, 2, 83, 144] +[:mouse_move, 139, 449, 2, 84, 145] +[:mouse_move, 116, 460, 2, 85, 146] +[:mouse_move, 99, 472, 2, 86, 147] +[:mouse_move, 91, 485, 2, 87, 148] +[:mouse_move, 91, 494, 2, 88, 149] +[:mouse_move, 94, 514, 2, 89, 150] +[:mouse_move, 99, 530, 2, 90, 151] +[:mouse_move, 101, 545, 2, 91, 152] +[:mouse_move, 102, 566, 2, 92, 153] +[:mouse_move, 98, 582, 2, 93, 154] +[:mouse_move, 89, 601, 2, 94, 155] +[:mouse_move, 87, 610, 2, 95, 156] +[:mouse_move, 84, 617, 2, 96, 157] +[:mouse_move, 83, 622, 2, 97, 158] +[:mouse_move, 83, 624, 2, 98, 159] +[:mouse_move, 83, 625, 2, 99, 160] +[:mouse_move, 82, 628, 2, 100, 165] +[:mouse_move, 81, 635, 2, 101, 166] +[:mouse_move, 78, 651, 2, 102, 167] +[:mouse_move, 76, 658, 2, 103, 168] +[:mouse_move, 75, 663, 2, 104, 169] +[:mouse_move, 74, 665, 2, 105, 170] +[:mouse_move, 73, 665, 2, 106, 171] +[:mouse_move, 73, 663, 2, 107, 173] +[:mouse_move, 73, 661, 2, 108, 174] +[:mouse_move, 73, 658, 2, 109, 175] +[:mouse_move, 74, 653, 2, 110, 176] +[:mouse_move, 74, 652, 2, 111, 177] +[:mouse_move, 75, 651, 2, 112, 178] +[:mouse_move, 75, 650, 2, 113, 180] +[:mouse_button_pressed, 1, 0, 1, 114, 184] +[:mouse_button_up, 1, 0, 1, 115, 187] +[:mouse_move, 77, 650, 2, 116, 194] +[:mouse_move, 86, 650, 2, 117, 195] +[:mouse_move, 117, 650, 2, 118, 196] +[:mouse_move, 136, 650, 2, 119, 197] +[:mouse_move, 156, 648, 2, 120, 198] +[:mouse_move, 164, 647, 2, 121, 199] +[:mouse_move, 167, 646, 2, 122, 200] +[:mouse_move, 168, 646, 2, 123, 201] +[:mouse_move, 167, 646, 2, 124, 202] +[:mouse_move, 165, 647, 2, 125, 203] +[:mouse_move, 164, 647, 2, 126, 205] +[:mouse_move, 163, 647, 2, 127, 206] +[:mouse_button_pressed, 1, 0, 1, 128, 210] +[:mouse_button_up, 1, 0, 1, 129, 214] +[:mouse_move, 170, 647, 2, 130, 224] +[:mouse_move, 179, 647, 2, 131, 225] +[:mouse_move, 200, 647, 2, 132, 226] +[:mouse_move, 215, 647, 2, 133, 227] +[:mouse_move, 222, 647, 2, 134, 228] +[:mouse_move, 227, 647, 2, 135, 229] +[:mouse_move, 228, 647, 2, 136, 230] +[:mouse_button_pressed, 1, 0, 1, 137, 232] +[:mouse_button_up, 1, 0, 1, 138, 237] +[:mouse_move, 236, 645, 2, 139, 250] +[:mouse_move, 246, 644, 2, 140, 251] +[:mouse_move, 260, 643, 2, 141, 252] +[:mouse_move, 274, 643, 2, 142, 253] +[:mouse_move, 286, 645, 2, 143, 254] +[:mouse_move, 291, 646, 2, 144, 255] +[:mouse_move, 293, 646, 2, 145, 256] +[:mouse_button_pressed, 1, 0, 1, 146, 257] +[:mouse_move, 294, 647, 2, 147, 257] +[:mouse_button_up, 1, 0, 1, 148, 262] +[:mouse_move, 293, 642, 2, 149, 279] +[:mouse_move, 285, 616, 2, 150, 280] +[:mouse_move, 233, 414, 2, 151, 281] +[:mouse_move, 177, 198, 2, 152, 282] +[:mouse_move, 158, 131, 2, 153, 283] +[:mouse_move, 148, 98, 2, 154, 284] +[:mouse_move, 135, 65, 2, 155, 285] +[:mouse_move, 130, 58, 2, 156, 286] +[:mouse_move, 126, 56, 2, 157, 287] +[:mouse_move, 122, 55, 2, 158, 288] +[:mouse_move, 120, 55, 2, 159, 289] +[:mouse_move, 117, 55, 2, 160, 290] +[:mouse_move, 113, 55, 2, 161, 291] +[:mouse_move, 109, 56, 2, 162, 292] +[:mouse_move, 105, 56, 2, 163, 293] +[:mouse_move, 101, 56, 2, 164, 294] +[:mouse_move, 92, 57, 2, 165, 295] +[:mouse_move, 89, 57, 2, 166, 296] +[:mouse_move, 86, 57, 2, 167, 297] +[:mouse_move, 85, 57, 2, 168, 298] +[:mouse_move, 84, 57, 2, 169, 299] +[:mouse_button_pressed, 1, 0, 1, 170, 299] +[:mouse_button_up, 1, 0, 1, 171, 302] +[:mouse_move, 85, 57, 2, 172, 305] +[:mouse_move, 90, 57, 2, 173, 306] +[:mouse_move, 98, 57, 2, 174, 307] +[:mouse_move, 117, 57, 2, 175, 308] +[:mouse_move, 124, 57, 2, 176, 309] +[:mouse_move, 131, 57, 2, 177, 310] +[:mouse_move, 133, 57, 2, 178, 311] +[:mouse_move, 134, 57, 2, 179, 312] +[:mouse_move, 135, 57, 2, 180, 314] +[:mouse_button_pressed, 1, 0, 1, 181, 314] +[:mouse_button_up, 1, 0, 1, 182, 318] +[:mouse_move, 137, 57, 2, 183, 320] +[:mouse_move, 146, 57, 2, 184, 321] +[:mouse_move, 155, 57, 2, 185, 322] +[:mouse_move, 169, 57, 2, 186, 323] +[:mouse_move, 184, 57, 2, 187, 324] +[:mouse_move, 190, 57, 2, 188, 324] +[:mouse_move, 200, 57, 2, 189, 325] +[:mouse_move, 206, 57, 2, 190, 326] +[:mouse_move, 211, 57, 2, 191, 327] +[:mouse_move, 216, 57, 2, 192, 328] +[:mouse_move, 217, 57, 2, 193, 330] +[:mouse_button_pressed, 1, 0, 1, 194, 332] +[:mouse_button_up, 1, 0, 1, 195, 335] +[:mouse_move, 220, 57, 2, 196, 337] +[:mouse_move, 243, 57, 2, 197, 338] +[:mouse_move, 267, 57, 2, 198, 339] +[:mouse_move, 283, 57, 2, 199, 340] +[:mouse_move, 292, 57, 2, 200, 341] +[:mouse_move, 299, 57, 2, 201, 342] +[:mouse_move, 298, 57, 2, 202, 346] +[:mouse_move, 297, 57, 2, 203, 348] +[:mouse_move, 296, 57, 2, 204, 350] +[:mouse_button_pressed, 1, 0, 1, 205, 352] +[:mouse_button_up, 1, 0, 1, 206, 355] +[:mouse_move, 298, 57, 2, 207, 364] +[:mouse_move, 405, 53, 2, 208, 365] +[:mouse_move, 681, 55, 2, 209, 366] +[:mouse_move, 983, 86, 2, 210, 367] +[:mouse_move, 1117, 92, 2, 211, 368] +[:mouse_move, 1249, 93, 2, 212, 369] +[:mouse_move, 1299, 89, 2, 213, 370] +[:mouse_move, 1321, 85, 2, 214, 371] +[:mouse_move, 1314, 72, 2, 215, 378] +[:mouse_move, 1277, 66, 2, 216, 379] +[:mouse_move, 1249, 61, 2, 217, 380] +[:mouse_move, 1223, 56, 2, 218, 381] +[:mouse_move, 1212, 54, 2, 219, 382] +[:mouse_move, 1203, 50, 2, 220, 383] +[:mouse_move, 1200, 49, 2, 221, 384] +[:mouse_move, 1195, 46, 2, 222, 385] +[:mouse_move, 1191, 44, 2, 223, 386] +[:mouse_move, 1186, 42, 2, 224, 387] +[:mouse_move, 1184, 41, 2, 225, 388] +[:mouse_move, 1181, 41, 2, 226, 389] +[:mouse_button_pressed, 1, 0, 1, 227, 390] +[:mouse_move, 1181, 40, 2, 228, 390] +[:mouse_button_up, 1, 0, 1, 229, 393] +[:mouse_move, 1157, 44, 2, 230, 400] +[:mouse_move, 1085, 71, 2, 231, 401] +[:mouse_move, 1011, 102, 2, 232, 402] +[:mouse_move, 928, 141, 2, 233, 403] +[:mouse_move, 763, 235, 2, 234, 404] +[:mouse_move, 702, 276, 2, 235, 405] +[:mouse_move, 644, 318, 2, 236, 406] +[:mouse_move, 620, 338, 2, 237, 407] +[:mouse_move, 599, 357, 2, 238, 408] +[:mouse_move, 592, 363, 2, 239, 409] +[:mouse_move, 589, 365, 2, 240, 410] +[:mouse_move, 588, 365, 2, 241, 411] +[:mouse_move, 588, 366, 2, 242, 412] +[:mouse_move, 588, 365, 2, 243, 415] +[:mouse_move, 590, 365, 2, 244, 417] +[:mouse_move, 592, 364, 2, 245, 418] +[:mouse_move, 592, 363, 2, 246, 420] +[:mouse_move, 593, 362, 2, 247, 421] +[:mouse_button_pressed, 1, 0, 1, 248, 422] +[:mouse_button_up, 1, 0, 1, 249, 427] +[:mouse_move, 587, 359, 2, 250, 454] +[:mouse_move, 554, 341, 2, 251, 455] +[:mouse_move, 325, 237, 2, 252, 456] +[:mouse_move, 196, 188, 2, 253, 457] +[:mouse_move, 141, 167, 2, 254, 458] +[:mouse_move, 94, 147, 2, 255, 459] +[:mouse_move, 56, 125, 2, 256, 460] +[:mouse_move, 46, 119, 2, 257, 461] +[:mouse_move, 39, 113, 2, 258, 462] +[:mouse_move, 37, 110, 2, 259, 463] +[:mouse_move, 35, 105, 2, 260, 464] +[:mouse_move, 33, 101, 2, 261, 465] +[:mouse_move, 28, 90, 2, 262, 466] +[:mouse_move, 26, 82, 2, 263, 467] +[:mouse_move, 20, 66, 2, 264, 468] +[:mouse_move, 9, 42, 2, 265, 469] +[:mouse_move, 3, 32, 2, 266, 470] +[:mouse_move, -4, 18, 2, 267, 471] +[:mouse_move, -8, 11, 2, 268, 472] +[:mouse_move, -11, 7, 2, 269, 473] +[:mouse_move, -13, 5, 2, 270, 474] +[:mouse_move, -17, 1, 2, 271, 475] +[:mouse_move, -19, 0, 2, 272, 476] diff --git a/samples/99_genre_rpg_tactical/hexagonal_grid/sprites/hexagon-black.png b/samples/99_genre_rpg_tactical/hexagonal_grid/sprites/hexagon-black.png Binary files differnew file mode 100644 index 0000000..f50c872 --- /dev/null +++ b/samples/99_genre_rpg_tactical/hexagonal_grid/sprites/hexagon-black.png diff --git a/samples/99_genre_rpg_tactical/hexagonal_grid/sprites/hexagon-gray.png b/samples/99_genre_rpg_tactical/hexagonal_grid/sprites/hexagon-gray.png Binary files differnew file mode 100644 index 0000000..e8c4c5a --- /dev/null +++ b/samples/99_genre_rpg_tactical/hexagonal_grid/sprites/hexagon-gray.png |
