diff options
Diffstat (limited to 'samples/99_genre_platformer/the_little_probe')
| -rw-r--r-- | samples/99_genre_platformer/the_little_probe/app/main.rb | 10 | ||||
| -rw-r--r-- | samples/99_genre_platformer/the_little_probe/bug-replay.txt | 205 |
2 files changed, 211 insertions, 4 deletions
diff --git a/samples/99_genre_platformer/the_little_probe/app/main.rb b/samples/99_genre_platformer/the_little_probe/app/main.rb index 8fcf279..9d43ce6 100644 --- a/samples/99_genre_platformer/the_little_probe/app/main.rb +++ b/samples/99_genre_platformer/the_little_probe/app/main.rb @@ -394,6 +394,7 @@ class FallingCircle end def load_lines file + return unless state.snaps data = gtk.read_file(file) || "" data.each_line .reject { |l| l.strip.length == 0 } @@ -452,10 +453,10 @@ class FallingCircle results[:point] = { x: x, y: y } results[:rect] = { x: x - radius, y: y - radius, w: radius * 2, h: radius * 2 } results[:trajectory] = trajectory(results) - results[:impacts] = terrain.find_all { |t| line_near_rect? results[:rect], t }.map do |t| + results[:impacts] = terrain.find_all { |t| t && (line_near_rect? results[:rect], t) }.map do |t| { terrain: t, - point: geometry.line_intersect(results[:trajectory], t), + point: geometry.line_intersect(results[:trajectory], t, replace_infinity: 1000), type: :terrain } end.reject { |t| !point_within_line? t[:point], t[:terrain] } @@ -463,10 +464,10 @@ class FallingCircle results[:impacts] += lava.find_all { |t| line_near_rect? results[:rect], t }.map do |t| { terrain: t, - point: geometry.line_intersect(results[:trajectory], t), + point: geometry.line_intersect(results[:trajectory], t, replace_infinity: 1000), type: :lava } - end.reject { |t| !point_within_line? t[:point], t[:terrain] } + end.reject { |t| !t || (!point_within_line? t[:point], t[:terrain]) } results end @@ -479,6 +480,7 @@ class FallingCircle end def calc_terrains_to_monitor + return unless circle.impacts circle.impact = nil circle.impacts.each do |i| circle.terrains_to_monitor[i[:terrain]] ||= { diff --git a/samples/99_genre_platformer/the_little_probe/bug-replay.txt b/samples/99_genre_platformer/the_little_probe/bug-replay.txt new file mode 100644 index 0000000..378d3c3 --- /dev/null +++ b/samples/99_genre_platformer/the_little_probe/bug-replay.txt @@ -0,0 +1,205 @@ +replay_version 2.0 +stopped_at 2085 +seed 100 +recorded_at 2021-11-20 11:34:07 -0600 +[:mouse_button_up, 1, 0, 1, 1, 1] +[:mouse_move, 803, 93, 2, 2, 31] +[:mouse_move, 811, 93, 2, 3, 32] +[:key_down_raw, 1073741903, 0, 2, 4, 123] +[:key_down_raw, 1073741903, 0, 2, 5, 137] +[:key_down_raw, 1073741903, 0, 2, 6, 139] +[:key_down_raw, 1073741903, 0, 2, 7, 141] +[:key_down_raw, 1073741903, 0, 2, 8, 143] +[:key_down_raw, 1073741903, 0, 2, 9, 145] +[:key_down_raw, 1073741903, 0, 2, 10, 147] +[:key_down_raw, 1073741903, 0, 2, 11, 149] +[:key_up_raw, 1073741903, 0, 2, 12, 150] +[:key_down_raw, 32, 0, 2, 13, 171] +[:key_down_raw, 32, 0, 2, 14, 186] +[:key_down_raw, 32, 0, 2, 15, 189] +[:key_down_raw, 32, 0, 2, 16, 190] +[:key_down_raw, 32, 0, 2, 17, 192] +[:key_down_raw, 32, 0, 2, 18, 194] +[:key_down_raw, 32, 0, 2, 19, 196] +[:key_down_raw, 32, 0, 2, 20, 198] +[:key_down_raw, 32, 0, 2, 21, 200] +[:key_down_raw, 32, 0, 2, 22, 202] +[:key_down_raw, 32, 0, 2, 23, 204] +[:key_down_raw, 32, 0, 2, 24, 206] +[:key_down_raw, 32, 0, 2, 25, 208] +[:key_down_raw, 32, 0, 2, 26, 210] +[:key_down_raw, 32, 0, 2, 27, 212] +[:key_down_raw, 32, 0, 2, 28, 214] +[:key_down_raw, 32, 0, 2, 29, 216] +[:key_down_raw, 32, 0, 2, 30, 218] +[:key_down_raw, 32, 0, 2, 31, 221] +[:key_down_raw, 32, 0, 2, 32, 222] +[:key_down_raw, 32, 0, 2, 33, 224] +[:key_down_raw, 32, 0, 2, 34, 227] +[:key_down_raw, 32, 0, 2, 35, 229] +[:key_down_raw, 32, 0, 2, 36, 231] +[:key_down_raw, 32, 0, 2, 37, 233] +[:key_down_raw, 32, 0, 2, 38, 235] +[:key_down_raw, 32, 0, 2, 39, 237] +[:key_down_raw, 32, 0, 2, 40, 239] +[:key_down_raw, 32, 0, 2, 41, 241] +[:key_down_raw, 32, 0, 2, 42, 243] +[:key_down_raw, 32, 0, 2, 43, 245] +[:key_down_raw, 32, 0, 2, 44, 247] +[:key_down_raw, 32, 0, 2, 45, 249] +[:key_down_raw, 32, 0, 2, 46, 251] +[:key_down_raw, 32, 0, 2, 47, 253] +[:key_down_raw, 32, 0, 2, 48, 255] +[:key_down_raw, 32, 0, 2, 49, 257] +[:key_down_raw, 32, 0, 2, 50, 259] +[:key_down_raw, 32, 0, 2, 51, 261] +[:key_down_raw, 32, 0, 2, 52, 263] +[:key_down_raw, 32, 0, 2, 53, 265] +[:key_down_raw, 32, 0, 2, 54, 267] +[:key_down_raw, 32, 0, 2, 55, 269] +[:key_down_raw, 32, 0, 2, 56, 271] +[:key_down_raw, 1073741903, 0, 2, 57, 272] +[:key_up_raw, 1073741903, 0, 2, 58, 284] +[:key_up_raw, 32, 0, 2, 59, 350] +[:key_down_raw, 1073741904, 0, 2, 60, 611] +[:key_down_raw, 1073741904, 0, 2, 61, 626] +[:key_down_raw, 1073741904, 0, 2, 62, 628] +[:key_down_raw, 1073741904, 0, 2, 63, 630] +[:key_down_raw, 1073741904, 0, 2, 64, 632] +[:key_down_raw, 1073741904, 0, 2, 65, 634] +[:key_down_raw, 1073741904, 0, 2, 66, 636] +[:key_up_raw, 1073741904, 0, 2, 67, 636] +[:key_down_raw, 32, 0, 2, 68, 640] +[:key_down_raw, 32, 0, 2, 69, 655] +[:key_down_raw, 32, 0, 2, 70, 657] +[:key_down_raw, 32, 0, 2, 71, 659] +[:key_down_raw, 32, 0, 2, 72, 661] +[:key_down_raw, 32, 0, 2, 73, 663] +[:key_down_raw, 32, 0, 2, 74, 665] +[:key_down_raw, 1073741903, 0, 2, 75, 666] +[:key_up_raw, 1073741903, 0, 2, 76, 672] +[:key_down_raw, 1073741903, 0, 2, 77, 703] +[:key_down_raw, 1073741903, 0, 2, 78, 717] +[:key_up_raw, 1073741903, 0, 2, 79, 717] +[:key_down_raw, 1073741903, 0, 2, 80, 736] +[:key_up_raw, 1073741903, 0, 2, 81, 741] +[:key_up_raw, 32, 0, 2, 82, 798] +[:key_down_raw, 1073741903, 0, 2, 83, 861] +[:key_down_raw, 1073741903, 0, 2, 84, 876] +[:key_down_raw, 1073741903, 0, 2, 85, 878] +[:key_down_raw, 1073741903, 0, 2, 86, 880] +[:key_down_raw, 1073741903, 0, 2, 87, 882] +[:key_down_raw, 1073741903, 0, 2, 88, 884] +[:key_up_raw, 1073741903, 0, 2, 89, 886] +[:key_down_raw, 1073741903, 0, 2, 90, 1063] +[:key_down_raw, 1073741903, 0, 2, 91, 1079] +[:key_down_raw, 1073741903, 0, 2, 92, 1081] +[:key_down_raw, 1073741903, 0, 2, 93, 1083] +[:key_down_raw, 1073741903, 0, 2, 94, 1085] +[:key_down_raw, 1073741903, 0, 2, 95, 1086] +[:key_down_raw, 1073741903, 0, 2, 96, 1088] +[:key_down_raw, 1073741903, 0, 2, 97, 1090] +[:key_down_raw, 1073741903, 0, 2, 98, 1092] +[:key_down_raw, 1073741903, 0, 2, 99, 1094] +[:key_down_raw, 1073741903, 0, 2, 100, 1096] +[:key_down_raw, 1073741903, 0, 2, 101, 1098] +[:key_down_raw, 1073741903, 0, 2, 102, 1100] +[:key_down_raw, 1073741903, 0, 2, 103, 1102] +[:key_down_raw, 1073741903, 0, 2, 104, 1104] +[:key_down_raw, 1073741903, 0, 2, 105, 1106] +[:key_down_raw, 1073741903, 0, 2, 106, 1109] +[:key_down_raw, 1073741903, 0, 2, 107, 1111] +[:key_down_raw, 1073741903, 0, 2, 108, 1113] +[:key_down_raw, 1073741903, 0, 2, 109, 1115] +[:key_down_raw, 1073741903, 0, 2, 110, 1117] +[:key_down_raw, 1073741903, 0, 2, 111, 1119] +[:key_down_raw, 1073741903, 0, 2, 112, 1121] +[:key_down_raw, 1073741903, 0, 2, 113, 1122] +[:key_down_raw, 1073741903, 0, 2, 114, 1125] +[:key_down_raw, 1073741903, 0, 2, 115, 1127] +[:key_down_raw, 1073741903, 0, 2, 116, 1128] +[:key_down_raw, 1073741903, 0, 2, 117, 1131] +[:key_down_raw, 1073741903, 0, 2, 118, 1132] +[:key_down_raw, 1073741903, 0, 2, 119, 1134] +[:key_down_raw, 1073741903, 0, 2, 120, 1136] +[:key_down_raw, 1073741903, 0, 2, 121, 1138] +[:key_down_raw, 1073741903, 0, 2, 122, 1140] +[:key_down_raw, 1073741903, 0, 2, 123, 1142] +[:key_up_raw, 1073741903, 0, 2, 124, 1142] +[:key_down_raw, 32, 0, 2, 125, 1208] +[:key_down_raw, 32, 0, 2, 126, 1223] +[:key_down_raw, 32, 0, 2, 127, 1225] +[:key_down_raw, 1073741903, 0, 2, 128, 1226] +[:key_up_raw, 1073741903, 0, 2, 129, 1236] +[:key_down_raw, 1073741904, 0, 2, 130, 1253] +[:key_up_raw, 1073741904, 0, 2, 131, 1266] +[:key_down_raw, 1073741903, 0, 2, 132, 1324] +[:key_up_raw, 1073741903, 0, 2, 133, 1330] +[:key_down_raw, 1073741903, 0, 2, 134, 1414] +[:key_up_raw, 1073741903, 0, 2, 135, 1417] +[:key_up_raw, 32, 0, 2, 136, 1441] +[:mouse_move, 812, 92, 2, 137, 1607] +[:mouse_move, 818, 92, 2, 138, 1608] +[:mouse_move, 818, 91, 2, 139, 1614] +[:mouse_move, 818, 90, 2, 140, 1622] +[:mouse_move, 813, 89, 2, 141, 1623] +[:mouse_move, 801, 86, 2, 142, 1624] +[:mouse_move, 786, 83, 2, 143, 1625] +[:mouse_move, 770, 82, 2, 144, 1626] +[:mouse_move, 756, 82, 2, 145, 1627] +[:mouse_move, 745, 82, 2, 146, 1628] +[:mouse_move, 738, 82, 2, 147, 1629] +[:mouse_move, 731, 83, 2, 148, 1630] +[:mouse_move, 724, 84, 2, 149, 1631] +[:mouse_move, 712, 85, 2, 150, 1632] +[:mouse_move, 707, 87, 2, 151, 1633] +[:mouse_move, 702, 89, 2, 152, 1634] +[:mouse_move, 699, 95, 2, 153, 1635] +[:mouse_move, 693, 102, 2, 154, 1636] +[:mouse_move, 687, 110, 2, 155, 1637] +[:mouse_move, 680, 118, 2, 156, 1638] +[:mouse_move, 671, 125, 2, 157, 1639] +[:mouse_move, 659, 132, 2, 158, 1640] +[:mouse_move, 645, 142, 2, 159, 1641] +[:mouse_move, 632, 153, 2, 160, 1642] +[:mouse_move, 616, 164, 2, 161, 1643] +[:mouse_move, 583, 184, 2, 162, 1644] +[:mouse_move, 554, 198, 2, 163, 1645] +[:mouse_move, 519, 212, 2, 164, 1646] +[:mouse_move, 480, 224, 2, 165, 1647] +[:mouse_move, 445, 234, 2, 166, 1648] +[:mouse_move, 414, 246, 2, 167, 1649] +[:mouse_move, 393, 265, 2, 168, 1650] +[:mouse_move, 388, 276, 2, 169, 1651] +[:mouse_move, 386, 272, 2, 170, 1665] +[:mouse_move, 380, 272, 2, 171, 1666] +[:mouse_move, 366, 272, 2, 172, 1667] +[:mouse_move, 336, 266, 2, 173, 1668] +[:mouse_move, 313, 262, 2, 174, 1669] +[:mouse_move, 294, 258, 2, 175, 1670] +[:mouse_move, 278, 255, 2, 176, 1671] +[:mouse_move, 268, 254, 2, 177, 1672] +[:mouse_move, 263, 253, 2, 178, 1673] +[:mouse_move, 261, 252, 2, 179, 1674] +[:mouse_move, 260, 251, 2, 180, 1675] +[:mouse_move, 258, 250, 2, 181, 1676] +[:mouse_move, 256, 249, 2, 182, 1677] +[:mouse_move, 252, 249, 2, 183, 1678] +[:mouse_move, 251, 249, 2, 184, 1679] +[:mouse_move, 248, 249, 2, 185, 1680] +[:mouse_move, 246, 248, 2, 186, 1681] +[:mouse_move, 242, 247, 2, 187, 1682] +[:mouse_move, 234, 247, 2, 188, 1683] +[:mouse_move, 231, 247, 2, 189, 1684] +[:mouse_move, 230, 247, 2, 190, 1685] +[:mouse_move, 230, 246, 2, 191, 1688] +[:mouse_move, 229, 246, 2, 192, 1691] +[:mouse_move, 228, 246, 2, 193, 1692] +[:mouse_move, 227, 246, 2, 194, 1702] +[:mouse_move, 228, 246, 2, 195, 1834] +[:mouse_move, 229, 246, 2, 196, 1898] +[:mouse_move, 229, 245, 2, 197, 1968] +[:key_down_raw, 96, 0, 2, 198, 2024] +[:mouse_move, 230, 245, 2, 199, 2027] +[:key_up_raw, 96, 0, 2, 200, 2028] +[:key_down_raw, 13, 0, 2, 201, 2085] |
