From 85ad912b5ed5c0417fe4fea4a4987bba959fa50a Mon Sep 17 00:00:00 2001 From: Harmony Honey Monroe Date: Mon, 24 Feb 2025 00:45:36 -0500 Subject: [PATCH 01/39] 77px wide HHoney Software logo (: on StartMenu --- media/image/title_splash-tiny.png | Bin 0 -> 1775 bytes src/menu/StartMenu.tscn | 17 ++++++++--------- 2 files changed, 8 insertions(+), 9 deletions(-) create mode 100644 media/image/title_splash-tiny.png diff --git a/media/image/title_splash-tiny.png b/media/image/title_splash-tiny.png new file mode 100644 index 0000000000000000000000000000000000000000..13eb78d5cfed0845f007112b454ac2724eaa392e GIT binary patch literal 1775 zcmeAS@N?(olHy`uVBq!ia0vp^-axFy!3-qNScIuFFfcY`Iy(mx2e~^bc)B{98Csf| z=^E)7GB9XNESFACZ6-Fj8X9?lg}Q_ug+{_0(LyJ1z-L&d{eiVh_o z63(^^{(A6MSEKgUe#EmT3`4^Tv}6GSx0}l z^5i(vx_67?9`&ZDFH_yty**Jlaf*P{V;*5O5B+8%cFqg#+t;j^aR2jM`=eb?q>N@i z*%+bb*(FmK7{0VBCdui`jvkZBtN-`cZWaDpyY$sPfr@!D&$kL^ZCemgFsI-7xTaj= zZ$Z6HPybA1mZ%Wk8*t6)+rjOO>C;nnw=qATec@Nat7-pqcOH%HWZ5&v;joNJtn*!` zmFf1sW$rtd#O`~=RrY;>_qpF<`x$&zr{AidqxFx0foXAoPlzipYDU3;hrs_)fI9>Z z>`9LT#?Zr(Aiv-Nk0}P+?xc#$)_AV3z;d$B)5S5wqx0?5m$`=xcv}CeJzVohM5cdn z$exlP4s}}`E*|pX(Vq6@&F?p_Fb&(jJMxS7Q{&eg?k+j@ zXy0P~Cu`2j9olQN;f#1fM~p3-(z5)m1D{2#ZTwbr@NWjQdF+-g7TJ@pF6xW8 z$C|^xX0b7Aq4b)2FW=q1v%u``7p-c`Gc%7(cb?Z4ls;2ALgv^c-|NS;G&QEVc}sEM zv5#tWF+C93KlNzom&feGH1q>S_Dl2pr9q Date: Mon, 24 Feb 2025 20:19:13 -0500 Subject: [PATCH 02/39] CamBounds.gd ... almost working select preview --- src/actor/Note.gd | 1 + src/autoload/Shared.gd | 10 +- src/map/1-1.tscn | 7 +- src/map/1-2.tscn | 7 +- src/map/1-3.tscn | 7 +- src/map/1-4.tscn | 7 +- src/map/1-5.tscn | 7 +- src/map/1-6.tscn | 9 +- src/map/1-7.tscn | 9 +- src/map/1-8.tscn | 9 +- src/map/2-1.tscn | 7 +- src/map/2-2.tscn | 7 +- src/map/2-3.tscn | 8 +- src/map/2-4.tscn | 9 +- src/map/2-5.tscn | 7 +- src/map/2-6.tscn | 9 +- src/map/2-7.tscn | 9 +- src/map/2-8.tscn | 9 +- src/map/3-1.tscn | 7 +- src/map/3-2.tscn | 35 ++++--- src/map/3-3.tscn | 35 ++++--- src/map/3-4.tscn | 35 ++++--- src/map/3-5.tscn | 29 +++--- src/map/3-6.tscn | 29 +++--- src/map/3-7.tscn | 29 +++--- src/map/3-8.tscn | 21 +++-- src/map/4-1.tscn | 7 +- src/map/4-2.tscn | 27 +++--- src/map/4-3.tscn | 35 ++++--- src/map/4-4.tscn | 27 +++--- src/map/4-5.tscn | 7 +- src/map/4-6.tscn | 7 +- src/map/4-7.tscn | 7 +- src/map/4-8.tscn | 7 +- src/map/5-1.tscn | 15 ++- src/map/5-2.tscn | 13 ++- src/map/5-3.tscn | 7 +- src/map/5-4.tscn | 7 +- src/map/win.tscn | 7 +- src/menu/select.gd | 11 ++- src/menu/select.tscn | 187 +------------------------------------- src/stage/CamBounds.gd | 31 +++++++ src/stage/GameCamera.tscn | 4 +- 43 files changed, 307 insertions(+), 457 deletions(-) create mode 100644 src/stage/CamBounds.gd diff --git a/src/actor/Note.gd b/src/actor/Note.gd index e38c12e..f15ef4d 100644 --- a/src/actor/Note.gd +++ b/src/actor/Note.gd @@ -12,6 +12,7 @@ export var palette : PoolColorArray func _ready(): if Shared.is_level_select: visible = false + queue_free() return if Engine.editor_hint: return diff --git a/src/autoload/Shared.gd b/src/autoload/Shared.gd index 2a7fc53..84df606 100644 --- a/src/autoload/Shared.gd +++ b/src/autoload/Shared.gd @@ -110,14 +110,8 @@ func _ready(): # get all maps for i in dir_list(map_dir): - var lm = load(map_dir + i) - var map_short = str(i.split(".")[0]) - - scene_dict[map_dir + i] = lm - maps.append(map_short) - - var inst = lm.instance() - make_preview(inst, map_short) + scene_dict[map_dir + i] = load(map_dir + i) + maps.append(i.split(".")[0]) #print("maps: ", maps, " ", maps.size(), " ", scene_dict) diff --git a/src/map/1-1.tscn b/src/map/1-1.tscn index 2f4ec2d..52fcad0 100644 --- a/src/map/1-1.tscn +++ b/src/map/1-1.tscn @@ -2,7 +2,6 @@ [ext_resource path="res://src/stage/SolidTileMap.tscn" type="PackedScene" id=1] [ext_resource path="res://src/actor/Exit.tscn" type="PackedScene" id=2] -[ext_resource path="res://src/stage/GameCamera.tscn" type="PackedScene" id=3] [ext_resource path="res://src/stage/DetailTileMap.tscn" type="PackedScene" id=4] [ext_resource path="res://src/stage/SpikeTileMap.tscn" type="PackedScene" id=5] [ext_resource path="res://src/actor/Player.tscn" type="PackedScene" id=6] @@ -16,6 +15,7 @@ [ext_resource path="res://media/image/8pixel.png" type="Texture" id=14] [ext_resource path="res://media/image/solid_bricks.png" type="Texture" id=15] [ext_resource path="res://media/image/bricks.png" type="Texture" id=16] +[ext_resource path="res://src/stage/CamBounds.gd" type="Script" id=17] [sub_resource type="TileSet" id=1] 0/name = "solid_bricks.png 0" @@ -176,7 +176,8 @@ tile_data = PoolIntArray( -393212, 5, 2, -393211, 536870917, 0, -393210, -161061 tile_set = SubResource( 6 ) tile_data = PoolIntArray( -458766, 536870912, 0, -458765, 536870912, 0, -458764, 536870912, 0, -458763, 536870912, 0, -458762, 536870912, 0, -458761, 536870912, 0, -458760, 536870912, 0, -458759, 536870912, 0, -458758, 536870912, 0, -458757, 536870912, 0, -458756, 536870912, 0, -458755, 536870912, 0, -458754, 536870912, 0, -458753, 536870912, 0, -524288, 536870912, 0, -524287, 536870912, 0, -524286, 536870912, 0, -524285, 536870912, 0, -524284, 536870912, 0, -524283, 536870912, 0, -524282, 536870912, 0, -524281, 536870912, 0, -524280, 536870912, 0, -524279, 536870912, 0, -524278, 536870912, 0, -524277, 536870912, 0, -524276, 536870912, 0, -524275, 536870912, 0, -393230, 536870912, 0, -393229, 536870912, 0, -393228, 536870912, 0, -393227, 536870912, 0, -393226, 536870912, 0, -393225, 536870912, 0, -393224, 536870912, 0, -393223, 536870912, 0, -393222, 536870912, 0, -393221, 536870912, 0, -393220, 536870912, 0, -393219, 536870912, 0, -393218, 536870912, 0, -393217, 536870912, 0, -458752, 536870912, 0, -458751, 536870912, 0, -458750, 536870912, 0, -458749, 536870912, 0, -458748, 536870912, 0, -458747, 536870912, 0, -458746, 536870912, 0, -458745, 536870912, 0, -458744, 536870912, 0, -458743, 536870912, 0, -458742, 536870912, 0, -458741, 536870912, 0, -458740, 536870912, 0, -458739, 536870912, 0, -327694, 536870912, 0, -327693, 536870912, 0, -327692, 536870912, 0, -327691, 536870912, 0, -327690, 536870912, 0, -327689, 536870912, 0, -327688, 536870912, 0, -327687, 536870912, 0, -327686, 536870912, 0, -327685, 536870912, 0, -327684, 536870912, 0, -327683, 536870912, 0, -327682, 536870912, 0, -327681, 536870912, 0, -393216, 536870912, 0, -393215, 536870912, 0, -393214, 536870912, 0, -393213, 536870912, 0, -393212, 536870912, 0, -393211, 536870912, 0, -393210, 536870912, 0, -393209, 536870912, 0, -393208, 536870912, 0, -393207, 536870912, 0, -393206, 536870912, 0, -393205, 536870912, 0, -393204, 536870912, 0, -393203, 536870912, 0, -262158, 536870912, 0, -262157, 536870912, 0, -262156, 536870912, 0, -262155, 536870912, 0, -262154, 536870912, 0, -262153, 536870912, 0, -262152, 536870912, 0, -262151, 536870912, 0, -262150, 536870912, 0, -262149, 536870912, 0, -262148, 536870912, 0, -262147, 536870912, 0, -262146, 536870912, 0, -262145, 0, 0, -327680, 0, 0, -327679, 536870912, 0, -327678, 536870912, 0, -327677, 536870912, 0, -327676, 536870912, 0, -327675, 536870912, 0, -327674, 536870912, 0, -327673, 536870912, 0, -327672, 536870912, 0, -327671, 536870912, 0, -327670, 536870912, 0, -327669, 536870912, 0, -327668, 536870912, 0, -327667, 536870912, 0, -196622, 536870912, 0, -196621, 536870912, 0, -196620, 536870912, 0, -196619, 536870912, 0, -196618, 536870912, 0, -196617, 536870912, 0, -196616, 536870912, 0, -196615, 536870912, 0, -196614, 536870912, 0, -196613, 536870912, 0, -196612, 536870912, 0, -196611, 536870912, 0, -196610, 536870912, 0, -196609, 0, 0, -262144, 0, 0, -262143, 536870912, 0, -262142, 536870912, 0, -262141, 536870912, 0, -262140, 536870912, 0, -262139, 536870912, 0, -262138, 536870912, 0, -262137, 536870912, 0, -262136, 536870912, 0, -262135, 536870912, 0, -262134, 536870912, 0, -262133, 536870912, 0, -262132, 536870912, 0, -262131, 536870912, 0, -131086, 536870912, 0, -131085, 536870912, 0, -131084, 536870912, 0, -131083, 536870912, 0, -131082, 536870912, 0, -131081, 536870912, 0, -131080, 536870912, 0, -131079, 536870912, 0, -131078, 536870912, 0, -131077, 536870912, 0, -131076, 536870912, 0, -131075, 536870912, 0, -131074, 536870912, 0, -131073, 536870912, 0, -196608, 536870912, 0, -196607, 536870912, 0, -196606, 536870912, 0, -196605, 536870912, 0, -196604, 536870912, 0, -196603, 536870912, 0, -196602, 536870912, 0, -196601, 536870912, 0, -196600, 536870912, 0, -196599, 536870912, 0, -196598, 536870912, 0, -196597, 536870912, 0, -196596, 536870912, 0, -196595, 536870912, 0, -65550, 536870912, 0, -65549, 536870912, 0, -65548, 536870912, 0, -65547, 536870912, 0, -65546, 536870912, 0, -65545, 536870912, 0, -65544, 536870914, 2, -65543, 2, 3, -131063, 536870912, 0, -131062, 536870912, 0, -131061, 536870912, 0, -131060, 536870912, 0, -131059, 536870912, 0, -65527, 536870912, 0, -65526, 536870912, 0, -65525, 536870912, 0, -65524, 536870912, 0, -65523, 536870912, 0, 8, 2, 3, 9, 536870912, 0, 10, 536870912, 0, 11, 536870912, 0, 12, 536870912, 0, 13, 536870912, 0 ) -[node name="GameCamera" parent="." instance=ExtResource( 3 )] +[node name="CamBounds" type="Node2D" parent="."] +script = ExtResource( 17 ) [node name="Actors" type="Node2D" parent="."] @@ -239,5 +240,3 @@ margin_right = 50.0 margin_bottom = 6.0 custom_fonts/font = SubResource( 4 ) text = "move" - -[editable path="GameCamera"] diff --git a/src/map/1-2.tscn b/src/map/1-2.tscn index dd01921..3f583df 100644 --- a/src/map/1-2.tscn +++ b/src/map/1-2.tscn @@ -2,7 +2,7 @@ [ext_resource path="res://src/stage/SolidTileMap.tscn" type="PackedScene" id=1] [ext_resource path="res://src/actor/Exit.tscn" type="PackedScene" id=2] -[ext_resource path="res://src/stage/GameCamera.tscn" type="PackedScene" id=3] +[ext_resource path="res://src/stage/CamBounds.gd" type="Script" id=3] [ext_resource path="res://src/stage/DetailTileMap.tscn" type="PackedScene" id=4] [ext_resource path="res://src/stage/SpikeTileMap.tscn" type="PackedScene" id=5] [ext_resource path="res://src/actor/Player.tscn" type="PackedScene" id=6] @@ -176,7 +176,8 @@ tile_data = PoolIntArray( -458747, 2, 0, -458746, 0, 0, -458745, -1610612734, 0, tile_set = SubResource( 10 ) tile_data = PoolIntArray( -524302, 536870912, 0, -524301, 536870912, 0, -524300, 536870912, 0, -524299, 536870912, 0, -524298, 536870912, 0, -524297, 536870912, 0, -524296, 536870912, 0, -524295, 536870912, 0, -524294, 536870912, 0, -524293, 536870912, 0, -524292, 536870912, 0, -524291, 536870912, 0, -524290, 536870912, 0, -524289, 536870912, 0, -589824, 536870912, 0, -589823, 536870912, 0, -589822, 536870912, 0, -589821, 536870912, 0, -589820, 536870912, 0, -589819, 536870912, 0, -589818, 536870912, 0, -589817, 536870912, 0, -589816, 536870912, 0, -589815, 536870912, 0, -589814, 536870912, 0, -589813, 536870912, 0, -589812, 536870912, 0, -589811, 536870912, 0, -458766, 536870912, 0, -458765, 536870912, 0, -458764, 536870912, 0, -458763, 536870912, 0, -458762, 536870912, 0, -458761, 536870912, 0, -458760, 536870912, 0, -458759, 536870912, 0, -458758, 536870912, 0, -458757, 536870912, 0, -458756, 536870912, 0, -458755, 536870912, 0, -458754, 536870912, 0, -458753, 536870912, 0, -524288, 536870912, 0, -524287, 536870912, 0, -524286, 536870912, 0, -524285, 536870912, 0, -524284, 536870912, 0, -524283, 536870912, 0, -524282, 536870912, 0, -524281, 536870912, 0, -524280, 536870912, 0, -524279, 536870912, 0, -524278, 536870912, 0, -524277, 536870912, 0, -524276, 536870912, 0, -524275, 536870912, 0, -393230, 536870912, 0, -393229, 536870912, 0, -393228, 536870912, 0, -393227, 536870912, 0, -393226, 536870912, 0, -393225, 536870912, 0, -393224, 536870912, 0, -393223, 536870912, 0, -393222, 536870912, 0, -393221, 536870912, 0, -393220, 536870912, 0, -393219, 536870912, 0, -393218, 536870912, 0, -393217, 536870912, 0, -458752, 536870912, 0, -458751, 536870912, 0, -458750, 536870912, 0, -458749, 536870912, 0, -458748, 536870912, 0, -458747, 536870912, 0, -458746, 536870912, 0, -458745, 536870912, 0, -458744, 536870912, 0, -458743, 536870912, 0, -458742, 536870912, 0, -458741, 536870912, 0, -458740, 536870912, 0, -458739, 536870912, 0, -327694, 536870912, 0, -327693, 536870912, 0, -327692, 536870912, 0, -327691, 536870912, 0, -327690, 0, 0, -327689, 536870912, 0, -327688, 536870912, 0, -327687, 536870912, 0, -327686, 536870912, 0, -327685, 536870912, 0, -327684, 536870912, 0, -327683, 536870912, 0, -327682, 536870912, 0, -327681, 536870912, 0, -393216, 536870912, 0, -393215, 536870912, 0, -393214, 536870912, 0, -393213, 536870912, 0, -393212, 536870912, 0, -393211, 536870912, 0, -393210, 536870912, 0, -393209, 536870912, 0, -393208, 536870912, 0, -393207, 536870912, 0, -393206, 536870912, 0, -393205, 536870912, 0, -393204, 536870912, 0, -393203, 536870912, 0, -262158, 536870912, 0, -262157, 536870912, 0, -262156, 536870912, 0, -262155, 536870912, 0, -262154, 0, 0, -262153, 536870912, 0, -262152, 536870912, 0, -262151, 536870912, 0, -262150, 536870912, 0, -262149, 536870912, 0, -262148, 536870912, 0, -262147, 536870912, 0, -262146, 536870912, 0, -262145, 536870912, 0, -327680, 536870912, 0, -327679, 536870912, 0, -327678, 536870912, 0, -327677, 536870912, 0, -327676, 536870912, 0, -327675, 536870912, 0, -327674, 536870912, 0, -327673, 536870912, 0, -327672, 536870912, 0, -327671, 536870912, 0, -327670, 536870912, 0, -327669, 536870912, 0, -327668, 536870912, 0, -327667, 536870912, 0, -196622, 536870912, 0, -196621, 536870912, 0, -196620, 536870912, 0, -196619, 536870912, 0, -196618, 536870912, 0, -196617, 536870912, 0, -196616, 536870912, 0, -196615, 536870912, 0, -196614, 536870912, 0, -262144, 536870914, 3, -262143, 2, 2, -262142, 2, 1, -262136, 536870912, 0, -262135, 536870912, 0, -262134, 536870912, 0, -262133, 536870912, 0, -262132, 536870912, 0, -262131, 536870912, 0, -131086, 536870912, 0, -131085, 536870912, 0, -131084, 536870912, 0, -131083, 536870912, 0, -131082, 536870912, 0, -131081, 536870912, 0, -131080, 536870912, 0, -131079, 536870912, 0, -131078, 536870912, 0, -196600, 536870912, 0, -196599, 536870912, 0, -196598, 536870912, 0, -196597, 536870912, 0, -196596, 536870912, 0, -196595, 536870912, 0, -131064, 536870912, 0, -131063, 536870912, 0, -131062, 536870912, 0, -131061, 536870912, 0, -131060, 536870912, 0, -131059, 536870912, 0 ) -[node name="GameCamera" parent="." instance=ExtResource( 3 )] +[node name="CamBounds" type="Node2D" parent="."] +script = ExtResource( 3 ) [node name="Actors" type="Node2D" parent="."] @@ -215,5 +216,3 @@ margin_right = 34.0 margin_bottom = 6.0 custom_fonts/font = SubResource( 8 ) text = "jump" - -[editable path="GameCamera"] diff --git a/src/map/1-3.tscn b/src/map/1-3.tscn index 525e652..99699c9 100644 --- a/src/map/1-3.tscn +++ b/src/map/1-3.tscn @@ -3,7 +3,7 @@ [ext_resource path="res://src/stage/SolidTileMap.tscn" type="PackedScene" id=1] [ext_resource path="res://src/actor/Box.tscn" type="PackedScene" id=2] [ext_resource path="res://src/actor/Exit.tscn" type="PackedScene" id=3] -[ext_resource path="res://src/stage/GameCamera.tscn" type="PackedScene" id=4] +[ext_resource path="res://src/stage/CamBounds.gd" type="Script" id=4] [ext_resource path="res://src/stage/DetailTileMap.tscn" type="PackedScene" id=5] [ext_resource path="res://src/stage/SpikeTileMap.tscn" type="PackedScene" id=6] [ext_resource path="res://src/actor/Player.tscn" type="PackedScene" id=7] @@ -177,8 +177,9 @@ tile_data = PoolIntArray( -524295, 536870916, 3, -524294, 536870916, 0, -524293, tile_set = SubResource( 10 ) tile_data = PoolIntArray( -524305, 536870912, 0, -524304, 536870912, 0, -524303, 536870912, 0, -524302, 536870912, 0, -524301, 536870912, 0, -524300, 536870912, 0, -524299, 536870912, 0, -458769, 536870912, 0, -458768, 536870912, 0, -458767, 536870912, 0, -458766, 536870912, 0, -458765, 536870912, 0, -458764, 536870912, 0, -458763, 536870912, 0, -393233, 536870912, 0, -393232, 536870912, 0, -393231, 536870912, 0, -393230, 536870912, 0, -393229, 536870912, 0, -393228, 536870912, 0, -393227, 536870912, 0, -327697, 536870912, 0, -327696, 536870912, 0, -327695, 536870912, 0, -327694, 536870912, 0, -327693, 536870912, 0, -327692, 536870912, 0, -327691, 536870912, 0, -262161, 536870912, 0, -262160, 0, 0, -262159, 0, 0, -262158, 536870912, 0, -262157, 536870912, 0, -262156, 536870912, 0, -262155, 536870912, 0, -196625, 536870912, 0, -196624, 0, 0, -196623, 0, 0, -196622, 536870912, 0, -196621, 536870912, 0, -196620, 536870912, 0, -196619, 536870912, 0, -196618, 536870912, 0, -196617, 536870912, 0, -196616, 536870914, 2, -131089, 536870912, 0, -131088, 536870912, 0, -131087, 536870912, 0, -131086, 536870912, 0, -131085, 536870912, 0, -131084, 536870912, 0, -131083, 536870912, 0, -131082, 536870912, 0, -131081, 536870912, 0, -131080, 536870914, 3 ) -[node name="GameCamera" parent="." instance=ExtResource( 4 )] +[node name="CamBounds" type="Node2D" parent="."] position = Vector2( -24, -16 ) +script = ExtResource( 4 ) [node name="Actors" type="Node2D" parent="."] @@ -229,5 +230,3 @@ margin_right = 64.0 margin_bottom = 6.0 custom_fonts/font = SubResource( 8 ) text = "pause" - -[editable path="GameCamera"] diff --git a/src/map/1-4.tscn b/src/map/1-4.tscn index 63c49c1..456c7cd 100644 --- a/src/map/1-4.tscn +++ b/src/map/1-4.tscn @@ -3,7 +3,7 @@ [ext_resource path="res://src/stage/SolidTileMap.tscn" type="PackedScene" id=1] [ext_resource path="res://src/actor/Box.tscn" type="PackedScene" id=2] [ext_resource path="res://src/actor/Exit.tscn" type="PackedScene" id=3] -[ext_resource path="res://src/stage/GameCamera.tscn" type="PackedScene" id=4] +[ext_resource path="res://src/stage/CamBounds.gd" type="Script" id=4] [ext_resource path="res://src/stage/DetailTileMap.tscn" type="PackedScene" id=5] [ext_resource path="res://src/stage/SpikeTileMap.tscn" type="PackedScene" id=6] [ext_resource path="res://src/actor/Player.tscn" type="PackedScene" id=7] @@ -177,8 +177,9 @@ tile_data = PoolIntArray( -393211, 536870916, 3, -393210, 4, 0, -393209, 4, 3, - tile_set = SubResource( 10 ) tile_data = PoolIntArray( -655372, 536870912, 0, -655371, 536870912, 0, -655370, 536870912, 0, -655369, 536870912, 0, -655368, 536870912, 0, -655367, 536870912, 0, -655366, 536870912, 0, -655365, 536870912, 0, -655364, 536870912, 0, -655363, 536870912, 0, -655362, 536870912, 0, -655361, 536870912, 0, -720896, 536870912, 0, -720895, 536870912, 0, -720894, 536870912, 0, -720893, 536870912, 0, -720892, 536870912, 0, -720891, 536870912, 0, -720890, 536870912, 0, -720889, 536870912, 0, -720888, 536870912, 0, -720887, 536870912, 0, -720886, 536870912, 0, -720885, 536870912, 0, -720884, 536870912, 0, -720883, 536870912, 0, -720882, 536870912, 0, -720881, 536870912, 0, -589836, 536870912, 0, -589835, 536870912, 0, -589834, 536870912, 0, -589833, 536870912, 0, -589832, 536870912, 0, -589831, 536870912, 0, -589830, 536870912, 0, -589829, 536870912, 0, -589828, 536870912, 0, -589827, 536870912, 0, -589826, 536870912, 0, -589825, 536870912, 0, -655360, 536870912, 0, -655359, 536870912, 0, -655358, 536870912, 0, -655357, 536870912, 0, -655356, 536870912, 0, -655355, 536870912, 0, -655354, 536870912, 0, -655353, 536870912, 0, -655352, 536870912, 0, -655351, 536870912, 0, -655350, 536870912, 0, -655349, 536870912, 0, -655348, 536870912, 0, -655347, 536870912, 0, -655346, 536870912, 0, -655345, 536870912, 0, -524300, 536870912, 0, -524299, 536870912, 0, -524298, 536870912, 0, -524297, 536870912, 0, -524296, 536870912, 0, -524295, 536870912, 0, -524294, 536870912, 0, -524293, 536870912, 0, -524292, 536870912, 0, -524291, 536870912, 0, -524290, 536870912, 0, -524289, 536870912, 0, -589824, 536870912, 0, -589823, 536870912, 0, -589822, 536870912, 0, -589821, 536870912, 0, -589820, 536870912, 0, -589819, 536870912, 0, -589818, 536870912, 0, -589817, 536870912, 0, -589816, 536870912, 0, -589815, 536870912, 0, -589814, 536870912, 0, -589813, 536870912, 0, -589812, 536870912, 0, -589811, 536870912, 0, -589810, 536870912, 0, -589809, 536870912, 0, -458764, 536870912, 0, -458763, 536870912, 0, -458762, 536870912, 0, -458761, 536870912, 0, -458760, 536870912, 0, -458759, 536870912, 0, -458758, 536870912, 0, -458757, 536870912, 0, -458756, 536870912, 0, -458755, 536870912, 0, -458754, 536870912, 0, -458753, 536870912, 0, -524288, 536870912, 0, -524287, 536870912, 0, -524286, 536870912, 0, -524285, 536870912, 0, -524284, 536870912, 0, -524283, 536870912, 0, -524282, 536870912, 0, -524281, 536870912, 0, -524280, 536870912, 0, -524279, 536870912, 0, -524278, 536870912, 0, -524277, 536870912, 0, -524276, 536870912, 0, -524275, 536870912, 0, -524274, 536870912, 0, -524273, 536870912, 0, -393228, 536870912, 0, -393227, 536870912, 0, -393226, 536870912, 0, -393225, 536870912, 0, -393224, 536870912, 0, -393223, 536870912, 0, -393222, 536870912, 0, -393221, 536870912, 0, -393220, 536870912, 0, -393219, 536870912, 0, -393218, 536870912, 0, -393217, 536870912, 0, -458752, 536870912, 0, -458751, 536870912, 0, -458750, 536870912, 0, -458749, 536870912, 0, -458748, 536870912, 0, -458747, 536870912, 0, -458746, 536870912, 0, -458745, 536870912, 0, -458744, 536870912, 0, -458743, 536870912, 0, -458742, 536870912, 0, -458741, 536870912, 0, -458740, 536870912, 0, -458739, 536870912, 0, -458738, 536870912, 0, -458737, 536870912, 0, -327692, 536870912, 0, -327691, 536870912, 0, -327690, 536870912, 0, -327689, 536870912, 0, -327688, 536870912, 0, -327687, 536870912, 0, -327686, 536870912, 0, -393216, 536870914, 3, -393215, 2, 2, -393213, 536870912, 0, -393212, 536870912, 0, -393211, 536870912, 0, -393210, 536870912, 0, -393209, 536870912, 0, -393208, 536870912, 0, -393207, 536870912, 0, -393206, 536870912, 0, -393205, 0, 0, -393204, 0, 0, -393203, 536870912, 0, -393202, 536870912, 0, -393201, 536870912, 0, -262156, 536870912, 0, -262155, 536870912, 0, -262154, 536870912, 0, -262153, 536870912, 0, -327677, 536870912, 0, -327676, 536870912, 0, -327675, 536870912, 0, -327674, 536870912, 0, -327673, 536870912, 0, -327672, 536870912, 0, -327671, 536870912, 0, -327670, 536870912, 0, -327669, 0, 0, -327668, 0, 0, -327667, 536870912, 0, -327666, 536870912, 0, -327665, 536870912, 0, -196620, 536870912, 0, -196619, 536870912, 0, -196618, 536870912, 0, -196617, 536870912, 0, -262138, 536870912, 0, -262137, 536870912, 0, -262136, 536870912, 0, -262135, 536870912, 0, -262134, 536870912, 0, -262133, 536870912, 0, -262132, 536870912, 0, -262131, 536870912, 0, -262130, 536870912, 0, -262129, 536870912, 0, -131084, 536870912, 0, -131083, 536870912, 0, -131082, 536870912, 0, -131081, 536870912, 0, -196602, 536870912, 0, -196601, 536870912, 0, -196600, 536870912, 0, -196599, 536870912, 0, -196598, 536870912, 0, -196597, 536870912, 0, -196596, 536870912, 0, -196595, 536870912, 0, -196594, 536870912, 0, -196593, 536870912, 0, -131066, 536870912, 0, -131065, 536870912, 0, -131064, 536870912, 0, -131063, 536870912, 0, -131062, 536870912, 0, -131061, 536870912, 0, -131060, 536870912, 0, -131059, 536870912, 0, -131058, 536870912, 0, -131057, 536870912, 0, -65524, 0, 0, -65523, 0, 0, -65522, 0, 0, -65521, 0, 0, 12, 0, 0, 13, 0, 0, 14, 0, 0, 15, 0, 0 ) -[node name="GameCamera" parent="." instance=ExtResource( 4 )] +[node name="CamBounds" type="Node2D" parent="."] position = Vector2( 16, 0 ) +script = ExtResource( 4 ) [node name="Actors" type="Node2D" parent="."] @@ -224,5 +225,3 @@ margin_right = 34.0 margin_bottom = 6.0 custom_fonts/font = SubResource( 8 ) text = "lift" - -[editable path="GameCamera"] diff --git a/src/map/1-5.tscn b/src/map/1-5.tscn index fa0a863..0cf43dd 100644 --- a/src/map/1-5.tscn +++ b/src/map/1-5.tscn @@ -3,7 +3,7 @@ [ext_resource path="res://src/stage/SolidTileMap.tscn" type="PackedScene" id=1] [ext_resource path="res://src/actor/Box.tscn" type="PackedScene" id=2] [ext_resource path="res://src/actor/Exit.tscn" type="PackedScene" id=3] -[ext_resource path="res://src/stage/GameCamera.tscn" type="PackedScene" id=4] +[ext_resource path="res://src/stage/CamBounds.gd" type="Script" id=4] [ext_resource path="res://src/stage/DetailTileMap.tscn" type="PackedScene" id=5] [ext_resource path="res://src/stage/SpikeTileMap.tscn" type="PackedScene" id=6] [ext_resource path="res://src/actor/Player.tscn" type="PackedScene" id=7] @@ -98,7 +98,7 @@ 6/name = "crate_tiles.png 6" 6/texture = ExtResource( 11 ) 6/tex_offset = Vector2( 0, 0 ) -6/modulate = Color( 0.670588, 0.321569, 0.211765, 1 ) +6/modulate = Color( 0.678431, 0, 0.156863, 1 ) 6/region = Rect2( 0, 24, 8, 8 ) 6/tile_mode = 0 6/occluder_offset = Vector2( 0, 0 ) @@ -166,8 +166,9 @@ tile_data = PoolIntArray( -524289, 5, 2, -589824, 5, 0, -589823, -1610612731, 2, tile_set = SubResource( 3 ) tile_data = PoolIntArray( -917514, 536870912, 0, -917513, 536870912, 0, -917512, 536870912, 0, -917511, 536870912, 0, -917510, 536870912, 0, -917509, 536870912, 0, -917508, 536870912, 0, -917507, 536870912, 0, -917506, 536870912, 0, -917505, 536870912, 0, -983040, 536870912, 0, -983039, 536870912, 0, -983038, 536870912, 0, -983037, 536870912, 0, -983036, 536870912, 0, -983035, 536870912, 0, -983034, 536870912, 0, -983033, 536870912, 0, -983032, 536870912, 0, -983031, 536870912, 0, -983030, 536870912, 0, -983029, 536870912, 0, -983028, 536870912, 0, -983027, 536870912, 0, -983026, 536870912, 0, -983025, 536870912, 0, -983024, 536870912, 0, -983023, 536870912, 0, -851978, 536870912, 0, -851977, 536870912, 0, -851976, 536870912, 0, -851975, 536870912, 0, -851974, 536870912, 0, -851973, 536870912, 0, -851972, 536870912, 0, -851971, 536870912, 0, -851970, 536870912, 0, -851969, 536870912, 0, -917504, 536870912, 0, -917503, 536870912, 0, -917502, 536870912, 0, -917501, 536870912, 0, -917500, 536870912, 0, -917499, 536870912, 0, -917498, 536870912, 0, -917497, 536870912, 0, -917496, 536870912, 0, -917495, 536870912, 0, -917494, 536870912, 0, -917493, 536870912, 0, -917492, 536870912, 0, -917491, 536870912, 0, -917490, 536870912, 0, -917489, 536870912, 0, -917488, 536870912, 0, -917487, 536870912, 0, -786442, 536870912, 0, -786441, 536870912, 0, -786440, 536870912, 0, -786439, 536870912, 0, -786438, 536870912, 0, -786437, 536870912, 0, -786436, 536870912, 0, -786435, 536870912, 0, -786434, 536870912, 0, -786433, 536870912, 0, -851968, 536870912, 0, -851967, 536870912, 0, -851966, 536870912, 0, -851965, 536870912, 0, -851964, 536870912, 0, -851963, 536870912, 0, -851962, 536870912, 0, -851961, 536870912, 0, -851960, 536870912, 0, -851959, 536870912, 0, -851958, 536870912, 0, -851957, 536870912, 0, -851956, 536870912, 0, -851955, 536870912, 0, -851954, 536870912, 0, -851953, 536870912, 0, -851952, 536870912, 0, -851951, 536870912, 0, -720906, 536870912, 0, -720905, 536870912, 0, -720904, 536870912, 0, -720903, 536870912, 0, -720902, 536870912, 0, -720901, 536870912, 0, -720900, 536870912, 0, -720899, 536870912, 0, -720898, 536870912, 0, -720897, 536870912, 0, -786432, 536870912, 0, -786431, 536870912, 0, -786430, 536870912, 0, -786429, 536870912, 0, -786428, 536870912, 0, -786427, 536870912, 0, -786426, 536870912, 0, -786425, 536870912, 0, -786424, 536870912, 0, -786423, 536870912, 0, -786422, 536870912, 0, -786421, 536870912, 0, -786420, 536870912, 0, -786419, 536870912, 0, -786418, 536870912, 0, -786417, 536870912, 0, -786416, 536870912, 0, -786415, 536870912, 0, -655370, 536870912, 0, -655369, 536870912, 0, -655368, 536870912, 0, -655367, 536870912, 0, -655366, 536870912, 0, -655365, 536870912, 0, -655364, 536870912, 0, -655363, 536870912, 0, -655362, 536870912, 0, -655361, 536870912, 0, -720896, 536870912, 0, -720895, 536870912, 0, -720894, 536870912, 0, -720893, 536870912, 0, -720892, 536870912, 0, -720891, 536870912, 0, -720890, 536870912, 0, -720889, 536870912, 0, -720888, 536870912, 0, -720887, 536870912, 0, -720886, 536870912, 0, -720885, 536870912, 0, -720884, 536870912, 0, -720883, 536870912, 0, -720882, 536870912, 0, -720881, 536870912, 0, -720880, 536870912, 0, -720879, 536870912, 0, -589834, 536870912, 0, -589833, 536870912, 0, -589832, 536870912, 0, -589831, 536870912, 0, -589830, 536870912, 0, -589829, 536870912, 0, -589828, 536870912, 0, -589827, 536870912, 0, -589826, 536870912, 0, -589825, 536870912, 0, -655360, 536870912, 0, -655359, 536870912, 0, -655358, 536870912, 0, -655357, 536870912, 0, -655356, 536870912, 0, -524298, 536870912, 0, -524297, 536870912, 0, -524296, 536870912, 0, -524295, 536870912, 0, -524294, 536870912, 0, -524293, 536870912, 0, -524292, 536870912, 0, -524291, 536870912, 0, -524290, 536870912, 0, -524289, 536870912, 0, -589824, 536870912, 0, -589823, 536870912, 0, -589822, 536870912, 0, -589821, 536870912, 0, -589820, 536870912, 0, -458762, 536870912, 0, -458761, 536870912, 0, -458760, 536870912, 0, -458759, 536870912, 0, -458758, 536870912, 0, -458757, 536870912, 0, -458756, 536870912, 0, -458755, 536870912, 0, -458754, 536870912, 0, -458753, 536870912, 0, -524288, 536870912, 0, -524287, 536870912, 0, -524286, 536870912, 0, -524285, 536870912, 0, -524284, 536870912, 0, -393226, 536870912, 0, -393225, 536870912, 0, -393224, 536870912, 0, -393223, 536870912, 0, -393222, 536870912, 0, -393221, 536870912, 0, -393220, 536870912, 0, -393219, 536870912, 0, -393218, 536870912, 0, -393217, 536870912, 0, -458752, 536870912, 0, -458751, 536870912, 0, -458750, 536870912, 0, -458749, 536870912, 0, -393214, 536870912, 0, -393213, 536870912, 0, -393212, 2, 3 ) -[node name="GameCamera" parent="." instance=ExtResource( 4 )] +[node name="CamBounds" type="Node2D" parent="."] position = Vector2( 32, -24 ) +script = ExtResource( 4 ) [node name="Actors" type="Node2D" parent="."] diff --git a/src/map/1-6.tscn b/src/map/1-6.tscn index 6f65b83..4d65da3 100644 --- a/src/map/1-6.tscn +++ b/src/map/1-6.tscn @@ -3,7 +3,7 @@ [ext_resource path="res://src/stage/SolidTileMap.tscn" type="PackedScene" id=1] [ext_resource path="res://src/actor/Box.tscn" type="PackedScene" id=2] [ext_resource path="res://src/actor/Exit.tscn" type="PackedScene" id=3] -[ext_resource path="res://src/stage/GameCamera.tscn" type="PackedScene" id=4] +[ext_resource path="res://src/stage/CamBounds.gd" type="Script" id=4] [ext_resource path="res://src/stage/DetailTileMap.tscn" type="PackedScene" id=5] [ext_resource path="res://src/stage/SpikeTileMap.tscn" type="PackedScene" id=6] [ext_resource path="res://src/actor/Player.tscn" type="PackedScene" id=7] @@ -98,7 +98,7 @@ 6/name = "crate_tiles.png 6" 6/texture = ExtResource( 11 ) 6/tex_offset = Vector2( 0, 0 ) -6/modulate = Color( 0.670588, 0.321569, 0.211765, 1 ) +6/modulate = Color( 0.678431, 0, 0.156863, 1 ) 6/region = Rect2( 0, 24, 8, 8 ) 6/tile_mode = 0 6/occluder_offset = Vector2( 0, 0 ) @@ -166,8 +166,9 @@ tile_data = PoolIntArray( -524297, 5, 2, -524296, -1610612731, 2, -524292, 10737 tile_set = SubResource( 3 ) tile_data = PoolIntArray( -917517, 536870912, 0, -917516, 536870912, 0, -917515, 536870912, 0, -917514, 536870912, 0, -917513, 536870912, 0, -917512, 536870912, 0, -917511, 536870912, 0, -917510, 536870912, 0, -917509, 536870912, 0, -917508, 536870912, 0, -917507, 536870912, 0, -917506, 536870912, 0, -917505, 536870912, 0, -983040, 536870912, 0, -983039, 536870912, 0, -983038, 536870912, 0, -983037, 536870912, 0, -983036, 536870912, 0, -983035, 536870912, 0, -983034, 536870912, 0, -983033, 536870912, 0, -983032, 536870912, 0, -983031, 536870912, 0, -983030, 536870912, 0, -983029, 536870912, 0, -983028, 536870912, 0, -983027, 536870912, 0, -983026, 536870912, 0, -851981, 536870912, 0, -851980, 536870912, 0, -851979, 536870912, 0, -851978, 536870912, 0, -851977, 536870912, 0, -851976, 536870912, 0, -851975, 536870912, 0, -851974, 536870912, 0, -851973, 536870912, 0, -851972, 536870912, 0, -851971, 536870912, 0, -851970, 536870912, 0, -851969, 536870912, 0, -917504, 536870912, 0, -917503, 536870912, 0, -917502, 536870912, 0, -917501, 536870912, 0, -917500, 536870912, 0, -917499, 536870912, 0, -917498, 536870912, 0, -917497, 536870912, 0, -917496, 536870912, 0, -917495, 536870912, 0, -917494, 536870912, 0, -917493, 536870912, 0, -917492, 536870912, 0, -917491, 536870912, 0, -917490, 536870912, 0, -786445, 536870912, 0, -786444, 536870912, 0, -786443, 536870912, 0, -786442, 536870912, 0, -786441, 536870912, 0, -786440, 536870912, 0, -786439, 536870912, 0, -786438, 536870912, 0, -786437, 536870912, 0, -786436, 536870912, 0, -786435, 536870912, 0, -786434, 536870912, 0, -786433, 536870912, 0, -851968, 536870912, 0, -851967, 536870912, 0, -851966, 536870912, 0, -851965, 536870912, 0, -851964, 536870912, 0, -851963, 536870912, 0, -851962, 536870912, 0, -851961, 536870912, 0, -851960, 536870912, 0, -851959, 536870912, 0, -851958, 536870912, 0, -851957, 536870912, 0, -851956, 536870912, 0, -851955, 536870912, 0, -851954, 536870912, 0, -720909, 536870912, 0, -720908, 536870912, 0, -720907, 536870912, 0, -720906, 536870912, 0, -720905, 536870912, 0, -720904, 536870912, 0, -720903, 536870912, 0, -720902, 536870912, 0, -720901, 536870912, 0, -720900, 536870912, 0, -720899, 536870912, 0, -720898, 536870912, 0, -720897, 536870912, 0, -786432, 536870912, 0, -786431, 536870912, 0, -786430, 536870912, 0, -786429, 536870912, 0, -786428, 536870912, 0, -786427, 536870912, 0, -786426, 536870912, 0, -786425, 536870912, 0, -786424, 536870912, 0, -786423, 536870912, 0, -786422, 536870912, 0, -786421, 536870912, 0, -786420, 536870912, 0, -786419, 536870912, 0, -786418, 536870912, 0, -655373, 536870912, 0, -655372, 536870912, 0, -655371, 536870912, 0, -655370, 536870912, 0, -655369, 536870912, 0, -655368, 536870912, 0, -655367, 536870912, 0, -655366, 536870912, 0, -655365, 536870912, 0, -655364, 536870912, 0, -655363, 536870912, 0, -655362, 536870912, 0, -655361, 536870912, 0, -720896, 536870912, 0, -720895, 536870912, 0, -720894, 536870912, 0, -720893, 536870912, 0, -720892, 536870912, 0, -720891, 536870912, 0, -720890, 536870912, 0, -720889, 536870912, 0, -720888, 536870912, 0, -720887, 536870912, 0, -720886, 536870912, 0, -720885, 536870912, 0, -720884, 536870912, 0, -720883, 536870912, 0, -720882, 536870912, 0, -589837, 536870912, 0, -589836, 536870912, 0, -589835, 536870912, 0, -589834, 536870912, 0, -589833, 536870912, 0, -589832, 536870912, 0, -589831, 536870912, 0, -655354, 536870912, 0, -655353, 536870912, 0, -655352, 536870912, 0, -655351, 536870912, 0, -655350, 536870912, 0, -655349, 536870912, 0, -655348, 536870912, 0, -655347, 536870912, 0, -655346, 536870912, 0, -524301, 536870912, 0, -524300, 536870912, 0, -524299, 536870912, 0, -524298, 536870912, 0, -524297, 536870912, 0, -524296, 536870912, 0, -524295, 536870912, 0, -589818, 536870912, 0, -589817, 536870912, 0, -589816, 536870912, 0, -589815, 536870912, 0, -589814, 536870912, 0, -589813, 536870912, 0, -589812, 536870912, 0, -589811, 536870912, 0, -589810, 536870912, 0, -458765, 536870912, 0, -458764, 536870912, 0, -458763, 536870912, 0, -458762, 536870912, 0, -458761, 536870912, 0, -458760, 536870912, 0, -458759, 536870912, 0, -524282, 536870912, 0, -524281, 536870912, 0, -524280, 536870912, 0, -524279, 536870912, 0, -524278, 536870912, 0, -524277, 0, 0, -524276, 0, 0, -524275, 536870912, 0, -524274, 536870912, 0, -393229, 536870912, 0, -393228, 536870912, 0, -393227, 536870912, 0, -393226, 536870912, 0, -393225, 536870912, 0, -393224, 536870912, 0, -393223, 536870912, 0, -458745, 536870912, 0, -458744, 536870912, 0, -458743, 536870912, 0, -458742, 536870912, 0, -458741, 0, 0, -458740, 0, 0, -458739, 536870912, 0, -458738, 536870912, 0, -327693, 536870912, 0, -327692, 536870912, 0, -327691, 536870912, 0, -327690, 536870912, 0, -327689, 536870912, 0, -327688, 536870912, 0, -327687, 536870912, 0, -393210, 536870912, 0, -393209, 536870912, 0, -393208, 536870912, 0, -393207, 536870912, 0, -393206, 536870912, 0, -393205, 536870912, 0, -393204, 536870912, 0, -393203, 536870912, 0, -393202, 536870912, 0, -262152, 2, 3, -262151, 536870914, 2, -327674, 536870912, 0, -327673, 536870912, 0, -327672, 536870912, 0, -327671, 536870912, 0, -327670, 536870912, 0, -327669, 536870912, 0, -327668, 536870912, 0, -327667, 536870912, 0, -327666, 536870912, 0 ) -[node name="GameCamera" parent="." instance=ExtResource( 4 )] +[node name="CamBounds" type="Node2D" parent="."] position = Vector2( 8, -24 ) +script = ExtResource( 4 ) [node name="Actors" type="Node2D" parent="."] @@ -191,5 +192,3 @@ position = Vector2( -35, 16 ) [node name="Note" parent="Actors" instance=ExtResource( 10 )] position = Vector2( 91, -61 ) - -[editable path="GameCamera"] diff --git a/src/map/1-7.tscn b/src/map/1-7.tscn index a9c677d..2ce8e7c 100644 --- a/src/map/1-7.tscn +++ b/src/map/1-7.tscn @@ -3,7 +3,7 @@ [ext_resource path="res://src/stage/SolidTileMap.tscn" type="PackedScene" id=1] [ext_resource path="res://src/actor/Box.tscn" type="PackedScene" id=2] [ext_resource path="res://src/actor/Exit.tscn" type="PackedScene" id=3] -[ext_resource path="res://src/stage/GameCamera.tscn" type="PackedScene" id=4] +[ext_resource path="res://src/stage/CamBounds.gd" type="Script" id=4] [ext_resource path="res://src/stage/DetailTileMap.tscn" type="PackedScene" id=5] [ext_resource path="res://src/stage/SpikeTileMap.tscn" type="PackedScene" id=6] [ext_resource path="res://src/actor/Player.tscn" type="PackedScene" id=7] @@ -98,7 +98,7 @@ 6/name = "crate_tiles.png 6" 6/texture = ExtResource( 11 ) 6/tex_offset = Vector2( 0, 0 ) -6/modulate = Color( 0.670588, 0.321569, 0.211765, 1 ) +6/modulate = Color( 0.678431, 0, 0.156863, 1 ) 6/region = Rect2( 0, 24, 8, 8 ) 6/tile_mode = 0 6/occluder_offset = Vector2( 0, 0 ) @@ -166,8 +166,9 @@ tile_data = PoolIntArray( -589834, 536870916, 3, -589833, 4, 0, -589832, 4, 1, - tile_set = SubResource( 3 ) tile_data = PoolIntArray( -983052, 536870912, 0, -983051, 536870912, 0, -983050, 536870912, 0, -983049, 536870912, 0, -983048, 536870912, 0, -983047, 536870912, 0, -983046, 536870912, 0, -983045, 536870912, 0, -983044, 536870912, 0, -983043, 536870912, 0, -983042, 536870912, 0, -983041, 536870912, 0, -1048576, 536870912, 0, -1048575, 536870912, 0, -1048574, 536870912, 0, -1048573, 536870912, 0, -1048572, 536870912, 0, -1048571, 536870912, 0, -1048570, 536870912, 0, -1048569, 536870912, 0, -1048568, 536870912, 0, -1048567, 536870912, 0, -1048566, 536870912, 0, -1048565, 536870912, 0, -1048564, 536870912, 0, -1048563, 536870912, 0, -1048562, 536870912, 0, -1048561, 536870912, 0, -917516, 536870912, 0, -917515, 536870912, 0, -917514, 536870912, 0, -917513, 536870912, 0, -917512, 536870912, 0, -917511, 536870912, 0, -917510, 536870912, 0, -917509, 536870912, 0, -917508, 536870912, 0, -917507, 536870912, 0, -917506, 536870912, 0, -917505, 536870912, 0, -983040, 536870912, 0, -983039, 536870912, 0, -983038, 536870912, 0, -983037, 536870912, 0, -983036, 536870912, 0, -983035, 536870912, 0, -983034, 536870912, 0, -983033, 536870912, 0, -983032, 536870912, 0, -983031, 536870912, 0, -983030, 536870912, 0, -983029, 536870912, 0, -983028, 536870912, 0, -983027, 536870912, 0, -983026, 536870912, 0, -983025, 536870912, 0, -851980, 536870912, 0, -851979, 536870912, 0, -851978, 536870912, 0, -851977, 536870912, 0, -851976, 536870912, 0, -851975, 536870912, 0, -851974, 536870912, 0, -851973, 536870912, 0, -851972, 536870912, 0, -851971, 536870912, 0, -851970, 536870912, 0, -851969, 536870912, 0, -917504, 536870912, 0, -917503, 536870912, 0, -917502, 536870912, 0, -917501, 536870912, 0, -917500, 536870912, 0, -917499, 536870912, 0, -917498, 536870912, 0, -917497, 536870912, 0, -917496, 536870912, 0, -917495, 536870912, 0, -917494, 536870912, 0, -917493, 536870912, 0, -917492, 536870912, 0, -917491, 536870912, 0, -917490, 536870912, 0, -917489, 536870912, 0, -786444, 536870912, 0, -786443, 536870912, 0, -786442, 536870912, 0, -786441, 536870912, 0, -786440, 536870912, 0, -786439, 536870912, 0, -786438, 536870912, 0, -786437, 536870912, 0, -786436, 536870912, 0, -786435, 536870912, 0, -786434, 536870912, 0, -786433, 536870912, 0, -851968, 536870912, 0, -851967, 536870912, 0, -851966, 536870912, 0, -851965, 536870912, 0, -851964, 536870912, 0, -851963, 536870912, 0, -851962, 536870912, 0, -851961, 536870912, 0, -851960, 536870912, 0, -851959, 536870912, 0, -851958, 536870912, 0, -851957, 536870912, 0, -851956, 536870912, 0, -851955, 536870912, 0, -851954, 536870912, 0, -851953, 536870912, 0, -720908, 536870912, 0, -720907, 536870912, 0, -720906, 536870912, 0, -720905, 536870912, 0, -720904, 536870912, 0, -720903, 536870912, 0, -720902, 536870912, 0, -720901, 536870912, 0, -720900, 536870912, 0, -720899, 536870912, 0, -720898, 536870912, 0, -720897, 536870912, 0, -786432, 536870912, 0, -786431, 536870912, 0, -786430, 536870912, 0, -786429, 536870912, 0, -786428, 536870912, 0, -786427, 536870912, 0, -786426, 536870912, 0, -786425, 536870912, 0, -786424, 536870912, 0, -786423, 536870912, 0, -786422, 536870912, 0, -786421, 536870912, 0, -786420, 536870912, 0, -786419, 536870912, 0, -786418, 536870912, 0, -786417, 536870912, 0, -655372, 536870912, 0, -655371, 536870912, 0, -655370, 536870912, 0, -655369, 536870912, 0, -655368, 536870912, 0, -655367, 536870912, 0, -655366, 536870912, 0, -655365, 536870912, 0, -720884, 536870912, 0, -720883, 536870912, 0, -720882, 536870912, 0, -720881, 536870912, 0, -589836, 536870912, 0, -589835, 536870912, 0, -589834, 536870912, 0, -589833, 536870912, 0, -589832, 536870912, 0, -589831, 536870912, 0, -589830, 536870912, 0, -589829, 536870912, 0, -655348, 536870912, 0, -655347, 536870912, 0, -655346, 536870912, 0, -655345, 536870912, 0, -524300, 536870912, 0, -524299, 536870912, 0, -524298, 536870912, 0, -524297, 536870912, 0, -524296, 536870912, 0, -524295, 536870912, 0, -524294, 536870912, 0, -524293, 536870912, 0, -589812, 536870912, 0, -589811, 536870912, 0, -589810, 536870912, 0, -589809, 536870912, 0, -524277, 2, 3, -524276, 536870914, 2, -524275, 536870912, 0, -524274, 536870912, 0, -524273, 536870912, 0 ) -[node name="GameCamera" parent="." instance=ExtResource( 4 )] +[node name="CamBounds" type="Node2D" parent="."] position = Vector2( 16, -40 ) +script = ExtResource( 4 ) [node name="Actors" type="Node2D" parent="."] @@ -194,5 +195,3 @@ position = Vector2( 82, -48 ) [node name="Note" parent="Actors" instance=ExtResource( 10 )] position = Vector2( -69, -93 ) - -[editable path="GameCamera"] diff --git a/src/map/1-8.tscn b/src/map/1-8.tscn index 3078ef4..906391f 100644 --- a/src/map/1-8.tscn +++ b/src/map/1-8.tscn @@ -3,7 +3,7 @@ [ext_resource path="res://src/stage/SolidTileMap.tscn" type="PackedScene" id=1] [ext_resource path="res://src/actor/Box.tscn" type="PackedScene" id=2] [ext_resource path="res://src/actor/Exit.tscn" type="PackedScene" id=3] -[ext_resource path="res://src/stage/GameCamera.tscn" type="PackedScene" id=4] +[ext_resource path="res://src/stage/CamBounds.gd" type="Script" id=4] [ext_resource path="res://src/stage/DetailTileMap.tscn" type="PackedScene" id=5] [ext_resource path="res://src/stage/SpikeTileMap.tscn" type="PackedScene" id=6] [ext_resource path="res://src/actor/Player.tscn" type="PackedScene" id=7] @@ -98,7 +98,7 @@ 6/name = "crate_tiles.png 6" 6/texture = ExtResource( 11 ) 6/tex_offset = Vector2( 0, 0 ) -6/modulate = Color( 0.670588, 0.321569, 0.211765, 1 ) +6/modulate = Color( 0.678431, 0, 0.156863, 1 ) 6/region = Rect2( 0, 24, 8, 8 ) 6/tile_mode = 0 6/occluder_offset = Vector2( 0, 0 ) @@ -166,8 +166,9 @@ tile_data = PoolIntArray( -786436, 5, 2, -786435, 536870917, 0, -786434, 5368709 tile_set = SubResource( 3 ) tile_data = PoolIntArray( -1048590, 536870912, 0, -1048589, 536870912, 0, -1048588, 536870912, 0, -1048587, 536870912, 0, -1048586, 536870912, 0, -1048585, 536870912, 0, -1048584, 536870912, 0, -1048583, 536870912, 0, -1048582, 536870912, 0, -1048581, 536870912, 0, -1048580, 536870912, 0, -1048579, 536870912, 0, -1048578, 536870912, 0, -1048577, 536870912, 0, -1114112, 536870912, 0, -1114111, 536870912, 0, -1114110, 536870912, 0, -1114109, 536870912, 0, -1114108, 536870912, 0, -1114107, 536870912, 0, -1114106, 536870912, 0, -1114105, 536870912, 0, -1114104, 536870912, 0, -1114103, 536870912, 0, -1114102, 536870912, 0, -1114101, 536870912, 0, -1114100, 536870912, 0, -1114099, 536870912, 0, -983054, 536870912, 0, -983053, 536870912, 0, -983052, 536870912, 0, -983051, 536870912, 0, -983050, 536870912, 0, -983049, 536870912, 0, -983048, 536870912, 0, -983047, 536870912, 0, -983046, 536870912, 0, -983045, 536870912, 0, -983044, 536870912, 0, -983043, 536870912, 0, -983042, 536870912, 0, -983041, 536870912, 0, -1048576, 536870912, 0, -1048575, 536870912, 0, -1048574, 536870912, 0, -1048573, 536870912, 0, -1048572, 536870912, 0, -1048571, 536870912, 0, -1048570, 536870912, 0, -1048569, 536870912, 0, -1048568, 536870912, 0, -1048567, 536870912, 0, -1048566, 536870912, 0, -1048565, 536870912, 0, -1048564, 536870912, 0, -1048563, 536870912, 0, -917518, 536870912, 0, -917517, 536870912, 0, -917516, 536870912, 0, -917515, 536870912, 0, -917514, 536870912, 0, -917513, 536870912, 0, -917512, 536870912, 0, -917511, 536870912, 0, -917510, 536870912, 0, -917509, 536870912, 0, -917508, 536870912, 0, -917507, 536870912, 0, -917506, 536870912, 0, -917505, 536870912, 0, -983040, 536870912, 0, -983039, 536870912, 0, -983038, 536870912, 0, -983037, 536870912, 0, -983036, 536870912, 0, -983035, 536870912, 0, -983034, 536870912, 0, -983033, 536870912, 0, -983032, 536870912, 0, -983031, 536870912, 0, -983030, 536870912, 0, -983029, 536870912, 0, -983028, 536870912, 0, -983027, 536870912, 0, -851982, 536870912, 0, -851981, 536870912, 0, -851980, 536870912, 0, -851979, 536870912, 0, -851978, 536870912, 0, -851977, 536870912, 0, -851976, 536870912, 0, -851975, 536870912, 0, -851974, 536870912, 0, -851973, 536870912, 0, -851972, 536870912, 0, -851971, 536870912, 0, -851970, 536870912, 0, -851969, 536870912, 0, -917504, 536870912, 0, -917503, 536870912, 0, -917502, 536870912, 0, -917501, 536870912, 0, -917500, 536870912, 0, -917499, 536870912, 0, -917498, 536870912, 0, -917497, 536870912, 0, -917496, 536870912, 0, -917495, 536870912, 0, -917494, 536870912, 0, -917493, 536870912, 0, -917492, 536870912, 0, -917491, 536870912, 0, -786446, 536870912, 0, -786445, 536870912, 0, -786444, 536870912, 0, -786443, 536870912, 0, -786442, 536870912, 0, -786441, 536870912, 0, -786440, 536870912, 0, -786439, 536870912, 0, -786438, 536870912, 0, -786437, 536870912, 0, -786436, 536870912, 0, -786435, 536870912, 0, -786434, 536870912, 0, -786433, 536870912, 0, -851968, 536870912, 0, -851967, 536870912, 0, -851966, 536870912, 0, -851965, 536870912, 0, -851964, 536870912, 0, -851963, 536870912, 0, -851962, 536870912, 0, -851961, 536870912, 0, -851960, 536870912, 0, -851959, 536870912, 0, -851958, 536870912, 0, -851957, 536870912, 0, -851956, 536870912, 0, -851955, 536870912, 0, -720910, 536870912, 0, -720909, 536870912, 0, -720908, 536870912, 0, -720907, 536870912, 0, -720906, 536870912, 0, -720905, 536870912, 0, -720904, 536870912, 0, -786425, 536870912, 0, -786424, 536870912, 0, -786423, 536870912, 0, -786422, 536870912, 0, -786421, 536870912, 0, -786420, 536870912, 0, -786419, 536870912, 0, -655374, 536870912, 0, -655373, 536870912, 0, -655372, 536870912, 0, -655371, 536870912, 0, -655370, 536870912, 0, -655369, 536870912, 0, -655368, 536870912, 0, -720889, 536870912, 0, -720888, 536870912, 0, -720887, 536870912, 0, -720886, 536870912, 0, -720885, 536870912, 0, -720884, 536870912, 0, -720883, 536870912, 0, -589838, 536870912, 0, -589837, 536870912, 0, -589836, 536870912, 0, -589835, 536870912, 0, -589834, 536870912, 0, -589833, 536870912, 0, -589832, 536870912, 0, -655353, 536870912, 0, -655352, 536870912, 0, -655351, 536870912, 0, -655350, 536870912, 0, -655349, 536870912, 0, -655348, 536870912, 0, -655347, 536870912, 0, -524297, 2, 3, -524296, 536870914, 2 ) -[node name="GameCamera" parent="." instance=ExtResource( 4 )] +[node name="CamBounds" type="Node2D" parent="."] position = Vector2( 0, -48 ) +script = ExtResource( 4 ) [node name="Actors" type="Node2D" parent="."] @@ -197,5 +198,3 @@ position = Vector2( 56, -24 ) [node name="Note" parent="Actors" instance=ExtResource( 10 )] position = Vector2( 67, -93 ) - -[editable path="GameCamera"] diff --git a/src/map/2-1.tscn b/src/map/2-1.tscn index e0723d6..f654b75 100644 --- a/src/map/2-1.tscn +++ b/src/map/2-1.tscn @@ -2,7 +2,7 @@ [ext_resource path="res://src/stage/SolidTileMap.tscn" type="PackedScene" id=1] [ext_resource path="res://src/actor/Exit.tscn" type="PackedScene" id=2] -[ext_resource path="res://src/stage/GameCamera.tscn" type="PackedScene" id=3] +[ext_resource path="res://src/stage/CamBounds.gd" type="Script" id=3] [ext_resource path="res://src/stage/DetailTileMap.tscn" type="PackedScene" id=4] [ext_resource path="res://src/stage/SpikeTileMap.tscn" type="PackedScene" id=5] [ext_resource path="res://src/actor/Player.tscn" type="PackedScene" id=6] @@ -173,8 +173,9 @@ tile_set = SubResource( 3 ) tile_data = PoolIntArray( -655369, 536870912, 0, -655368, 536870912, 0, -655367, 536870912, 0, -655366, 536870912, 0, -655365, 536870912, 0, -655364, 536870912, 0, -655363, 536870912, 0, -655362, 536870912, 0, -655361, 536870912, 0, -720896, 536870912, 0, -720895, 536870912, 0, -720894, 536870912, 0, -720893, 536870912, 0, -720892, 536870912, 0, -720891, 536870912, 0, -720890, 536870912, 0, -720889, 536870912, 0, -720888, 536870912, 0, -720887, 536870912, 0, -720886, 536870912, 0, -720885, 536870912, 0, -720884, 536870912, 0, -720883, 536870912, 0, -720882, 536870912, 0, -720881, 536870912, 0, -720880, 536870912, 0, -720879, 536870912, 0, -720878, 536870912, 0, -589833, 536870912, 0, -589832, 536870912, 0, -589831, 536870912, 0, -589830, 536870912, 0, -589829, 536870912, 0, -589828, 536870912, 0, -589827, 536870912, 0, -589826, 536870912, 0, -589825, 536870912, 0, -655360, 536870912, 0, -655359, 536870912, 0, -655358, 536870912, 0, -655357, 536870912, 0, -655356, 536870912, 0, -655355, 536870912, 0, -655354, 536870912, 0, -655353, 536870912, 0, -655352, 536870912, 0, -655351, 536870912, 0, -655350, 536870912, 0, -655349, 536870912, 0, -655348, 536870912, 0, -655347, 536870912, 0, -655346, 536870912, 0, -655345, 536870912, 0, -655344, 536870912, 0, -655343, 536870912, 0, -655342, 536870912, 0, -524297, 536870912, 0, -524296, 536870912, 0, -524295, 536870912, 0, -524294, 536870912, 0, -524293, 536870912, 0, -524292, 536870912, 0, -524291, 536870912, 0, -524290, 536870912, 0, -524289, 536870912, 0, -589824, 536870912, 0, -589823, 536870912, 0, -589822, 536870912, 0, -589821, 536870912, 0, -589820, 536870912, 0, -589819, 536870912, 0, -589818, 536870912, 0, -589817, 536870912, 0, -589816, 536870912, 0, -589815, 536870912, 0, -589814, 536870912, 0, -589813, 536870912, 0, -589812, 536870912, 0, -589811, 536870912, 0, -589810, 536870912, 0, -589809, 536870912, 0, -589808, 536870912, 0, -589807, 536870912, 0, -589806, 536870912, 0, -458761, 536870912, 0, -458760, 536870912, 0, -458759, 536870912, 0, -458758, 536870912, 0, -458757, 536870912, 0, -458756, 536870912, 0, -458755, 536870912, 0, -458754, 536870912, 0, -458753, 536870912, 0, -524288, 536870912, 0, -524287, 536870912, 0, -524286, 536870912, 0, -524285, 536870912, 0, -524284, 536870912, 0, -524283, 536870912, 0, -524282, 536870912, 0, -524281, 536870912, 0, -524280, 536870912, 0, -524279, 536870912, 0, -524278, 536870912, 0, -524277, 536870912, 0, -524276, 536870912, 0, -524275, 536870912, 0, -524274, 536870912, 0, -524273, 536870912, 0, -524272, 536870912, 0, -524271, 536870912, 0, -524270, 536870912, 0, -393225, 536870912, 0, -393224, 536870912, 0, -393223, 536870912, 0, -393222, 536870912, 0, -393221, 536870912, 0, -393220, 536870912, 0, -393219, 536870912, 0, -393218, 536870912, 0, -393217, 536870912, 0, -458752, 536870912, 0, -458751, 536870912, 0, -458750, 536870912, 0, -458749, 536870912, 0, -458748, 536870912, 0, -458747, 536870912, 0, -458746, 536870912, 0, -458745, 536870912, 0, -458744, 536870912, 0, -458743, 536870912, 0, -458742, 536870912, 0, -458741, 536870912, 0, -458740, 536870912, 0, -458739, 536870912, 0, -458738, 536870912, 0, -458737, 536870912, 0, -458736, 536870912, 0, -458735, 536870912, 0, -458734, 536870912, 0, -327689, 536870912, 0, -327688, 536870912, 0, -327687, 536870912, 0, -327686, 536870912, 0, -393212, 536870912, 0, -393201, 536870912, 0, -393200, 536870912, 0, -393199, 536870912, 0, -393198, 536870912, 0, -262153, 536870912, 0, -262152, 536870912, 0, -262151, 536870912, 0, -262150, 536870912, 0, -262149, 536870914, 3, -327677, 536870914, 2, -327676, 536870912, 0, -327675, 2, 2, -327665, 536870912, 0, -327664, 536870912, 0, -327663, 536870912, 0, -327662, 536870912, 0, -196617, 536870912, 0, -196616, 536870912, 0, -196615, 536870912, 0, -196614, 536870912, 0, -196613, 2, 3, -262129, 536870912, 0, -262128, 536870912, 0, -262127, 536870912, 0, -262126, 536870912, 0 ) tile_color = Color( 0.768627, 0.407843, 0.454902, 1 ) -[node name="GameCamera" parent="." instance=ExtResource( 3 )] +[node name="CamBounds" type="Node2D" parent="."] position = Vector2( 40, -16 ) +script = ExtResource( 3 ) [node name="Actors" type="Node2D" parent="."] @@ -186,5 +187,3 @@ position = Vector2( 125, -11 ) [node name="Note" parent="Actors" instance=ExtResource( 9 )] position = Vector2( 67, -69 ) - -[editable path="GameCamera"] diff --git a/src/map/2-2.tscn b/src/map/2-2.tscn index 41f7df1..ba06484 100644 --- a/src/map/2-2.tscn +++ b/src/map/2-2.tscn @@ -2,7 +2,7 @@ [ext_resource path="res://src/stage/SolidTileMap.tscn" type="PackedScene" id=1] [ext_resource path="res://src/actor/Exit.tscn" type="PackedScene" id=2] -[ext_resource path="res://src/stage/GameCamera.tscn" type="PackedScene" id=3] +[ext_resource path="res://src/stage/CamBounds.gd" type="Script" id=3] [ext_resource path="res://src/stage/DetailTileMap.tscn" type="PackedScene" id=4] [ext_resource path="res://src/stage/SpikeTileMap.tscn" type="PackedScene" id=5] [ext_resource path="res://src/actor/Player.tscn" type="PackedScene" id=6] @@ -177,8 +177,9 @@ tile_set = SubResource( 3 ) tile_data = PoolIntArray( -851977, 536870912, 0, -851976, 536870912, 0, -851975, 536870912, 0, -851974, 536870912, 0, -851973, 536870912, 0, -851972, 536870912, 0, -851971, 536870912, 0, -851970, 536870912, 0, -851969, 536870912, 0, -917504, 536870912, 0, -917503, 536870912, 0, -917502, 536870912, 0, -917501, 536870912, 0, -917500, 536870912, 0, -917499, 536870912, 0, -917498, 536870912, 0, -917497, 536870912, 0, -917496, 536870912, 0, -917495, 536870912, 0, -917494, 536870912, 0, -917493, 536870912, 0, -917492, 536870912, 0, -917491, 536870912, 0, -917490, 536870912, 0, -917489, 536870912, 0, -917488, 536870912, 0, -917487, 536870912, 0, -917486, 536870912, 0, -786441, 536870912, 0, -786440, 536870912, 0, -786439, 536870912, 0, -786438, 536870912, 0, -786437, 536870912, 0, -786436, 536870912, 0, -786435, 536870912, 0, -786434, 536870912, 0, -786433, 536870912, 0, -851968, 536870912, 0, -851967, 536870912, 0, -851966, 536870912, 0, -851965, 536870912, 0, -851964, 536870912, 0, -851963, 536870912, 0, -851962, 536870912, 0, -851961, 536870912, 0, -851960, 536870912, 0, -851959, 536870912, 0, -851958, 536870912, 0, -851957, 536870912, 0, -851956, 536870912, 0, -851955, 536870912, 0, -851954, 536870912, 0, -851953, 536870912, 0, -851952, 536870912, 0, -851951, 536870912, 0, -851950, 536870912, 0, -720905, 536870912, 0, -720904, 536870912, 0, -720903, 536870912, 0, -720902, 536870912, 0, -720901, 536870912, 0, -720900, 536870912, 0, -720899, 536870912, 0, -720898, 536870912, 0, -720897, 536870912, 0, -786432, 536870912, 0, -786431, 536870912, 0, -786430, 536870912, 0, -786429, 536870912, 0, -786428, 536870912, 0, -786427, 536870912, 0, -786426, 536870912, 0, -786425, 536870912, 0, -786424, 536870912, 0, -786423, 536870912, 0, -786422, 536870912, 0, -786421, 536870912, 0, -786420, 536870912, 0, -786419, 536870912, 0, -786418, 536870912, 0, -786417, 536870912, 0, -786416, 536870912, 0, -786415, 536870912, 0, -786414, 536870912, 0, -655369, 536870912, 0, -655368, 536870912, 0, -655367, 536870912, 0, -655366, 536870912, 0, -655365, 536870912, 0, -655364, 536870912, 0, -655363, 536870912, 0, -655362, 536870912, 0, -655361, 536870912, 0, -720896, 536870912, 0, -720895, 536870912, 0, -720894, 536870912, 0, -720893, 536870912, 0, -720892, 536870912, 0, -720891, 536870912, 0, -720890, 536870912, 0, -720889, 536870912, 0, -720888, 536870912, 0, -720887, 536870912, 0, -720886, 536870912, 0, -720885, 536870912, 0, -720884, 536870912, 0, -720883, 536870912, 0, -720882, 536870912, 0, -720881, 536870912, 0, -720880, 536870912, 0, -720879, 536870912, 0, -720878, 536870912, 0, -589833, 536870912, 0, -589832, 536870912, 0, -589831, 536870912, 0, -589830, 536870912, 0, -589829, 536870912, 0, -589828, 536870912, 0, -589827, 536870912, 0, -589826, 536870912, 0, -589825, 536870912, 0, -655360, 536870912, 0, -655359, 536870912, 0, -655358, 536870912, 0, -655357, 536870912, 0, -655356, 536870912, 0, -655355, 536870912, 0, -655354, 536870912, 0, -655353, 536870912, 0, -655352, 536870912, 0, -655351, 536870912, 0, -655350, 536870912, 0, -655349, 536870912, 0, -655348, 536870912, 0, -655347, 536870912, 0, -655346, 536870912, 0, -655345, 536870912, 0, -655344, 536870912, 0, -655343, 536870912, 0, -655342, 536870912, 0, -524297, 536870912, 0, -524296, 536870912, 0, -524295, 536870912, 0, -524294, 536870912, 0, -524293, 536870912, 0, -524292, 536870912, 0, -524291, 536870912, 0, -524290, 536870912, 0, -524289, 536870912, 0, -589824, 536870912, 0, -589823, 536870912, 0, -589822, 536870912, 0, -589809, 536870912, 0, -589808, 536870912, 0, -589807, 536870912, 0, -589806, 536870912, 0, -458761, 536870912, 0, -458760, 536870912, 0, -458759, 536870912, 0, -458758, 536870912, 0, -458757, 536870912, 0, -458756, 536870912, 0, -458755, 536870912, 0, -458754, 536870912, 0, -458753, 536870912, 0, -524288, 536870912, 0, -524287, 536870912, 0, -524286, 536870912, 0, -524274, 536870914, 2, -524273, 536870912, 0, -524272, 536870912, 0, -524271, 536870912, 0, -524270, 536870912, 0, -393225, 536870912, 0, -393224, 536870912, 0, -393223, 536870912, 0, -458738, 2, 3, -458737, 536870912, 0, -458736, 536870912, 0, -458735, 536870912, 0, -458734, 536870912, 0, -327689, 536870912, 0, -327688, 536870912, 0, -327687, 536870912, 0, -393202, 536870914, 2, -393201, 536870912, 0, -393200, 536870912, 0, -393199, 536870912, 0, -393198, 536870912, 0, -262153, 536870912, 0, -262152, 536870912, 0, -262151, 536870912, 0 ) tile_color = Color( 0.768627, 0.407843, 0.454902, 1 ) -[node name="GameCamera" parent="." instance=ExtResource( 3 )] +[node name="CamBounds" type="Node2D" parent="."] position = Vector2( 40, -20 ) +script = ExtResource( 3 ) [node name="Actors" type="Node2D" parent="."] @@ -193,5 +194,3 @@ position = Vector2( -51, -8 ) [node name="Note" parent="Actors" instance=ExtResource( 10 )] position = Vector2( -61, -77 ) - -[editable path="GameCamera"] diff --git a/src/map/2-3.tscn b/src/map/2-3.tscn index 9c5c64e..2049686 100644 --- a/src/map/2-3.tscn +++ b/src/map/2-3.tscn @@ -2,7 +2,6 @@ [ext_resource path="res://src/stage/SolidTileMap.tscn" type="PackedScene" id=1] [ext_resource path="res://src/actor/Exit.tscn" type="PackedScene" id=2] -[ext_resource path="res://src/stage/GameCamera.tscn" type="PackedScene" id=3] [ext_resource path="res://src/stage/DetailTileMap.tscn" type="PackedScene" id=4] [ext_resource path="res://src/stage/SpikeTileMap.tscn" type="PackedScene" id=5] [ext_resource path="res://src/actor/Player.tscn" type="PackedScene" id=6] @@ -14,6 +13,7 @@ [ext_resource path="res://media/image/8pixel.png" type="Texture" id=12] [ext_resource path="res://media/image/solid_bricks.png" type="Texture" id=13] [ext_resource path="res://media/image/bricks.png" type="Texture" id=14] +[ext_resource path="res://src/stage/CamBounds.gd" type="Script" id=15] [sub_resource type="TileSet" id=1] 0/name = "solid_bricks.png 0" @@ -171,15 +171,15 @@ tile_set = SubResource( 2 ) tile_data = PoolIntArray( -458766, 536870916, 3, -458765, 536870916, 0, -458764, 4, 1, -458763, 4, 3, -458758, 5, 2, -458757, 5, 0, -458756, 536870917, 2, -524282, 5, 2, -524281, 5, 0, -524280, 5, 0, -524279, 5, 0, -524278, 5, 0, -524277, 536870917, 2, -393230, 4, 0, -393217, 5, 2, -458752, 536870917, 2, -458737, 536870916, 1, -458736, 536870916, 0, -458735, 4, 3, -327694, 4, 2, -327692, 4, 1, -327691, 4, 3, -327688, 6, 0, -327685, 1073741829, 2, -327684, 5, 0, -327683, 1610612741, 2, -393211, 1073741829, 2, -393210, 5, 0, -393209, 1610612741, 2, -393206, 1073741829, 2, -393205, 6, 0, -393204, 5, 0, -393203, 1610612741, 2, -393201, 4, 0, -393200, 536870916, 1, -393199, 536870916, 2, -393197, -2147483643, 2, -262156, 4, 0, -262155, 536870916, 2, -262153, 5, 2, -262152, 5, 0, -262151, -1610612731, 2, -262145, 4, 2, -327680, 536870916, 0, -327679, 4, 3, -327669, 6, 0, -327661, -1073741819, 0, -196617, -1073741819, 0, -196616, -1073741819, 0, -196615, -1073741819, 0, -196613, 4, 2, -196612, 4, 3, -196610, 536870916, 3, -196609, 4, 0, -262144, 536870916, 1, -262143, 4, 3, -262141, 5, 2, -262140, 5, 0, -262139, -1610612731, 2, -262134, 5, 2, -262133, 5, 0, -262132, -1610612731, 2, -262130, 536870916, 3, -262129, 4, 0, -262128, 4, 0, -262127, 4, 3, -262125, -1073741819, 2, -131081, -1073741819, 2, -131080, -1073741819, 0, -131079, 1610612741, 2, -131077, 4, 2, -131076, 4, 3, -131074, 4, 2, -131073, 536870916, 2, -196608, 536870916, 3, -196607, 4, 3, -196605, 5, 0, -196604, 5, 0, -196603, 5, 0, -196601, 536870916, 3, -196600, 536870916, 2, -196598, -1073741819, 2, -196597, 5, 0, -196596, 1610612741, 2, -196594, 4, 2, -196593, 536870916, 2, -196592, 4, 2, -196591, 4, 3, -65550, 536870916, 3, -65549, 536870916, 1, -65548, 4, 0, -65547, 4, 3, -65538, 4, 2, -65537, 536870916, 0, -131072, 536870916, 1, -131071, 4, 3, -131069, -1073741819, 2, -131068, 5, 0, -131067, 1610612741, 2, -131065, 536870916, 3, -131064, 536870916, 2, -131058, 4, 2, -131057, 4, 3, -131056, 536870916, 3, -131055, 536870916, 2, -14, 536870916, 1, -13, 4, 0, -12, 536870916, 1, -11, 4, 0, -10, 4, 3, -5, 5, 0, -2, 4, 2, -1, 536870916, 1, -65536, 4, 0, -65535, 4, 3, -65532, 6, 0, -65522, 536870916, 3, -65521, 4, 0, -65520, 4, 0, -65519, 4, 3, 65531, 6, 0, 4, 6, 0, 5, -1610612731, 2, 9, 5, 2, 131058, 4, 2, 131059, 536870916, 1, 131060, 4, 0, 131061, 536870916, 1, 131062, 536870916, 2, 131067, 6, 0, 131071, 1073741829, 2, 65536, 1610612741, 2, 65540, 6, 0, 65545, 6, 0, 196594, 4, 2, 196595, 4, 0, 196596, 4, 1, 196597, 536870916, 2, 262136, 1073741829, 2, 262137, 5, 0, 262138, 5, 0, 262139, 5, 0, 262140, 1610612741, 2, 196612, 1073741829, 2, 196613, 5, 0, 196614, 5, 0, 196615, 5, 0, 196616, 5, 0, 196617, 1610612741, 2 ) brick_color = Color( 0.239216, 0.109804, 0.184314, 1 ) grass_color = Color( 0.741176, 0.580392, 0, 1 ) -wood_color = Color( 0.678431, 0, 0.156863, 1 ) [node name="ObscureMap" parent="." instance=ExtResource( 9 )] tile_set = SubResource( 3 ) tile_data = PoolIntArray( -786448, 536870912, 0, -786447, 536870912, 0, -786446, 536870912, 0, -786445, 536870912, 0, -786444, 536870912, 0, -786443, 536870912, 0, -786442, 536870912, 0, -786441, 536870912, 0, -786440, 536870912, 0, -786439, 536870912, 0, -786438, 536870912, 0, -786437, 536870912, 0, -786436, 536870912, 0, -786435, 536870912, 0, -786434, 536870912, 0, -786433, 536870912, 0, -851968, 536870912, 0, -851967, 536870912, 0, -851966, 536870912, 0, -851965, 536870912, 0, -851964, 536870912, 0, -851963, 536870912, 0, -851962, 536870912, 0, -851961, 536870912, 0, -851960, 536870912, 0, -851959, 536870912, 0, -851958, 536870912, 0, -851957, 536870912, 0, -851956, 536870912, 0, -851955, 536870912, 0, -851954, 536870912, 0, -851953, 536870912, 0, -851952, 536870912, 0, -851951, 536870912, 0, -851950, 536870912, 0, -851949, 536870912, 0, -851948, 536870912, 0, -851947, 536870912, 0, -720912, 536870912, 0, -720911, 536870912, 0, -720910, 536870912, 0, -720909, 536870912, 0, -720908, 536870912, 0, -720907, 536870912, 0, -720906, 536870912, 0, -720905, 536870912, 0, -720904, 536870912, 0, -720903, 536870912, 0, -720902, 536870912, 0, -720901, 536870912, 0, -720900, 536870912, 0, -720899, 536870912, 0, -720898, 536870912, 0, -720897, 536870912, 0, -786432, 536870912, 0, -786431, 536870912, 0, -786430, 536870912, 0, -786429, 536870912, 0, -786428, 536870912, 0, -786427, 536870912, 0, -786426, 536870912, 0, -786425, 536870912, 0, -786424, 536870912, 0, -786423, 536870912, 0, -786422, 536870912, 0, -786421, 536870912, 0, -786420, 536870912, 0, -786419, 536870912, 0, -786418, 536870912, 0, -786417, 536870912, 0, -786416, 536870912, 0, -786415, 536870912, 0, -786414, 536870912, 0, -786413, 536870912, 0, -786412, 536870912, 0, -786411, 536870912, 0, -655376, 536870912, 0, -655375, 536870912, 0, -655374, 536870912, 0, -655373, 536870912, 0, -655372, 536870912, 0, -655371, 536870912, 0, -655370, 536870912, 0, -655369, 536870912, 0, -655368, 536870912, 0, -655367, 536870912, 0, -655366, 536870912, 0, -655365, 536870912, 0, -655364, 536870912, 0, -655363, 536870912, 0, -655362, 536870912, 0, -655361, 536870912, 0, -720896, 536870912, 0, -720895, 536870912, 0, -720894, 536870912, 0, -720893, 536870912, 0, -720892, 536870912, 0, -720891, 536870912, 0, -720890, 536870912, 0, -720889, 536870912, 0, -720888, 536870912, 0, -720887, 536870912, 0, -720886, 536870912, 0, -720885, 536870912, 0, -720884, 536870912, 0, -720883, 536870912, 0, -720882, 536870912, 0, -720881, 536870912, 0, -720880, 536870912, 0, -720879, 536870912, 0, -720878, 536870912, 0, -720877, 536870912, 0, -720876, 536870912, 0, -720875, 536870912, 0, -589840, 536870912, 0, -589839, 536870912, 0, -589838, 536870912, 0, -589837, 536870912, 0, -589836, 536870912, 0, -589835, 536870912, 0, -589834, 536870912, 0, -589833, 536870912, 0, -589832, 536870912, 0, -589831, 536870912, 0, -589830, 536870912, 0, -589829, 536870912, 0, -589828, 536870912, 0, -589827, 536870912, 0, -589826, 536870912, 0, -589825, 536870912, 0, -655360, 536870912, 0, -655359, 536870912, 0, -655358, 536870912, 0, -655357, 536870912, 0, -655356, 536870912, 0, -655355, 536870912, 0, -655354, 536870912, 0, -655353, 536870912, 0, -655352, 536870912, 0, -655351, 536870912, 0, -655350, 536870912, 0, -655349, 536870912, 0, -655348, 536870912, 0, -655347, 536870912, 0, -655346, 536870912, 0, -655345, 536870912, 0, -655344, 536870912, 0, -655343, 536870912, 0, -655342, 536870912, 0, -655341, 536870912, 0, -655340, 536870912, 0, -655339, 536870912, 0, -524304, 536870912, 0, -524303, 536870912, 0, -524302, 536870912, 0, -524301, 536870912, 0, -524300, 536870912, 0, -524299, 536870912, 0, -524298, 536870912, 0, -524297, 536870912, 0, -524296, 536870912, 0, -524295, 536870912, 0, -524294, 536870912, 0, -524293, 536870912, 0, -524292, 536870912, 0, -524291, 536870912, 0, -524290, 536870912, 0, -524289, 536870912, 0, -589824, 536870912, 0, -589823, 536870912, 0, -589822, 536870912, 0, -589821, 536870912, 0, -589820, 536870912, 0, -589819, 536870912, 0, -589818, 536870912, 0, -589817, 536870912, 0, -589816, 536870912, 0, -589815, 536870912, 0, -589814, 536870912, 0, -589813, 536870912, 0, -589812, 536870912, 0, -589811, 536870912, 0, -589810, 536870912, 0, -589809, 536870912, 0, -589808, 536870912, 0, -589807, 536870912, 0, -589806, 536870912, 0, -589805, 536870912, 0, -589804, 536870912, 0, -589803, 536870912, 0, -458768, 536870912, 0, -458767, 536870912, 0, -458766, 536870912, 0, -458765, 536870912, 0, -458764, 536870912, 0, -458763, 536870912, 0, -458762, 536870912, 0, -458761, 536870912, 0, -458760, 536870912, 0, -458759, 536870912, 0, -458758, 536870912, 0, -458757, 536870912, 0, -458756, 536870912, 0, -458755, 536870912, 0, -458754, 536870912, 0, -458753, 536870912, 0, -524288, 536870912, 0, -524287, 536870912, 0, -524286, 536870912, 0, -524285, 536870912, 0, -524284, 536870912, 0, -524283, 536870912, 0, -524282, 536870912, 0, -524281, 536870912, 0, -524280, 536870912, 0, -524279, 536870912, 0, -524278, 536870912, 0, -524277, 536870912, 0, -524276, 536870912, 0, -524275, 536870912, 0, -524267, 536870912, 0, -393232, 536870912, 0, -393231, 536870912, 0, -393230, 536870912, 0, -393217, 536870912, 0, -458752, 536870912, 0, -458732, 2, 2, -458731, 536870912, 0, -327696, 536870912, 0, -327695, 536870912, 0, -327694, 536870912, 0 ) tile_color = Color( 0.768627, 0.407843, 0.454902, 1 ) -[node name="GameCamera" parent="." instance=ExtResource( 3 )] +[node name="CamBounds" type="Node2D" parent="."] position = Vector2( -14, -24 ) +script = ExtResource( 15 ) bounds = Rect2( 0, 0, 76, 0 ) [node name="Actors" type="Node2D" parent="."] @@ -201,5 +201,3 @@ position = Vector2( -100, -24 ) [node name="Note" parent="Actors" instance=ExtResource( 10 )] position = Vector2( -5, -77 ) - -[editable path="GameCamera"] diff --git a/src/map/2-4.tscn b/src/map/2-4.tscn index bc402b0..8799e3b 100644 --- a/src/map/2-4.tscn +++ b/src/map/2-4.tscn @@ -2,7 +2,7 @@ [ext_resource path="res://src/stage/SolidTileMap.tscn" type="PackedScene" id=1] [ext_resource path="res://src/actor/Exit.tscn" type="PackedScene" id=2] -[ext_resource path="res://src/stage/GameCamera.tscn" type="PackedScene" id=3] +[ext_resource path="res://src/stage/CamBounds.gd" type="Script" id=3] [ext_resource path="res://src/stage/DetailTileMap.tscn" type="PackedScene" id=4] [ext_resource path="res://src/stage/SpikeTileMap.tscn" type="PackedScene" id=5] [ext_resource path="res://src/actor/Player.tscn" type="PackedScene" id=6] @@ -98,7 +98,7 @@ 6/name = "crate_tiles.png 6" 6/texture = ExtResource( 11 ) 6/tex_offset = Vector2( 0, 0 ) -6/modulate = Color( 0.670588, 0.321569, 0.211765, 1 ) +6/modulate = Color( 0.678431, 0, 0.156863, 1 ) 6/region = Rect2( 0, 24, 8, 8 ) 6/tile_mode = 0 6/occluder_offset = Vector2( 0, 0 ) @@ -177,8 +177,9 @@ tile_set = SubResource( 3 ) tile_data = PoolIntArray( -1245181, 536870912, 0, -1245180, 536870912, 0, -1245179, 536870912, 0, -1245178, 536870912, 0, -1245177, 536870912, 0, -1245176, 536870912, 0, -1245175, 536870912, 0, -1245174, 536870912, 0, -1245173, 536870912, 0, -1245172, 536870912, 0, -1245171, 536870912, 0, -1245170, 536870912, 0, -1245169, 536870912, 0, -1245168, 536870912, 0, -1179645, 536870912, 0, -1179644, 536870912, 0, -1179643, 536870912, 0, -1179642, 536870912, 0, -1179641, 536870912, 0, -1179640, 536870912, 0, -1179639, 536870912, 0, -1179638, 536870912, 0, -1179637, 536870912, 0, -1179636, 536870912, 0, -1179635, 536870912, 0, -1179634, 536870912, 0, -1179633, 536870912, 0, -1179632, 536870912, 0, -1114106, 536870912, 0, -1114105, 536870912, 0, -1114104, 536870912, 0, -1114103, 536870912, 0, -1114102, 536870912, 0, -1114101, 536870912, 0, -1114100, 536870912, 0, -1114099, 536870912, 0, -1114098, 536870912, 0, -1114097, 536870912, 0, -1114096, 536870912, 0, -1048570, 536870912, 0, -1048569, 536870912, 0, -1048568, 536870912, 0, -1048567, 536870912, 0, -1048566, 536870912, 0, -1048565, 536870912, 0, -1048564, 536870912, 0, -1048563, 536870912, 0, -1048562, 536870912, 0, -1048561, 536870912, 0, -1048560, 536870912, 0, -983034, 536870912, 0, -983033, 536870912, 0, -983032, 536870912, 0, -983031, 536870912, 0, -983030, 536870912, 0, -983029, 536870912, 0, -983028, 536870912, 0, -983027, 536870912, 0, -983026, 536870912, 0, -983025, 536870912, 0, -983024, 536870912, 0, -917498, 536870912, 0, -917497, 536870912, 0, -917496, 536870912, 0, -917495, 536870912, 0, -917494, 536870912, 0, -917493, 536870912, 0, -917492, 536870912, 0, -917491, 536870912, 0, -917490, 536870912, 0, -917489, 536870912, 0, -917488, 536870912, 0, -851965, 536870912, 0, -851964, 536870912, 0, -851963, 536870912, 0, -851962, 536870912, 0, -851961, 536870912, 0, -851960, 536870912, 0, -851959, 536870912, 0, -851958, 536870912, 0, -851957, 536870912, 0, -851956, 536870912, 0, -851955, 536870912, 0, -851954, 536870912, 0, -851953, 536870912, 0, -851952, 536870912, 0, -786429, 536870912, 0, -786428, 536870912, 0, -786427, 536870912, 0, -786426, 536870912, 0, -786425, 536870912, 0, -786424, 536870912, 0, -786423, 536870912, 0, -786422, 536870912, 0, -786421, 536870912, 0, -786420, 536870912, 0, -786419, 536870912, 0, -786418, 536870912, 0, -786417, 536870912, 0, -786416, 536870912, 0, -720893, 536870912, 0, -720892, 536870912, 0, -720891, 536870912, 0, -720890, 536870912, 0, -720889, 536870912, 0, -720888, 536870912, 0, -720887, 536870912, 0, -720886, 536870912, 0, -720885, 536870912, 0, -720884, 536870912, 0, -720883, 536870912, 0, -720882, 536870912, 0, -720881, 536870912, 0, -720880, 536870912, 0, -655357, 536870912, 0, -655356, 536870912, 0, -655355, 536870912, 0, -655354, 536870912, 0, -655353, 536870912, 0, -655352, 536870912, 0, -655351, 536870912, 0, -655350, 536870912, 0, -655349, 536870912, 0, -655348, 536870912, 0, -655347, 536870912, 0, -655346, 536870912, 0, -655345, 536870912, 0, -655344, 536870912, 0, -589821, 536870912, 0, -589820, 536870912, 0, -589819, 536870912, 0, -589818, 536870912, 0, -589817, 536870912, 0, -589816, 536870912, 0, -589815, 536870912, 0, -589814, 536870912, 0, -589813, 536870912, 0, -589812, 536870912, 0, -589811, 536870912, 0, -589810, 536870912, 0, -589809, 536870912, 0, -589808, 536870912, 0, -524285, 536870914, 2, -524284, 2, 3, -524282, 536870912, 0, -524281, 536870912, 0, -524280, 536870912, 0, -524279, 536870912, 0, -524278, 536870912, 0, -524277, 536870912, 0, -524276, 536870912, 0, -524275, 536870912, 0, -524274, 536870912, 0, -524273, 536870912, 0, -524272, 536870912, 0, -458746, 536870912, 0, -458745, 536870912, 0, -458744, 536870912, 0, -458743, 536870912, 0, -458742, 536870912, 0, -458741, 536870912, 0, -458740, 536870912, 0, -458739, 536870912, 0, -458738, 536870912, 0, -458737, 536870912, 0, -458736, 536870912, 0, -393210, 536870912, 0, -393209, 536870912, 0, -393208, 536870912, 0, -393207, 536870912, 0, -393206, 536870912, 0, -393205, 536870912, 0, -393204, 536870912, 0, -393203, 536870912, 0, -393202, 536870912, 0, -393201, 536870912, 0, -393200, 536870912, 0, -327671, 536870912, 0, -327670, 536870912, 0, -327669, 536870912, 0, -327668, 536870912, 0, -327667, 536870912, 0, -327666, 536870912, 0, -327665, 536870912, 0, -327664, 536870912, 0, -262135, 536870912, 0, -262134, 536870912, 0, -262133, 536870912, 0, -262132, 536870912, 0, -262131, 536870912, 0, -262130, 536870912, 0, -262129, 536870912, 0, -262128, 536870912, 0, -196599, 536870912, 0, -196598, 536870912, 0, -196597, 536870912, 0, -196596, 536870912, 0, -196595, 536870912, 0, -196594, 536870912, 0, -196593, 536870912, 0, -196592, 536870912, 0 ) tile_color = Color( 0.768627, 0.407843, 0.454902, 1 ) -[node name="GameCamera" parent="." instance=ExtResource( 3 )] +[node name="CamBounds" type="Node2D" parent="."] position = Vector2( 20, -24 ) +script = ExtResource( 3 ) bounds = Rect2( 0, 64, 0, 0 ) [node name="Actors" type="Node2D" parent="."] @@ -206,5 +207,3 @@ position = Vector2( 67, 8 ) [node name="Note" parent="Actors" instance=ExtResource( 10 )] position = Vector2( 71, -94 ) - -[editable path="GameCamera"] diff --git a/src/map/2-5.tscn b/src/map/2-5.tscn index b573edb..21ebe28 100644 --- a/src/map/2-5.tscn +++ b/src/map/2-5.tscn @@ -2,7 +2,7 @@ [ext_resource path="res://src/stage/SolidTileMap.tscn" type="PackedScene" id=1] [ext_resource path="res://src/actor/Exit.tscn" type="PackedScene" id=2] -[ext_resource path="res://src/stage/GameCamera.tscn" type="PackedScene" id=3] +[ext_resource path="res://src/stage/CamBounds.gd" type="Script" id=3] [ext_resource path="res://src/stage/DetailTileMap.tscn" type="PackedScene" id=4] [ext_resource path="res://src/stage/SpikeTileMap.tscn" type="PackedScene" id=5] [ext_resource path="res://src/actor/Player.tscn" type="PackedScene" id=6] @@ -177,8 +177,9 @@ tile_set = SubResource( 3 ) tile_data = PoolIntArray( -786440, 536870912, 0, -786439, 536870912, 0, -786438, 536870912, 0, -786437, 536870912, 0, -786436, 536870912, 0, -786435, 536870912, 0, -786434, 536870912, 0, -786433, 536870912, 0, -851968, 536870912, 0, -851967, 536870912, 0, -851966, 536870912, 0, -851965, 536870912, 0, -851964, 536870912, 0, -851963, 536870912, 0, -851962, 536870912, 0, -851961, 536870912, 0, -851960, 536870912, 0, -851959, 536870912, 0, -851958, 536870912, 0, -851957, 536870912, 0, -851956, 536870912, 0, -851955, 536870912, 0, -851954, 536870912, 0, -851953, 536870912, 0, -851952, 536870912, 0, -851951, 536870912, 0, -851950, 536870912, 0, -851949, 536870912, 0, -851948, 536870912, 0, -720904, 536870912, 0, -720903, 536870912, 0, -720902, 536870912, 0, -720901, 536870912, 0, -720900, 536870912, 0, -720899, 536870912, 0, -720898, 536870912, 0, -720897, 536870912, 0, -786432, 536870912, 0, -786431, 536870912, 0, -786430, 536870912, 0, -786429, 536870912, 0, -786428, 536870912, 0, -786427, 536870912, 0, -786426, 536870912, 0, -786425, 536870912, 0, -786424, 536870912, 0, -786423, 536870912, 0, -786422, 536870912, 0, -786421, 536870912, 0, -786420, 536870912, 0, -786419, 536870912, 0, -786418, 536870912, 0, -786417, 536870912, 0, -786416, 536870912, 0, -786415, 536870912, 0, -786414, 536870912, 0, -786413, 536870912, 0, -786412, 536870912, 0, -655368, 536870912, 0, -655367, 536870912, 0, -655366, 536870912, 0, -655365, 536870912, 0, -655364, 536870912, 0, -655363, 536870912, 0, -655362, 536870912, 0, -655361, 536870912, 0, -720896, 536870912, 0, -720895, 536870912, 0, -720894, 536870912, 0, -720893, 536870912, 0, -720892, 536870912, 0, -720891, 536870912, 0, -720890, 536870912, 0, -720889, 536870912, 0, -720888, 536870912, 0, -720887, 536870912, 0, -720886, 536870912, 0, -720885, 536870912, 0, -720884, 536870912, 0, -720883, 536870912, 0, -720882, 536870912, 0, -720881, 536870912, 0, -720880, 536870912, 0, -720879, 536870912, 0, -720878, 536870912, 0, -720877, 536870912, 0, -720876, 536870912, 0, -589832, 536870912, 0, -589831, 536870912, 0, -589830, 536870912, 0, -589829, 536870912, 0, -589828, 536870912, 0, -589827, 536870912, 0, -589826, 536870912, 0, -589825, 536870912, 0, -655360, 536870912, 0, -655359, 536870912, 0, -655358, 536870912, 0, -655357, 536870912, 0, -655356, 536870912, 0, -655355, 536870912, 0, -655354, 536870912, 0, -655353, 536870912, 0, -655352, 536870912, 0, -655351, 536870912, 0, -655350, 536870912, 0, -655349, 536870912, 0, -655348, 536870912, 0, -655347, 536870912, 0, -655346, 536870912, 0, -655345, 536870912, 0, -655344, 536870912, 0, -655343, 536870912, 0, -655342, 536870912, 0, -655341, 536870912, 0, -655340, 536870912, 0, -524296, 536870912, 0, -524295, 536870912, 0, -524294, 536870912, 0, -524293, 536870912, 0, -524292, 536870912, 0, -524291, 536870912, 0, -524290, 536870912, 0, -524289, 536870912, 0, -589824, 536870912, 0, -589823, 536870912, 0, -589822, 536870912, 0, -589821, 536870912, 0, -589820, 536870912, 0, -589819, 536870912, 0, -589818, 536870912, 0, -589817, 536870912, 0, -589816, 536870912, 0, -589815, 536870912, 0, -589814, 536870912, 0, -589813, 536870912, 0, -589812, 536870912, 0, -589811, 536870912, 0, -589810, 536870912, 0, -589809, 536870912, 0, -589808, 536870912, 0, -589807, 536870912, 0, -589806, 536870912, 0, -589805, 536870912, 0, -589804, 536870912, 0, -458760, 536870912, 0, -458759, 536870912, 0, -458758, 536870912, 0, -458757, 536870912, 0, -458756, 536870912, 0, -458755, 536870912, 0, -458754, 536870912, 0, -458753, 536870912, 0, -524288, 536870912, 0, -524287, 536870912, 0, -524286, 536870912, 0, -524285, 536870912, 0, -524284, 536870912, 0, -524283, 536870912, 0, -524272, 536870912, 0, -524271, 536870912, 0, -524270, 536870912, 0, -524269, 536870912, 0, -524268, 536870912, 0, -393224, 536870912, 0, -393223, 536870912, 0, -393222, 536870912, 0, -393221, 536870912, 0, -393220, 536870912, 0, -458750, 536870912, 0, -458749, 536870912, 0, -458748, 536870912, 0, -458747, 536870912, 0, -458736, 536870912, 0, -458735, 536870912, 0, -458734, 536870912, 0, -458733, 536870912, 0, -458732, 536870912, 0, -327688, 536870912, 0, -327687, 536870912, 0, -327686, 536870912, 0, -327685, 536870912, 0, -327684, 536870912, 0, -393214, 2, 3, -393213, 536870914, 2, -393212, 536870914, 3, -393211, 2, 2 ) tile_color = Color( 0.768627, 0.407843, 0.454902, 1 ) -[node name="GameCamera" parent="." instance=ExtResource( 3 )] +[node name="CamBounds" type="Node2D" parent="."] position = Vector2( 52, -20 ) +script = ExtResource( 3 ) [node name="Actors" type="Node2D" parent="."] @@ -202,5 +203,3 @@ position = Vector2( -36, -8 ) [node name="Note" parent="Actors" instance=ExtResource( 10 )] position = Vector2( 139, -61 ) - -[editable path="GameCamera"] diff --git a/src/map/2-6.tscn b/src/map/2-6.tscn index 39f9504..d795c3f 100644 --- a/src/map/2-6.tscn +++ b/src/map/2-6.tscn @@ -2,7 +2,7 @@ [ext_resource path="res://src/stage/SolidTileMap.tscn" type="PackedScene" id=1] [ext_resource path="res://src/actor/Exit.tscn" type="PackedScene" id=2] -[ext_resource path="res://src/stage/GameCamera.tscn" type="PackedScene" id=3] +[ext_resource path="res://src/stage/CamBounds.gd" type="Script" id=3] [ext_resource path="res://src/stage/DetailTileMap.tscn" type="PackedScene" id=4] [ext_resource path="res://src/stage/SpikeTileMap.tscn" type="PackedScene" id=5] [ext_resource path="res://src/actor/Player.tscn" type="PackedScene" id=6] @@ -98,7 +98,7 @@ 6/name = "crate_tiles.png 6" 6/texture = ExtResource( 11 ) 6/tex_offset = Vector2( 0, 0 ) -6/modulate = Color( 0.670588, 0.321569, 0.211765, 1 ) +6/modulate = Color( 0.678431, 0, 0.156863, 1 ) 6/region = Rect2( 0, 24, 8, 8 ) 6/tile_mode = 0 6/occluder_offset = Vector2( 0, 0 ) @@ -177,8 +177,9 @@ tile_set = SubResource( 3 ) tile_data = PoolIntArray( -655373, 536870912, 0, -655372, 536870912, 0, -655371, 536870912, 0, -655370, 536870912, 0, -655369, 536870912, 0, -655368, 536870912, 0, -655367, 536870912, 0, -655366, 536870912, 0, -655365, 536870912, 0, -655364, 536870912, 0, -655363, 536870912, 0, -655362, 536870912, 0, -655361, 536870912, 0, -720896, 536870912, 0, -720895, 536870912, 0, -720894, 536870912, 0, -720893, 536870912, 0, -720892, 536870912, 0, -720891, 536870912, 0, -720890, 536870912, 0, -720889, 536870912, 0, -720888, 536870912, 0, -720887, 536870912, 0, -720886, 536870912, 0, -720885, 536870912, 0, -720884, 536870912, 0, -720883, 536870912, 0, -720882, 536870912, 0, -589837, 536870912, 0, -589836, 536870912, 0, -589835, 536870912, 0, -589834, 536870912, 0, -589833, 536870912, 0, -589832, 536870912, 0, -589831, 536870912, 0, -589830, 536870912, 0, -589829, 536870912, 0, -589828, 536870912, 0, -589827, 536870912, 0, -589826, 536870912, 0, -589825, 536870912, 0, -655360, 536870912, 0, -655359, 536870912, 0, -655358, 536870912, 0, -655357, 536870912, 0, -655356, 536870912, 0, -655355, 536870912, 0, -655354, 536870912, 0, -655353, 536870912, 0, -655352, 536870912, 0, -655351, 536870912, 0, -655350, 536870912, 0, -655349, 536870912, 0, -655348, 536870912, 0, -655347, 536870912, 0, -655346, 536870912, 0, -524301, 536870912, 0, -524300, 536870912, 0, -524299, 536870912, 0, -524298, 536870912, 0, -524297, 536870912, 0, -524296, 536870912, 0, -524295, 536870912, 0, -524294, 536870912, 0, -524293, 536870912, 0, -524292, 536870912, 0, -524291, 536870912, 0, -524290, 536870912, 0, -524289, 536870912, 0, -589824, 536870912, 0, -589823, 536870912, 0, -589822, 536870912, 0, -589821, 536870912, 0, -589820, 536870912, 0, -589819, 536870912, 0, -589818, 536870912, 0, -589817, 536870912, 0, -589816, 536870912, 0, -589815, 536870912, 0, -589814, 536870912, 0, -589813, 536870912, 0, -589812, 536870912, 0, -589811, 536870912, 0, -589810, 536870912, 0, -458765, 536870912, 0, -458764, 536870912, 0, -458763, 536870912, 0, -458762, 536870912, 0, -458761, 536870912, 0, -458760, 536870912, 0, -458759, 536870912, 0, -458758, 536870912, 0, -458757, 536870912, 0, -458756, 536870912, 0, -458755, 536870912, 0, -458754, 536870912, 0, -458753, 536870912, 0, -524288, 536870912, 0, -524287, 536870912, 0, -524286, 536870912, 0, -524285, 536870912, 0, -524284, 536870912, 0, -524283, 536870912, 0, -524282, 536870912, 0, -524281, 536870912, 0, -524280, 536870912, 0, -524279, 536870912, 0, -524278, 536870912, 0, -524277, 536870912, 0, -524276, 536870912, 0, -524275, 536870912, 0, -524274, 536870912, 0, -393229, 536870912, 0, -393228, 536870912, 0, -393227, 536870912, 0, -393226, 536870912, 0, -393225, 536870912, 0, -393224, 536870912, 0, -393223, 536870912, 0, -393222, 536870912, 0, -393221, 536870912, 0, -393220, 536870912, 0, -393219, 536870912, 0, -393218, 536870912, 0, -393217, 536870912, 0, -458752, 536870912, 0, -458751, 536870912, 0, -458750, 536870912, 0, -458749, 536870912, 0, -458748, 536870912, 0, -458747, 536870912, 0, -458746, 536870912, 0, -458745, 536870912, 0, -458744, 536870912, 0, -458743, 536870912, 0, -458742, 536870912, 0, -458741, 536870912, 0, -458740, 536870912, 0, -458739, 536870912, 0, -458738, 536870912, 0, -327693, 536870912, 0, -327692, 536870912, 0, -327691, 536870912, 0, -327690, 536870912, 0, -327689, 536870912, 0, -327688, 536870912, 0, -393210, 536870912, 0, -393209, 536870912, 0, -393208, 536870912, 0, -393207, 536870912, 0, -393206, 536870912, 0, -393205, 536870912, 0, -393204, 536870912, 0, -393203, 536870912, 0, -393202, 536870912, 0, -262157, 536870912, 0, -262156, 536870912, 0, -262155, 536870912, 0, -262154, 536870912, 0, -262153, 536870912, 0, -262152, 536870912, 0, -327674, 536870912, 0, -327673, 536870912, 0, -327672, 536870912, 0, -327671, 536870912, 0, -327670, 536870912, 0, -327669, 536870912, 0, -327668, 536870912, 0, -327667, 536870912, 0, -327666, 536870912, 0, -196621, 536870912, 0, -196620, 536870912, 0, -196619, 536870912, 0, -196618, 536870912, 0, -196617, 536870912, 0, -196616, 536870912, 0, -262136, 536870912, 0, -262135, 536870912, 0, -262134, 536870912, 0, -262133, 536870912, 0, -262132, 536870912, 0, -262131, 536870912, 0, -262130, 536870912, 0, -131085, 536870912, 0, -131084, 536870912, 0, -131083, 536870912, 0, -131082, 536870912, 0, -131081, 536870912, 0, -131080, 536870912, 0, -196600, 536870912, 0, -196599, 536870912, 0, -196598, 536870912, 0, -196597, 536870912, 0, -196596, 536870912, 0, -196595, 536870912, 0, -196594, 536870912, 0, -65549, 536870912, 0, -65548, 536870912, 0, -65547, 536870912, 0, -65546, 536870912, 0, -65545, 536870912, 0, -65544, 536870912, 0, -131063, 536870912, 0, -131062, 536870912, 0, -131061, 536870912, 0, -131060, 536870912, 0, -131059, 536870912, 0, -131058, 536870912, 0, -13, 536870912, 0, -12, 536870912, 0, -11, 536870912, 0, -10, 536870912, 0, -9, 536870912, 0, -8, 536870912, 0, -7, 536870912, 0, -6, 536870912, 0, -5, 536870912, 0, -4, 536870912, 0, -65528, 536870912, 0, -65527, 536870912, 0, -65526, 536870912, 0, -65525, 536870912, 0, -65524, 536870912, 0, -65523, 536870912, 0, -65522, 536870912, 0, 65523, 536870912, 0, 65524, 536870912, 0, 65525, 536870912, 0, 65526, 536870912, 0, 65527, 536870912, 0, 65528, 536870912, 0, 65529, 536870912, 0, 8, 536870912, 0, 9, 536870912, 0, 10, 536870912, 0, 11, 536870912, 0, 12, 536870912, 0, 13, 536870912, 0, 14, 536870912, 0, 131059, 536870912, 0, 131060, 536870912, 0, 131061, 536870912, 0, 131062, 536870912, 0, 131063, 536870912, 0, 131064, 536870912, 0, 131065, 536870912, 0, 65545, 536870912, 0, 65546, 536870912, 0, 65547, 536870912, 0, 65548, 536870912, 0, 65549, 536870912, 0, 65550, 536870912, 0, 196601, 2, 2, 131080, 536870912, 0, 131081, 536870912, 0, 131082, 536870912, 0, 131083, 536870912, 0, 131084, 536870912, 0, 131085, 536870912, 0, 131086, 536870912, 0, 196616, 536870912, 0, 196617, 536870912, 0, 196618, 536870912, 0, 196619, 536870912, 0, 196620, 536870912, 0, 196621, 536870912, 0, 196622, 536870912, 0, 262154, 536870912, 0, 262155, 536870912, 0, 262156, 536870912, 0, 262157, 536870912, 0, 262158, 536870912, 0, 327689, 536870914, 2, 327690, 536870912, 0, 327691, 536870912, 0, 327692, 536870912, 0, 327693, 536870912, 0, 327694, 536870912, 0 ) tile_color = Color( 0.768627, 0.407843, 0.454902, 1 ) -[node name="GameCamera" parent="." instance=ExtResource( 3 )] +[node name="CamBounds" type="Node2D" parent="."] position = Vector2( 8, 8 ) +script = ExtResource( 3 ) bounds = Rect2( 0, 0, 0, 40 ) [node name="Actors" type="Node2D" parent="."] @@ -203,5 +204,3 @@ position = Vector2( -47, -32 ) [node name="Note" parent="Actors" instance=ExtResource( 10 )] position = Vector2( -69, -5 ) - -[editable path="GameCamera"] diff --git a/src/map/2-7.tscn b/src/map/2-7.tscn index 70a0423..38d5108 100644 --- a/src/map/2-7.tscn +++ b/src/map/2-7.tscn @@ -2,7 +2,7 @@ [ext_resource path="res://src/stage/SolidTileMap.tscn" type="PackedScene" id=1] [ext_resource path="res://src/actor/Exit.tscn" type="PackedScene" id=2] -[ext_resource path="res://src/stage/GameCamera.tscn" type="PackedScene" id=3] +[ext_resource path="res://src/stage/CamBounds.gd" type="Script" id=3] [ext_resource path="res://src/stage/DetailTileMap.tscn" type="PackedScene" id=4] [ext_resource path="res://src/stage/SpikeTileMap.tscn" type="PackedScene" id=5] [ext_resource path="res://src/actor/Player.tscn" type="PackedScene" id=6] @@ -98,7 +98,7 @@ 6/name = "crate_tiles.png 6" 6/texture = ExtResource( 11 ) 6/tex_offset = Vector2( 0, 0 ) -6/modulate = Color( 0.670588, 0.321569, 0.211765, 1 ) +6/modulate = Color( 0.678431, 0, 0.156863, 1 ) 6/region = Rect2( 0, 24, 8, 8 ) 6/tile_mode = 0 6/occluder_offset = Vector2( 0, 0 ) @@ -177,8 +177,9 @@ tile_set = SubResource( 3 ) tile_data = PoolIntArray( -851982, 536870912, 0, -851981, 536870912, 0, -851980, 536870912, 0, -851979, 536870912, 0, -851978, 536870912, 0, -851977, 536870912, 0, -851976, 536870912, 0, -851975, 536870912, 0, -851974, 536870912, 0, -851973, 536870912, 0, -851972, 536870912, 0, -851971, 536870912, 0, -851970, 536870912, 0, -851969, 536870912, 0, -917504, 536870912, 0, -917503, 536870912, 0, -917502, 536870912, 0, -917501, 536870912, 0, -917500, 536870912, 0, -917499, 536870912, 0, -917498, 536870912, 0, -917497, 536870912, 0, -917496, 536870912, 0, -917495, 536870912, 0, -917494, 536870912, 0, -917493, 536870912, 0, -917492, 536870912, 0, -917491, 536870912, 0, -786446, 536870912, 0, -786445, 536870912, 0, -786444, 536870912, 0, -786443, 536870912, 0, -786442, 536870912, 0, -786441, 536870912, 0, -786440, 536870912, 0, -786439, 536870912, 0, -786438, 536870912, 0, -786437, 536870912, 0, -786436, 536870912, 0, -786435, 536870912, 0, -786434, 536870912, 0, -786433, 536870912, 0, -851968, 536870912, 0, -851967, 536870912, 0, -851966, 536870912, 0, -851965, 536870912, 0, -851964, 536870912, 0, -851963, 536870912, 0, -851962, 536870912, 0, -851961, 536870912, 0, -851960, 536870912, 0, -851959, 536870912, 0, -851958, 536870912, 0, -851957, 536870912, 0, -851956, 536870912, 0, -851955, 536870912, 0, -720910, 536870912, 0, -720909, 536870912, 0, -720908, 536870912, 0, -720907, 536870912, 0, -720906, 536870912, 0, -720905, 536870912, 0, -720904, 536870912, 0, -720903, 536870912, 0, -720902, 536870912, 0, -720901, 536870912, 0, -720900, 536870912, 0, -720899, 536870912, 0, -720898, 536870912, 0, -720897, 536870912, 0, -786432, 536870912, 0, -786431, 536870912, 0, -786430, 536870912, 0, -786429, 536870912, 0, -786428, 536870912, 0, -786427, 536870912, 0, -786426, 536870912, 0, -786425, 536870912, 0, -786424, 536870912, 0, -786423, 536870912, 0, -786422, 536870912, 0, -786421, 536870912, 0, -786420, 536870912, 0, -786419, 536870912, 0, -655374, 536870912, 0, -655373, 536870912, 0, -655372, 536870912, 0, -655371, 536870912, 0, -655370, 536870912, 0, -655369, 536870912, 0, -655368, 536870912, 0, -655367, 536870912, 0, -655366, 536870912, 0, -655365, 536870912, 0, -655364, 536870912, 0, -655363, 536870912, 0, -655362, 536870912, 0, -655361, 536870912, 0, -720896, 536870912, 0, -720895, 536870912, 0, -720894, 536870912, 0, -720893, 536870912, 0, -720892, 536870912, 0, -720891, 536870912, 0, -720890, 536870912, 0, -720889, 536870912, 0, -720888, 536870912, 0, -720887, 536870912, 0, -720886, 536870912, 0, -720885, 536870912, 0, -720884, 536870912, 0, -720883, 536870912, 0, -589838, 536870912, 0, -589837, 536870912, 0, -589836, 536870912, 0, -589835, 536870912, 0, -589834, 536870912, 0, -589833, 536870912, 0, -589832, 536870912, 0, -589831, 536870912, 0, -589830, 536870912, 0, -589829, 536870912, 0, -589828, 536870912, 0, -589827, 536870912, 0, -589826, 536870912, 0, -589825, 536870912, 0, -655360, 536870912, 0, -655359, 536870912, 0, -655358, 536870912, 0, -655357, 536870912, 0, -655356, 536870912, 0, -655355, 536870912, 0, -655354, 536870912, 0, -655353, 536870912, 0, -655352, 536870912, 0, -655351, 536870912, 0, -655350, 536870912, 0, -655349, 536870912, 0, -655348, 536870912, 0, -655347, 536870912, 0, -524302, 536870912, 0, -524301, 536870912, 0, -524300, 536870912, 0, -524299, 536870912, 0, -524298, 536870912, 0, -524297, 536870912, 0, -524296, 536870912, 0, -524295, 536870912, 0, -524294, 536870912, 0, -524292, 2, 2, -524291, 536870914, 3, -524290, 2, 2, -524289, 536870914, 3, -589824, 536870914, 2, -589823, 2, 3, -589822, 2, 2, -589821, 536870914, 3, -589819, 536870912, 0, -589818, 536870912, 0, -589817, 536870912, 0, -589816, 536870912, 0, -589815, 536870912, 0, -589814, 536870912, 0, -589813, 536870912, 0, -589812, 536870912, 0, -589811, 536870912, 0, -458766, 536870912, 0, -458765, 536870912, 0, -458764, 536870912, 0, -458763, 536870912, 0, -458762, 536870912, 0, -458761, 536870912, 0, -458760, 536870912, 0, -458759, 536870912, 0, -458758, 536870912, 0, -524283, 536870912, 0, -524282, 536870912, 0, -524281, 536870912, 0, -524280, 536870912, 0, -524279, 536870912, 0, -524278, 536870912, 0, -524277, 536870912, 0, -524276, 536870912, 0, -524275, 536870912, 0, -393230, 536870912, 0, -393229, 536870912, 0, -393228, 536870912, 0, -393227, 536870912, 0, -458742, 536870912, 0, -458741, 536870912, 0, -458740, 536870912, 0, -458739, 536870912, 0 ) tile_color = Color( 0.768627, 0.407843, 0.454902, 1 ) -[node name="GameCamera" parent="." instance=ExtResource( 3 )] +[node name="CamBounds" type="Node2D" parent="."] position = Vector2( 0, -24 ) +script = ExtResource( 3 ) [node name="Actors" type="Node2D" parent="."] @@ -208,5 +209,3 @@ position = Vector2( 78, -8 ) [node name="Note" parent="Actors" instance=ExtResource( 10 )] position = Vector2( -101, -77 ) - -[editable path="GameCamera"] diff --git a/src/map/2-8.tscn b/src/map/2-8.tscn index 6c82fdb..77351f0 100644 --- a/src/map/2-8.tscn +++ b/src/map/2-8.tscn @@ -2,7 +2,7 @@ [ext_resource path="res://src/stage/SolidTileMap.tscn" type="PackedScene" id=1] [ext_resource path="res://src/actor/Exit.tscn" type="PackedScene" id=2] -[ext_resource path="res://src/stage/GameCamera.tscn" type="PackedScene" id=3] +[ext_resource path="res://src/stage/CamBounds.gd" type="Script" id=3] [ext_resource path="res://src/stage/DetailTileMap.tscn" type="PackedScene" id=4] [ext_resource path="res://src/stage/SpikeTileMap.tscn" type="PackedScene" id=5] [ext_resource path="res://src/actor/Player.tscn" type="PackedScene" id=6] @@ -98,7 +98,7 @@ 6/name = "crate_tiles.png 6" 6/texture = ExtResource( 11 ) 6/tex_offset = Vector2( 0, 0 ) -6/modulate = Color( 0.670588, 0.321569, 0.211765, 1 ) +6/modulate = Color( 0.678431, 0, 0.156863, 1 ) 6/region = Rect2( 0, 24, 8, 8 ) 6/tile_mode = 0 6/occluder_offset = Vector2( 0, 0 ) @@ -177,8 +177,9 @@ tile_set = SubResource( 3 ) tile_data = PoolIntArray( -1114128, 536870912, 0, -1114127, 536870912, 0, -1114126, 536870912, 0, -1114125, 536870912, 0, -1114124, 536870912, 0, -1114123, 536870912, 0, -1114122, 536870912, 0, -1114121, 536870912, 0, -1114120, 536870912, 0, -1114119, 536870912, 0, -1114118, 536870912, 0, -1114117, 536870912, 0, -1114116, 536870912, 0, -1114115, 536870912, 0, -1114114, 536870912, 0, -1114113, 536870912, 0, -1179648, 536870912, 0, -1179647, 536870912, 0, -1179646, 536870912, 0, -1179645, 536870912, 0, -1179644, 536870912, 0, -1179643, 536870912, 0, -1179642, 536870912, 0, -1179641, 536870912, 0, -1179640, 536870912, 0, -1179639, 536870912, 0, -1179638, 536870912, 0, -1179637, 536870912, 0, -1048592, 536870912, 0, -1048591, 536870912, 0, -1048590, 536870912, 0, -1048589, 536870912, 0, -1048588, 536870912, 0, -1048587, 536870912, 0, -1048586, 536870912, 0, -1048585, 536870912, 0, -1048584, 536870912, 0, -1048583, 536870912, 0, -1048582, 536870912, 0, -1048581, 536870912, 0, -1048580, 536870912, 0, -1048579, 536870912, 0, -1048578, 536870912, 0, -1048577, 536870912, 0, -1114112, 536870912, 0, -1114111, 536870912, 0, -1114110, 536870912, 0, -1114109, 536870912, 0, -1114108, 536870912, 0, -1114107, 536870912, 0, -1114106, 536870912, 0, -1114105, 536870912, 0, -1114104, 536870912, 0, -1114103, 536870912, 0, -1114102, 536870912, 0, -1114101, 536870912, 0, -983056, 536870912, 0, -983055, 536870912, 0, -983054, 536870912, 0, -983053, 536870912, 0, -983052, 536870912, 0, -983051, 536870912, 0, -983050, 536870912, 0, -983049, 536870912, 0, -983048, 536870912, 0, -983047, 536870912, 0, -983046, 536870912, 0, -983045, 536870912, 0, -983044, 536870912, 0, -983043, 536870912, 0, -983042, 536870912, 0, -983041, 536870912, 0, -1048576, 536870912, 0, -1048575, 536870912, 0, -1048574, 536870912, 0, -1048573, 536870912, 0, -1048572, 536870912, 0, -1048571, 536870912, 0, -1048570, 536870912, 0, -1048569, 536870912, 0, -1048568, 536870912, 0, -1048567, 536870912, 0, -1048566, 536870912, 0, -1048565, 536870912, 0, -917520, 536870912, 0, -917519, 536870912, 0, -917518, 536870912, 0, -917517, 536870912, 0, -917516, 536870912, 0, -917515, 536870912, 0, -917514, 536870912, 0, -917513, 536870912, 0, -917512, 536870912, 0, -917511, 536870912, 0, -917510, 536870912, 0, -917509, 536870912, 0, -917508, 536870912, 0, -917507, 536870912, 0, -917506, 536870912, 0, -917505, 536870912, 0, -983040, 536870912, 0, -983039, 536870912, 0, -983038, 536870912, 0, -983037, 536870912, 0, -983036, 536870912, 0, -983035, 536870912, 0, -983034, 536870912, 0, -983033, 536870912, 0, -983032, 536870912, 0, -983031, 536870912, 0, -983030, 536870912, 0, -983029, 536870912, 0, -851984, 536870912, 0, -851983, 536870912, 0, -851982, 536870912, 0, -851981, 536870912, 0, -851980, 536870912, 0, -851979, 536870912, 0, -851978, 536870912, 0, -851977, 536870912, 0, -851976, 536870912, 0, -851975, 536870912, 0, -851974, 536870912, 0, -851973, 536870912, 0, -851972, 536870912, 0, -851971, 536870912, 0, -851970, 536870912, 0, -851969, 536870912, 0, -917504, 536870912, 0, -917503, 536870912, 0, -917502, 536870912, 0, -917501, 536870912, 0, -917500, 536870912, 0, -917499, 536870912, 0, -917498, 536870912, 0, -917497, 536870912, 0, -917496, 536870912, 0, -917495, 536870912, 0, -917494, 536870912, 0, -917493, 536870912, 0, -786448, 536870912, 0, -786447, 536870912, 0, -786446, 536870912, 0, -786445, 536870912, 0, -786444, 536870912, 0, -786443, 536870912, 0, -786442, 536870912, 0, -786441, 536870912, 0, -851962, 536870914, 2, -851961, 2, 3, -720912, 536870912, 0, -720911, 536870912, 0, -720910, 536870912, 0, -720909, 536870912, 0, -720908, 536870912, 0, -720907, 536870912, 0, -720906, 536870912, 0, -720905, 536870912, 0, -655376, 536870912, 0, -655375, 536870912, 0, -655374, 536870912, 0, -655373, 536870912, 0, -655372, 536870912, 0, -655371, 536870912, 0, -655370, 536870912, 0, -655369, 536870912, 0, -589840, 536870912, 0, -589839, 536870912, 0, -589838, 536870912, 0, -524304, 536870912, 0, -524303, 536870912, 0, -524302, 536870912, 0, -458768, 536870912, 0, -458767, 536870912, 0, -458766, 536870912, 0 ) tile_color = Color( 0.768627, 0.407843, 0.454902, 1 ) -[node name="GameCamera" parent="." instance=ExtResource( 3 )] +[node name="CamBounds" type="Node2D" parent="."] position = Vector2( -16, -32 ) +script = ExtResource( 3 ) bounds = Rect2( 0, 16, 0, 0 ) [node name="Actors" type="Node2D" parent="."] @@ -212,5 +213,3 @@ position = Vector2( -83, 0 ) [node name="Note" parent="Actors" instance=ExtResource( 10 )] position = Vector2( -93, -101 ) - -[editable path="GameCamera"] diff --git a/src/map/3-1.tscn b/src/map/3-1.tscn index 288e7cd..8fa2e09 100644 --- a/src/map/3-1.tscn +++ b/src/map/3-1.tscn @@ -2,7 +2,7 @@ [ext_resource path="res://src/stage/SolidTileMap.tscn" type="PackedScene" id=1] [ext_resource path="res://src/actor/Exit.tscn" type="PackedScene" id=2] -[ext_resource path="res://src/stage/GameCamera.tscn" type="PackedScene" id=3] +[ext_resource path="res://src/stage/CamBounds.gd" type="Script" id=3] [ext_resource path="res://src/stage/DetailTileMap.tscn" type="PackedScene" id=4] [ext_resource path="res://src/stage/SpikeTileMap.tscn" type="PackedScene" id=5] [ext_resource path="res://src/actor/Player.tscn" type="PackedScene" id=6] @@ -180,8 +180,9 @@ tile_set = SubResource( 3 ) tile_data = PoolIntArray( -655373, 0, 0, -655372, 0, 0, -655371, 0, 0, -655370, 0, 0, -655369, 0, 0, -655368, 0, 0, -655367, 0, 0, -655366, 0, 0, -655365, 0, 0, -655364, 0, 0, -655363, 0, 0, -655362, 0, 0, -655361, 0, 0, -720896, 0, 0, -720895, 0, 0, -720894, 0, 0, -720893, 0, 0, -720892, 0, 0, -720891, 0, 0, -720890, 0, 0, -720889, 0, 0, -720888, 0, 0, -720887, 0, 0, -720886, 0, 0, -720885, 0, 0, -720884, 0, 0, -720883, 0, 0, -720882, 0, 0, -589837, 0, 0, -589836, 0, 0, -589835, 0, 0, -589834, 0, 0, -589833, 0, 0, -589832, 0, 0, -589831, 0, 0, -589830, 0, 0, -589829, 0, 0, -589828, 0, 0, -589827, 0, 0, -589826, 0, 0, -589825, 0, 0, -655360, 0, 0, -655359, 0, 0, -655358, 0, 0, -655357, 0, 0, -655356, 0, 0, -655355, 0, 0, -655354, 0, 0, -655353, 0, 0, -655352, 0, 0, -655351, 0, 0, -655350, 0, 0, -655349, 0, 0, -655348, 0, 0, -655347, 0, 0, -655346, 0, 0, -524301, 0, 0, -524300, 0, 0, -524299, 0, 0, -524298, 0, 0, -524297, 0, 0, -524296, 0, 0, -524295, 0, 0, -524294, 0, 0, -524293, 0, 0, -524292, 0, 0, -524291, 0, 0, -524290, 0, 0, -524289, 0, 0, -589824, 0, 0, -589823, 0, 0, -589822, 0, 0, -589821, 0, 0, -589820, 0, 0, -589819, 0, 0, -589818, 0, 0, -589817, 0, 0, -589816, 0, 0, -589815, 0, 0, -589814, 0, 0, -589813, 0, 0, -589812, 0, 0, -589811, 0, 0, -589810, 0, 0, -458765, 0, 0, -458764, 0, 0, -458763, 0, 0, -458762, 0, 0, -458761, 0, 0, -458760, 0, 0, -458759, 0, 0, -458758, 0, 0, -458757, 0, 0, -458756, 0, 0, -458755, 0, 0, -458754, 0, 0, -458753, 0, 0, -524288, 0, 0, -524287, 0, 0, -524286, 0, 0, -524285, 0, 0, -524284, 0, 0, -524283, 0, 0, -524282, 0, 0, -524281, 0, 0, -524280, 0, 0, -524279, 0, 0, -524278, 0, 0, -524277, 0, 0, -524276, 0, 0, -524275, 0, 0, -524274, 0, 0, -393229, 0, 0, -393228, 0, 0, -393227, 0, 0, -393226, 0, 0, -393225, 0, 0, -393224, 0, 0, -393223, 0, 0, -393222, 0, 0, -393221, 0, 0, -393220, 0, 0, -393219, 0, 0, -393218, 0, 0, -393217, 0, 0, -458752, 0, 0, -458751, 0, 0, -458750, 0, 0, -458749, 0, 0, -458748, 0, 0, -458747, 0, 0, -458746, 0, 0, -458745, 0, 0, -458744, 0, 0, -458743, 0, 0, -458742, 0, 0, -458741, 0, 0, -458740, 0, 0, -458739, 0, 0, -458738, 0, 0, -327693, 0, 0, -327692, 0, 0, -327691, 0, 0, -327690, 0, 0, -327689, 0, 0, -327688, 0, 0, -327687, 0, 0, -327686, 0, 0, -327685, 0, 0, -327684, 0, 0, -327683, 0, 0, -327682, 0, 0, -393206, 0, 0, -393205, 0, 0, -393204, 0, 0, -393203, 0, 0, -393202, 0, 0, -262157, 0, 0, -262156, 0, 0, -262155, 0, 0, -262154, 0, 0, -262153, 0, 0, -262152, 2, 2, -262151, 536870914, 3, -327670, 0, 0, -327669, 0, 0, -327668, 0, 0, -327667, 0, 0, -327666, 0, 0, -262134, 0, 0, -262133, 0, 0, -262132, 0, 0, -262131, 0, 0, -262130, 0, 0 ) tile_color = Color( 0.698039, 0.698039, 0.858824, 1 ) -[node name="GameCamera" parent="." instance=ExtResource( 3 )] +[node name="CamBounds" type="Node2D" parent="."] position = Vector2( 8, -8 ) +script = ExtResource( 3 ) [node name="Actors" type="Node2D" parent="."] @@ -208,5 +209,3 @@ position = Vector2( 29, 16 ) [node name="Note" parent="Actors" instance=ExtResource( 12 )] position = Vector2( 99, -61 ) - -[editable path="GameCamera"] diff --git a/src/map/3-2.tscn b/src/map/3-2.tscn index f0e5029..bd4ab44 100644 --- a/src/map/3-2.tscn +++ b/src/map/3-2.tscn @@ -2,7 +2,7 @@ [ext_resource path="res://src/stage/SolidTileMap.tscn" type="PackedScene" id=1] [ext_resource path="res://src/actor/Exit.tscn" type="PackedScene" id=2] -[ext_resource path="res://src/stage/GameCamera.tscn" type="PackedScene" id=3] +[ext_resource path="res://src/stage/CamBounds.gd" type="Script" id=3] [ext_resource path="res://src/stage/DetailTileMap.tscn" type="PackedScene" id=4] [ext_resource path="res://src/stage/SpikeTileMap.tscn" type="PackedScene" id=5] [ext_resource path="res://src/actor/Player.tscn" type="PackedScene" id=6] @@ -23,7 +23,7 @@ 0/name = "solid_bricks.png 0" 0/texture = ExtResource( 17 ) 0/tex_offset = Vector2( 0, 0 ) -0/modulate = Color( 0.792157, 0.576471, 0.85098, 1 ) +0/modulate = Color( 0.698039, 0.698039, 0.858824, 1 ) 0/region = Rect2( 0, 0, 16, 8 ) 0/tile_mode = 2 0/autotile/icon_coordinate = Vector2( 0, 0 ) @@ -60,7 +60,7 @@ 4/name = "bricks.png 4" 4/texture = ExtResource( 18 ) 4/tex_offset = Vector2( 0, 0 ) -4/modulate = Color( 0.219608, 0.172549, 0.411765, 1 ) +4/modulate = Color( 0.223529, 0.223529, 0.309804, 1 ) 4/region = Rect2( 0, 0, 40, 8 ) 4/tile_mode = 2 4/autotile/icon_coordinate = Vector2( 0, 0 ) @@ -81,7 +81,7 @@ 5/name = "crate_tiles.png 5" 5/texture = ExtResource( 15 ) 5/tex_offset = Vector2( 0, 0 ) -5/modulate = Color( 1, 0.509804, 0.713726, 1 ) +5/modulate = Color( 0.513726, 0.529412, 0, 1 ) 5/region = Rect2( 0, 16, 24, 8 ) 5/tile_mode = 2 5/autotile/icon_coordinate = Vector2( 0, 0 ) @@ -102,7 +102,7 @@ 6/name = "crate_tiles.png 6" 6/texture = ExtResource( 15 ) 6/tex_offset = Vector2( 0, 0 ) -6/modulate = Color( 0, 0.77, 0.462, 1 ) +6/modulate = Color( 0.670588, 0.215686, 0.541176, 1 ) 6/region = Rect2( 0, 24, 8, 8 ) 6/tile_mode = 0 6/occluder_offset = Vector2( 0, 0 ) @@ -132,7 +132,7 @@ 2/name = "solid_bricks.png 2" 2/texture = ExtResource( 17 ) 2/tex_offset = Vector2( 0, 0 ) -2/modulate = Color( 0.792157, 0.576471, 0.85098, 1 ) +2/modulate = Color( 0.698039, 0.698039, 0.858824, 1 ) 2/region = Rect2( 0, 0, 32, 8 ) 2/tile_mode = 2 2/autotile/icon_coordinate = Vector2( 0, 0 ) @@ -157,15 +157,15 @@ __meta__ = { "_editor_description_": "" } palette = 2 -color_solid = Color( 0.792157, 0.576471, 0.85098, 1 ) -color_back = Color( 0.219608, 0.172549, 0.411765, 1 ) -color_grass = Color( 1, 0.509804, 0.713726, 1 ) -color_wood = Color( 0, 0.77, 0.462, 1 ) +color_solid = Color( 0.698039, 0.698039, 0.858824, 1 ) +color_back = Color( 0.223529, 0.223529, 0.309804, 1 ) +color_grass = Color( 0.513726, 0.529412, 0, 1 ) +color_wood = Color( 0.670588, 0.215686, 0.541176, 1 ) [node name="SolidTileMap" parent="." instance=ExtResource( 1 )] tile_set = SubResource( 1 ) tile_data = PoolIntArray( -524299, 0, 0, -524298, 0, 1, -524297, 536870912, 0, -524296, 0, 1, -524295, 0, 1, -524294, 0, 0, -524293, 0, 1, -524292, 536870912, 0, -524291, 0, 1, -524290, 0, 1, -524289, 0, 0, -589824, 0, 1, -589823, 0, 1, -589822, 536870912, 0, -458763, 0, 1, -524286, 0, 1, -393229, 0, 0, -393228, 0, 1, -393227, 536870912, 0, -458750, 0, 0, -327693, 0, 1, -327681, 0, 0, -393216, 0, 1, -393215, 536870912, 0, -393214, 0, 1, -393213, 0, 0, -393212, 0, 1, -393211, 536870912, 0, -393210, 0, 1, -393209, 0, 1, -393208, 0, 0, -393207, 0, 1, -393206, 0, 1, -393205, 536870912, 0, -393204, 536870913, 0, -393203, 536870913, 0, -393202, 536870913, 0, -262157, 536870912, 0, -327669, 0, 1, -327666, 536870913, 0, -196621, 0, 1, -262133, 0, 0, -262130, 536870913, 0, -131085, 0, 0, -196597, 0, 1, -196594, 536870913, 0, -65549, 0, 1, -65548, 0, 0, -65547, 0, 1, -65546, 536870912, 0, -131064, 0, 0, -131063, 0, 1, -131062, 0, 1, -131061, 536870912, 0, -131058, 536870913, 0, -12, 0, 1, -65528, 0, 1, -65522, 536870913, 0, 65524, 536870912, 0, 65530, 0, 1, 65531, 536870912, 0, 65532, 0, 1, 14, 536870913, 0, 131060, 0, 1, 131066, 0, 0, 131068, 536870912, 0, 65544, 0, 1, 65550, 536870913, 0, 196596, 0, 0, 196597, 0, 1, 196598, 0, 1, 196599, 0, 0, 196600, 0, 1, 196601, 536870912, 0, 196602, 0, 1, 196604, 0, 1, 131080, 0, 0, 131086, 536870913, 0, 262140, 0, 0, 262141, 0, 1, 262142, 0, 0, 262143, 0, 1, 196608, 536870912, 0, 196609, 0, 1, 196612, 0, 1, 196613, 0, 0, 196614, 0, 1, 196615, 536870912, 0, 196616, 0, 1, 196622, 536870913, 0, 262145, 0, 0, 262146, 0, 1, 262147, 0, 1, 262148, 536870912, 0, 262152, 536870913, 0, 262153, 536870913, 0, 262154, 536870913, 0, 262155, 536870913, 0, 262156, 536870913, 0, 262157, 536870913, 0, 262158, 536870913, 0 ) -tile_color = Color( 0.792157, 0.576471, 0.85098, 1 ) +tile_color = Color( 0.698039, 0.698039, 0.858824, 1 ) [node name="SpikeTileMap" parent="." instance=ExtResource( 5 )] tile_data = PoolIntArray( 196605, 0, 0, 196606, 0, 0, 196607, 0, 0, 131072, 0, 0, 131073, 0, 0, 131076, 0, 0, 131077, 0, 0, 131078, 0, 0, 131079, 0, 0 ) @@ -174,17 +174,18 @@ tile_data = PoolIntArray( 196605, 0, 0, 196606, 0, 0, 196607, 0, 0, 131072, 0, 0 z_index = -11 tile_set = SubResource( 2 ) tile_data = PoolIntArray( -589834, 5, 2, -589833, 5, 0, -589832, 5, 0, -589831, 5, 0, -589830, 536870917, 2, -589825, 5, 2, -655360, 5, 0, -655359, 5, 0, -655358, 5, 0, -655357, -1610612731, 2, -589821, 5, 0, -458766, 5, 2, -458765, 5, 0, -458764, 5, 0, -458762, 1610612741, 2, -458758, 1073741829, 2, -458757, 5, 0, -458756, 5, 0, -458755, 5, 0, -458754, 5, 0, -458753, 1610612741, 2, -524285, 5, 0, -524284, 536870917, 2, -524281, 5, 2, -524280, 536870917, 2, -393230, -1073741819, 0, -458749, 5, 0, -458748, 1073741829, 0, -458747, 1073741829, 0, -458746, 1073741829, 0, -458745, 5, 0, -458744, 5, 0, -458743, 5, 0, -327694, -1073741819, 0, -327691, 536870917, 2, -327689, 5, 2, -327688, -1610612731, 2, -262158, -1073741819, 2, -262156, -1073741818, 0, -262155, -1073741818, 0, -262154, -1073741818, 0, -262153, -1610612731, 0, -262152, -1610612731, 0, -327679, 4, 2, -327678, 536870916, 0, -327677, 536870916, 2, -327675, 1610612742, 0, -327674, 1610612741, 2, -327673, 4, 2, -327672, 4, 3, -327671, 1073741829, 2, -327670, 5, 0, -327668, -1610612731, 2, -196617, -1073741819, 2, -196616, 1610612741, 2, -196613, 4, 2, -196612, 4, 1, -196611, 4, 3, -196609, 5, 2, -262144, 5, 0, -262143, -1610612731, 2, -262139, 1610612742, 0, -262137, 536870916, 3, -262136, 536870916, 2, -262132, -1610612731, 0, -131077, 4, 2, -131076, 4, 0, -131075, 536870916, 2, -131073, 5, 0, -196608, 5, 0, -196607, 5, 0, -196604, 5, 2, -196603, 5, 0, -196602, -1610612731, 2, -196601, 4, 2, -196600, 4, 3, -196596, -1610612731, 0, -65544, 536870916, 3, -65543, 536870916, 2, -65537, -1073741819, 2, -131072, 5, 0, -131071, 1610612741, 2, -131068, -1073741819, 2, -131067, 5, 0, -131066, 1610612741, 2, -131060, -1610612731, 0, -13, 4, 2, -10, 6, 0, -6, 5, 2, -5, 5, 0, -4, 536870917, 2, -65536, 6, 0, -65527, 5, 0, -65526, 5, 0, -65525, 5, 0, -65524, 1610612741, 2, 65526, 1610612741, 0, 0, 1610612742, 0, 9, -1610612731, 0, 131067, 536870916, 1, 65536, 1610612742, 0, 65545, -536870907, 2, 196603, 536870916, 2, 131072, 1610612742, 0, 262132, 4, 2, 262133, 536870916, 1, 262134, 4, 0, 262135, 536870916, 1, 262136, 536870916, 0, 262137, 536870916, 1, 262138, 536870916, 2, 327669, 4, 2, 327670, 536870916, 1, 327671, 4, 0, 327672, 536870916, 1, 327673, 536870916, 2, 262144, 4, 2, 262149, 536870916, 2 ) -brick_color = Color( 0.219608, 0.172549, 0.411765, 1 ) -grass_color = Color( 1, 0.509804, 0.713726, 1 ) -wood_color = Color( 0, 0.77, 0.462, 1 ) +brick_color = Color( 0.223529, 0.223529, 0.309804, 1 ) +grass_color = Color( 0.513726, 0.529412, 0, 1 ) +wood_color = Color( 0.670588, 0.215686, 0.541176, 1 ) [node name="ObscureMap" parent="." instance=ExtResource( 13 )] tile_set = SubResource( 3 ) tile_data = PoolIntArray( -327668, 0, 0, -327667, 0, 0, -262132, 0, 0, -262131, 0, 0, -196596, 0, 0, -196595, 0, 0, -131060, 0, 0, -131059, 0, 0, -65527, 0, 0, -65526, 0, 0, -65525, 0, 0, -65524, 0, 0, -65523, 0, 0, 8, 536870914, 2, 9, 0, 0, 10, 0, 0, 11, 0, 0, 12, 0, 0, 13, 0, 0, 65545, 0, 0, 65546, 0, 0, 65547, 536870912, 0, 65548, 536870912, 0, 65549, 0, 0, 131081, 0, 0, 131082, 0, 0, 131083, 536870912, 0, 131084, 536870912, 0, 131085, 0, 0, 196617, 0, 0, 196618, 0, 0, 196619, 0, 0, 196620, 0, 0, 196621, 0, 0 ) -tile_color = Color( 0.792157, 0.576471, 0.85098, 1 ) +tile_color = Color( 0.698039, 0.698039, 0.858824, 1 ) -[node name="GameCamera" parent="." instance=ExtResource( 3 )] +[node name="CamBounds" type="Node2D" parent="."] position = Vector2( -4, -16 ) +script = ExtResource( 3 ) [node name="Actors" type="Node2D" parent="."] @@ -255,5 +256,3 @@ position = Vector2( 76, -24 ) [node name="Note" parent="Actors" instance=ExtResource( 14 )] position = Vector2( 91, 11 ) - -[editable path="GameCamera"] diff --git a/src/map/3-3.tscn b/src/map/3-3.tscn index 1798cfb..417f159 100644 --- a/src/map/3-3.tscn +++ b/src/map/3-3.tscn @@ -2,7 +2,7 @@ [ext_resource path="res://src/stage/SolidTileMap.tscn" type="PackedScene" id=1] [ext_resource path="res://src/actor/Exit.tscn" type="PackedScene" id=2] -[ext_resource path="res://src/stage/GameCamera.tscn" type="PackedScene" id=3] +[ext_resource path="res://src/stage/CamBounds.gd" type="Script" id=3] [ext_resource path="res://src/stage/DetailTileMap.tscn" type="PackedScene" id=4] [ext_resource path="res://src/stage/SpikeTileMap.tscn" type="PackedScene" id=5] [ext_resource path="res://src/actor/Player.tscn" type="PackedScene" id=6] @@ -23,7 +23,7 @@ 0/name = "solid_bricks.png 0" 0/texture = ExtResource( 17 ) 0/tex_offset = Vector2( 0, 0 ) -0/modulate = Color( 0.792157, 0.576471, 0.85098, 1 ) +0/modulate = Color( 0.698039, 0.698039, 0.858824, 1 ) 0/region = Rect2( 0, 0, 16, 8 ) 0/tile_mode = 2 0/autotile/icon_coordinate = Vector2( 0, 0 ) @@ -60,7 +60,7 @@ 4/name = "bricks.png 4" 4/texture = ExtResource( 18 ) 4/tex_offset = Vector2( 0, 0 ) -4/modulate = Color( 0.219608, 0.172549, 0.411765, 1 ) +4/modulate = Color( 0.223529, 0.223529, 0.309804, 1 ) 4/region = Rect2( 0, 0, 40, 8 ) 4/tile_mode = 2 4/autotile/icon_coordinate = Vector2( 0, 0 ) @@ -81,7 +81,7 @@ 5/name = "crate_tiles.png 5" 5/texture = ExtResource( 15 ) 5/tex_offset = Vector2( 0, 0 ) -5/modulate = Color( 1, 0.509804, 0.713726, 1 ) +5/modulate = Color( 0.513726, 0.529412, 0, 1 ) 5/region = Rect2( 0, 16, 24, 8 ) 5/tile_mode = 2 5/autotile/icon_coordinate = Vector2( 0, 0 ) @@ -102,7 +102,7 @@ 6/name = "crate_tiles.png 6" 6/texture = ExtResource( 15 ) 6/tex_offset = Vector2( 0, 0 ) -6/modulate = Color( 0, 0.77, 0.462, 1 ) +6/modulate = Color( 0.670588, 0.215686, 0.541176, 1 ) 6/region = Rect2( 0, 24, 8, 8 ) 6/tile_mode = 0 6/occluder_offset = Vector2( 0, 0 ) @@ -132,7 +132,7 @@ 2/name = "solid_bricks.png 2" 2/texture = ExtResource( 17 ) 2/tex_offset = Vector2( 0, 0 ) -2/modulate = Color( 0.792157, 0.576471, 0.85098, 1 ) +2/modulate = Color( 0.698039, 0.698039, 0.858824, 1 ) 2/region = Rect2( 0, 0, 32, 8 ) 2/tile_mode = 2 2/autotile/icon_coordinate = Vector2( 0, 0 ) @@ -157,15 +157,15 @@ __meta__ = { "_editor_description_": "" } palette = 2 -color_solid = Color( 0.792157, 0.576471, 0.85098, 1 ) -color_back = Color( 0.219608, 0.172549, 0.411765, 1 ) -color_grass = Color( 1, 0.509804, 0.713726, 1 ) -color_wood = Color( 0, 0.77, 0.462, 1 ) +color_solid = Color( 0.698039, 0.698039, 0.858824, 1 ) +color_back = Color( 0.223529, 0.223529, 0.309804, 1 ) +color_grass = Color( 0.513726, 0.529412, 0, 1 ) +color_wood = Color( 0.670588, 0.215686, 0.541176, 1 ) [node name="SolidTileMap" parent="." instance=ExtResource( 1 )] tile_set = SubResource( 1 ) tile_data = PoolIntArray( -983056, 1, 0, -983055, 1, 0, -983054, 1, 0, -983053, 1, 0, -983052, 1, 0, -983051, 1, 0, -983050, 1, 0, -983049, 1, 0, -983048, 1, 0, -983047, 1, 0, -983046, 1, 0, -983045, 1, 0, -983044, 1, 0, -983043, 1, 0, -983042, 1, 0, -983041, 1, 0, -1048576, 1, 0, -1048575, 1, 0, -1048574, 1, 0, -1048573, 1, 0, -1048572, 1, 0, -1048571, 1, 0, -1048570, 1, 0, -1048569, 1, 0, -1048568, 1, 0, -1048567, 1, 0, -1048566, 1, 0, -1048565, 1, 0, -1048564, 1, 0, -1048563, 1, 0, -917520, 1, 0, -983027, 1, 0, -851984, 1, 0, -917491, 1, 0, -786448, 1, 0, -851955, 1, 0, -720912, 1, 0, -786419, 1, 0, -655376, 1, 0, -720883, 1, 0, -589840, 1, 0, -589830, 0, 1, -589829, 0, 0, -589828, 0, 1, -589827, 536870912, 0, -589826, 0, 1, -589825, 0, 0, -655360, 0, 1, -655359, 536870912, 0, -655358, 0, 1, -655357, 0, 1, -655356, 536870912, 0, -655347, 1, 0, -524304, 1, 0, -524294, 536870912, 0, -589820, 0, 1, -589811, 1, 0, -458768, 1, 0, -458767, 1, 0, -458766, 1, 0, -458765, 1, 0, -458764, 1, 0, -458763, 1, 0, -458762, 0, 1, -458761, 0, 0, -458760, 0, 1, -458759, 536870912, 0, -458758, 0, 1, -524284, 0, 0, -524275, 1, 0, -393226, 536870912, 0, -393222, 0, 0, -393221, 0, 1, -393220, 536870912, 0, -393219, 536870912, 1, -458748, 0, 1, -458747, 0, 0, -458746, 0, 1, -458745, 536870912, 0, -458739, 1, 0, -327690, 0, 1, -393203, 1, 0, -262154, 0, 0, -262153, 0, 1, -327667, 1, 0, -196617, 536870912, 0, -262137, 0, 0, -262136, 1, 0, -262135, 1, 0, -262134, 1, 0, -262133, 1, 0, -262132, 1, 0, -262131, 1, 0, -131081, 0, 1, -196601, 0, 1, -65545, 0, 0, -131065, 536870912, 0, -9, 0, 0, -8, 0, 1, -7, 536870912, 0, -6, 0, 1, -5, 0, 0, -4, 0, 1, -3, 536870912, 0, -65529, 0, 1, 65533, 0, 1, 7, 536870912, 0, 131069, 0, 0, 131070, 0, 1, 131071, 536870912, 0, 65536, 0, 1, 65537, 0, 0, 65538, 0, 1, 65539, 536870912, 0, 65540, 0, 1, 65543, 536870912, 0, 131076, 0, 0, 131079, 0, 1, 196612, 0, 1, 196613, 0, 0, 196614, 0, 1, 196615, 536870912, 0 ) -tile_color = Color( 0.792157, 0.576471, 0.85098, 1 ) +tile_color = Color( 0.698039, 0.698039, 0.858824, 1 ) [node name="SpikeTileMap" parent="." instance=ExtResource( 5 )] tile_data = PoolIntArray( 65534, 0, 0, 65535, 0, 0, 0, 0, 0, 1, 0, 0, 2, 0, 0, 3, 0, 0, 4, 0, 0 ) @@ -174,17 +174,18 @@ tile_data = PoolIntArray( 65534, 0, 0, 65535, 0, 0, 0, 0, 0, 1, 0, 0, 2, 0, 0, 3 z_index = -11 tile_set = SubResource( 2 ) tile_data = PoolIntArray( -720895, 5, 2, -720894, 5, 0, -720893, 5, 0, -720892, 5, 0, -720891, 536870917, 2, -655355, -1610612731, 0, -524299, 5, 2, -524298, 5, 0, -524297, 5, 0, -524296, 5, 0, -524295, 536870917, 2, -524292, 536870916, 3, -524291, 536870916, 1, -524290, 536870916, 2, -589823, 1610612742, 0, -589819, -1610612731, 0, -458763, -1073741819, 0, -458756, 536870916, 3, -458755, 536870916, 0, -458754, 536870916, 2, -524288, 5, 2, -524287, 5, 0, -524286, -1610612731, 2, -524283, -1610612731, 0, -524282, 5, 0, -524281, 5, 0, -524280, 536870917, 2, -393228, -2147483643, 2, -393227, -1073741819, 0, -393224, 4, 2, -393223, 4, 3, -458752, -1073741819, 2, -458751, 5, 0, -458750, 1610612741, 2, -458744, -536870907, 0, -327692, -1073741819, 2, -327691, -1073741819, 0, -327688, 4, 2, -327687, 4, 0, -327686, 4, 3, -393208, -536870907, 0, -262155, -1073741819, 0, -262152, 4, 2, -262151, 4, 3, -262150, 5, 2, -262149, 5, 0, -262148, -1610612731, 2, -327674, -2147483643, 2, -327673, 536870917, 0, -327672, -536870907, 2, -196619, -1073741819, 2, -196618, 5, 0, -196614, -1073741819, 2, -196613, 5, 0, -196612, 1610612741, 2, -262138, -1073741819, 0, -131082, 5, 0, -131080, 4, 0, -131079, 536870916, 2, -131077, 1610612742, 0, -131074, 536870916, 3, -131073, 536870916, 2, -196602, -1073741819, 0, -65547, -2147483643, 2, -65546, 5, 0, -65544, 536870916, 1, -65543, 536870916, 2, -65541, 1610612742, 0, -131068, 5, 0, -131066, -1073741819, 0, -11, -1073741819, 2, -10, 5, 0, -65532, 1610612742, 0, -65530, -1073741819, 2, -65528, -1610612731, 2, 65526, 1073741829, 2, 65527, 5, 0, 65528, 5, 0, 65529, 1610612741, 2, 4, 1610612742, 0, 8, -1610612731, 0, 65544, -1610612731, 0, 196606, 1073741829, 2, 196607, 5, 0, 131072, 5, 0, 131073, 5, 0, 131074, 1610612741, 2, 131080, -536870907, 2 ) -brick_color = Color( 0.219608, 0.172549, 0.411765, 1 ) -grass_color = Color( 1, 0.509804, 0.713726, 1 ) -wood_color = Color( 0, 0.77, 0.462, 1 ) +brick_color = Color( 0.223529, 0.223529, 0.309804, 1 ) +grass_color = Color( 0.513726, 0.529412, 0, 1 ) +wood_color = Color( 0.670588, 0.215686, 0.541176, 1 ) [node name="ObscureMap" parent="." instance=ExtResource( 13 )] tile_set = SubResource( 3 ) tile_data = PoolIntArray( -917519, 0, 0, -917518, 0, 0, -917517, 0, 0, -917516, 0, 0, -917515, 0, 0, -917514, 0, 0, -917513, 0, 0, -917512, 0, 0, -917511, 0, 0, -917510, 0, 0, -917509, 0, 0, -917508, 0, 0, -917507, 0, 0, -917506, 0, 0, -917505, 0, 0, -983040, 0, 0, -983039, 0, 0, -983038, 0, 0, -983037, 0, 0, -983036, 0, 0, -983035, 0, 0, -983034, 0, 0, -983033, 0, 0, -983032, 0, 0, -983031, 0, 0, -983030, 0, 0, -983029, 0, 0, -983028, 0, 0, -851983, 0, 0, -851982, 0, 0, -851981, 0, 0, -851980, 0, 0, -851979, 0, 0, -851978, 0, 0, -851977, 0, 0, -851976, 0, 0, -851975, 0, 0, -851974, 0, 0, -851973, 0, 0, -851972, 0, 0, -851971, 0, 0, -851970, 0, 0, -851969, 0, 0, -917504, 0, 0, -917503, 0, 0, -917502, 0, 0, -917501, 0, 0, -917500, 0, 0, -917499, 0, 0, -917498, 0, 0, -917497, 0, 0, -917496, 0, 0, -917495, 0, 0, -917494, 0, 0, -917493, 0, 0, -917492, 0, 0, -786447, 0, 0, -786446, 0, 0, -786445, 0, 0, -786444, 0, 0, -786443, 0, 0, -786442, 0, 0, -786441, 0, 0, -786440, 0, 0, -786439, 0, 0, -786438, 0, 0, -786437, 0, 0, -786436, 0, 0, -786435, 0, 0, -786434, 0, 0, -786433, 0, 0, -851968, 0, 0, -851967, 0, 0, -851966, 0, 0, -851965, 0, 0, -851964, 0, 0, -851963, 0, 0, -851962, 0, 0, -851961, 0, 0, -851960, 0, 0, -851959, 0, 0, -851958, 0, 0, -851957, 0, 0, -851956, 0, 0, -720911, 0, 0, -720910, 0, 0, -720909, 0, 0, -720908, 0, 0, -720907, 0, 0, -720906, 0, 0, -720905, 0, 0, -720904, 0, 0, -720903, 0, 0, -720902, 0, 0, -720901, 0, 0, -720900, 0, 0, -720899, 0, 0, -720898, 0, 0, -720897, 0, 0, -786432, 0, 0, -786431, 0, 0, -786430, 0, 0, -786429, 0, 0, -786428, 0, 0, -786427, 0, 0, -786426, 0, 0, -786425, 0, 0, -786424, 0, 0, -786423, 0, 0, -786422, 0, 0, -786421, 0, 0, -786420, 0, 0, -655375, 0, 0, -655374, 0, 0, -655373, 0, 0, -655372, 0, 0, -655371, 0, 0, -655370, 0, 0, -655369, 0, 0, -655368, 0, 0, -655367, 0, 0, -655366, 0, 0, -655365, 0, 0, -655364, 0, 0, -655363, 0, 0, -655362, 0, 0, -655361, 0, 0, -720896, 0, 0, -720895, 0, 0, -720894, 0, 0, -720893, 0, 0, -720892, 0, 0, -720891, 0, 0, -720890, 0, 0, -720889, 0, 0, -720888, 0, 0, -720887, 0, 0, -720886, 0, 0, -720885, 0, 0, -720884, 0, 0, -589839, 0, 0, -589838, 0, 0, -589837, 0, 0, -589836, 0, 0, -589835, 0, 0, -589834, 0, 0, -589833, 0, 0, -589832, 0, 0, -589831, 0, 0, -655355, 0, 0, -655354, 0, 0, -655353, 0, 0, -655352, 0, 0, -655351, 0, 0, -655350, 0, 0, -655349, 0, 0, -655348, 0, 0, -524303, 0, 0, -524302, 0, 0, -524301, 0, 0, -524300, 0, 0, -524299, 0, 0, -524298, 0, 0, -524297, 0, 0, -524296, 0, 0, -524295, 0, 0, -589819, 0, 0, -589818, 0, 0, -589817, 0, 0, -589816, 0, 0, -589815, 0, 0, -589814, 0, 0, -589813, 0, 0, -589812, 0, 0, -524283, 0, 0, -524282, 0, 0, -524281, 0, 0, -524280, 0, 0, -524279, 0, 0, -524278, 0, 0, -524277, 0, 0, -524276, 0, 0, -458744, 0, 0, -458743, 0, 0, -458742, 0, 0, -458741, 0, 0, -458740, 0, 0, -393209, 536870914, 3, -393208, 0, 0, -393207, 0, 0, -393206, 0, 0, -393205, 0, 0, -393204, 0, 0, -327673, 2, 2, -327672, 0, 0, -327671, 0, 0, -327670, 0, 0, -327669, 0, 0, -327668, 0, 0 ) -tile_color = Color( 0.792157, 0.576471, 0.85098, 1 ) +tile_color = Color( 0.698039, 0.698039, 0.858824, 1 ) -[node name="GameCamera" parent="." instance=ExtResource( 3 )] +[node name="CamBounds" type="Node2D" parent="."] position = Vector2( -8, -24 ) +script = ExtResource( 3 ) [node name="Actors" type="Node2D" parent="."] @@ -232,5 +233,3 @@ position = Vector2( -30, -24 ) [node name="Note" parent="Actors" instance=ExtResource( 14 )] position = Vector2( -109, -77 ) - -[editable path="GameCamera"] diff --git a/src/map/3-4.tscn b/src/map/3-4.tscn index 0e0ae99..b7164df 100644 --- a/src/map/3-4.tscn +++ b/src/map/3-4.tscn @@ -2,7 +2,7 @@ [ext_resource path="res://src/stage/SolidTileMap.tscn" type="PackedScene" id=1] [ext_resource path="res://src/actor/Exit.tscn" type="PackedScene" id=2] -[ext_resource path="res://src/stage/GameCamera.tscn" type="PackedScene" id=3] +[ext_resource path="res://src/stage/CamBounds.gd" type="Script" id=3] [ext_resource path="res://src/stage/DetailTileMap.tscn" type="PackedScene" id=4] [ext_resource path="res://src/stage/SpikeTileMap.tscn" type="PackedScene" id=5] [ext_resource path="res://src/actor/Player.tscn" type="PackedScene" id=6] @@ -23,7 +23,7 @@ 0/name = "solid_bricks.png 0" 0/texture = ExtResource( 17 ) 0/tex_offset = Vector2( 0, 0 ) -0/modulate = Color( 0.792157, 0.576471, 0.85098, 1 ) +0/modulate = Color( 0.698039, 0.698039, 0.858824, 1 ) 0/region = Rect2( 0, 0, 16, 8 ) 0/tile_mode = 2 0/autotile/icon_coordinate = Vector2( 0, 0 ) @@ -60,7 +60,7 @@ 4/name = "bricks.png 4" 4/texture = ExtResource( 18 ) 4/tex_offset = Vector2( 0, 0 ) -4/modulate = Color( 0.219608, 0.172549, 0.411765, 1 ) +4/modulate = Color( 0.223529, 0.223529, 0.309804, 1 ) 4/region = Rect2( 0, 0, 40, 8 ) 4/tile_mode = 2 4/autotile/icon_coordinate = Vector2( 0, 0 ) @@ -81,7 +81,7 @@ 5/name = "crate_tiles.png 5" 5/texture = ExtResource( 15 ) 5/tex_offset = Vector2( 0, 0 ) -5/modulate = Color( 1, 0.509804, 0.713726, 1 ) +5/modulate = Color( 0.513726, 0.529412, 0, 1 ) 5/region = Rect2( 0, 16, 24, 8 ) 5/tile_mode = 2 5/autotile/icon_coordinate = Vector2( 0, 0 ) @@ -102,7 +102,7 @@ 6/name = "crate_tiles.png 6" 6/texture = ExtResource( 15 ) 6/tex_offset = Vector2( 0, 0 ) -6/modulate = Color( 0, 0.77, 0.462, 1 ) +6/modulate = Color( 0.670588, 0.215686, 0.541176, 1 ) 6/region = Rect2( 0, 24, 8, 8 ) 6/tile_mode = 0 6/occluder_offset = Vector2( 0, 0 ) @@ -132,7 +132,7 @@ 2/name = "solid_bricks.png 2" 2/texture = ExtResource( 17 ) 2/tex_offset = Vector2( 0, 0 ) -2/modulate = Color( 0.792157, 0.576471, 0.85098, 1 ) +2/modulate = Color( 0.698039, 0.698039, 0.858824, 1 ) 2/region = Rect2( 0, 0, 32, 8 ) 2/tile_mode = 2 2/autotile/icon_coordinate = Vector2( 0, 0 ) @@ -154,15 +154,15 @@ [node name="Stage" type="Node2D"] script = ExtResource( 7 ) palette = 2 -color_solid = Color( 0.792157, 0.576471, 0.85098, 1 ) -color_back = Color( 0.219608, 0.172549, 0.411765, 1 ) -color_grass = Color( 1, 0.509804, 0.713726, 1 ) -color_wood = Color( 0, 0.77, 0.462, 1 ) +color_solid = Color( 0.698039, 0.698039, 0.858824, 1 ) +color_back = Color( 0.223529, 0.223529, 0.309804, 1 ) +color_grass = Color( 0.513726, 0.529412, 0, 1 ) +color_wood = Color( 0.670588, 0.215686, 0.541176, 1 ) [node name="SolidTileMap" parent="." instance=ExtResource( 1 )] tile_set = SubResource( 1 ) tile_data = PoolIntArray( -851981, 536870913, 0, -851980, 536870913, 0, -851979, 536870913, 0, -851978, 536870913, 0, -851977, 536870913, 0, -851976, 536870913, 0, -851975, 536870913, 0, -851974, 536870913, 0, -851973, 536870913, 0, -851972, 536870913, 0, -851971, 536870913, 0, -851970, 536870913, 0, -851969, 536870913, 0, -917504, 536870913, 0, -917503, 536870913, 0, -917502, 536870913, 0, -917501, 536870913, 0, -917500, 536870913, 0, -917499, 536870913, 0, -917498, 536870913, 0, -917497, 536870913, 0, -917496, 536870913, 0, -917495, 536870913, 0, -917494, 536870913, 0, -917493, 536870913, 0, -917492, 536870913, 0, -917491, 536870913, 0, -917490, 536870913, 0, -917489, 536870913, 0, -917488, 536870913, 0, -917487, 536870913, 0, -917486, 536870913, 0, -917485, 536870913, 0, -917484, 536870913, 0, -917483, 536870913, 0, -917482, 536870913, 0, -786445, 536870913, 0, -851946, 536870913, 0, -720909, 536870913, 0, -786410, 536870913, 0, -655373, 536870913, 0, -720874, 536870913, 0, -589837, 536870913, 0, -655338, 536870913, 0, -524301, 536870913, 0, -589802, 536870913, 0, -458765, 536870913, 0, -458764, 536870913, 0, -458763, 0, 0, -458762, 0, 1, -458761, 536870912, 0, -458760, 0, 1, -458759, 536870912, 0, -458758, 0, 1, -524284, 0, 1, -524283, 0, 0, -524282, 536870912, 1, -524281, 536870912, 1, -524280, 536870912, 1, -524279, 536870912, 0, -524278, 0, 1, -524277, 0, 1, -524276, 0, 0, -524275, 0, 1, -524274, 536870912, 0, -524266, 536870913, 0, -393227, 0, 0, -393222, 0, 0, -393221, 0, 1, -393220, 536870912, 0, -393219, 0, 1, -393218, 0, 0, -393217, 0, 1, -458752, 536870912, 0, -458751, 0, 1, -458738, 0, 1, -458730, 536870913, 0, -327691, 0, 1, -327686, 0, 1, -393202, 0, 0, -393201, 0, 1, -393200, 536870912, 0, -393199, 0, 1, -393198, 0, 0, -393197, 0, 1, -393196, 536870912, 0, -393195, 536870913, 0, -393194, 536870913, 0, -262155, 0, 0, -262151, 0, 1, -262150, 536870912, 0, -327660, 0, 1, -196619, 0, 1, -196614, 0, 1, -262124, 536870912, 0, -131083, 536870912, 0, -131078, 0, 0, -131077, 0, 1, -131076, 536870912, 0, -131075, 0, 1, -196591, 0, 0, -196590, 0, 1, -196589, 536870912, 0, -196588, 0, 1, -65547, 536870912, 0, -131069, 0, 0, -131068, 0, 1, -131055, 0, 1, -11, 0, 1, -65519, 536870912, 0, 65525, 536870912, 0, 17, 0, 1, 131061, 0, 1, 65547, 0, 0, 65548, 0, 1, 65549, 536870912, 0, 65550, 0, 1, 65551, 0, 0, 65552, 0, 1, 65553, 536870912, 0, 196597, 0, 0, 131083, 0, 1, 262133, 0, 0, 262134, 0, 1, 262135, 0, 1, 262136, 536870912, 0, 262137, 0, 1, 262138, 0, 0, 262139, 0, 1, 262140, 536870912, 0, 262141, 0, 1, 196619, 536870912, 0, 327677, 536870912, 0, 262155, 0, 1, 393213, 0, 1, 393214, 0, 0, 393215, 0, 1, 327680, 536870912, 0, 327681, 0, 1, 327682, 0, 0, 327683, 0, 1, 327684, 0, 1, 327685, 0, 1, 327686, 0, 1, 327687, 536870912, 0, 327688, 0, 1, 327689, 0, 0, 327690, 0, 1, 327691, 536870912, 0 ) -tile_color = Color( 0.792157, 0.576471, 0.85098, 1 ) +tile_color = Color( 0.698039, 0.698039, 0.858824, 1 ) [node name="SpikeTileMap" parent="." instance=ExtResource( 5 )] tile_data = PoolIntArray( 11, 0, 0, 12, 0, 0, 13, 0, 0, 14, 0, 0, 15, 0, 0, 16, 0, 0, 327678, 0, 0, 327679, 0, 0, 262144, 0, 0, 262145, 0, 0, 262146, 0, 0, 262147, 0, 0, 262148, 0, 0, 262149, 0, 0, 262150, 0, 0, 262151, 0, 0, 262152, 0, 0, 262153, 0, 0, 262154, 0, 0 ) @@ -171,17 +171,18 @@ tile_data = PoolIntArray( 11, 0, 0, 12, 0, 0, 13, 0, 0, 14, 0, 0, 15, 0, 0, 16, z_index = -11 tile_set = SubResource( 2 ) tile_data = PoolIntArray( -524296, 5, 2, -524295, 5, 0, -524294, 5, 0, -524293, 536870917, 2, -589819, 5, 2, -589818, 5, 0, -589817, 5, 2, -589816, 5, 0, -589815, 5, 0, -589814, 536870917, 2, -589813, 5, 0, -589812, 536870917, 2, -458757, -536870907, 0, -458755, 5, 2, -458754, 5, 0, -458753, 5, 0, -524288, 536870917, 2, -393226, 5, 0, -393225, 5, 0, -393224, 1610612741, 2, -458746, 1610612742, 0, -458741, 1610612742, 0, -327690, -1073741819, 0, -327685, 1073741829, 2, -327684, 5, 0, -327683, 1610612741, 2, -393216, 1610612742, 0, -393210, 1610612742, 0, -393206, 5, 2, -393205, 5, 0, -393204, -1610612731, 2, -262156, -2147483643, 2, -262154, -536870907, 2, -327680, 1610612742, 0, -327677, 4, 2, -327676, 4, 3, -327674, 5, 0, -327670, 5, 0, -327669, 5, 0, -327668, 5, 0, -327665, 536870916, 3, -327664, 536870916, 1, -327663, 536870916, 2, -196620, -1073741819, 0, -196609, 5, 2, -262144, 5, 0, -262143, -1610612731, 2, -262141, 4, 2, -262140, 4, 3, -262134, -1073741819, 2, -262133, 5, 0, -262132, 1610612741, 2, -262129, 536870916, 3, -262128, 536870916, 0, -262127, 536870916, 2, -131084, -1073741819, 0, -131081, 5, 2, -131080, -1610612731, 2, -131073, 5, 0, -196608, 5, 0, -196607, 5, 0, -65548, -1073741819, 2, -65546, -1610612730, 0, -65545, 5, 0, -65544, 5, 0, -65537, -1073741819, 2, -131072, 5, 0, -131071, 1610612741, 2, -131059, 5, 0, -9, -1073741819, 2, -8, 1610612741, 2, -5, 4, 2, -4, 4, 1, -3, 536870916, 0, -2, 4, 3, -65532, 1610612742, 0, -65524, -1073741819, 2, -65523, 1610612742, 0, -65522, -536870907, 2, -65518, -1610612731, 2, 65531, 4, 2, 65532, 4, 0, 65533, 4, 1, 65534, 4, 3, 4, 1610612741, 0, 7, 5, 2, 8, 5, 0, 9, -1610612731, 2, 13, 1610612742, 0, 18, 5, 0, 131067, 4, 2, 131068, 4, 1, 131069, 536870916, 0, 131070, 536870916, 2, 65543, 5, 0, 65544, 5, 0, 65545, 5, 0, 65554, 5, 0, 131076, 536870916, 3, 131077, 536870916, 0, 131078, 4, 3, 131079, -1073741819, 2, 131080, 5, 0, 131081, 1610612741, 2, 131084, 5, 2, 131085, 1610612741, 0, 131086, 1610612741, 0, 131087, 1610612741, 0, 131088, 1610612741, 0, 131089, 1610612741, 0, 131090, -536870907, 2, 196609, 5, 0, 196612, 4, 2, 196613, 4, 1, 196614, 4, 3, 196616, 1610612742, 0, 196620, -1610612731, 0, 196623, 1073741829, 2, 196624, 1610612741, 2, 327671, 1073741829, 2, 327672, 5, 0, 327673, 5, 0, 327674, 5, 0, 327675, 5, 0, 327676, -1610612731, 2, 262145, 1610612742, 0, 262152, 1610612742, 0, 262156, -1610612731, 0, 393212, -1073741819, 0, 327692, -1610612731, 0, 458748, 1073741829, 2, 458749, 5, 0, 458750, 5, 0, 458751, 5, 0, 393216, 5, 0, 393217, 1610612741, 2, 393224, 1073741829, 2, 393225, 5, 0, 393226, 5, 0, 393227, 5, 0, 393228, 1610612741, 2 ) -brick_color = Color( 0.219608, 0.172549, 0.411765, 1 ) -grass_color = Color( 1, 0.509804, 0.713726, 1 ) -wood_color = Color( 0, 0.77, 0.462, 1 ) +brick_color = Color( 0.223529, 0.223529, 0.309804, 1 ) +grass_color = Color( 0.513726, 0.529412, 0, 1 ) +wood_color = Color( 0.670588, 0.215686, 0.541176, 1 ) [node name="ObscureMap" parent="." instance=ExtResource( 13 )] tile_set = SubResource( 3 ) tile_data = PoolIntArray( -786444, 0, 0, -786443, 0, 0, -786442, 0, 0, -786441, 0, 0, -786440, 0, 0, -786439, 0, 0, -786438, 0, 0, -786437, 0, 0, -786436, 0, 0, -786435, 0, 0, -786434, 0, 0, -786433, 0, 0, -851968, 0, 0, -851967, 0, 0, -851966, 0, 0, -851965, 0, 0, -851964, 0, 0, -851963, 0, 0, -851962, 0, 0, -851961, 0, 0, -851960, 0, 0, -851959, 0, 0, -851958, 0, 0, -851957, 0, 0, -851956, 0, 0, -851955, 0, 0, -851954, 0, 0, -851953, 0, 0, -851952, 0, 0, -851951, 0, 0, -851950, 0, 0, -851949, 0, 0, -851948, 0, 0, -851947, 0, 0, -720908, 0, 0, -720907, 0, 0, -720906, 0, 0, -720905, 0, 0, -720904, 0, 0, -720903, 0, 0, -720902, 0, 0, -720901, 0, 0, -720900, 0, 0, -720899, 0, 0, -720898, 0, 0, -720897, 0, 0, -786432, 0, 0, -786431, 0, 0, -786430, 0, 0, -786429, 0, 0, -786428, 0, 0, -786427, 0, 0, -786426, 0, 0, -786425, 0, 0, -786424, 0, 0, -786423, 0, 0, -786422, 0, 0, -786421, 0, 0, -786420, 0, 0, -786419, 0, 0, -786418, 0, 0, -786417, 0, 0, -786416, 0, 0, -786415, 0, 0, -786414, 0, 0, -786413, 0, 0, -786412, 0, 0, -786411, 0, 0, -655372, 0, 0, -655371, 0, 0, -655370, 0, 0, -655369, 0, 0, -655368, 0, 0, -655367, 0, 0, -655366, 0, 0, -655365, 0, 0, -655364, 0, 0, -655363, 0, 0, -655362, 0, 0, -655361, 0, 0, -720896, 0, 0, -720895, 0, 0, -720894, 0, 0, -720893, 0, 0, -720892, 0, 0, -720891, 0, 0, -720890, 0, 0, -720889, 0, 0, -720888, 0, 0, -720887, 0, 0, -720886, 0, 0, -720885, 0, 0, -720884, 0, 0, -720883, 0, 0, -720882, 0, 0, -720881, 0, 0, -720880, 0, 0, -720879, 0, 0, -720878, 0, 0, -720877, 0, 0, -720876, 0, 0, -720875, 0, 0, -589836, 0, 0, -589835, 0, 0, -589834, 0, 0, -589833, 0, 0, -589832, 0, 0, -589831, 0, 0, -589830, 0, 0, -589829, 0, 0, -589828, 0, 0, -589827, 0, 0, -589826, 0, 0, -589825, 0, 0, -655360, 0, 0, -655359, 0, 0, -655358, 0, 0, -655357, 0, 0, -655356, 0, 0, -655355, 0, 0, -655354, 0, 0, -655353, 0, 0, -655352, 0, 0, -655351, 0, 0, -655350, 0, 0, -655349, 0, 0, -655348, 0, 0, -655347, 0, 0, -655346, 0, 0, -655345, 0, 0, -655344, 0, 0, -655343, 0, 0, -655342, 0, 0, -655341, 0, 0, -655340, 0, 0, -655339, 0, 0, -524300, 0, 0, -524299, 0, 0, -524298, 0, 0, -524297, 0, 0, -524296, 0, 0, -524295, 0, 0, -524294, 0, 0, -524293, 0, 0, -524292, 0, 0, -524291, 0, 0, -524290, 0, 0, -524289, 0, 0, -589824, 0, 0, -589823, 0, 0, -589822, 0, 0, -589821, 0, 0, -589820, 0, 0, -589819, 0, 0, -589818, 0, 0, -589817, 0, 0, -589816, 0, 0, -589815, 0, 0, -589814, 0, 0, -589813, 0, 0, -589812, 0, 0, -589811, 0, 0, -589810, 0, 0, -589809, 0, 0, -589808, 0, 0, -589807, 0, 0, -589806, 0, 0, -589805, 0, 0, -589804, 0, 0, -589803, 0, 0, -458757, 0, 0, -458756, 0, 0, -458755, 0, 0, -458754, 0, 0, -458753, 0, 0, -524288, 0, 0, -524287, 2, 2, -524286, 536870914, 3, -524285, 2, 2, -524273, 536870912, 0, -524272, 536870912, 0, -524271, 0, 0, -524270, 0, 0, -524269, 0, 0, -524268, 0, 0, -524267, 0, 0, -458737, 536870912, 0, -458736, 536870912, 0, -458735, 0, 0, -458734, 0, 0, -458733, 0, 0, -458732, 0, 0, -458731, 0, 0 ) -tile_color = Color( 0.792157, 0.576471, 0.85098, 1 ) +tile_color = Color( 0.698039, 0.698039, 0.858824, 1 ) -[node name="GameCamera" parent="." instance=ExtResource( 3 )] +[node name="CamBounds" type="Node2D" parent="."] position = Vector2( 16, -8 ) +script = ExtResource( 3 ) bounds = Rect2( 0, 0, 48, 0 ) [node name="Actors" type="Node2D" parent="."] @@ -227,5 +228,3 @@ position = Vector2( -80, 16 ) [node name="Note" parent="Actors" instance=ExtResource( 14 )] position = Vector2( 123, -61 ) - -[editable path="GameCamera"] diff --git a/src/map/3-5.tscn b/src/map/3-5.tscn index cd4f6af..bfb913e 100644 --- a/src/map/3-5.tscn +++ b/src/map/3-5.tscn @@ -2,7 +2,7 @@ [ext_resource path="res://src/stage/SolidTileMap.tscn" type="PackedScene" id=1] [ext_resource path="res://src/actor/Exit.tscn" type="PackedScene" id=2] -[ext_resource path="res://src/stage/GameCamera.tscn" type="PackedScene" id=3] +[ext_resource path="res://src/stage/CamBounds.gd" type="Script" id=3] [ext_resource path="res://src/stage/DetailTileMap.tscn" type="PackedScene" id=4] [ext_resource path="res://src/stage/SpikeTileMap.tscn" type="PackedScene" id=5] [ext_resource path="res://src/actor/Player.tscn" type="PackedScene" id=6] @@ -20,7 +20,7 @@ 0/name = "solid_bricks.png 0" 0/texture = ExtResource( 14 ) 0/tex_offset = Vector2( 0, 0 ) -0/modulate = Color( 0.760784, 0.764706, 0.780392, 1 ) +0/modulate = Color( 0.698039, 0.698039, 0.858824, 1 ) 0/region = Rect2( 0, 0, 16, 8 ) 0/tile_mode = 2 0/autotile/icon_coordinate = Vector2( 0, 0 ) @@ -57,7 +57,7 @@ 4/name = "bricks.png 4" 4/texture = ExtResource( 15 ) 4/tex_offset = Vector2( 0, 0 ) -4/modulate = Color( 0.372549, 0.341176, 0.309804, 1 ) +4/modulate = Color( 0.223529, 0.223529, 0.309804, 1 ) 4/region = Rect2( 0, 0, 40, 8 ) 4/tile_mode = 2 4/autotile/icon_coordinate = Vector2( 0, 0 ) @@ -78,7 +78,7 @@ 5/name = "crate_tiles.png 5" 5/texture = ExtResource( 12 ) 5/tex_offset = Vector2( 0, 0 ) -5/modulate = Color( 0, 0.529412, 0.317647, 1 ) +5/modulate = Color( 0.513726, 0.529412, 0, 1 ) 5/region = Rect2( 0, 16, 24, 8 ) 5/tile_mode = 2 5/autotile/icon_coordinate = Vector2( 0, 0 ) @@ -99,7 +99,7 @@ 6/name = "crate_tiles.png 6" 6/texture = ExtResource( 12 ) 6/tex_offset = Vector2( 0, 0 ) -6/modulate = Color( 0.670588, 0.321569, 0.211765, 1 ) +6/modulate = Color( 0.670588, 0.215686, 0.541176, 1 ) 6/region = Rect2( 0, 24, 8, 8 ) 6/tile_mode = 0 6/occluder_offset = Vector2( 0, 0 ) @@ -129,7 +129,7 @@ 2/name = "solid_bricks.png 2" 2/texture = ExtResource( 14 ) 2/tex_offset = Vector2( 0, 0 ) -2/modulate = Color( 0.760784, 0.764706, 0.780392, 1 ) +2/modulate = Color( 0.698039, 0.698039, 0.858824, 1 ) 2/region = Rect2( 0, 0, 32, 8 ) 2/tile_mode = 2 2/autotile/icon_coordinate = Vector2( 0, 0 ) @@ -151,13 +151,15 @@ [node name="Stage" type="Node2D"] script = ExtResource( 7 ) palette = 2 -color_solid = Color( 0.792157, 0.576471, 0.85098, 1 ) -color_back = Color( 0.219608, 0.172549, 0.411765, 1 ) -color_grass = Color( 1, 0.509804, 0.713726, 1 ) +color_solid = Color( 0.698039, 0.698039, 0.858824, 1 ) +color_back = Color( 0.223529, 0.223529, 0.309804, 1 ) +color_grass = Color( 0.513726, 0.529412, 0, 1 ) +color_wood = Color( 0.670588, 0.215686, 0.541176, 1 ) [node name="SolidTileMap" parent="." instance=ExtResource( 1 )] tile_set = SubResource( 1 ) tile_data = PoolIntArray( -786449, 1, 0, -786448, 1, 0, -786447, 1, 0, -786446, 1, 0, -786445, 1, 0, -786444, 1, 0, -786443, 1, 0, -786442, 1, 0, -786441, 1, 0, -786440, 1, 0, -786439, 1, 0, -786438, 1, 0, -786437, 1, 0, -786436, 1, 0, -786435, 1, 0, -786434, 1, 0, -786433, 1, 0, -851968, 1, 0, -851967, 1, 0, -851966, 1, 0, -851965, 1, 0, -851964, 1, 0, -851963, 1, 0, -851962, 1, 0, -851961, 1, 0, -851960, 1, 0, -851959, 1, 0, -851958, 1, 0, -851957, 1, 0, -851956, 1, 0, -720913, 1, 0, -786420, 1, 0, -655377, 1, 0, -720884, 1, 0, -589841, 1, 0, -655348, 1, 0, -524305, 1, 0, -589812, 1, 0, -458769, 1, 0, -524276, 1, 0, -393233, 1, 0, -393226, 0, 0, -393225, 536870912, 1, -393224, 536870912, 0, -393223, 536870912, 1, -393222, 536870912, 1, -393221, 536870912, 1, -393220, 536870912, 1, -393219, 0, 0, -393218, 536870912, 1, -393217, 536870912, 1, -458752, 536870912, 0, -458749, 0, 0, -458748, 536870912, 1, -458747, 536870912, 0, -458740, 1, 0, -327697, 1, 0, -327690, 0, 0, -393211, 536870912, 1, -393204, 1, 0, -262161, 1, 0, -262154, 536870912, 1, -327675, 0, 0, -327668, 1, 0, -196625, 1, 0, -196624, 1, 0, -196623, 1, 0, -196622, 1, 0, -196621, 1, 0, -196620, 1, 0, -196619, 536870912, 1, -196618, 536870912, 0, -196615, 0, 0, -196614, 536870912, 1, -196613, 0, 0, -196612, 536870912, 1, -196611, 536870912, 0, -196610, 536870912, 1, -196609, 0, 0, -262144, 536870912, 1, -262143, 536870912, 1, -262142, 536870912, 0, -262141, 536870912, 1, -262140, 0, 0, -262139, 536870912, 1, -262138, 536870912, 0, -262137, 1, 0, -262136, 1, 0, -262135, 1, 0, -262134, 1, 0, -262133, 1, 0, -262132, 1, 0, -131083, 0, 0, -196602, 536870912, 1, -65547, 536870912, 1, -65540, 0, 0, -131072, 0, 1, -131066, 0, 0, -11, 536870912, 0, -65530, 536870912, 1, 65525, 536870912, 1, 65526, 0, 0, 65527, 536870912, 1, 65528, 536870912, 0, 65529, 536870912, 1, 65530, 536870912, 1, 65531, 0, 0, 65532, 536870912, 1, 65533, 536870912, 1, 65534, 536870912, 0, 65535, 536870912, 1, 0, 536870912, 1, 1, 0, 0, 2, 536870912, 1, 3, 536870912, 1, 4, 536870912, 0, 5, 536870912, 1, 6, 536870912, 0 ) +tile_color = Color( 0.698039, 0.698039, 0.858824, 1 ) [node name="SpikeTileMap" parent="." instance=ExtResource( 5 )] @@ -165,13 +167,18 @@ tile_data = PoolIntArray( -786449, 1, 0, -786448, 1, 0, -786447, 1, 0, -786446, z_index = -11 tile_set = SubResource( 2 ) tile_data = PoolIntArray( -524297, 5, 2, -524296, 536870917, 0, -524295, 536870917, 0, -524294, 536870917, 2, -458763, 5, 2, -458762, 5, 0, -458761, 5, 0, -458760, 5, 0, -458759, 5, 0, -458758, 5, 0, -458757, 5, 0, -458756, 536870917, 2, -524288, 5, 2, -524287, 5, 0, -524286, 5, 0, -524285, 536870917, 2, -393227, -1073741819, 0, -458746, 4, 3, -327691, -1073741819, 0, -327688, 1610612742, 0, -327686, 536870916, 3, -327685, 536870916, 2, -327684, 1073741829, 2, -327683, 5, 0, -327682, 5, 0, -327681, 5, 0, -393216, 1610612741, 2, -393215, 4, 2, -393214, 4, 3, -393210, 4, 0, -393209, 4, 3, -262156, -2147483643, 2, -262155, 536870917, 0, -262152, 1610612741, 0, -262150, 536870916, 3, -262149, 536870916, 2, -327679, 4, 2, -327678, 4, 3, -327674, 4, 1, -327673, 536870916, 2, -196620, -1073741819, 0, -131084, -1073741819, 0, -131080, 4, 2, -131079, 4, 1, -131078, 4, 3, -196606, 1073741829, 2, -196605, 5, 0, -196604, 5, 0, -196603, 5, 0, -196601, -1610612731, 2, -65548, -1073741819, 2, -65546, -1610612731, 2, -65544, 4, 2, -65543, 536870916, 0, -65542, 4, 3, -65538, 5, 0, -131065, -1610612731, 0, -10, -1073741819, 0, -7, 536870916, 3, -6, 536870916, 2, -2, 1610612742, 0, -65534, 5, 2, -65533, 5, 0, -65532, 536870917, 2, -65529, -1610612731, 0, 7, -1610612731, 0, 131062, 1073741829, 2, 131063, 536870917, 0, 131064, 536870917, 0, 131065, 1610612741, 2, 131070, 1073741829, 2, 131071, 5, 0, 65536, 5, 0, 65537, 5, 0, 65538, 1610612741, 2, 65540, 5, 0, 65541, 5, 0, 65542, 5, 0, 65543, 1610612741, 2 ) +brick_color = Color( 0.223529, 0.223529, 0.309804, 1 ) +grass_color = Color( 0.513726, 0.529412, 0, 1 ) +wood_color = Color( 0.670588, 0.215686, 0.541176, 1 ) [node name="ObscureMap" parent="." instance=ExtResource( 10 )] tile_set = SubResource( 3 ) tile_data = PoolIntArray( -720912, 0, 0, -720911, 0, 0, -720910, 0, 0, -720909, 0, 0, -720908, 0, 0, -720907, 0, 0, -720906, 0, 0, -720905, 0, 0, -720904, 0, 0, -720903, 0, 0, -720902, 0, 0, -720901, 0, 0, -720900, 0, 0, -720899, 0, 0, -720898, 0, 0, -720897, 0, 0, -786432, 0, 0, -786431, 0, 0, -786430, 0, 0, -786429, 0, 0, -786428, 0, 0, -786427, 0, 0, -786426, 0, 0, -786425, 0, 0, -786424, 0, 0, -786423, 0, 0, -786422, 0, 0, -786421, 0, 0, -655376, 0, 0, -655375, 0, 0, -655374, 0, 0, -655373, 0, 0, -655372, 0, 0, -655371, 0, 0, -655370, 0, 0, -655369, 0, 0, -655368, 0, 0, -655367, 0, 0, -655366, 0, 0, -655365, 0, 0, -655364, 0, 0, -655363, 0, 0, -655362, 0, 0, -655361, 0, 0, -720896, 0, 0, -720895, 0, 0, -720894, 0, 0, -720893, 0, 0, -720892, 0, 0, -720891, 0, 0, -720890, 0, 0, -720889, 0, 0, -720888, 0, 0, -720887, 0, 0, -720886, 0, 0, -720885, 0, 0, -589840, 0, 0, -589839, 0, 0, -589838, 0, 0, -589837, 0, 0, -589836, 0, 0, -589835, 0, 0, -589834, 0, 0, -589833, 0, 0, -589832, 0, 0, -589831, 0, 0, -589830, 0, 0, -589829, 0, 0, -589828, 0, 0, -589827, 0, 0, -589826, 0, 0, -589825, 0, 0, -655360, 0, 0, -655359, 0, 0, -655358, 0, 0, -655357, 0, 0, -655356, 0, 0, -655355, 0, 0, -655354, 0, 0, -655353, 0, 0, -655352, 0, 0, -655351, 0, 0, -655350, 0, 0, -655349, 0, 0, -524304, 0, 0, -524303, 0, 0, -524302, 0, 0, -524301, 0, 0, -524300, 0, 0, -524299, 0, 0, -524298, 0, 0, -524297, 0, 0, -524296, 0, 0, -524295, 0, 0, -524294, 0, 0, -524293, 0, 0, -524292, 0, 0, -524291, 0, 0, -524290, 0, 0, -524289, 0, 0, -589824, 0, 0, -589823, 0, 0, -589822, 0, 0, -589821, 0, 0, -589820, 0, 0, -589819, 0, 0, -589818, 0, 0, -589817, 0, 0, -589816, 0, 0, -589815, 0, 0, -589814, 0, 0, -589813, 0, 0, -458768, 0, 0, -458767, 0, 0, -458766, 0, 0, -458765, 0, 0, -458764, 0, 0, -458763, 0, 0, -458762, 0, 0, -458761, 0, 0, -458760, 0, 0, -458759, 0, 0, -458758, 0, 0, -458757, 0, 0, -458756, 0, 0, -458755, 0, 0, -458754, 0, 0, -458753, 0, 0, -524288, 0, 0, -524287, 0, 0, -524286, 0, 0, -524285, 0, 0, -524284, 0, 0, -524283, 0, 0, -524282, 0, 0, -524281, 0, 0, -524280, 0, 0, -524279, 0, 0, -524278, 0, 0, -524277, 0, 0, -393232, 0, 0, -393231, 0, 0, -393230, 0, 0, -393229, 0, 0, -393228, 0, 0, -393227, 0, 0, -458751, 536870914, 3, -458750, 2, 3, -458746, 0, 0, -458745, 0, 0, -458744, 0, 0, -458743, 0, 0, -458742, 0, 0, -458741, 0, 0, -327696, 0, 0, -327695, 0, 0, -327694, 0, 0, -327693, 0, 0, -327692, 0, 0, -327691, 0, 0, -393210, 0, 0, -393209, 0, 0, -393208, 0, 0, -393207, 0, 0, -393206, 0, 0, -393205, 0, 0, -262160, 0, 0, -262159, 0, 0, -262158, 0, 0, -262157, 0, 0, -262156, 0, 0, -262155, 0, 0, -327674, 0, 0, -327673, 0, 0, -327672, 0, 0, -327671, 0, 0, -327670, 0, 0, -327669, 0, 0 ) +tile_color = Color( 0.698039, 0.698039, 0.858824, 1 ) -[node name="GameCamera" parent="." instance=ExtResource( 3 )] +[node name="CamBounds" type="Node2D" parent="."] position = Vector2( -16, -24 ) +script = ExtResource( 3 ) [node name="Actors" type="Node2D" parent="."] @@ -198,5 +205,3 @@ position = Vector2( 28, -8 ) [node name="Note" parent="Actors" instance=ExtResource( 11 )] position = Vector2( -117, -53 ) - -[editable path="GameCamera"] diff --git a/src/map/3-6.tscn b/src/map/3-6.tscn index e761741..26af97a 100644 --- a/src/map/3-6.tscn +++ b/src/map/3-6.tscn @@ -2,7 +2,7 @@ [ext_resource path="res://src/stage/SolidTileMap.tscn" type="PackedScene" id=1] [ext_resource path="res://src/actor/Exit.tscn" type="PackedScene" id=2] -[ext_resource path="res://src/stage/GameCamera.tscn" type="PackedScene" id=3] +[ext_resource path="res://src/stage/CamBounds.gd" type="Script" id=3] [ext_resource path="res://src/stage/DetailTileMap.tscn" type="PackedScene" id=4] [ext_resource path="res://src/stage/SpikeTileMap.tscn" type="PackedScene" id=5] [ext_resource path="res://src/actor/Player.tscn" type="PackedScene" id=6] @@ -20,7 +20,7 @@ 0/name = "solid_bricks.png 0" 0/texture = ExtResource( 14 ) 0/tex_offset = Vector2( 0, 0 ) -0/modulate = Color( 0.760784, 0.764706, 0.780392, 1 ) +0/modulate = Color( 0.698039, 0.698039, 0.858824, 1 ) 0/region = Rect2( 0, 0, 16, 8 ) 0/tile_mode = 2 0/autotile/icon_coordinate = Vector2( 0, 0 ) @@ -57,7 +57,7 @@ 4/name = "bricks.png 4" 4/texture = ExtResource( 15 ) 4/tex_offset = Vector2( 0, 0 ) -4/modulate = Color( 0.372549, 0.341176, 0.309804, 1 ) +4/modulate = Color( 0.223529, 0.223529, 0.309804, 1 ) 4/region = Rect2( 0, 0, 40, 8 ) 4/tile_mode = 2 4/autotile/icon_coordinate = Vector2( 0, 0 ) @@ -78,7 +78,7 @@ 5/name = "crate_tiles.png 5" 5/texture = ExtResource( 12 ) 5/tex_offset = Vector2( 0, 0 ) -5/modulate = Color( 0, 0.529412, 0.317647, 1 ) +5/modulate = Color( 0.513726, 0.529412, 0, 1 ) 5/region = Rect2( 0, 16, 24, 8 ) 5/tile_mode = 2 5/autotile/icon_coordinate = Vector2( 0, 0 ) @@ -99,7 +99,7 @@ 6/name = "crate_tiles.png 6" 6/texture = ExtResource( 12 ) 6/tex_offset = Vector2( 0, 0 ) -6/modulate = Color( 0.670588, 0.321569, 0.211765, 1 ) +6/modulate = Color( 0.670588, 0.215686, 0.541176, 1 ) 6/region = Rect2( 0, 24, 8, 8 ) 6/tile_mode = 0 6/occluder_offset = Vector2( 0, 0 ) @@ -129,7 +129,7 @@ 2/name = "solid_bricks.png 2" 2/texture = ExtResource( 14 ) 2/tex_offset = Vector2( 0, 0 ) -2/modulate = Color( 0.760784, 0.764706, 0.780392, 1 ) +2/modulate = Color( 0.698039, 0.698039, 0.858824, 1 ) 2/region = Rect2( 0, 0, 32, 8 ) 2/tile_mode = 2 2/autotile/icon_coordinate = Vector2( 0, 0 ) @@ -151,13 +151,15 @@ [node name="Stage" type="Node2D"] script = ExtResource( 7 ) palette = 2 -color_solid = Color( 0.792157, 0.576471, 0.85098, 1 ) -color_back = Color( 0.219608, 0.172549, 0.411765, 1 ) -color_grass = Color( 1, 0.509804, 0.713726, 1 ) +color_solid = Color( 0.698039, 0.698039, 0.858824, 1 ) +color_back = Color( 0.223529, 0.223529, 0.309804, 1 ) +color_grass = Color( 0.513726, 0.529412, 0, 1 ) +color_wood = Color( 0.670588, 0.215686, 0.541176, 1 ) [node name="SolidTileMap" parent="." instance=ExtResource( 1 )] tile_set = SubResource( 1 ) tile_data = PoolIntArray( -589841, 536870913, 0, -589840, 536870913, 0, -589839, 536870913, 0, -589838, 536870913, 0, -589837, 536870913, 0, -589835, 536870912, 1, -589834, 0, 0, -589833, 536870912, 1, -589832, 536870912, 1, -589831, 536870912, 0, -589830, 536870912, 1, -589829, 536870912, 1, -589828, 0, 0, -589827, 536870912, 1, -589826, 536870912, 1, -589825, 536870912, 0, -655360, 536870912, 1, -655359, 0, 0, -655358, 536870912, 1, -655357, 536870912, 0, -655356, 536870912, 1, -655355, 536870912, 0, -655354, 536870912, 1, -524305, 536870913, 0, -524301, 0, 0, -524300, 536870912, 1, -524299, 536870912, 0, -589818, 0, 0, -589817, 536870912, 1, -589816, 536870912, 0, -458769, 536870913, 0, -458765, 536870912, 1, -524280, 536870912, 1, -393233, 536870913, 0, -393229, 0, 0, -458744, 0, 0, -327697, 536870913, 0, -327693, 0, 0, -393211, 0, 0, -393210, 536870912, 1, -393209, 536870912, 0, -393208, 536870912, 1, -262161, 536870913, 0, -262157, 536870912, 1, -262156, 0, 0, -262155, 536870912, 1, -262154, 536870912, 0, -327675, 0, 0, -196625, 536870913, 0, -196618, 536870912, 1, -262139, 536870912, 1, -131089, 536870913, 0, -131082, 0, 0, -131081, 536870912, 1, -131080, 536870912, 1, -131079, 536870912, 0, -131078, 536870912, 1, -196603, 536870912, 0, -65553, 536870913, 0, -131067, 536870912, 0, -17, 536870913, 0, -6, 536870912, 1, -65531, 536870912, 1, 65519, 536870913, 0, 65520, 536870913, 0, 65521, 536870913, 0, 65522, 536870913, 0, 65523, 536870913, 0, 65524, 536870913, 0, 65525, 536870913, 0, 65526, 536870913, 0, 65527, 536870913, 0, 65528, 536870913, 0, 65529, 536870913, 0, 65530, 0, 0, 65531, 536870912, 1, 65532, 536870912, 1, 65533, 0, 0, 65534, 536870912, 1, 65535, 536870912, 1, 0, 536870912, 0, 1, 536870912, 1, 2, 536870912, 1, 3, 0, 0, 4, 536870912, 1, 5, 536870912, 0 ) +tile_color = Color( 0.698039, 0.698039, 0.858824, 1 ) [node name="SpikeTileMap" parent="." instance=ExtResource( 5 )] tile_data = PoolIntArray( -5, 0, 0, -4, 0, 0, -3, 0, 0, -2, 0, 0, -1, 0, 0, -65536, 0, 0, -65535, 0, 0, -65534, 0, 0, -65533, 0, 0, -65532, 0, 0 ) @@ -166,13 +168,18 @@ tile_data = PoolIntArray( -5, 0, 0, -4, 0, 0, -3, 0, 0, -2, 0, 0, -1, 0, 0, -655 z_index = -11 tile_set = SubResource( 2 ) tile_data = PoolIntArray( -655372, 5, 2, -655371, 5, 0, -655370, 5, 0, -655369, 5, 0, -655368, 5, 0, -655367, 5, 0, -655366, 5, 0, -655365, 536870917, 2, -655362, 5, 2, -655361, 5, 0, -720896, 5, 0, -720895, 5, 0, -720894, 536870917, 2, -589836, -1073741819, 0, -655353, 536870916, 3, -655352, 536870916, 1, -655351, 4, 3, -524296, 1610612742, 0, -524293, 1073741829, 2, -524292, 1610612742, 0, -524291, 5, 0, -524290, 1610612741, 2, -589822, 1610612742, 0, -589815, 536870916, 1, -589814, 4, 3, -458766, -2147483643, 2, -458764, 1610612741, 2, -458760, 1610612741, 0, -458756, 1610612742, 0, -524287, 5, 2, -524286, 5, 0, -524285, -1610612731, 2, -524284, 4, 2, -524283, 4, 3, -524279, 4, 0, -524278, 4, 3, -393230, -1073741819, 0, -393221, 5, 2, -393220, 5, 0, -393219, -1610612731, 2, -458751, -1073741819, 2, -458750, 5, 0, -458749, 1610612741, 2, -458743, 536870916, 1, -458742, 4, 3, -327694, -1073741819, 0, -327685, 5, 0, -327684, 5, 0, -327683, 5, 0, -327681, 536870916, 3, -393216, 536870916, 2, -393207, 536870916, 0, -393206, 536870916, 2, -262158, -1073741819, 0, -262149, -1073741819, 2, -262148, 5, 0, -262147, 1610612741, 2, -262145, 536870916, 3, -327680, 536870916, 2, -327673, 4, 2, -327672, 4, 0, -327671, 536870916, 2, -196622, -1073741819, 2, -196621, 1610612741, 0, -196620, 1610612741, 0, -196619, 1610612741, 0, -196617, -1610612731, 2, -262140, -2147483643, 2, -196604, -1073741819, 0, -65545, 1073741829, 2, -65544, 5, 0, -65543, 1610612741, 2, -131072, 5, 0, -131068, -1073741819, 2, -131066, -1610612731, 2, -14, 4, 2, -13, 4, 0, -12, 4, 3, -65536, 1610612742, 0, -65530, -1610612731, 0, 65521, 536870916, 3, 65522, 536870916, 0, 65523, 536870916, 1, 65524, 536870916, 0, 65525, 536870916, 2, 6, -1610612731, 0, 131058, 4, 2, 131059, 4, 0, 131060, 4, 3, 131068, 1073741829, 2, 131069, 1610612741, 0, 131070, 1610612741, 2, 65537, 1073741829, 2, 65538, 1610612741, 0, 65539, 1610612741, 0, 65540, 1610612741, 0, 65541, 1610612741, 0, 65542, 1610612741, 2 ) +brick_color = Color( 0.223529, 0.223529, 0.309804, 1 ) +grass_color = Color( 0.513726, 0.529412, 0, 1 ) +wood_color = Color( 0.670588, 0.215686, 0.541176, 1 ) [node name="ObscureMap" parent="." instance=ExtResource( 10 )] tile_set = SubResource( 3 ) tile_data = PoolIntArray( -524304, 0, 0, -524303, 0, 0, -524302, 0, 0, -458768, 536870912, 0, -458767, 536870912, 0, -458766, 0, 0, -393232, 536870912, 0, -393231, 536870912, 0, -393230, 0, 0, -327696, 0, 0, -327695, 0, 0, -327694, 0, 0, -262160, 0, 0, -262159, 0, 0, -262158, 0, 0, -196624, 0, 0, -196623, 0, 0, -196622, 0, 0, -196621, 0, 0, -196620, 0, 0, -196619, 0, 0, -131088, 0, 0, -131087, 0, 0, -131086, 0, 0, -131085, 0, 0, -131084, 0, 0, -131083, 0, 0, -65552, 0, 0, -65551, 0, 0, -65550, 0, 0, -65549, 0, 0, -65548, 0, 0, -65547, 0, 0, -65546, 0, 0, -65545, 0, 0, -65544, 0, 0, -65543, 0, 0, -65542, 536870914, 2, -16, 0, 0, -15, 0, 0, -14, 0, 0, -13, 0, 0, -12, 0, 0, -11, 0, 0, -10, 0, 0, -9, 0, 0, -8, 0, 0, -7, 0, 0 ) +tile_color = Color( 0.698039, 0.698039, 0.858824, 1 ) -[node name="GameCamera" parent="." instance=ExtResource( 3 )] +[node name="CamBounds" type="Node2D" parent="."] position = Vector2( -16, -36 ) +script = ExtResource( 3 ) [node name="Actors" type="Node2D" parent="."] @@ -202,5 +209,3 @@ position = Vector2( -89, -48 ) [node name="Note" parent="Actors" instance=ExtResource( 11 )] position = Vector2( -125, -61 ) - -[editable path="GameCamera"] diff --git a/src/map/3-7.tscn b/src/map/3-7.tscn index a15fbf4..a739ca5 100644 --- a/src/map/3-7.tscn +++ b/src/map/3-7.tscn @@ -2,7 +2,7 @@ [ext_resource path="res://src/stage/SolidTileMap.tscn" type="PackedScene" id=1] [ext_resource path="res://src/actor/Exit.tscn" type="PackedScene" id=2] -[ext_resource path="res://src/stage/GameCamera.tscn" type="PackedScene" id=3] +[ext_resource path="res://src/stage/CamBounds.gd" type="Script" id=3] [ext_resource path="res://src/stage/DetailTileMap.tscn" type="PackedScene" id=4] [ext_resource path="res://src/stage/SpikeTileMap.tscn" type="PackedScene" id=5] [ext_resource path="res://src/actor/Player.tscn" type="PackedScene" id=6] @@ -20,7 +20,7 @@ 0/name = "solid_bricks.png 0" 0/texture = ExtResource( 14 ) 0/tex_offset = Vector2( 0, 0 ) -0/modulate = Color( 0.760784, 0.764706, 0.780392, 1 ) +0/modulate = Color( 0.698039, 0.698039, 0.858824, 1 ) 0/region = Rect2( 0, 0, 16, 8 ) 0/tile_mode = 2 0/autotile/icon_coordinate = Vector2( 0, 0 ) @@ -57,7 +57,7 @@ 4/name = "bricks.png 4" 4/texture = ExtResource( 15 ) 4/tex_offset = Vector2( 0, 0 ) -4/modulate = Color( 0.372549, 0.341176, 0.309804, 1 ) +4/modulate = Color( 0.223529, 0.223529, 0.309804, 1 ) 4/region = Rect2( 0, 0, 40, 8 ) 4/tile_mode = 2 4/autotile/icon_coordinate = Vector2( 0, 0 ) @@ -78,7 +78,7 @@ 5/name = "crate_tiles.png 5" 5/texture = ExtResource( 12 ) 5/tex_offset = Vector2( 0, 0 ) -5/modulate = Color( 0, 0.529412, 0.317647, 1 ) +5/modulate = Color( 0.513726, 0.529412, 0, 1 ) 5/region = Rect2( 0, 16, 24, 8 ) 5/tile_mode = 2 5/autotile/icon_coordinate = Vector2( 0, 0 ) @@ -99,7 +99,7 @@ 6/name = "crate_tiles.png 6" 6/texture = ExtResource( 12 ) 6/tex_offset = Vector2( 0, 0 ) -6/modulate = Color( 0.670588, 0.321569, 0.211765, 1 ) +6/modulate = Color( 0.670588, 0.215686, 0.541176, 1 ) 6/region = Rect2( 0, 24, 8, 8 ) 6/tile_mode = 0 6/occluder_offset = Vector2( 0, 0 ) @@ -129,7 +129,7 @@ 2/name = "solid_bricks.png 2" 2/texture = ExtResource( 14 ) 2/tex_offset = Vector2( 0, 0 ) -2/modulate = Color( 0.760784, 0.764706, 0.780392, 1 ) +2/modulate = Color( 0.698039, 0.698039, 0.858824, 1 ) 2/region = Rect2( 0, 0, 32, 8 ) 2/tile_mode = 2 2/autotile/icon_coordinate = Vector2( 0, 0 ) @@ -151,13 +151,15 @@ [node name="Stage" type="Node2D"] script = ExtResource( 7 ) palette = 2 -color_solid = Color( 0.792157, 0.576471, 0.85098, 1 ) -color_back = Color( 0.219608, 0.172549, 0.411765, 1 ) -color_grass = Color( 1, 0.509804, 0.713726, 1 ) +color_solid = Color( 0.698039, 0.698039, 0.858824, 1 ) +color_back = Color( 0.223529, 0.223529, 0.309804, 1 ) +color_grass = Color( 0.513726, 0.529412, 0, 1 ) +color_wood = Color( 0.670588, 0.215686, 0.541176, 1 ) [node name="SolidTileMap" parent="." instance=ExtResource( 1 )] tile_set = SubResource( 1 ) tile_data = PoolIntArray( -1114125, 1, 0, -1114124, 1, 0, -1114123, 1, 0, -1114122, 1, 0, -1114121, 1, 0, -1114120, 1, 0, -1114119, 1, 0, -1114118, 1, 0, -1114117, 1, 0, -1114116, 1, 0, -1114115, 1, 0, -1114114, 1, 0, -1114113, 1, 0, -1179648, 1, 0, -1179647, 1, 0, -1179646, 1, 0, -1179645, 1, 0, -1179644, 1, 0, -1179643, 1, 0, -1179642, 1, 0, -1179641, 1, 0, -1179640, 1, 0, -1179639, 1, 0, -1179638, 1, 0, -1179637, 1, 0, -1179636, 1, 0, -1179635, 1, 0, -1179634, 1, 0, -1179633, 1, 0, -1179632, 1, 0, -1048589, 1, 0, -1114096, 1, 0, -983053, 1, 0, -1048560, 1, 0, -917517, 1, 0, -983024, 1, 0, -851981, 1, 0, -917488, 1, 0, -786445, 1, 0, -851952, 1, 0, -720909, 1, 0, -720898, 0, 0, -720897, 536870912, 1, -786432, 536870912, 0, -786431, 536870912, 1, -786430, 0, 0, -786429, 536870912, 1, -786428, 536870912, 0, -786427, 536870912, 1, -786426, 0, 0, -786425, 536870912, 1, -786424, 536870912, 0, -786423, 536870912, 1, -786416, 1, 0, -655373, 1, 0, -655362, 536870912, 1, -720887, 536870912, 0, -720880, 1, 0, -589837, 1, 0, -589826, 536870912, 0, -655351, 536870912, 1, -655350, 0, 0, -655349, 536870912, 1, -655348, 536870912, 0, -655347, 536870912, 1, -655344, 1, 0, -524301, 1, 0, -524295, 0, 0, -524291, 0, 0, -524290, 536870912, 1, -524289, 536870912, 1, -589824, 536870912, 0, -589811, 536870912, 0, -589808, 1, 0, -458765, 1, 0, -458764, 1, 0, -458763, 1, 0, -458762, 0, 0, -458761, 536870912, 1, -458760, 536870912, 0, -458759, 536870912, 1, -524275, 536870912, 1, -524272, 1, 0, -393226, 536870912, 1, -458743, 0, 0, -458742, 536870912, 1, -458741, 0, 0, -458740, 536870912, 1, -458739, 536870912, 0, -458738, 1, 0, -458737, 1, 0, -458736, 1, 0, -327690, 536870912, 0, -393207, 536870912, 1, -262154, 536870912, 1, -327671, 0, 0, -196618, 0, 0, -262135, 536870912, 1, -131082, 0, 0, -131081, 536870912, 1, -131080, 0, 0, -131079, 0, 1, -131078, 536870912, 0, -196599, 536870912, 0, -65542, 536870912, 0, -131063, 536870912, 1, -6, 536870912, 1, -65527, 536870912, 0, 65530, 0, 0, 65531, 536870912, 1, 65532, 536870912, 1, 65533, 0, 0, 65534, 536870912, 1, 65535, 536870912, 0, 0, 536870912, 1, 1, 536870912, 1, 2, 0, 0, 3, 536870912, 1, 4, 536870912, 0, 5, 536870912, 1, 6, 536870912, 1, 7, 0, 0, 8, 536870912, 1, 9, 536870912, 0 ) +tile_color = Color( 0.698039, 0.698039, 0.858824, 1 ) [node name="SpikeTileMap" parent="." instance=ExtResource( 5 )] tile_data = PoolIntArray( -5, 0, 0, -4, 0, 0, -3, 0, 0, -2, 0, 0, -1, 0, 0, -65536, 0, 0, -65535, 0, 0, -65534, 0, 0, -65533, 0, 0, -65532, 0, 0, -65531, 0, 0, -65530, 0, 0, -65529, 0, 0, -65528, 0, 0 ) @@ -166,13 +168,18 @@ tile_data = PoolIntArray( -5, 0, 0, -4, 0, 0, -3, 0, 0, -2, 0, 0, -1, 0, 0, -655 z_index = -11 tile_set = SubResource( 2 ) tile_data = PoolIntArray( -786443, 536870916, 3, -786442, 4, 1, -786441, 4, 0, -786440, 4, 3, -786435, -2147483643, 2, -786434, 5, 0, -786433, 5, 0, -851968, 5, 0, -851967, 5, 0, -851966, 5, 0, -851965, 536870917, 2, -851961, 5, 2, -851960, 5, 0, -851959, 5, 0, -851958, -1610612731, 2, -720907, 536870916, 1, -720906, 536870916, 0, -720905, 4, 1, -720904, 536870916, 0, -720899, 5, 0, -786422, -1610612731, 0, -655371, 4, 2, -655370, 4, 1, -655369, 536870916, 0, -655368, 536870916, 2, -655363, 5, 0, -720896, 4, 2, -720895, 4, 0, -720894, 4, 3, -720893, 1073741829, 2, -720892, 1610612742, 0, -720891, 5, 0, -720890, 1610612742, 0, -720889, 1610612741, 2, -720886, -1073741819, 2, -720885, 5, 0, -720884, -1610612731, 2, -589834, 4, 2, -589833, 4, 1, -589832, 4, 3, -589830, 5, 2, -589829, 5, 0, -589828, 5, 0, -589827, 1610612741, 2, -655360, 4, 2, -655359, 4, 1, -655358, 4, 3, -655356, 1610612742, 0, -655354, 1610612742, 0, -524298, 4, 2, -524297, 4, 0, -524296, 536870916, 2, -589820, 1610612742, 0, -589818, 1610612741, 2, -589816, 536870916, 3, -589815, 536870916, 0, -589814, 536870916, 2, -589812, -1073741819, 0, -458758, 5, 0, -458755, 1610612742, 0, -524287, 536870916, 3, -524286, 536870916, 2, -524284, 1610612741, 0, -524280, 536870916, 3, -524279, 536870916, 1, -524278, 536870916, 2, -524276, -1073741819, 0, -393227, -2147483643, 2, -393225, 5, 0, -393224, 5, 0, -393223, 5, 0, -393222, 1610612741, 2, -393220, 5, 2, -393219, 5, 0, -393218, -1610612731, 2, -458747, 536870916, 3, -458746, 536870916, 2, -327691, -1073741819, 0, -327687, 4, 2, -327686, 4, 3, -327684, 5, 0, -327683, 5, 0, -327682, 5, 0, -393211, 536870916, 3, -393210, 536870916, 2, -393208, -2147483643, 2, -393206, 5, 0, -393205, 5, 0, -393204, 1610612741, 2, -262155, -1073741819, 0, -262148, -1073741819, 2, -262147, 5, 0, -262146, 1610612741, 2, -327672, -2147483643, 0, -196619, -1073741819, 2, -196617, 5, 0, -196616, -1610612731, 2, -262143, 5, 2, -262142, 5, 0, -262141, -1610612731, 2, -262136, -2147483643, 0, -196607, -1073741819, 2, -196606, 5, 0, -196605, 1610612741, 2, -196600, -1073741819, 2, -196598, -1610612731, 2, -65544, -1073741819, 2, -65543, 5, 0, -131070, 1610612742, 0, -131062, -1610612731, 0, -7, -1073741819, 0, -65534, 1610612742, 0, -65526, -1610612731, 0, 65529, -1073741819, 0, 10, -1610612731, 0, 131065, 1073741829, 2, 131066, 5, 0, 131067, 5, 0, 131068, 5, 0, 131069, 1610612741, 2, 65536, 4, 2, 65537, 536870916, 0, 65538, 536870916, 1, 65539, 536870916, 0, 65540, 536870916, 2, 65542, 1073741829, 2, 65543, 1610612741, 0, 65544, 1610612741, 0, 65545, 1610612741, 0, 65546, 1610612741, 2 ) +brick_color = Color( 0.223529, 0.223529, 0.309804, 1 ) +grass_color = Color( 0.513726, 0.529412, 0, 1 ) +wood_color = Color( 0.670588, 0.215686, 0.541176, 1 ) [node name="ObscureMap" parent="." instance=ExtResource( 10 )] tile_set = SubResource( 3 ) tile_data = PoolIntArray( -1048588, 0, 0, -1048587, 0, 0, -1048586, 0, 0, -1048585, 0, 0, -1048584, 0, 0, -1048583, 0, 0, -1048582, 0, 0, -1048581, 0, 0, -1048580, 0, 0, -1048579, 0, 0, -1048578, 0, 0, -1048577, 0, 0, -1114112, 0, 0, -1114111, 0, 0, -1114110, 0, 0, -1114109, 0, 0, -1114108, 0, 0, -1114107, 0, 0, -1114106, 0, 0, -1114105, 0, 0, -1114104, 0, 0, -1114103, 0, 0, -1114102, 0, 0, -1114101, 0, 0, -1114100, 0, 0, -1114099, 0, 0, -1114098, 0, 0, -1114097, 0, 0, -983052, 0, 0, -983051, 0, 0, -983050, 0, 0, -983049, 0, 0, -983048, 0, 0, -983047, 0, 0, -983046, 0, 0, -983045, 0, 0, -983044, 0, 0, -983043, 0, 0, -983042, 0, 0, -983041, 0, 0, -1048576, 0, 0, -1048575, 0, 0, -1048574, 0, 0, -1048573, 0, 0, -1048572, 0, 0, -1048571, 0, 0, -1048570, 0, 0, -1048569, 0, 0, -1048568, 0, 0, -1048567, 0, 0, -1048566, 0, 0, -1048565, 0, 0, -1048564, 0, 0, -1048563, 0, 0, -1048562, 0, 0, -1048561, 0, 0, -917516, 0, 0, -917515, 0, 0, -917514, 0, 0, -917513, 0, 0, -917512, 0, 0, -917511, 0, 0, -917510, 0, 0, -917509, 0, 0, -917508, 0, 0, -917507, 0, 0, -917506, 0, 0, -917505, 0, 0, -983040, 0, 0, -983039, 0, 0, -983038, 0, 0, -983037, 0, 0, -983036, 0, 0, -983035, 0, 0, -983034, 0, 0, -983033, 0, 0, -983032, 0, 0, -983031, 0, 0, -983030, 0, 0, -983029, 0, 0, -983028, 0, 0, -983027, 0, 0, -983026, 0, 0, -983025, 0, 0, -851980, 0, 0, -851979, 0, 0, -851978, 0, 0, -851977, 0, 0, -851976, 0, 0, -851975, 0, 0, -851974, 0, 0, -851973, 0, 0, -851972, 0, 0, -851971, 0, 0, -851970, 0, 0, -851969, 0, 0, -917504, 0, 0, -917503, 0, 0, -917502, 0, 0, -917501, 0, 0, -917500, 0, 0, -917499, 0, 0, -917498, 0, 0, -917497, 0, 0, -917496, 0, 0, -917495, 0, 0, -917494, 0, 0, -917493, 0, 0, -917492, 0, 0, -917491, 0, 0, -917490, 0, 0, -917489, 0, 0, -786444, 0, 0, -786443, 0, 0, -786442, 0, 0, -786441, 0, 0, -786440, 0, 0, -786439, 0, 0, -786438, 0, 0, -786437, 0, 0, -786436, 0, 0, -786435, 0, 0, -786434, 0, 0, -786433, 0, 0, -851968, 0, 0, -851967, 0, 0, -851966, 0, 0, -851965, 0, 0, -851964, 0, 0, -851963, 0, 0, -851962, 0, 0, -851961, 0, 0, -851960, 0, 0, -851959, 0, 0, -851958, 0, 0, -851957, 0, 0, -851956, 0, 0, -851955, 0, 0, -851954, 0, 0, -851953, 0, 0, -720908, 0, 0, -720907, 0, 0, -720906, 0, 0, -720905, 0, 0, -720904, 0, 0, -720903, 0, 0, -720902, 0, 0, -720901, 0, 0, -720900, 0, 0, -720899, 0, 0, -786422, 0, 0, -786421, 0, 0, -786420, 0, 0, -786419, 0, 0, -786418, 0, 0, -786417, 0, 0, -655372, 0, 0, -655371, 0, 0, -655370, 0, 0, -655369, 0, 0, -655368, 0, 0, -655367, 0, 0, -655366, 0, 0, -655365, 0, 0, -655364, 0, 0, -655363, 0, 0, -720886, 0, 0, -720885, 0, 0, -720884, 0, 0, -720883, 0, 0, -720882, 0, 0, -720881, 0, 0, -589836, 0, 0, -589835, 0, 0, -589834, 0, 0, -589833, 0, 0, -589832, 0, 0, -589831, 0, 0, -589830, 0, 0, -589829, 0, 0, -589828, 0, 0, -589827, 0, 0, -655346, 0, 0, -655345, 0, 0, -524300, 0, 0, -524299, 0, 0, -524298, 0, 0, -524297, 0, 0, -524296, 0, 0, -524294, 2, 3, -524293, 536870914, 2, -524292, 2, 3, -589810, 0, 0, -589809, 0, 0, -524274, 0, 0, -524273, 0, 0 ) +tile_color = Color( 0.698039, 0.698039, 0.858824, 1 ) -[node name="GameCamera" parent="." instance=ExtResource( 3 )] +[node name="CamBounds" type="Node2D" parent="."] position = Vector2( 16, -44 ) +script = ExtResource( 3 ) [node name="Actors" type="Node2D" parent="."] @@ -211,5 +218,3 @@ position = Vector2( -4, -80 ) [node name="Note" parent="Actors" instance=ExtResource( 11 )] position = Vector2( 107, -101 ) - -[editable path="GameCamera"] diff --git a/src/map/3-8.tscn b/src/map/3-8.tscn index b0a3643..6f85848 100644 --- a/src/map/3-8.tscn +++ b/src/map/3-8.tscn @@ -2,7 +2,7 @@ [ext_resource path="res://src/stage/SolidTileMap.tscn" type="PackedScene" id=1] [ext_resource path="res://src/actor/Exit.tscn" type="PackedScene" id=2] -[ext_resource path="res://src/stage/GameCamera.tscn" type="PackedScene" id=3] +[ext_resource path="res://src/stage/CamBounds.gd" type="Script" id=3] [ext_resource path="res://src/stage/DetailTileMap.tscn" type="PackedScene" id=4] [ext_resource path="res://src/stage/SpikeTileMap.tscn" type="PackedScene" id=5] [ext_resource path="res://src/actor/Player.tscn" type="PackedScene" id=6] @@ -24,7 +24,7 @@ 0/name = "solid_bricks.png 0" 0/texture = ExtResource( 18 ) 0/tex_offset = Vector2( 0, 0 ) -0/modulate = Color( 0.690196, 0.623529, 0.8, 1 ) +0/modulate = Color( 0.698039, 0.698039, 0.858824, 1 ) 0/region = Rect2( 0, 0, 16, 8 ) 0/tile_mode = 2 0/autotile/icon_coordinate = Vector2( 0, 0 ) @@ -61,7 +61,7 @@ 4/name = "bricks.png 4" 4/texture = ExtResource( 19 ) 4/tex_offset = Vector2( 0, 0 ) -4/modulate = Color( 0.372549, 0.341176, 0.309804, 1 ) +4/modulate = Color( 0.223529, 0.223529, 0.309804, 1 ) 4/region = Rect2( 0, 0, 40, 8 ) 4/tile_mode = 2 4/autotile/icon_coordinate = Vector2( 0, 0 ) @@ -133,7 +133,7 @@ 2/name = "solid_bricks.png 2" 2/texture = ExtResource( 18 ) 2/tex_offset = Vector2( 0, 0 ) -2/modulate = Color( 0.690196, 0.623529, 0.8, 1 ) +2/modulate = Color( 0.698039, 0.698039, 0.858824, 1 ) 2/region = Rect2( 0, 0, 32, 8 ) 2/tile_mode = 2 2/autotile/icon_coordinate = Vector2( 0, 0 ) @@ -155,14 +155,15 @@ [node name="Stage" type="Node2D"] script = ExtResource( 7 ) palette = 2 -color_solid = Color( 0.690196, 0.623529, 0.8, 1 ) +color_solid = Color( 0.698039, 0.698039, 0.858824, 1 ) +color_back = Color( 0.223529, 0.223529, 0.309804, 1 ) color_grass = Color( 0.513726, 0.529412, 0, 1 ) color_wood = Color( 0.670588, 0.215686, 0.541176, 1 ) [node name="SolidTileMap" parent="." instance=ExtResource( 1 )] tile_set = SubResource( 1 ) tile_data = PoolIntArray( -786421, 1, 0, -786420, 1, 0, -786419, 1, 0, -786418, 1, 0, -786417, 1, 0, -655369, 536870912, 1, -655368, 0, 0, -655367, 536870912, 1, -655366, 536870912, 0, -655365, 536870912, 1, -655364, 536870912, 1, -655363, 536870912, 1, -655362, 0, 0, -655361, 536870912, 1, -720896, 536870912, 1, -720895, 536870912, 1, -720894, 536870912, 0, -720893, 536870912, 1, -720892, 536870912, 1, -720891, 536870912, 1, -720890, 0, 0, -720889, 536870912, 1, -720888, 536870912, 0, -720887, 536870912, 1, -720886, 0, 0, -720885, 536870912, 1, -720881, 1, 0, -589834, 536870912, 1, -589833, 0, 0, -655349, 536870912, 0, -655345, 1, 0, -524298, 536870912, 0, -589813, 536870912, 1, -589809, 1, 0, -458762, 536870912, 1, -524281, 0, 0, -524280, 536870912, 1, -524279, 0, 0, -524278, 536870912, 1, -524277, 536870912, 0, -524273, 1, 0, -393226, 0, 0, -458737, 1, 0, -327690, 536870912, 1, -393201, 1, 0, -262154, 536870912, 0, -327672, 1, 0, -327671, 1, 0, -327670, 536870912, 1, -327669, 1, 0, -327668, 1, 0, -327667, 1, 0, -327666, 1, 0, -327665, 1, 0, -196619, 0, 0, -196618, 536870912, 1, -196617, 536870912, 1, -196616, 536870912, 0, -196611, 0, 0, -196610, 536870912, 1, -196609, 536870912, 1, -262144, 536870912, 1, -262143, 536870912, 0, -262142, 536870912, 1, -262141, 536870912, 1, -262140, 0, 0, -262139, 536870912, 1, -262138, 536870912, 0, -262137, 536870912, 1, -262136, 0, 0, -262135, 536870912, 1, -262134, 536870912, 0, -131083, 536870912, 1, -196599, 536870912, 0, -65547, 536870912, 0, -131063, 536870912, 1, -11, 536870912, 1, -10, 0, 0, -9, 536870912, 1, -8, 536870912, 1, -7, 536870912, 0, -6, 536870912, 1, -65530, 0, 0, -65529, 536870912, 1, -65528, 536870912, 1, -65527, 536870912, 0, 65530, 536870912, 0, 6, 536870912, 1, 131066, 536870912, 1, 65542, 536870912, 0, 196602, 0, 0, 196603, 536870912, 1, 196604, 536870912, 1, 196605, 0, 0, 196606, 536870912, 1, 196607, 536870912, 0, 131072, 536870912, 1, 131073, 536870912, 1, 131074, 0, 0, 131075, 536870912, 1, 131076, 536870912, 1, 131077, 536870912, 0, 131078, 536870912, 1 ) -tile_color = Color( 0.690196, 0.623529, 0.8, 1 ) +tile_color = Color( 0.698039, 0.698039, 0.858824, 1 ) [node name="SpikeTileMap" parent="." instance=ExtResource( 5 )] tile_data = PoolIntArray( -262147, 0, 0, -262146, 0, 0, -262145, 0, 0, -327680, 0, 0, -327679, 0, 0, -327678, 0, 0, -327677, 0, 0, -327676, 0, 0, -327675, 0, 0, -327674, 0, 0, -327673, 0, 0, -327672, 0, 0, -327671, 0, 0, 131067, 536870912, 0, 131068, 0, 0, 131069, 0, 0, 131070, 0, 0, 131071, 0, 0, 65536, 0, 0, 65537, 0, 0, 65538, 0, 0, 65539, 0, 0, 65540, 0, 0, 65541, 0, 0 ) @@ -171,16 +172,18 @@ tile_data = PoolIntArray( -262147, 0, 0, -262146, 0, 0, -262145, 0, 0, -327680, z_index = -11 tile_set = SubResource( 2 ) tile_data = PoolIntArray( -720906, 5, 2, -720905, 5, 0, -720904, 5, 0, -720903, 5, 0, -720902, 5, 0, -720898, 5, 2, -720897, 5, 0, -786432, 5, 0, -786430, 5, 2, -786429, 5, 0, -786428, 5, 0, -786427, 5, 0, -786426, 5, 0, -786425, 5, 0, -786424, 536870917, 2, -655371, 5, 2, -655370, -1610612731, 0, -589835, -1073741819, 0, -589830, 1073741829, 2, -589829, 5, 0, -589828, 5, 0, -589827, 1610612742, 0, -589826, 1610612741, 2, -655360, 1073741829, 2, -655359, 5, 0, -655358, 1610612741, 2, -655352, 5, 0, -524299, -1073741819, 0, -524296, 536870916, 3, -524295, 536870916, 2, -524291, 1610612741, 0, -589821, 5, 2, -589820, 5, 0, -589819, -1610612731, 2, -589816, 5, 0, -458763, -1073741819, 2, -458761, -1610612731, 2, -524285, 5, 0, -524284, 5, 0, -524283, 5, 0, -393225, -1610612730, 0, -393224, -1610612730, 0, -393223, -1610612731, 0, -458749, -1073741819, 2, -458748, 5, 0, -458747, 1610612741, 2, -458744, 1073741829, 2, -458743, 5, 0, -458741, -1610612731, 2, -327691, -2147483643, 2, -327689, -536870907, 2, -393212, 6, 0, -393210, 536870916, 3, -393209, 536870916, 2, -393205, 5, 0, -262156, 5, 2, -262155, 1610612741, 0, -327676, 6, 0, -327669, 5, 0, -196620, -1073741819, 0, -196614, 4, 2, -196613, 4, 3, -262133, 5, 0, -131084, -1073741819, 0, -131078, 4, 2, -131077, 4, 3, -131074, 6, 0, -196606, 4, 2, -196605, 536870916, 0, -196604, 536870916, 2, -196603, 6, 0, -196600, -2147483643, 2, -196598, 5, 0, -196597, 1610612741, 2, -65548, -1073741819, 0, -65544, 5, 2, -65543, 5, 0, -65542, 536870917, 2, -65538, 1073741829, 2, -131071, 5, 0, -131067, 1610612741, 2, -131064, -1073741819, 0, -12, -1073741819, 0, -65535, 1610612742, 0, 65524, 1073741829, 2, 65525, 1073741829, 0, 65526, 1073741829, 0, 65527, 1073741829, 0, 65528, -536870907, 2, 1, 1610612742, 0, 7, 5, 0, 8, 1610612741, 2, 65537, 1610612742, 0, 65543, 5, 0, 131079, 5, 0, 196609, 1073741829, 2, 196610, 5, 0, 196611, 5, 0, 196612, 5, 0, 196613, 5, 0, 196614, 5, 0, 196615, 1610612741, 2 ) +brick_color = Color( 0.223529, 0.223529, 0.309804, 1 ) grass_color = Color( 0.513726, 0.529412, 0, 1 ) wood_color = Color( 0.670588, 0.215686, 0.541176, 1 ) [node name="ObscureMap" parent="." instance=ExtResource( 14 )] tile_set = SubResource( 3 ) tile_data = PoolIntArray( -720884, 0, 0, -720883, 0, 0, -720882, 0, 0, -655348, 0, 0, -655347, 0, 0, -655346, 0, 0, -589812, 0, 0, -589811, 0, 0, -589810, 0, 0, -524276, 0, 0, -524275, 0, 0, -524274, 0, 0, -458742, 2, 2, -458741, 0, 0, -458740, 0, 0, -458739, 0, 0, -458738, 0, 0, -393206, 536870914, 2, -393205, 0, 0, -393204, 0, 0, -393203, 0, 0, -393202, 0, 0 ) -tile_color = Color( 0.690196, 0.623529, 0.8, 1 ) +tile_color = Color( 0.698039, 0.698039, 0.858824, 1 ) -[node name="GameCamera" parent="." instance=ExtResource( 3 )] +[node name="CamBounds" type="Node2D" parent="."] position = Vector2( 4, -33 ) +script = ExtResource( 3 ) [node name="Actors" type="Node2D" parent="."] @@ -272,5 +275,3 @@ position = Vector2( -76, -12 ) [node name="Note" parent="Actors" instance=ExtResource( 15 )] position = Vector2( 99, -77 ) - -[editable path="GameCamera"] diff --git a/src/map/4-1.tscn b/src/map/4-1.tscn index 578d42d..9a76125 100644 --- a/src/map/4-1.tscn +++ b/src/map/4-1.tscn @@ -5,7 +5,7 @@ [ext_resource path="res://src/stage/SpikeTileMap.tscn" type="PackedScene" id=3] [ext_resource path="res://src/actor/Player.tscn" type="PackedScene" id=4] [ext_resource path="res://src/stage/DetailTileMap.tscn" type="PackedScene" id=5] -[ext_resource path="res://src/stage/GameCamera.tscn" type="PackedScene" id=6] +[ext_resource path="res://src/stage/CamBounds.gd" type="Script" id=6] [ext_resource path="res://src/actor/Box.tscn" type="PackedScene" id=7] [ext_resource path="res://src/stage/Stage.gd" type="Script" id=8] [ext_resource path="res://src/stage/ObscureMap.tscn" type="PackedScene" id=9] @@ -176,8 +176,9 @@ tile_set = SubResource( 3 ) tile_data = PoolIntArray( -655374, 536870912, 0, -655373, 536870912, 0, -655372, 536870912, 0, -655371, 536870912, 0, -655370, 536870912, 0, -655369, 536870912, 0, -655368, 536870912, 0, -655367, 536870912, 0, -655366, 536870912, 0, -655365, 536870912, 0, -655364, 536870912, 0, -655363, 536870912, 0, -655362, 536870912, 0, -655361, 536870912, 0, -720896, 536870912, 0, -720895, 536870912, 0, -720894, 536870912, 0, -720893, 536870912, 0, -720892, 536870912, 0, -720891, 536870912, 0, -720890, 536870912, 0, -720889, 536870912, 0, -720888, 536870912, 0, -720887, 536870912, 0, -720886, 536870912, 0, -720885, 536870912, 0, -720884, 536870912, 0, -720883, 536870912, 0, -589838, 536870912, 0, -589837, 536870912, 0, -589836, 536870912, 0, -589835, 536870912, 0, -589834, 536870912, 0, -589833, 536870912, 0, -589832, 536870912, 0, -589831, 536870912, 0, -589830, 536870912, 0, -589829, 536870912, 0, -589828, 536870912, 0, -589827, 536870912, 0, -589826, 536870912, 0, -589825, 536870912, 0, -655360, 536870912, 0, -655359, 536870912, 0, -655358, 536870912, 0, -655357, 536870912, 0, -655356, 536870912, 0, -655355, 536870912, 0, -655354, 536870912, 0, -655353, 536870912, 0, -655352, 536870912, 0, -655351, 536870912, 0, -655350, 536870912, 0, -655349, 536870912, 0, -655348, 536870912, 0, -655347, 536870912, 0, -524302, 536870912, 0, -524301, 536870912, 0, -524300, 536870912, 0, -524299, 536870912, 0, -524298, 536870912, 0, -524297, 536870912, 0, -524296, 536870912, 0, -524295, 536870912, 0, -524294, 536870912, 0, -524293, 536870912, 0, -524292, 536870912, 0, -524291, 536870912, 0, -524290, 536870912, 0, -524289, 536870912, 0, -589824, 536870912, 0, -589823, 536870912, 0, -589822, 536870912, 0, -589821, 536870912, 0, -589820, 536870912, 0, -589819, 536870912, 0, -589818, 536870912, 0, -589817, 536870912, 0, -589816, 536870912, 0, -589815, 536870912, 0, -589814, 536870912, 0, -589813, 536870912, 0, -589812, 536870912, 0, -589811, 536870912, 0, -458766, 536870912, 0, -458765, 536870912, 0, -458764, 536870912, 0, -458763, 536870912, 0, -458762, 536870912, 0, -458761, 536870912, 0, -458760, 536870912, 0, -458759, 536870912, 0, -458758, 536870912, 0, -458757, 536870912, 0, -458756, 536870912, 0, -458755, 536870912, 0, -458754, 0, 0, -458753, 0, 0, -524288, 536870912, 0, -524287, 536870912, 0, -524286, 536870912, 0, -524285, 536870912, 0, -524284, 536870912, 0, -524283, 536870912, 0, -524282, 536870912, 0, -524281, 536870912, 0, -524280, 536870912, 0, -524279, 536870912, 0, -524278, 536870912, 0, -524277, 536870912, 0, -524276, 536870912, 0, -524275, 536870912, 0, -393230, 536870912, 0, -393229, 536870912, 0, -393228, 536870912, 0, -393227, 536870912, 0, -393226, 536870912, 0, -393225, 536870912, 0, -393224, 536870912, 0, -393223, 536870912, 0, -393222, 536870912, 0, -393221, 536870912, 0, -393220, 536870912, 0, -393219, 536870912, 0, -393218, 0, 0, -393217, 0, 0, -458752, 536870912, 0, -458751, 536870912, 0, -458750, 536870912, 0, -458749, 536870912, 0, -458748, 536870912, 0, -458747, 536870912, 0, -458746, 536870912, 0, -458745, 536870912, 0, -458744, 536870912, 0, -458743, 536870912, 0, -458742, 536870912, 0, -458741, 536870912, 0, -458740, 536870912, 0, -458739, 536870912, 0, -327694, 536870912, 0, -327693, 536870912, 0, -327692, 536870912, 0, -327691, 536870912, 0, -327690, 536870912, 0, -327689, 536870912, 0, -327688, 536870912, 0, -262158, 536870912, 0, -262157, 536870912, 0, -262156, 536870912, 0, -262155, 536870912, 0, -262154, 536870912, 0, -262153, 536870912, 0, -262152, 536870912, 0, -196622, 536870912, 0, -196621, 536870912, 0, -196620, 536870912, 0, -196619, 536870912, 0, -196618, 536870912, 0, -131086, 536870912, 0, -131085, 536870912, 0, -131084, 536870912, 0, -131083, 536870912, 0, -131082, 536870912, 0, -131081, 2, 2 ) tile_color = Color( 0.760784, 0.654902, 0.509804, 1 ) -[node name="GameCamera" parent="." instance=ExtResource( 6 )] +[node name="CamBounds" type="Node2D" parent="."] position = Vector2( 0, -4 ) +script = ExtResource( 6 ) [node name="Actors" type="Node2D" parent="."] @@ -192,5 +193,3 @@ position = Vector2( -61, 8 ) [node name="Note" parent="Actors" instance=ExtResource( 10 )] position = Vector2( -13, -61 ) - -[editable path="GameCamera"] diff --git a/src/map/4-2.tscn b/src/map/4-2.tscn index b38c4ff..8e5b132 100644 --- a/src/map/4-2.tscn +++ b/src/map/4-2.tscn @@ -2,7 +2,7 @@ [ext_resource path="res://src/stage/DetailTileMap.tscn" type="PackedScene" id=1] [ext_resource path="res://src/actor/Player.tscn" type="PackedScene" id=2] -[ext_resource path="res://src/stage/GameCamera.tscn" type="PackedScene" id=3] +[ext_resource path="res://src/stage/CamBounds.gd" type="Script" id=3] [ext_resource path="res://src/stage/SpikeTileMap.tscn" type="PackedScene" id=4] [ext_resource path="res://src/actor/Exit.tscn" type="PackedScene" id=5] [ext_resource path="res://src/stage/SolidTileMap.tscn" type="PackedScene" id=6] @@ -19,7 +19,7 @@ 0/name = "solid_bricks.png 0" 0/texture = ExtResource( 13 ) 0/tex_offset = Vector2( 0, 0 ) -0/modulate = Color( 0.760784, 0.764706, 0.780392, 1 ) +0/modulate = Color( 0.760784, 0.654902, 0.509804, 1 ) 0/region = Rect2( 0, 0, 16, 8 ) 0/tile_mode = 2 0/autotile/icon_coordinate = Vector2( 0, 0 ) @@ -56,7 +56,7 @@ 4/name = "bricks.png 4" 4/texture = ExtResource( 14 ) 4/tex_offset = Vector2( 0, 0 ) -4/modulate = Color( 0.372549, 0.341176, 0.309804, 1 ) +4/modulate = Color( 0.219608, 0.180392, 0.121569, 1 ) 4/region = Rect2( 0, 0, 40, 8 ) 4/tile_mode = 2 4/autotile/icon_coordinate = Vector2( 0, 0 ) @@ -77,7 +77,7 @@ 5/name = "crate_tiles.png 5" 5/texture = ExtResource( 11 ) 5/tex_offset = Vector2( 0, 0 ) -5/modulate = Color( 0, 0.529412, 0.317647, 1 ) +5/modulate = Color( 0.670588, 0.172549, 0.34902, 1 ) 5/region = Rect2( 0, 16, 24, 8 ) 5/tile_mode = 2 5/autotile/icon_coordinate = Vector2( 0, 0 ) @@ -98,7 +98,7 @@ 6/name = "crate_tiles.png 6" 6/texture = ExtResource( 11 ) 6/tex_offset = Vector2( 0, 0 ) -6/modulate = Color( 0.670588, 0.321569, 0.211765, 1 ) +6/modulate = Color( 0.294118, 0.431373, 0.180392, 1 ) 6/region = Rect2( 0, 24, 8, 8 ) 6/tile_mode = 0 6/occluder_offset = Vector2( 0, 0 ) @@ -128,7 +128,7 @@ 2/name = "solid_bricks.png 2" 2/texture = ExtResource( 13 ) 2/tex_offset = Vector2( 0, 0 ) -2/modulate = Color( 0.760784, 0.764706, 0.780392, 1 ) +2/modulate = Color( 0.760784, 0.654902, 0.509804, 1 ) 2/region = Rect2( 0, 0, 32, 8 ) 2/tile_mode = 2 2/autotile/icon_coordinate = Vector2( 0, 0 ) @@ -151,12 +151,14 @@ script = ExtResource( 8 ) palette = 3 color_solid = Color( 0.760784, 0.654902, 0.509804, 1 ) -color_grass = Color( 0, 0.560784, 0.909804, 1 ) -color_wood = Color( 0, 0.509804, 0.0784314, 1 ) +color_back = Color( 0.219608, 0.180392, 0.121569, 1 ) +color_grass = Color( 0.670588, 0.172549, 0.34902, 1 ) +color_wood = Color( 0.294118, 0.431373, 0.180392, 1 ) [node name="SolidTileMap" parent="." instance=ExtResource( 6 )] tile_set = SubResource( 1 ) tile_data = PoolIntArray( -1245199, 1, 0, -1245198, 1, 0, -1245197, 1, 0, -1245196, 1, 0, -1245195, 1, 0, -1245194, 1, 0, -1245193, 1, 0, -1245192, 1, 0, -1245191, 1, 0, -1245190, 1, 0, -1245189, 1, 0, -1245188, 1, 0, -1245187, 1, 0, -1245186, 1, 0, -1245185, 1, 0, -1310720, 1, 0, -1310719, 1, 0, -1310718, 1, 0, -1310717, 1, 0, -1310716, 1, 0, -1310715, 1, 0, -1310714, 1, 0, -1310713, 1, 0, -1310712, 1, 0, -1310711, 1, 0, -1310710, 1, 0, -1310709, 1, 0, -1310708, 1, 0, -1310707, 1, 0, -1310706, 1, 0, -1179663, 1, 0, -1245170, 1, 0, -1114127, 1, 0, -1179634, 1, 0, -1048591, 1, 0, -1114098, 1, 0, -983055, 1, 0, -1048562, 1, 0, -917519, 1, 0, -983026, 1, 0, -851983, 1, 0, -851974, 0, 1, -851973, 536870912, 0, -851972, 0, 1, -851971, 0, 1, -851970, 0, 0, -851969, 0, 1, -917504, 536870912, 0, -917503, 0, 1, -917502, 0, 0, -917501, 0, 1, -917500, 0, 1, -917499, 536870912, 0, -917498, 0, 1, -917490, 1, 0, -786447, 1, 0, -786439, 0, 1, -851962, 0, 0, -851954, 1, 0, -720911, 1, 0, -720903, 0, 0, -786426, 0, 0, -786418, 1, 0, -655375, 1, 0, -655367, 0, 1, -655362, 0, 0, -655361, 0, 1, -720896, 0, 1, -720895, 536870912, 0, -720890, 0, 1, -720882, 1, 0, -589839, 1, 0, -589833, 0, 0, -589832, 0, 1, -589831, 536870912, 0, -655354, 0, 0, -655352, 536870912, 0, -655346, 1, 0, -524303, 1, 0, -524297, 0, 1, -589816, 536870912, 0, -589810, 1, 0, -458767, 1, 0, -458761, 536870912, 0, -524280, 0, 1, -524274, 1, 0, -393231, 1, 0, -393230, 1, 0, -393229, 1, 0, -393228, 1, 0, -393227, 1, 0, -393226, 0, 0, -393225, 0, 1, -458744, 0, 0, -458743, 0, 1, -458742, 1, 0, -458741, 1, 0, -458740, 1, 0, -458739, 1, 0, -458738, 1, 0, -327690, 0, 1, -393207, 536870912, 0, -262154, 0, 0, -327671, 0, 1, -196618, 0, 1, -262135, 0, 0, -131082, 536870912, 0, -196599, 0, 0, -65546, 536870912, 0, -131063, 0, 1, -10, 0, 1, -65527, 536870912, 0, 65526, 0, 0, 65527, 0, 1, 65528, 0, 1, 65529, 536870912, 0, 65530, 0, 1, 65531, 0, 1, 65532, 0, 0, 65533, 0, 1, 65534, 0, 1, 65535, 536870912, 0, 0, 0, 1, 1, 0, 1, 2, 0, 0, 3, 0, 1, 4, 0, 1, 5, 536870912, 0, 6, 0, 1, 7, 0, 1, 8, 0, 0, 9, 0, 1 ) +tile_color = Color( 0.760784, 0.654902, 0.509804, 1 ) [node name="SpikeTileMap" parent="." instance=ExtResource( 4 )] @@ -164,13 +166,18 @@ tile_data = PoolIntArray( -1245199, 1, 0, -1245198, 1, 0, -1245197, 1, 0, -12451 z_index = -11 tile_set = SubResource( 2 ) tile_data = PoolIntArray( -917508, 5, 2, -917507, 5, 0, -917506, 536870917, 2, -983038, 5, 2, -983037, 536870917, 0, -983036, 5, 2, -983035, 536870917, 0, -983034, 536870917, 0, -983033, 536870917, 2, -917497, 536870917, 0, -786440, -2147483643, 2, -786438, 5, 0, -786437, 1610612742, 0, -786436, 1610612741, 2, -786434, 1073741829, 2, -786433, 5, 0, -851968, 5, 0, -851967, 5, 0, -851966, 1610612741, 2, -851963, 5, 2, -851961, -536870907, 2, -720904, -1073741819, 0, -720901, 1610612742, 0, -786429, 4, 2, -786428, 4, 3, -786427, -1073741819, 0, -655368, -1073741819, 0, -655365, 1073741829, 0, -720891, -1073741819, 2, -720889, -1610612731, 2, -655357, 5, 0, -524298, -2147483643, 2, -524296, 1610612741, 2, -524294, 536870916, 3, -524293, 536870916, 2, -524291, 5, 2, -524290, 536870917, 0, -524289, 536870917, 0, -589824, 536870917, 0, -589823, -1610612731, 2, -589821, 1610612742, 0, -589817, -1073741819, 0, -458763, -2147483643, 2, -458762, 1610612741, 0, -458756, 5, 2, -458755, 536870917, 0, -458754, 536870917, 0, -458753, 536870917, 0, -524288, 536870917, 0, -524287, 536870917, 0, -524286, -1610612731, 2, -524285, 1610612742, 0, -524284, 5, 2, -524283, -1610612731, 2, -524281, -1073741819, 2, -524279, 536870917, 0, -524278, 536870917, 2, -393227, -1073741819, 0, -393222, 5, 2, -393221, 536870917, 0, -393220, -2147483643, 0, -393219, 536870917, 0, -393218, 536870917, 0, -393217, 536870917, 0, -458752, -1610612730, 0, -458751, 536870917, 0, -458750, -1610612730, 0, -458749, -1610612730, 0, -458748, -1073741819, 0, -458747, -1073741819, 0, -458742, -536870907, 0, -327691, -1073741819, 0, -327687, -536870907, 0, -327686, -1073741818, 0, -327685, -1073741818, 0, -327684, -1073741818, 0, -327683, 536870917, 0, -327682, -1610612730, 0, -327681, 536870917, 0, -393216, 536870917, 0, -393215, 536870917, 0, -393214, 536870917, 0, -393212, -1073741819, 2, -393211, 1610612741, 2, -393206, -536870907, 0, -262155, -1073741819, 2, -262153, -1610612731, 2, -262150, 1073741829, 2, -262149, 6, 0, -262147, -1073741819, 2, -262146, 536870917, 0, -262145, 1610612742, 0, -327680, 536870917, 0, -327679, 536870917, 0, -327678, 1610612741, 2, -327673, -2147483643, 0, -327672, -1073741818, 0, -327670, -536870907, 2, -196617, -1610612731, 0, -196613, 1073741829, 2, -196609, 1610612742, 0, -262143, 1610612741, 2, -262139, 4, 2, -262138, 4, 3, -262136, -1073741819, 0, -131081, -1610612731, 0, -131079, 536870916, 3, -131078, 536870916, 2, -131075, 5, 2, -131074, -1073741818, 0, -131073, -1073741818, 0, -196608, -1073741818, 0, -196607, -1073741818, 0, -196606, -1073741818, 0, -196605, -2147483643, 0, -196603, 4, 2, -196602, 4, 3, -196600, -1073741819, 0, -65547, -2147483643, 2, -65545, -536870907, 2, -65540, 536870917, 0, -65539, -2147483643, 1, -65538, 1610612742, 0, -131072, 1610612742, 0, -131071, 1610612741, 2, -131064, -1073741819, 2, -131062, 5, 0, -11, -1073741819, 0, -7, 5, 2, -6, 5, 0, -5, 536870917, 2, -3, 1610612742, 0, -65536, 1610612742, 0, -65533, 5, 2, -65532, 5, 0, -65531, 5, 0, -65530, 5, 0, -65529, 536870917, 2, -65526, 5, 0, 65525, -1073741819, 0, 10, 5, 0, 131061, 1073741829, 2, 131062, 1610612741, 0, 131063, 1610612741, 0, 131064, 1610612741, 0, 131065, 1610612741, 0, 131067, 1073741829, 2, 131068, 5, 0, 131069, 5, 0, 131070, 1610612741, 2, 131071, 5, 0, 65536, 1073741829, 2, 65537, 5, 0, 65538, 5, 0, 65539, 1610612741, 2, 65543, 1073741829, 2, 65544, 5, 0, 65545, 5, 0, 65546, -536870907, 2 ) +brick_color = Color( 0.219608, 0.180392, 0.121569, 1 ) +grass_color = Color( 0.670588, 0.172549, 0.34902, 1 ) +wood_color = Color( 0.294118, 0.431373, 0.180392, 1 ) [node name="ObscureMap" parent="." instance=ExtResource( 9 )] tile_set = SubResource( 3 ) tile_data = PoolIntArray( -1179662, 536870912, 0, -1179661, 536870912, 0, -1179660, 536870912, 0, -1179659, 536870912, 0, -1179658, 536870912, 0, -1179657, 536870912, 0, -1179656, 536870912, 0, -1179655, 536870912, 0, -1179654, 536870912, 0, -1179653, 536870912, 0, -1179652, 536870912, 0, -1179651, 536870912, 0, -1179650, 536870912, 0, -1179649, 536870912, 0, -1245184, 536870912, 0, -1245183, 536870912, 0, -1245182, 536870912, 0, -1245181, 536870912, 0, -1245180, 536870912, 0, -1245179, 536870912, 0, -1245178, 536870912, 0, -1245177, 536870912, 0, -1245176, 536870912, 0, -1245175, 536870912, 0, -1245174, 536870912, 0, -1245173, 536870912, 0, -1245172, 536870912, 0, -1245171, 536870912, 0, -1114126, 536870912, 0, -1114125, 536870912, 0, -1114124, 536870912, 0, -1114123, 536870912, 0, -1114122, 536870912, 0, -1114121, 536870912, 0, -1114120, 536870912, 0, -1114119, 536870912, 0, -1114118, 536870912, 0, -1114117, 536870912, 0, -1114116, 536870912, 0, -1114115, 536870912, 0, -1114114, 536870912, 0, -1114113, 536870912, 0, -1179648, 536870912, 0, -1179647, 536870912, 0, -1179646, 536870912, 0, -1179645, 536870912, 0, -1179644, 536870912, 0, -1179643, 536870912, 0, -1179642, 536870912, 0, -1179641, 536870912, 0, -1179640, 536870912, 0, -1179639, 536870912, 0, -1179638, 536870912, 0, -1179637, 536870912, 0, -1179636, 536870912, 0, -1179635, 536870912, 0, -1048590, 536870912, 0, -1048589, 536870912, 0, -1048588, 536870912, 0, -1048587, 536870912, 0, -1048586, 536870912, 0, -1048585, 536870912, 0, -1048584, 536870912, 0, -1048583, 536870912, 0, -1048582, 536870912, 0, -1048581, 536870912, 0, -1048580, 536870912, 0, -1048579, 536870912, 0, -1048578, 536870912, 0, -1048577, 536870912, 0, -1114112, 536870912, 0, -1114111, 536870912, 0, -1114110, 536870912, 0, -1114109, 536870912, 0, -1114108, 536870912, 0, -1114107, 536870912, 0, -1114106, 536870912, 0, -1114105, 536870912, 0, -1114104, 536870912, 0, -1114103, 536870912, 0, -1114102, 536870912, 0, -1114101, 536870912, 0, -1114100, 536870912, 0, -1114099, 536870912, 0, -983054, 536870912, 0, -983053, 536870912, 0, -983052, 536870912, 0, -983051, 536870912, 0, -983050, 536870912, 0, -983049, 536870912, 0, -983048, 536870912, 0, -983047, 536870912, 0, -983046, 536870912, 0, -983045, 536870912, 0, -983044, 536870912, 0, -983043, 536870912, 0, -983042, 536870912, 0, -983041, 536870912, 0, -1048576, 536870912, 0, -1048575, 536870912, 0, -1048574, 536870912, 0, -1048573, 536870912, 0, -1048572, 536870912, 0, -1048571, 536870912, 0, -1048570, 536870912, 0, -1048569, 536870912, 0, -1048568, 536870912, 0, -1048567, 536870912, 0, -1048566, 536870912, 0, -1048565, 536870912, 0, -1048564, 536870912, 0, -1048563, 536870912, 0, -917518, 536870912, 0, -917517, 536870912, 0, -917516, 536870912, 0, -917515, 536870912, 0, -917514, 536870912, 0, -917513, 536870912, 0, -917512, 536870912, 0, -917511, 536870912, 0, -917510, 536870912, 0, -917509, 536870912, 0, -917508, 536870912, 0, -917507, 536870912, 0, -917506, 536870912, 0, -917505, 536870912, 0, -983040, 536870912, 0, -983039, 536870912, 0, -983038, 536870912, 0, -983037, 536870912, 0, -983036, 536870912, 0, -983035, 536870912, 0, -983034, 536870912, 0, -983033, 536870912, 0, -983032, 536870912, 0, -983031, 536870912, 0, -983030, 536870912, 0, -983029, 536870912, 0, -983028, 536870912, 0, -983027, 536870912, 0, -851982, 536870912, 0, -851981, 536870912, 0, -851980, 536870912, 0, -851979, 536870912, 0, -851978, 536870912, 0, -851977, 536870912, 0, -851976, 536870912, 0, -851975, 2, 2, -917497, 536870912, 0, -917496, 536870912, 0, -917495, 536870912, 0, -917494, 536870912, 0, -917493, 536870912, 0, -917492, 536870912, 0, -917491, 536870912, 0, -786446, 536870912, 0, -786445, 536870912, 0, -786444, 536870912, 0, -786443, 536870912, 0, -786442, 536870912, 0, -786441, 536870912, 0, -786440, 536870912, 0, -851961, 536870912, 0, -851960, 536870912, 0, -851959, 536870912, 0, -851958, 536870912, 0, -851957, 536870912, 0, -851956, 536870912, 0, -851955, 536870912, 0, -720910, 536870912, 0, -720909, 536870912, 0, -720908, 536870912, 0, -720907, 536870912, 0, -720906, 536870912, 0, -720905, 536870912, 0, -720904, 536870912, 0, -786425, 536870912, 0, -786424, 536870912, 0, -786423, 536870912, 0, -786422, 536870912, 0, -786421, 536870912, 0, -786420, 536870912, 0, -786419, 536870912, 0, -655374, 536870912, 0, -655373, 536870912, 0, -655372, 536870912, 0, -655371, 536870912, 0, -655370, 536870912, 0, -655369, 536870912, 0, -655368, 536870912, 0, -720889, 536870912, 0, -720888, 536870912, 0, -720887, 536870912, 0, -720886, 536870912, 0, -720885, 536870912, 0, -720884, 536870912, 0, -720883, 536870912, 0, -589838, 536870912, 0, -589837, 0, 0, -589836, 0, 0, -589835, 536870912, 0, -589834, 536870912, 0, -655353, 536870914, 3, -655351, 536870912, 0, -655350, 536870912, 0, -655349, 536870912, 0, -655348, 536870912, 0, -655347, 536870912, 0, -524302, 536870912, 0, -524301, 0, 0, -524300, 0, 0, -524299, 536870912, 0, -524298, 536870912, 0, -589815, 536870912, 0, -589814, 536870912, 0, -589813, 536870912, 0, -589812, 536870912, 0, -589811, 536870912, 0, -458766, 536870912, 0, -458765, 536870912, 0, -458764, 536870912, 0, -458763, 536870912, 0, -458762, 536870912, 0, -524279, 536870912, 0, -524278, 536870912, 0, -524277, 536870912, 0, -524276, 536870912, 0, -524275, 536870912, 0 ) +tile_color = Color( 0.760784, 0.654902, 0.509804, 1 ) -[node name="GameCamera" parent="." instance=ExtResource( 3 )] +[node name="CamBounds" type="Node2D" parent="."] position = Vector2( 0, -52 ) +script = ExtResource( 3 ) [node name="Actors" type="Node2D" parent="."] @@ -206,5 +213,3 @@ position = Vector2( -69, -24 ) [node name="Note" parent="Actors" instance=ExtResource( 10 )] position = Vector2( -101, -77 ) - -[editable path="GameCamera"] diff --git a/src/map/4-3.tscn b/src/map/4-3.tscn index 639d448..ab9f8f9 100644 --- a/src/map/4-3.tscn +++ b/src/map/4-3.tscn @@ -2,7 +2,7 @@ [ext_resource path="res://src/stage/SolidTileMap.tscn" type="PackedScene" id=1] [ext_resource path="res://src/actor/Box.tscn" type="PackedScene" id=2] -[ext_resource path="res://src/stage/GameCamera.tscn" type="PackedScene" id=3] +[ext_resource path="res://src/stage/CamBounds.gd" type="Script" id=3] [ext_resource path="res://src/stage/DetailTileMap.tscn" type="PackedScene" id=4] [ext_resource path="res://src/stage/SpikeTileMap.tscn" type="PackedScene" id=5] [ext_resource path="res://src/actor/Player.tscn" type="PackedScene" id=6] @@ -19,7 +19,7 @@ 0/name = "solid_bricks.png 0" 0/texture = ExtResource( 13 ) 0/tex_offset = Vector2( 0, 0 ) -0/modulate = Color( 0.4, 0.741176, 0.415686, 1 ) +0/modulate = Color( 0.760784, 0.654902, 0.509804, 1 ) 0/region = Rect2( 0, 0, 16, 8 ) 0/tile_mode = 2 0/autotile/icon_coordinate = Vector2( 0, 0 ) @@ -56,7 +56,7 @@ 4/name = "bricks.png 4" 4/texture = ExtResource( 14 ) 4/tex_offset = Vector2( 0, 0 ) -4/modulate = Color( 0.0823529, 0.239216, 0.0901961, 1 ) +4/modulate = Color( 0.219608, 0.180392, 0.121569, 1 ) 4/region = Rect2( 0, 0, 40, 8 ) 4/tile_mode = 2 4/autotile/icon_coordinate = Vector2( 0, 0 ) @@ -77,7 +77,7 @@ 5/name = "crate_tiles.png 5" 5/texture = ExtResource( 11 ) 5/tex_offset = Vector2( 0, 0 ) -5/modulate = Color( 0.0392157, 0.411765, 0.941176, 1 ) +5/modulate = Color( 0.670588, 0.172549, 0.34902, 1 ) 5/region = Rect2( 0, 16, 24, 8 ) 5/tile_mode = 2 5/autotile/icon_coordinate = Vector2( 0, 0 ) @@ -98,7 +98,7 @@ 6/name = "crate_tiles.png 6" 6/texture = ExtResource( 11 ) 6/tex_offset = Vector2( 0, 0 ) -6/modulate = Color( 0.658824, 0.176471, 0.176471, 1 ) +6/modulate = Color( 0.294118, 0.431373, 0.180392, 1 ) 6/region = Rect2( 0, 24, 8, 8 ) 6/tile_mode = 0 6/occluder_offset = Vector2( 0, 0 ) @@ -128,7 +128,7 @@ 2/name = "solid_bricks.png 2" 2/texture = ExtResource( 13 ) 2/tex_offset = Vector2( 0, 0 ) -2/modulate = Color( 0.4, 0.741176, 0.415686, 1 ) +2/modulate = Color( 0.760784, 0.654902, 0.509804, 1 ) 2/region = Rect2( 0, 0, 32, 8 ) 2/tile_mode = 2 2/autotile/icon_coordinate = Vector2( 0, 0 ) @@ -150,15 +150,15 @@ [node name="Stage" type="Node2D"] script = ExtResource( 7 ) palette = 3 -color_solid = Color( 0.4, 0.741176, 0.415686, 1 ) -color_back = Color( 0.0823529, 0.239216, 0.0901961, 1 ) -color_grass = Color( 0.0392157, 0.411765, 0.941176, 1 ) -color_wood = Color( 0.658824, 0.176471, 0.176471, 1 ) +color_solid = Color( 0.760784, 0.654902, 0.509804, 1 ) +color_back = Color( 0.219608, 0.180392, 0.121569, 1 ) +color_grass = Color( 0.670588, 0.172549, 0.34902, 1 ) +color_wood = Color( 0.294118, 0.431373, 0.180392, 1 ) [node name="SolidTileMap" parent="." instance=ExtResource( 1 )] tile_set = SubResource( 1 ) tile_data = PoolIntArray( -851981, 536870913, 0, -851980, 536870913, 0, -851979, 536870913, 0, -851978, 536870913, 0, -851977, 536870913, 0, -851976, 536870913, 0, -851975, 536870913, 0, -851974, 536870913, 0, -851973, 536870913, 0, -851972, 536870913, 0, -851971, 536870913, 0, -851970, 536870913, 0, -851969, 536870913, 0, -917504, 536870913, 0, -917503, 536870913, 0, -917502, 536870913, 0, -917501, 536870913, 0, -917500, 536870913, 0, -917499, 536870913, 0, -917498, 536870913, 0, -917497, 536870913, 0, -917496, 536870913, 0, -917495, 536870913, 0, -917494, 536870913, 0, -917493, 536870913, 0, -917492, 536870913, 0, -917491, 536870913, 0, -917490, 536870913, 0, -917489, 536870913, 0, -917488, 536870913, 0, -786445, 536870913, 0, -851952, 536870913, 0, -720909, 536870913, 0, -786416, 536870913, 0, -655373, 536870913, 0, -720880, 536870913, 0, -589837, 536870913, 0, -655344, 536870913, 0, -524301, 536870913, 0, -589808, 536870913, 0, -458765, 536870913, 0, -458764, 536870913, 0, -458763, 536870913, 0, -458762, 536870913, 0, -458761, 0, 0, -458760, 0, 1, -458759, 536870912, 0, -458758, 0, 1, -458757, 0, 0, -458756, 0, 1, -458755, 0, 1, -458754, 536870912, 0, -458753, 0, 1, -524284, 0, 0, -524283, 0, 1, -524282, 536870912, 0, -524281, 0, 1, -524280, 0, 1, -524279, 536870912, 0, -524272, 536870913, 0, -393225, 0, 1, -458748, 0, 1, -458743, 536870912, 0, -458736, 536870913, 0, -327689, 536870912, 0, -327681, 0, 1, -393216, 0, 0, -393215, 0, 1, -393214, 536870912, 0, -393213, 0, 1, -393212, 536870912, 0, -393207, 0, 1, -393200, 536870913, 0, -262153, 536870912, 0, -327671, 0, 0, -327670, 0, 1, -327669, 536870912, 0, -327668, 0, 1, -327667, 536870913, 0, -327666, 536870913, 0, -327665, 536870913, 0, -327664, 536870913, 0, -196617, 0, 1, -262132, 0, 0, -131081, 0, 0, -196596, 0, 0, -65545, 0, 1, -131060, 0, 1, -9, 0, 0, -65524, 536870912, 0, 65527, 0, 0, 12, 0, 1, 131063, 0, 1, 65548, 536870912, 0, 196599, 536870912, 0, 131084, 536870912, 0, 262135, 0, 1, 196620, 0, 1, 327671, 536870912, 0, 262151, 0, 0, 262152, 0, 1, 262153, 0, 1, 262154, 0, 0, 262155, 0, 1, 262156, 536870912, 0, 393207, 536870912, 0, 327687, 0, 1, 458743, 0, 1, 458744, 0, 0, 458745, 0, 1, 458746, 0, 1, 458747, 536870912, 0, 458748, 0, 1, 458749, 0, 1, 458750, 0, 1, 458751, 0, 0, 393216, 0, 1, 393217, 0, 1, 393218, 536870912, 0, 393219, 0, 1, 393220, 0, 1, 393221, 0, 0, 393222, 0, 1, 393223, 536870912, 0 ) -tile_color = Color( 0.4, 0.741176, 0.415686, 1 ) +tile_color = Color( 0.760784, 0.654902, 0.509804, 1 ) [node name="SpikeTileMap" parent="." instance=ExtResource( 5 )] tile_data = PoolIntArray( 393208, 0, 0, 393209, 0, 0, 393210, 0, 0, 393211, 0, 0, 393212, 0, 0, 393213, 0, 0, 393214, 0, 0, 393215, 0, 0, 327680, 0, 0, 327681, 0, 0, 327682, 0, 0, 327683, 0, 0, 327684, 0, 0, 327685, 0, 0, 327686, 0, 0 ) @@ -167,17 +167,18 @@ tile_data = PoolIntArray( 393208, 0, 0, 393209, 0, 0, 393210, 0, 0, 393211, 0, 0 z_index = -11 tile_set = SubResource( 2 ) tile_data = PoolIntArray( -524296, 5, 2, -524295, 5, 0, -524294, 5, 0, -524293, 536870917, 2, -589819, 5, 2, -589818, 5, 0, -589817, 5, 0, -589816, 5, 0, -589815, 5, 0, -589814, 536870917, 2, -524278, -1610612731, 0, -393224, 5, 0, -393221, 1073741829, 2, -393220, 5, 0, -393219, 5, 0, -393218, 5, 0, -458752, 536870917, 2, -458749, 5, 2, -458747, 1610612741, 2, -458742, -1610612731, 0, -327688, 5, 0, -327686, 536870916, 3, -327685, 536870916, 2, -393206, -1610612731, 0, -262154, -2147483643, 2, -262152, -536870907, 2, -262151, 536870916, 3, -262150, 536870916, 2, -262147, 4, 2, -262146, 4, 3, -327680, 1073741829, 2, -327679, 1610612742, 0, -327678, 1610612741, 0, -327677, 1610612742, 0, -327674, 5, 2, -327673, -1610612731, 2, -196618, -1073741819, 0, -196613, 5, 2, -196612, -1610612731, 2, -196611, 4, 2, -196610, 4, 0, -196609, 4, 3, -262143, 1610612742, 0, -262141, 1610612741, 0, -262138, -1073741819, 2, -262137, -1610612731, 0, -262134, 1073741829, 2, -262133, 5, 0, -262131, -1610612731, 2, -131082, -2147483643, 2, -131078, 5, 2, -131077, -1610612731, 0, -131076, -1610612731, 0, -131074, 4, 2, -131073, 4, 3, -196608, 5, 2, -196607, 1610612741, 0, -196606, 1610612741, 0, -196605, 1610612741, 0, -196604, -1610612731, 2, -196601, 6, 0, -196600, 536870916, 3, -196599, 4, 0, -196598, 536870916, 2, -196595, -1610612731, 0, -65547, -2147483643, 2, -65546, -1610612731, 0, -65542, -1073741819, 0, -65541, 5, 0, -65540, 5, 0, -65539, -1610612731, 2, -131072, 1610612741, 0, -131071, 1610612741, 0, -131070, 1610612741, 0, -131069, 1610612741, 0, -131068, -1610612730, 0, -131067, -1610612731, 2, -131066, -1610612730, 0, -131065, 6, 0, -131059, -1610612731, 0, -11, -1610612731, 0, -10, 5, 0, -7, -2147483643, 2, -6, 5, 0, -5, 5, 0, -4, 5, 0, -3, -2147483643, 0, -65536, 1610612741, 0, -65535, 1610612742, 0, -65534, 1610612741, 0, -65533, 1610612741, 0, -65532, 1610612741, 0, -65531, 1610612741, 0, -65529, 1610612741, 2, -65523, -1610612731, 0, 65525, -1073741819, 2, 65526, 5, 0, 65529, 5, 0, 65530, 5, 0, 65531, 5, 0, 65532, 5, 0, 65533, -536870907, 2, 0, -1073741819, 2, 1, -1610612731, 0, 2, 1610612741, 0, 3, 1610612741, 0, 4, 1610612742, 0, 5, 1610612741, 0, 7, 536870916, 3, 8, 4, 1, 9, 536870916, 2, 11, -2147483643, 2, 13, 1610612741, 2, 131062, -1073741819, 2, 131065, -1073741819, 2, 131066, 5, 0, 131067, 5, 0, 131068, 1610612741, 2, 131070, -2147483643, 2, 131071, -1073741818, 0, 65536, -1073741818, 0, 65537, 1610612741, 2, 65539, -1610612731, 0, 65540, 1610612741, 0, 65541, -1073741819, 0, 65543, 536870916, 3, 65544, 536870916, 0, 65545, 536870916, 2, 65547, -1073741819, 0, 196598, 5, 0, 196603, 6, 0, 196606, -1610612731, 0, 196607, 1610612742, 0, 131075, 1073741829, 2, 131076, 1610612741, 0, 131077, 1610612741, 2, 131079, 536870916, 3, 131080, 536870916, 2, 131083, -1073741819, 0, 262134, -1073741819, 2, 262136, 5, 0, 262137, -1073741819, 1, 262138, -1073741819, 1, 262139, 6, 0, 262140, -536870907, 2, 262142, -1073741819, 2, 262143, 1610612742, 0, 196608, -1610612731, 2, 196609, 4, 2, 196610, 4, 3, 196612, 1610612742, 0, 196619, -1073741819, 2, 196621, -1610612731, 2, 327674, -1073741819, 2, 327675, 6, 0, 327679, 1610612742, 0, 262144, -1610612731, 0, 262148, 1610612742, 0, 262149, -536870907, 2, 262157, -1610612731, 0, 393211, 6, 0, 393215, 1610612742, 0, 327680, -1610612731, 0, 327684, 1610612742, 0, 327688, 5, 2, 327689, 5, 0, 327690, 5, 0, 327691, 5, 0, 327692, 5, 0, 327693, 1610612741, 2, 393224, -1610612731, 0, 524283, 1073741829, 2, 524284, 5, 0, 524285, 5, 0, 524286, 5, 0, 524287, 5, 0, 458752, 1610612741, 2, 458756, 1073741829, 2, 458757, 5, 0, 458758, 5, 0, 458759, 5, 0, 458760, 1610612741, 2 ) -brick_color = Color( 0.0823529, 0.239216, 0.0901961, 1 ) -grass_color = Color( 0.0392157, 0.411765, 0.941176, 1 ) -wood_color = Color( 0.658824, 0.176471, 0.176471, 1 ) +brick_color = Color( 0.219608, 0.180392, 0.121569, 1 ) +grass_color = Color( 0.670588, 0.172549, 0.34902, 1 ) +wood_color = Color( 0.294118, 0.431373, 0.180392, 1 ) [node name="ObscureMap" parent="." instance=ExtResource( 9 )] tile_set = SubResource( 3 ) tile_data = PoolIntArray( -786444, 536870912, 0, -786443, 536870912, 0, -786442, 536870912, 0, -786441, 536870912, 0, -786440, 536870912, 0, -786439, 536870912, 0, -786438, 536870912, 0, -786437, 536870912, 0, -786436, 536870912, 0, -786435, 536870912, 0, -786434, 536870912, 0, -786433, 536870912, 0, -851968, 536870912, 0, -851967, 536870912, 0, -851966, 536870912, 0, -851965, 536870912, 0, -851964, 536870912, 0, -851963, 536870912, 0, -851962, 536870912, 0, -851961, 536870912, 0, -851960, 536870912, 0, -851959, 536870912, 0, -851958, 536870912, 0, -851957, 536870912, 0, -851956, 536870912, 0, -851955, 536870912, 0, -851954, 536870912, 0, -851953, 536870912, 0, -720908, 536870912, 0, -720907, 536870912, 0, -720906, 536870912, 0, -720905, 536870912, 0, -720904, 536870912, 0, -720903, 536870912, 0, -720902, 536870912, 0, -720901, 536870912, 0, -720900, 536870912, 0, -720899, 536870912, 0, -720898, 536870912, 0, -720897, 536870912, 0, -786432, 536870912, 0, -786431, 536870912, 0, -786430, 536870912, 0, -786429, 536870912, 0, -786428, 536870912, 0, -786427, 536870912, 0, -786426, 536870912, 0, -786425, 536870912, 0, -786424, 536870912, 0, -786423, 536870912, 0, -786422, 536870912, 0, -786421, 536870912, 0, -786420, 536870912, 0, -786419, 536870912, 0, -786418, 536870912, 0, -786417, 536870912, 0, -655372, 536870912, 0, -655371, 536870912, 0, -655370, 536870912, 0, -655369, 536870912, 0, -655368, 536870912, 0, -655367, 536870912, 0, -655366, 536870912, 0, -655365, 536870912, 0, -655364, 536870912, 0, -655363, 536870912, 0, -655362, 536870912, 0, -655361, 536870912, 0, -720896, 536870912, 0, -720895, 536870912, 0, -720894, 536870912, 0, -720893, 536870912, 0, -720892, 536870912, 0, -720891, 536870912, 0, -720890, 536870912, 0, -720889, 536870912, 0, -720888, 536870912, 0, -720887, 536870912, 0, -720886, 536870912, 0, -720885, 536870912, 0, -720884, 536870912, 0, -720883, 536870912, 0, -720882, 536870912, 0, -720881, 536870912, 0, -589836, 536870912, 0, -589835, 536870912, 0, -589834, 536870912, 0, -589833, 536870912, 0, -589832, 536870912, 0, -589831, 536870912, 0, -589830, 536870912, 0, -589829, 536870912, 0, -589828, 536870912, 0, -589827, 536870912, 0, -589826, 536870912, 0, -589825, 536870912, 0, -655360, 536870912, 0, -655359, 536870912, 0, -655358, 536870912, 0, -655357, 536870912, 0, -655356, 536870912, 0, -655355, 536870912, 0, -655354, 536870912, 0, -655353, 536870912, 0, -655352, 536870912, 0, -655351, 536870912, 0, -655350, 536870912, 0, -655349, 536870912, 0, -655348, 536870912, 0, -655347, 536870912, 0, -655346, 536870912, 0, -655345, 536870912, 0, -524300, 536870912, 0, -524299, 536870912, 0, -524298, 536870912, 0, -524297, 536870912, 0, -524296, 536870912, 0, -524295, 536870912, 0, -524294, 536870912, 0, -524293, 536870912, 0, -524292, 536870912, 0, -524291, 536870912, 0, -524290, 536870912, 0, -524289, 536870912, 0, -589824, 536870912, 0, -589823, 536870912, 0, -589822, 536870912, 0, -589821, 536870912, 0, -589820, 536870912, 0, -589819, 536870912, 0, -589818, 536870912, 0, -589817, 536870912, 0, -589816, 536870912, 0, -589815, 536870912, 0, -589814, 536870912, 0, -589813, 536870912, 0, -589812, 536870912, 0, -589811, 536870912, 0, -589810, 536870912, 0, -589809, 536870912, 0, -524288, 536870912, 0, -524287, 536870912, 0, -524286, 536870912, 0, -524285, 536870912, 0, -524278, 536870912, 0, -524277, 536870912, 0, -524276, 536870912, 0, -524275, 536870912, 0, -524274, 536870912, 0, -524273, 536870912, 0, -393217, 536870914, 2, -458752, 536870912, 0, -458751, 536870912, 0, -458750, 536870912, 0, -458749, 536870912, 0, -458742, 536870912, 0, -458741, 536870912, 0, -458740, 536870912, 0, -458739, 536870912, 0, -458738, 536870912, 0, -458737, 536870912, 0, -393206, 536870912, 0, -393205, 536870912, 0, -393204, 536870912, 0, -393203, 536870912, 0, -393202, 536870912, 0, -393201, 536870912, 0 ) -tile_color = Color( 0.4, 0.741176, 0.415686, 1 ) +tile_color = Color( 0.760784, 0.654902, 0.509804, 1 ) -[node name="GameCamera" parent="." instance=ExtResource( 3 )] +[node name="CamBounds" type="Node2D" parent="."] position = Vector2( 16, -4 ) +script = ExtResource( 3 ) [node name="Actors" type="Node2D" parent="."] @@ -219,5 +220,3 @@ position = Vector2( 84, -8 ) [node name="Note" parent="Actors" instance=ExtResource( 10 )] position = Vector2( 107, -61 ) - -[editable path="GameCamera"] diff --git a/src/map/4-4.tscn b/src/map/4-4.tscn index 86b25cc..988c461 100644 --- a/src/map/4-4.tscn +++ b/src/map/4-4.tscn @@ -5,7 +5,7 @@ [ext_resource path="res://src/stage/SpikeTileMap.tscn" type="PackedScene" id=3] [ext_resource path="res://src/actor/Player.tscn" type="PackedScene" id=4] [ext_resource path="res://src/stage/DetailTileMap.tscn" type="PackedScene" id=5] -[ext_resource path="res://src/stage/GameCamera.tscn" type="PackedScene" id=6] +[ext_resource path="res://src/stage/CamBounds.gd" type="Script" id=6] [ext_resource path="res://src/actor/Box.tscn" type="PackedScene" id=7] [ext_resource path="res://src/stage/Stage.gd" type="Script" id=8] [ext_resource path="res://src/stage/ObscureMap.tscn" type="PackedScene" id=9] @@ -19,7 +19,7 @@ 0/name = "solid_bricks.png 0" 0/texture = ExtResource( 13 ) 0/tex_offset = Vector2( 0, 0 ) -0/modulate = Color( 0.760784, 0.764706, 0.780392, 1 ) +0/modulate = Color( 0.760784, 0.654902, 0.509804, 1 ) 0/region = Rect2( 0, 0, 16, 8 ) 0/tile_mode = 2 0/autotile/icon_coordinate = Vector2( 0, 0 ) @@ -56,7 +56,7 @@ 4/name = "bricks.png 4" 4/texture = ExtResource( 14 ) 4/tex_offset = Vector2( 0, 0 ) -4/modulate = Color( 0.372549, 0.341176, 0.309804, 1 ) +4/modulate = Color( 0.219608, 0.180392, 0.121569, 1 ) 4/region = Rect2( 0, 0, 40, 8 ) 4/tile_mode = 2 4/autotile/icon_coordinate = Vector2( 0, 0 ) @@ -77,7 +77,7 @@ 5/name = "crate_tiles.png 5" 5/texture = ExtResource( 11 ) 5/tex_offset = Vector2( 0, 0 ) -5/modulate = Color( 0, 0.529412, 0.317647, 1 ) +5/modulate = Color( 0.670588, 0.172549, 0.34902, 1 ) 5/region = Rect2( 0, 16, 24, 8 ) 5/tile_mode = 2 5/autotile/icon_coordinate = Vector2( 0, 0 ) @@ -98,7 +98,7 @@ 6/name = "crate_tiles.png 6" 6/texture = ExtResource( 11 ) 6/tex_offset = Vector2( 0, 0 ) -6/modulate = Color( 0.670588, 0.321569, 0.211765, 1 ) +6/modulate = Color( 0.294118, 0.431373, 0.180392, 1 ) 6/region = Rect2( 0, 24, 8, 8 ) 6/tile_mode = 0 6/occluder_offset = Vector2( 0, 0 ) @@ -128,7 +128,7 @@ 2/name = "solid_bricks.png 2" 2/texture = ExtResource( 13 ) 2/tex_offset = Vector2( 0, 0 ) -2/modulate = Color( 0.760784, 0.764706, 0.780392, 1 ) +2/modulate = Color( 0.760784, 0.654902, 0.509804, 1 ) 2/region = Rect2( 0, 0, 32, 8 ) 2/tile_mode = 2 2/autotile/icon_coordinate = Vector2( 0, 0 ) @@ -151,12 +151,14 @@ script = ExtResource( 8 ) palette = 3 color_solid = Color( 0.760784, 0.654902, 0.509804, 1 ) -color_grass = Color( 0, 0.560784, 0.909804, 1 ) -color_wood = Color( 0, 0.509804, 0.0784314, 1 ) +color_back = Color( 0.219608, 0.180392, 0.121569, 1 ) +color_grass = Color( 0.670588, 0.172549, 0.34902, 1 ) +color_wood = Color( 0.294118, 0.431373, 0.180392, 1 ) [node name="SolidTileMap" parent="." instance=ExtResource( 2 )] tile_set = SubResource( 1 ) tile_data = PoolIntArray( -983052, 1, 0, -983051, 1, 0, -983050, 1, 0, -983049, 1, 0, -983048, 1, 0, -983047, 1, 0, -983046, 1, 0, -983045, 1, 0, -983044, 1, 0, -983043, 1, 0, -983042, 1, 0, -983041, 1, 0, -1048576, 1, 0, -1048575, 1, 0, -1048574, 1, 0, -1048573, 1, 0, -1048572, 1, 0, -1048571, 1, 0, -1048570, 1, 0, -1048569, 1, 0, -1048568, 1, 0, -1048567, 1, 0, -1048566, 1, 0, -1048565, 1, 0, -1048564, 1, 0, -1048563, 1, 0, -1048562, 1, 0, -1048561, 1, 0, -1048560, 1, 0, -1048559, 1, 0, -1048558, 1, 0, -917516, 1, 0, -983022, 1, 0, -851980, 1, 0, -917486, 1, 0, -786444, 1, 0, -851950, 1, 0, -720908, 1, 0, -786414, 1, 0, -655372, 1, 0, -720878, 1, 0, -589836, 1, 0, -655359, 536870912, 1, -655358, 536870912, 0, -655357, 0, 1, -655356, 536870912, 0, -655355, 0, 1, -655354, 0, 1, -655353, 536870912, 0, -655352, 0, 1, -655351, 0, 0, -655350, 0, 1, -655349, 536870912, 0, -655342, 1, 0, -524300, 1, 0, -589813, 536870912, 1, -589812, 0, 0, -589811, 1, 0, -589810, 1, 0, -589809, 1, 0, -589808, 1, 0, -589807, 1, 0, -589806, 1, 0, -458764, 1, 0, -458757, 0, 1, -458756, 0, 0, -458755, 0, 1, -458754, 0, 1, -458753, 536870912, 0, -524288, 0, 1, -524287, 536870912, 1, -524276, 536870912, 0, -393228, 1, 0, -393227, 1, 0, -393226, 1, 0, -393225, 1, 0, -393224, 1, 0, -393223, 1, 0, -393222, 536870912, 1, -393221, 536870912, 0, -458751, 536870912, 0, -458740, 0, 1, -327686, 0, 1, -393215, 0, 0, -393208, 0, 0, -393204, 536870912, 0, -262150, 536870912, 0, -327679, 0, 1, -327672, 0, 1, -327668, 0, 1, -196614, 0, 0, -262143, 0, 0, -262142, 0, 1, -262141, 536870912, 0, -262140, 0, 1, -262139, 0, 1, -262138, 0, 0, -262137, 0, 1, -262136, 536870912, 0, -262132, 0, 0, -131078, 0, 1, -196596, 0, 1, -65542, 0, 0, -65541, 0, 1, -65540, 536870912, 0, -65539, 0, 1, -65538, 0, 1, -65537, 0, 0, -131072, 0, 1, -131071, 0, 1, -131070, 536870912, 0, -131069, 0, 1, -131066, 536870912, 1, -131065, 0, 0, -131064, 0, 1, -131063, 0, 1, -131062, 536870912, 0, -131061, 0, 1, -131060, 536870912, 0, -65533, 0, 0, -65532, 0, 1, -65531, 0, 1, -65530, 536870912, 0 ) +tile_color = Color( 0.760784, 0.654902, 0.509804, 1 ) [node name="SpikeTileMap" parent="." instance=ExtResource( 3 )] tile_data = PoolIntArray( -131068, 0, 0, -131067, 0, 0 ) @@ -165,13 +167,18 @@ tile_data = PoolIntArray( -131068, 0, 0, -131067, 0, 0 ) z_index = -11 tile_set = SubResource( 2 ) tile_data = PoolIntArray( -917496, 536870917, 0, -917495, 536870917, 0, -917494, 536870917, 0, -917493, 536870917, 0, -917492, 536870917, 0, -917491, 536870917, 0, -917490, 536870917, 0, -917489, 536870917, 0, -917488, 536870917, 0, -917487, 536870917, 0, -786436, 5, 2, -786435, 1610612741, 0, -786434, -1610612731, 2, -851960, 1073741829, 2, -851959, -1610612731, 0, -851958, 536870917, 0, -851957, -1610612731, 0, -851956, -1610612731, 0, -851955, -1610612731, 0, -851954, 536870917, 0, -851953, -1610612731, 0, -851952, 536870917, 0, -851951, 536870917, 0, -720900, 5, 0, -720899, 1610612741, 0, -720898, 5, 0, -786422, 1610612742, 0, -786416, 1073741829, 2, -786415, -1610612731, 0, -655369, 536870916, 3, -655368, 4, 0, -655367, 4, 3, -655364, -1073741819, 2, -655363, -1610612731, 0, -655362, 1610612741, 2, -720893, 5, 2, -720892, -1610612731, 2, -720890, 536870916, 3, -720889, 4, 0, -720888, 4, 3, -720886, 1610612742, 0, -720879, 5, 0, -589834, 536870916, 3, -589833, 536870916, 2, -589832, 536870916, 3, -589831, 536870916, 2, -589827, 1610612742, 0, -655346, 536870917, 2, -655344, -2147483643, 2, -655343, 5, 0, -524298, 4, 2, -524297, 4, 0, -524296, 536870916, 2, -524291, 1610612742, 0, -524290, -1610612731, 2, -589821, -1073741819, 2, -589820, 1610612741, 2, -589819, 4, 2, -589818, 4, 0, -589817, 536870916, 1, -589816, 536870916, 2, -589811, -1073741818, 0, -589810, -1073741818, 0, -589809, -1073741818, 0, -589808, -1610612731, 0, -589807, -1610612731, 0, -524275, 5, 0, -524272, 1073741829, 2, -524271, 5, 0, -393219, 1610612741, 2, -458741, 5, 2, -458739, 1610612741, 2, -458735, -1073741819, 0, -393212, 536870916, 3, -393211, 4, 3, -393205, 5, 0, -393199, 5, 0, -327677, 536870916, 3, -327676, 4, 0, -327675, 4, 3, -327673, 5, 2, -327669, 5, 0, -327664, -2147483643, 2, -327663, 5, 0, -196616, 536870916, 3, -196615, 4, 1, -196613, 536870916, 3, -196612, 4, 3, -262140, 4, 1, -262139, 4, 1, -262133, -1073741819, 2, -262131, -1610612731, 2, -262129, -2147483643, 2, -262128, 5, 0, -262127, -1073741819, 0, -131080, 4, 0, -131079, 536870916, 2, -131077, 536870916, 3, -131076, 4, 0, -131075, 4, 3, -196605, 4, 2, -196604, 4, 1, -196603, 536870916, 0, -196602, 4, 3, -196595, -1073741818, 0, -196594, -1073741818, 0, -196593, -1610612731, 0, -196592, -1610612731, 0, -196591, -1610612731, 0, -65544, 536870916, 3, -65543, 4, 1, -131057, 1073741829, 2, -131056, 5, 0, -131055, 5, 0, -8, 4, 2, -7, 4, 3, -6, 4, 2, -5, 4, 1, -4, 4, 0, -3, 536870916, 2, -2, 5, 0, -1, -1610612731, 0, -65536, -1610612731, 0, -65535, 5, 0, -65526, 6, 0, -65520, 5, 0, -65519, -1073741819, 0, 65528, 4, 2, 65529, 4, 3, 65530, 536870916, 0, 65531, 536870916, 2, 65534, 1073741829, 2, 65535, 5, 0, 0, 5, 0, 1, 1610612741, 2, 3, 536870916, 3, 4, 536870916, 0, 5, 4, 1, 6, 536870916, 2, 9, 5, 2, 10, 1610612741, 0, 11, -1610612731, 2, 17, 5, 0, 65539, 4, 2, 65540, 536870916, 2, 65541, 536870916, 3, 65542, 536870916, 2, 65545, -1073741819, 2, 65546, 1610612741, 0, 65547, 1610612741, 2, 131076, 4, 2, 131077, 536870916, 2 ) +brick_color = Color( 0.219608, 0.180392, 0.121569, 1 ) +grass_color = Color( 0.670588, 0.172549, 0.34902, 1 ) +wood_color = Color( 0.294118, 0.431373, 0.180392, 1 ) [node name="ObscureMap" parent="." instance=ExtResource( 9 )] tile_set = SubResource( 3 ) tile_data = PoolIntArray( -917515, 536870912, 0, -917514, 536870912, 0, -917513, 536870912, 0, -917512, 536870912, 0, -917511, 536870912, 0, -917510, 536870912, 0, -917509, 536870912, 0, -917508, 536870912, 0, -917507, 536870912, 0, -917506, 536870912, 0, -917505, 536870912, 0, -983040, 536870912, 0, -983039, 536870912, 0, -983038, 536870912, 0, -983037, 536870912, 0, -983036, 536870912, 0, -983035, 536870912, 0, -983034, 536870912, 0, -983033, 536870912, 0, -983032, 536870912, 0, -983031, 536870912, 0, -983030, 536870912, 0, -983029, 536870912, 0, -983028, 536870912, 0, -983027, 536870912, 0, -983026, 536870912, 0, -983025, 536870912, 0, -983024, 536870912, 0, -983023, 536870912, 0, -851979, 536870912, 0, -851978, 536870912, 0, -851977, 536870912, 0, -851976, 536870912, 0, -851975, 536870912, 0, -851974, 536870912, 0, -851973, 536870912, 0, -851972, 536870912, 0, -851971, 536870912, 0, -851970, 536870912, 0, -851969, 536870912, 0, -917504, 536870912, 0, -917503, 536870912, 0, -917502, 536870912, 0, -917501, 536870912, 0, -917500, 536870912, 0, -917499, 536870912, 0, -917498, 536870912, 0, -917497, 536870912, 0, -917496, 536870912, 0, -917495, 536870912, 0, -917494, 536870912, 0, -917493, 536870912, 0, -917492, 536870912, 0, -917491, 536870912, 0, -917490, 536870912, 0, -917489, 536870912, 0, -917488, 536870912, 0, -917487, 536870912, 0, -786443, 536870912, 0, -786442, 536870912, 0, -786441, 536870912, 0, -786440, 536870912, 0, -786439, 536870912, 0, -786438, 536870912, 0, -786437, 536870912, 0, -786436, 536870912, 0, -786435, 536870912, 0, -786434, 536870912, 0, -786433, 536870912, 0, -851968, 536870912, 0, -851967, 536870912, 0, -851966, 536870912, 0, -851965, 536870912, 0, -851964, 536870912, 0, -851963, 536870912, 0, -851962, 536870912, 0, -851961, 536870912, 0, -851960, 536870912, 0, -851959, 536870912, 0, -851958, 536870912, 0, -851957, 536870912, 0, -851956, 536870912, 0, -851955, 536870912, 0, -851954, 536870912, 0, -851953, 536870912, 0, -851952, 536870912, 0, -851951, 536870912, 0, -720907, 536870912, 0, -720906, 536870912, 0, -720905, 536870912, 0, -720904, 536870912, 0, -720903, 536870912, 0, -720902, 536870912, 0, -720901, 536870912, 0, -720900, 536870912, 0, -720899, 536870912, 0, -720898, 536870912, 0, -720897, 536870912, 0, -786432, 536870912, 0, -786431, 536870912, 0, -786430, 536870912, 0, -786429, 536870912, 0, -786428, 536870912, 0, -786427, 536870912, 0, -786426, 536870912, 0, -786425, 536870912, 0, -786424, 536870912, 0, -786423, 536870912, 0, -786422, 536870912, 0, -786421, 536870912, 0, -786420, 536870912, 0, -786419, 536870912, 0, -786418, 536870912, 0, -786417, 536870912, 0, -786416, 536870912, 0, -786415, 536870912, 0, -655371, 536870912, 0, -655370, 536870912, 0, -655369, 536870912, 0, -655368, 536870912, 0, -655367, 536870912, 0, -655366, 536870912, 0, -655365, 536870912, 0, -655364, 536870912, 0, -655363, 536870912, 0, -655362, 536870912, 0, -655361, 536870912, 0, -720896, 536870912, 0, -720895, 536870912, 0, -720894, 536870912, 0, -720893, 536870912, 0, -720892, 536870912, 0, -720891, 536870912, 0, -720890, 536870912, 0, -720889, 536870912, 0, -720888, 536870912, 0, -720887, 536870912, 0, -720886, 536870912, 0, -720885, 536870912, 0, -720884, 536870912, 0, -720883, 536870912, 0, -720882, 536870912, 0, -720881, 536870912, 0, -720880, 536870912, 0, -720879, 536870912, 0, -589835, 536870912, 0, -589834, 536870912, 0, -589833, 536870912, 0, -589832, 536870912, 0, -589831, 536870912, 0, -589830, 536870912, 0, -589829, 536870912, 0, -589828, 536870912, 0, -589827, 536870912, 0, -589826, 536870912, 0, -589825, 536870912, 0, -655360, 536870912, 0, -655348, 536870912, 0, -655347, 536870912, 0, -655346, 536870912, 0, -655345, 536870912, 0, -655344, 536870912, 0, -655343, 536870912, 0, -524299, 536870912, 0, -524298, 536870912, 0, -524297, 536870912, 0, -524296, 536870912, 0, -524295, 536870912, 0, -524294, 536870912, 0, -524293, 536870912, 0, -524292, 536870912, 0, -524291, 536870912, 0, -524290, 536870912, 0, -524289, 536870912, 0, -589824, 536870912, 0, -589823, 2, 2, -458763, 536870912, 0, -458762, 536870912, 0, -458761, 536870912, 0, -458760, 536870912, 0, -458759, 536870912, 0, -458758, 536870912, 0 ) +tile_color = Color( 0.760784, 0.654902, 0.509804, 1 ) -[node name="GameCamera" parent="." instance=ExtResource( 6 )] +[node name="CamBounds" type="Node2D" parent="."] position = Vector2( 28, -40 ) +script = ExtResource( 6 ) [node name="Actors" type="Node2D" parent="."] @@ -186,5 +193,3 @@ position = Vector2( -35, -24 ) [node name="Note" parent="Actors" instance=ExtResource( 10 )] position = Vector2( 115, -93 ) - -[editable path="GameCamera"] diff --git a/src/map/4-5.tscn b/src/map/4-5.tscn index eb319fc..8bb8f39 100644 --- a/src/map/4-5.tscn +++ b/src/map/4-5.tscn @@ -1,6 +1,6 @@ [gd_scene load_steps=18 format=2] -[ext_resource path="res://src/stage/GameCamera.tscn" type="PackedScene" id=1] +[ext_resource path="res://src/stage/CamBounds.gd" type="Script" id=1] [ext_resource path="res://src/stage/DetailTileMap.tscn" type="PackedScene" id=2] [ext_resource path="res://src/stage/SolidTileMap.tscn" type="PackedScene" id=3] [ext_resource path="res://src/stage/ObscureMap.tscn" type="PackedScene" id=4] @@ -175,8 +175,9 @@ tile_set = SubResource( 3 ) tile_data = PoolIntArray( -917519, 536870912, 0, -917518, 536870912, 0, -917517, 536870912, 0, -917516, 536870912, 0, -917515, 536870912, 0, -917514, 536870912, 0, -917513, 536870912, 0, -917512, 536870912, 0, -917511, 536870912, 0, -917510, 536870912, 0, -917509, 536870912, 0, -917508, 536870912, 0, -917507, 536870912, 0, -917506, 536870912, 0, -917505, 536870912, 0, -983040, 536870912, 0, -983039, 536870912, 0, -983038, 536870912, 0, -983037, 536870912, 0, -983036, 536870912, 0, -983035, 536870912, 0, -983034, 536870912, 0, -983033, 536870912, 0, -983032, 536870912, 0, -983031, 536870912, 0, -983030, 536870912, 0, -983029, 536870912, 0, -983028, 536870912, 0, -851983, 536870912, 0, -851982, 536870912, 0, -851981, 536870912, 0, -851980, 536870912, 0, -851979, 536870912, 0, -851978, 536870912, 0, -851977, 536870912, 0, -851976, 536870912, 0, -851975, 536870912, 0, -851974, 536870912, 0, -851973, 536870912, 0, -851972, 536870912, 0, -851971, 536870912, 0, -851970, 536870912, 0, -851969, 536870912, 0, -917504, 536870912, 0, -917503, 536870912, 0, -917502, 536870912, 0, -917501, 536870912, 0, -917500, 536870912, 0, -917499, 536870912, 0, -917498, 536870912, 0, -917497, 536870912, 0, -917496, 536870912, 0, -917495, 536870912, 0, -917494, 536870912, 0, -917493, 536870912, 0, -917492, 536870912, 0, -786447, 536870912, 0, -786446, 536870912, 0, -786445, 536870912, 0, -786444, 536870912, 0, -786443, 536870912, 0, -786442, 536870912, 0, -786441, 536870912, 0, -786440, 536870912, 0, -786439, 536870912, 0, -786438, 536870912, 0, -786437, 536870912, 0, -786436, 536870912, 0, -786435, 536870912, 0, -786434, 536870912, 0, -786433, 536870912, 0, -851968, 536870912, 0, -851967, 536870912, 0, -851966, 536870912, 0, -851965, 536870912, 0, -851964, 536870912, 0, -851963, 536870912, 0, -851962, 536870912, 0, -851961, 536870912, 0, -851960, 536870912, 0, -851959, 536870912, 0, -851958, 536870912, 0, -851957, 536870912, 0, -851956, 536870912, 0, -720911, 536870912, 0, -720910, 536870912, 0, -720909, 536870912, 0, -720908, 536870912, 0, -720907, 536870912, 0, -720906, 536870912, 0, -720905, 536870912, 0, -720904, 536870912, 0, -720903, 536870912, 0, -720902, 536870912, 0, -720901, 536870912, 0, -720900, 536870912, 0, -720899, 536870912, 0, -720898, 536870912, 0, -720897, 536870912, 0, -786432, 536870912, 0, -786431, 536870912, 0, -786430, 536870912, 0, -786429, 536870912, 0, -786428, 536870912, 0, -786427, 536870912, 0, -786426, 536870912, 0, -786425, 536870912, 0, -786424, 536870912, 0, -786423, 536870912, 0, -786422, 536870912, 0, -786421, 536870912, 0, -786420, 536870912, 0, -655375, 536870912, 0, -655374, 536870912, 0, -655373, 536870912, 0, -655372, 536870912, 0, -655371, 536870912, 0, -655370, 536870912, 0, -655369, 536870912, 0, -655368, 536870912, 0, -655367, 536870912, 0, -655366, 536870912, 0, -655365, 536870912, 0, -655364, 536870912, 0, -655363, 536870912, 0, -655362, 536870912, 0, -655361, 536870912, 0, -720896, 536870912, 0, -720895, 536870912, 0, -720894, 536870912, 0, -720893, 536870912, 0, -720892, 536870912, 0, -720891, 536870912, 0, -720890, 536870912, 0, -720889, 536870912, 0, -720888, 536870912, 0, -720887, 536870912, 0, -720886, 536870912, 0, -720885, 536870912, 0, -720884, 536870912, 0, -589839, 536870912, 0, -589838, 536870912, 0, -589837, 536870912, 0, -589836, 536870912, 0, -589835, 536870912, 0, -589834, 536870912, 0, -589833, 536870912, 0, -589832, 536870912, 0, -655354, 2, 3, -655353, 536870914, 3, -524303, 536870912, 0, -524302, 536870912, 0, -524301, 536870912, 0, -524300, 536870912, 0, -524299, 536870912, 0, -524298, 536870912, 0, -524297, 536870912, 0, -458767, 536870912, 0, -458766, 536870912, 0, -458765, 536870912, 0, -458764, 536870912, 0, -458763, 536870912, 0, -458762, 536870912, 0, -393231, 536870912, 0, -393230, 536870912, 0, -393229, 536870912, 0, -393228, 536870912, 0, -393227, 536870912, 0 ) tile_color = Color( 0.760784, 0.654902, 0.509804, 1 ) -[node name="GameCamera" parent="." instance=ExtResource( 1 )] +[node name="CamBounds" type="Node2D" parent="."] position = Vector2( -8, -28 ) +script = ExtResource( 1 ) [node name="Actors" type="Node2D" parent="."] @@ -191,5 +192,3 @@ position = Vector2( -76, 8 ) [node name="Note" parent="Actors" instance=ExtResource( 9 )] position = Vector2( -109, -61 ) - -[editable path="GameCamera"] diff --git a/src/map/4-6.tscn b/src/map/4-6.tscn index 2e3d176..c529a3b 100644 --- a/src/map/4-6.tscn +++ b/src/map/4-6.tscn @@ -1,6 +1,6 @@ [gd_scene load_steps=18 format=2] -[ext_resource path="res://src/stage/GameCamera.tscn" type="PackedScene" id=1] +[ext_resource path="res://src/stage/CamBounds.gd" type="Script" id=1] [ext_resource path="res://src/stage/DetailTileMap.tscn" type="PackedScene" id=2] [ext_resource path="res://src/stage/SolidTileMap.tscn" type="PackedScene" id=3] [ext_resource path="res://src/stage/ObscureMap.tscn" type="PackedScene" id=4] @@ -176,8 +176,9 @@ tile_set = SubResource( 3 ) tile_data = PoolIntArray( -983048, 536870912, 0, -983047, 536870912, 0, -983046, 536870912, 0, -983045, 536870912, 0, -983044, 536870912, 0, -983043, 536870912, 0, -983042, 536870912, 0, -983041, 536870912, 0, -1048576, 536870912, 0, -1048575, 536870912, 0, -1048574, 536870912, 0, -1048573, 536870912, 0, -1048572, 536870912, 0, -1048571, 536870912, 0, -1048570, 536870912, 0, -1048569, 536870912, 0, -1048568, 536870912, 0, -1048567, 536870912, 0, -1048566, 536870912, 0, -1048565, 536870912, 0, -1048564, 536870912, 0, -1048563, 536870912, 0, -1048562, 536870912, 0, -1048561, 536870912, 0, -1048560, 536870912, 0, -1048559, 536870912, 0, -1048558, 536870912, 0, -1048557, 536870912, 0, -917512, 536870912, 0, -917511, 536870912, 0, -917510, 536870912, 0, -917509, 536870912, 0, -917508, 536870912, 0, -917507, 536870912, 0, -917506, 536870912, 0, -917505, 536870912, 0, -983040, 536870912, 0, -983039, 536870912, 0, -983038, 536870912, 0, -983037, 536870912, 0, -983036, 536870912, 0, -983035, 536870912, 0, -983034, 536870912, 0, -983033, 536870912, 0, -983032, 536870912, 0, -983031, 536870912, 0, -983030, 536870912, 0, -983029, 536870912, 0, -983028, 536870912, 0, -983027, 536870912, 0, -983026, 536870912, 0, -983025, 536870912, 0, -983024, 536870912, 0, -983023, 536870912, 0, -983022, 536870912, 0, -983021, 536870912, 0, -851976, 536870912, 0, -851975, 536870912, 0, -851974, 536870912, 0, -851973, 536870912, 0, -851972, 536870912, 0, -851971, 536870912, 0, -851970, 536870912, 0, -851969, 536870912, 0, -917504, 536870912, 0, -917503, 536870912, 0, -917502, 536870912, 0, -917501, 536870912, 0, -917500, 536870912, 0, -917499, 536870912, 0, -917498, 536870912, 0, -917497, 536870912, 0, -917496, 536870912, 0, -917495, 536870912, 0, -917494, 536870912, 0, -917493, 536870912, 0, -917492, 536870912, 0, -917491, 536870912, 0, -917490, 536870912, 0, -917489, 536870912, 0, -917488, 536870912, 0, -917487, 536870912, 0, -917486, 536870912, 0, -917485, 536870912, 0, -786440, 536870912, 0, -786439, 536870912, 0, -786438, 536870912, 0, -786437, 536870912, 0, -786436, 536870912, 0, -786435, 536870912, 0, -786434, 536870912, 0, -786433, 536870912, 0, -851968, 536870912, 0, -851967, 536870912, 0, -851966, 536870912, 0, -851965, 536870912, 0, -851964, 536870912, 0, -851963, 536870912, 0, -851962, 536870912, 0, -851961, 536870912, 0, -851960, 536870912, 0, -851959, 536870912, 0, -851958, 536870912, 0, -851957, 536870912, 0, -851956, 536870912, 0, -851955, 536870912, 0, -851954, 536870912, 0, -851953, 536870912, 0, -851952, 536870912, 0, -851951, 536870912, 0, -851950, 536870912, 0, -851949, 536870912, 0, -720904, 536870912, 0, -720903, 536870912, 0, -720902, 536870912, 0, -720901, 536870912, 0, -720900, 536870912, 0, -720899, 536870912, 0, -720898, 536870912, 0, -720897, 536870912, 0, -786432, 536870912, 0, -786431, 536870912, 0, -786430, 536870912, 0, -786429, 536870912, 0, -786428, 536870912, 0, -786427, 536870912, 0, -786426, 536870912, 0, -786425, 536870912, 0, -786424, 536870912, 0, -786423, 536870912, 0, -786422, 536870912, 0, -786421, 536870912, 0, -786420, 536870912, 0, -786419, 536870912, 0, -786418, 536870912, 0, -786417, 536870912, 0, -786416, 536870912, 0, -786415, 536870912, 0, -786414, 536870912, 0, -786413, 536870912, 0, -655368, 536870912, 0, -655367, 536870912, 0, -655366, 536870912, 0, -655365, 536870912, 0, -655364, 536870912, 0, -655363, 536870912, 0, -655362, 536870912, 0, -655361, 536870912, 0, -720883, 536870912, 0, -720882, 536870912, 0, -720881, 536870912, 0, -720880, 536870912, 0, -720879, 536870912, 0, -720878, 536870912, 0, -720877, 536870912, 0, -589832, 536870912, 0, -589831, 536870912, 0, -589830, 536870912, 0, -589829, 536870912, 0, -589828, 536870912, 0, -589827, 536870912, 0, -589826, 536870912, 0, -655346, 536870912, 0, -655345, 536870912, 0, -655344, 536870912, 0, -655343, 536870912, 0, -655342, 536870912, 0, -655341, 536870912, 0, -524296, 536870912, 0, -524295, 536870912, 0, -524294, 536870912, 0, -524293, 536870912, 0, -524292, 536870912, 0, -524291, 536870912, 0, -524290, 536870912, 0, -589810, 536870912, 0, -589809, 536870912, 0, -589808, 536870912, 0, -589807, 536870912, 0, -589806, 536870912, 0, -589805, 536870912, 0, -458760, 536870912, 0, -458759, 536870912, 0, -458755, 536870914, 2, -458754, 2, 2, -524274, 536870912, 0, -524273, 536870912, 0, -524272, 536870912, 0, -524271, 536870912, 0, -524270, 536870912, 0, -524269, 536870912, 0, -393224, 536870912, 0, -393223, 536870912, 0, -458738, 536870912, 0, -458737, 536870912, 0, -458736, 536870912, 0, -458735, 536870912, 0, -458734, 536870912, 0, -458733, 536870912, 0, -327688, 536870912, 0, -327687, 536870912, 0, -393199, 536870912, 0, -393198, 536870912, 0, -393197, 536870912, 0, -327663, 536870912, 0, -327662, 536870912, 0, -327661, 536870912, 0 ) tile_color = Color( 0.760784, 0.654902, 0.509804, 1 ) -[node name="GameCamera" parent="." instance=ExtResource( 1 )] +[node name="CamBounds" type="Node2D" parent="."] position = Vector2( 48, -44 ) +script = ExtResource( 1 ) [node name="Actors" type="Node2D" parent="."] @@ -192,5 +193,3 @@ position = Vector2( 117, -16 ) [node name="Note" parent="Actors" instance=ExtResource( 9 )] position = Vector2( 147, -61 ) - -[editable path="GameCamera"] diff --git a/src/map/4-7.tscn b/src/map/4-7.tscn index 8eaefbc..f943fb3 100644 --- a/src/map/4-7.tscn +++ b/src/map/4-7.tscn @@ -1,6 +1,6 @@ [gd_scene load_steps=18 format=2] -[ext_resource path="res://src/stage/GameCamera.tscn" type="PackedScene" id=1] +[ext_resource path="res://src/stage/CamBounds.gd" type="Script" id=1] [ext_resource path="res://src/actor/Box.tscn" type="PackedScene" id=2] [ext_resource path="res://src/actor/Note.tscn" type="PackedScene" id=3] [ext_resource path="res://src/actor/Exit.tscn" type="PackedScene" id=4] @@ -176,8 +176,9 @@ tile_set = SubResource( 3 ) tile_data = PoolIntArray( -917527, 0, 0, -917526, 0, 0, -917525, 0, 0, -917524, 0, 0, -917523, 0, 0, -917522, 0, 0, -917521, 0, 0, -917520, 0, 0, -917519, 0, 0, -917518, 0, 0, -917517, 0, 0, -917516, 0, 0, -917515, 0, 0, -917514, 0, 0, -917513, 0, 0, -917512, 0, 0, -917511, 0, 0, -917510, 0, 0, -917509, 0, 0, -917508, 0, 0, -917507, 0, 0, -917506, 0, 0, -917505, 0, 0, -983040, 0, 0, -983039, 0, 0, -983038, 0, 0, -983037, 0, 0, -983036, 0, 0, -983035, 0, 0, -983034, 0, 0, -983033, 0, 0, -983032, 0, 0, -983031, 0, 0, -983030, 0, 0, -983029, 0, 0, -983028, 0, 0, -983027, 0, 0, -983026, 0, 0, -983025, 0, 0, -983024, 0, 0, -983023, 0, 0, -983022, 0, 0, -851991, 0, 0, -851990, 0, 0, -851989, 0, 0, -851988, 0, 0, -851987, 0, 0, -851986, 0, 0, -851985, 0, 0, -851984, 0, 0, -851983, 0, 0, -851982, 0, 0, -851981, 0, 0, -851980, 0, 0, -851979, 0, 0, -851978, 0, 0, -851977, 0, 0, -851976, 0, 0, -851975, 0, 0, -851974, 0, 0, -851973, 0, 0, -851972, 0, 0, -851971, 0, 0, -851970, 0, 0, -851969, 0, 0, -917504, 0, 0, -917503, 0, 0, -917502, 0, 0, -917501, 0, 0, -917500, 0, 0, -917499, 0, 0, -917498, 0, 0, -917497, 0, 0, -917496, 0, 0, -917495, 0, 0, -917494, 0, 0, -917493, 0, 0, -917492, 0, 0, -917491, 0, 0, -917490, 0, 0, -917489, 0, 0, -917488, 0, 0, -917487, 0, 0, -917486, 0, 0, -786455, 536870912, 0, -786454, 536870912, 0, -786453, 536870912, 0, -786452, 536870912, 0, -786451, 536870912, 0, -786450, 536870912, 0, -786449, 536870912, 0, -786448, 536870912, 0, -786447, 536870912, 0, -786446, 536870912, 0, -786445, 536870912, 0, -786444, 536870912, 0, -786443, 536870912, 0, -786442, 536870912, 0, -786441, 536870912, 0, -786440, 536870912, 0, -786439, 536870912, 0, -786438, 536870912, 0, -786437, 536870912, 0, -786436, 536870912, 0, -786435, 536870912, 0, -786434, 536870912, 0, -786433, 536870912, 0, -851968, 536870912, 0, -851967, 536870912, 0, -851966, 536870912, 0, -851965, 536870912, 0, -851964, 536870912, 0, -851963, 536870912, 0, -851962, 536870912, 0, -851961, 536870912, 0, -851960, 536870912, 0, -851959, 536870912, 0, -851958, 536870912, 0, -851957, 536870912, 0, -851956, 536870912, 0, -851955, 536870912, 0, -851954, 536870912, 0, -851953, 536870912, 0, -851952, 536870912, 0, -851951, 536870912, 0, -851950, 536870912, 0, -720919, 536870912, 0, -720918, 536870912, 0, -720917, 536870912, 0, -720916, 536870912, 0, -720915, 536870912, 0, -720914, 536870912, 0, -720913, 536870912, 0, -720912, 536870912, 0, -720911, 536870912, 0, -720910, 536870912, 0, -720909, 536870912, 0, -720908, 536870912, 0, -720907, 536870912, 0, -720906, 536870912, 0, -720905, 536870912, 0, -720904, 536870912, 0, -720903, 536870912, 0, -720902, 536870912, 0, -720901, 536870912, 0, -720900, 536870912, 0, -720899, 536870912, 0, -720898, 536870912, 0, -720897, 536870912, 0, -786432, 536870912, 0, -786431, 536870912, 0, -786430, 536870912, 0, -786429, 536870912, 0, -786428, 536870912, 0, -786427, 536870912, 0, -786426, 536870912, 0, -786425, 536870912, 0, -786424, 536870912, 0, -786423, 536870912, 0, -786422, 536870912, 0, -786421, 536870912, 0, -786420, 536870912, 0, -786419, 536870912, 0, -786418, 536870912, 0, -786417, 536870912, 0, -786416, 536870912, 0, -786415, 0, 0, -786414, 0, 0, -655383, 536870912, 0, -655382, 536870912, 0, -655381, 536870912, 0, -655380, 536870912, 0, -655379, 536870912, 0, -655378, 536870912, 0, -655377, 536870912, 0, -655376, 536870912, 0, -655375, 536870912, 0, -655374, 536870912, 0, -655373, 536870912, 0, -655372, 536870912, 0, -655371, 536870912, 0, -655370, 536870912, 0, -655369, 536870912, 0, -655368, 536870912, 0, -655367, 536870912, 0, -655366, 536870912, 0, -655365, 536870912, 0, -655364, 536870912, 0, -655363, 536870912, 0, -655362, 536870912, 0, -655361, 536870912, 0, -720896, 536870912, 0, -720895, 536870912, 0, -720894, 536870912, 0, -720893, 536870912, 0, -720892, 536870912, 0, -720891, 536870912, 0, -720890, 536870912, 0, -720889, 536870912, 0, -720888, 536870912, 0, -720887, 536870912, 0, -720886, 536870912, 0, -720885, 536870912, 0, -720884, 536870912, 0, -720883, 536870912, 0, -720882, 536870912, 0, -720881, 536870912, 0, -720880, 536870912, 0, -720879, 0, 0, -720878, 0, 0, -589847, 536870912, 0, -589846, 536870912, 0, -589845, 536870912, 0, -589844, 536870912, 0, -589843, 536870912, 0, -589842, 536870912, 0, -589841, 536870912, 0, -589840, 536870912, 0, -589839, 536870912, 0, -589838, 536870912, 0, -589837, 536870912, 0, -589836, 536870912, 0, -655344, 536870912, 0, -655343, 0, 0, -655342, 0, 0, -524311, 0, 0, -524310, 0, 0, -524308, 2, 3, -524307, 536870914, 2, -589807, 0, 0, -589806, 0, 0, -458775, 0, 0, -458774, 0, 0, -524271, 0, 0, -524270, 0, 0, -458735, 0, 0, -458734, 0, 0 ) tile_color = Color( 0.760784, 0.654902, 0.509804, 1 ) -[node name="GameCamera" parent="." instance=ExtResource( 1 )] +[node name="CamBounds" type="Node2D" parent="."] position = Vector2( 40, -36 ) +script = ExtResource( 1 ) bounds = Rect2( 112, 0, 0, 0 ) [node name="Actors" type="Node2D" parent="."] @@ -193,5 +194,3 @@ position = Vector2( 117, -16 ) [node name="Note" parent="Actors" instance=ExtResource( 3 )] position = Vector2( 139, -77 ) - -[editable path="GameCamera"] diff --git a/src/map/4-8.tscn b/src/map/4-8.tscn index 5047648..61cd227 100644 --- a/src/map/4-8.tscn +++ b/src/map/4-8.tscn @@ -1,6 +1,6 @@ [gd_scene load_steps=18 format=2] -[ext_resource path="res://src/stage/GameCamera.tscn" type="PackedScene" id=1] +[ext_resource path="res://src/stage/CamBounds.gd" type="Script" id=1] [ext_resource path="res://src/actor/Box.tscn" type="PackedScene" id=2] [ext_resource path="res://src/actor/Note.tscn" type="PackedScene" id=3] [ext_resource path="res://src/actor/Exit.tscn" type="PackedScene" id=4] @@ -176,8 +176,9 @@ tile_set = SubResource( 3 ) tile_data = PoolIntArray( -393198, 536870912, 0, -327662, 536870912, 0, -262130, 536870914, 3, -262129, 536870912, 0, -262128, 536870912, 0, -262127, 536870912, 0, -262126, 536870912, 0, -196593, 536870912, 0, -196592, 536870912, 0, -196591, 536870912, 0, -196590, 536870912, 0, -131057, 536870912, 0, -131056, 536870912, 0, -131055, 536870912, 0, -131054, 536870912, 0, -65521, 536870912, 0, -65520, 536870912, 0, -65519, 536870912, 0, -65518, 536870912, 0, 13, -536870912, 0, 14, -536870912, 0, 15, -536870912, 0, 16, -536870912, 0, 17, -536870912, 0, 18, -536870912, 0 ) tile_color = Color( 0.760784, 0.654902, 0.509804, 1 ) -[node name="GameCamera" parent="." instance=ExtResource( 1 )] +[node name="CamBounds" type="Node2D" parent="."] position = Vector2( 40, -44 ) +script = ExtResource( 1 ) [node name="Actors" type="Node2D" parent="."] @@ -192,5 +193,3 @@ position = Vector2( -37, -16 ) [node name="Note" parent="Actors" instance=ExtResource( 3 )] position = Vector2( 139, -29 ) - -[editable path="GameCamera"] diff --git a/src/map/5-1.tscn b/src/map/5-1.tscn index c2774ce..2fac916 100644 --- a/src/map/5-1.tscn +++ b/src/map/5-1.tscn @@ -7,7 +7,7 @@ [ext_resource path="res://src/actor/Player.tscn" type="PackedScene" id=5] [ext_resource path="res://src/actor/Exit.tscn" type="PackedScene" id=6] [ext_resource path="res://src/actor/Box.tscn" type="PackedScene" id=7] -[ext_resource path="res://src/stage/GameCamera.tscn" type="PackedScene" id=8] +[ext_resource path="res://src/stage/CamBounds.gd" type="Script" id=8] [ext_resource path="res://src/actor/Note.tscn" type="PackedScene" id=9] [ext_resource path="res://src/stage/Stage.gd" type="Script" id=10] [ext_resource path="res://media/image/crate_tiles.png" type="Texture" id=11] @@ -56,7 +56,7 @@ 4/name = "bricks.png 4" 4/texture = ExtResource( 14 ) 4/tex_offset = Vector2( 0, 0 ) -4/modulate = Color( 0.0431373, 0.129412, 0.0470588, 1 ) +4/modulate = Color( 0.12549, 0.188235, 0.129412, 1 ) 4/region = Rect2( 0, 0, 40, 8 ) 4/tile_mode = 2 4/autotile/icon_coordinate = Vector2( 0, 0 ) @@ -151,7 +151,7 @@ script = ExtResource( 10 ) palette = 4 color_solid = Color( 0.4, 0.741176, 0.415686, 1 ) -color_back = Color( 0.0431373, 0.129412, 0.0470588, 1 ) +color_back = Color( 0.12549, 0.188235, 0.129412, 1 ) color_grass = Color( 0.0392157, 0.411765, 0.941176, 1 ) color_wood = Color( 0.658824, 0.176471, 0.176471, 1 ) @@ -167,7 +167,7 @@ tile_data = PoolIntArray( -65536, 0, 0, -65535, 0, 0, -65534, 0, 0, -65533, 0, 0 z_index = -11 tile_set = SubResource( 2 ) tile_data = PoolIntArray( -851980, -1073741819, 0, -851979, -1073741819, 0, -851978, 5, 0, -851977, 5, 0, -851975, 4, 1, -851974, 4, 0, -851973, 4, 1, -851969, 1610612742, 0, -917503, 4, 1, -917502, 4, 1, -917501, 4, 3, -917500, 1610612742, 0, -917496, 1610612742, 0, -917492, 1610612742, 0, -917490, 536870917, 0, -917489, 536870917, 0, -917488, 536870917, 0, -917485, 536870916, 3, -917484, 4, 0, -917483, 4, 1, -917482, 4, 3, -786444, -1610612731, 0, -786443, -536870907, 2, -786442, 1073741829, 2, -786441, 5, 0, -786439, 4, 2, -786438, 4, 1, -786437, 4, 1, -786436, 4, 3, -786433, 1610612742, 0, -851967, 4, 2, -851966, 4, 0, -851965, 4, 3, -851964, 1610612742, 0, -851960, 6, 0, -851959, -1610612731, 2, -851956, 6, 0, -851954, 1073741829, 2, -851953, 536870917, 0, -851952, 1610612741, 2, -851950, 536870916, 3, -851949, 4, 0, -851948, 4, 1, -851947, 536870916, 0, -851946, 4, 3, -720908, -1610612731, 0, -720907, 1073741829, 2, -720906, 1610612741, 0, -720905, -536870907, 2, -720902, 4, 2, -720901, 536870916, 0, -720900, 4, 3, -720898, -2147483643, 2, -720897, 1610612742, 0, -786431, 536870916, 3, -786430, 4, 1, -786429, 536870916, 2, -786428, 1610612742, 0, -786424, 6, 0, -786420, 6, 0, -786416, 536870916, 3, -786415, 4, 0, -786414, 4, 0, -786413, 4, 1, -786412, 536870916, 0, -786411, 536870916, 2, -655366, 4, 2, -655365, 4, 1, -655364, 4, 0, -655363, 536870916, 2, -655361, 1610612742, 0, -720896, 536870916, 3, -720878, 4, 1, -720877, 536870916, 0, -720876, 536870916, 2, -720871, -2147483643, 2, -720870, 5, 0, -655358, 4, 1, -655357, 536870916, 2, -655356, 1610612742, 0, -655352, 6, 0, -655348, 6, 0, -655345, 536870916, 3, -655344, 4, 1, -655342, 4, 1, -655341, 536870916, 2, -655335, -1073741819, 0, -655334, -1073741819, 0, -524294, 536870916, 3, -524293, 536870916, 0, -524292, 4, 1, -524291, 536870916, 2, -524289, 1610612742, 0, -589824, 536870916, 3, -589823, 4, 1, -589822, 536870916, 0, -589821, 4, 3, -589820, 1073741829, 2, -589816, 6, 0, -589812, 5, 2, -589811, -1610612731, 2, -589809, 4, 2, -589808, 4, 0, -589799, -1073741819, 2, -589798, 5, 0, -458764, 536870916, 3, -458763, 536870916, 0, -458762, 4, 3, -458757, 4, 2, -458756, 4, 1, -458755, 4, 3, -458753, 1610612742, 0, -524288, 4, 2, -524287, 4, 0, -524286, 4, 1, -524285, 4, 0, -524284, 4, 3, -524281, -2147483643, 2, -524280, 5, 0, -524279, 536870917, 2, -524276, -1073741819, 2, -524275, 1610612741, 2, -524273, 536870916, 3, -524272, 4, 1, -524271, 536870916, 0, -524270, 4, 1, -524269, 536870916, 2, -393228, 4, 0, -393227, 536870916, 0, -393226, 4, 1, -393224, 4, 3, -393222, 536870916, 3, -393221, 4, 0, -393220, 4, 3, -393217, 1073741829, 0, -458751, 536870916, 3, -458750, 4, 1, -458749, 4, 1, -458748, 536870916, 0, -458747, 536870916, 2, -458745, -2147483643, 0, -458744, 536870917, 0, -458743, -1610612731, 0, -458739, 6, 0, -458736, 4, 2, -458735, 4, 1, -458734, 536870916, 0, -458733, 4, 3, -327692, 4, 2, -327691, 4, 1, -327690, 4, 0, -327688, 536870916, 0, -327687, 536870916, 2, -327686, 4, 2, -327685, 4, 1, -327684, 536870916, 0, -327683, 536870916, 2, -393215, 4, 2, -393214, 4, 0, -393213, 4, 1, -393212, 4, 1, -393211, 4, 3, -393209, 1073741829, 2, -393208, 5, 0, -393207, -536870907, 2, -393203, 5, 2, -393202, 5, 0, -393201, -1610612731, 2, -393200, 536870916, 3, -393199, 4, 0, -393198, 4, 1, -262154, 4, 2, -262152, 4, 0, -262151, 4, 1, -262150, 4, 0, -262149, 4, 1, -262148, 4, 1, -262147, 536870916, 0, -262146, 4, 3, -327678, 4, 2, -327677, 4, 1, -327676, 536870916, 0, -327675, 536870916, 2, -327672, 6, 0, -327667, -1073741819, 0, -327666, -536870907, 0, -327665, -1610612731, 0, -327663, 4, 2, -327662, 4, 1, -327660, 4, 1, -327659, 4, 3, -327655, -2147483643, 2, -327654, 5, 0, -196615, 4, 2, -196614, 4, 1, -196613, 4, 1, -196612, 4, 0, -196611, 4, 1, -196610, 536870916, 2, -262143, 5, 2, -262142, 4, 2, -262141, 4, 0, -262140, 536870916, 2, -262136, 6, 0, -262134, -1073741819, 2, -262133, -1610612730, 0, -262132, -1610612730, 0, -262131, -1073741819, 2, -262130, 1610612741, 0, -262129, 1610612741, 2, -262127, 4, 2, -262126, 536870916, 0, -262124, 536870916, 0, -262123, 4, 1, -262122, 4, 0, -262121, 4, 3, -262119, -1073741819, 2, -262118, 5, 0, -131078, 4, 2, -131077, 536870916, 0, -131076, 4, 1, -131075, 536870916, 2, -196607, 6, 0, -196603, 5, 0, -196601, -1073741819, 2, -196600, 6, 0, -196597, 1610612742, 0, -196590, 4, 2, -196588, 4, 1, -196587, 536870916, 0, -196586, 4, 1, -196585, 4, 1, -196584, 4, 3, -65542, 536870916, 3, -65541, 4, 1, -65540, 536870916, 0, -65539, 536870916, 2, -131071, 6, 0, -131069, 536870917, 2, -131067, 6, 0, -131064, 6, 0, -131061, 1610612742, 0, -131058, 5, 2, -131051, 4, 2, -131050, 4, 0, -131049, 4, 1, -131048, 536870916, 0, -131047, 536870916, 2, -65535, 6, 0, -65533, 6, 0, -65531, 6, 0, -65528, 6, 0, -65525, 1610612742, 0, -65522, 1610612742, 0, -65514, 4, 2, -65513, 4, 0, -65512, 4, 1, -65511, 4, 3, 65530, 4, 2, 65531, 4, 1, 65532, 4, 0, 65533, 536870916, 2, 23, 4, 2, 24, 536870916, 0, 25, 4, 1, 26, 4, 3, 131060, 5, 0, 131061, 5, 0, 131062, 536870917, 2, 131066, 536870916, 3, 131067, 536870916, 0, 131068, 4, 3, 65537, 6, 0, 65539, 6, 0, 65541, 6, 0, 65544, 6, 0, 65545, -536870907, 2, 65547, 1610612742, 0, 65550, 6, 0, 65557, 536870917, 2, 65560, 4, 2, 65561, 536870916, 0, 65562, 536870916, 2, 196597, 1073741829, 2, 196598, -1610612731, 0, 196602, 536870916, 3, 196603, 4, 1, 196604, 536870916, 2, 131073, 6, 0, 131074, -1610612730, 0, 131075, -1610612730, 0, 131076, -1610612730, 0, 131077, 6, 0, 131080, 6, 0, 131083, 1610612742, 0, 131084, -1610612730, 0, 131085, -1610612730, 0, 131086, -1610612730, 0, 131088, 5, 2, 131089, 5, 0, 131090, 536870917, 2, 131093, 6, 0, 262134, -1610612731, 0, 262138, 536870916, 3, 262139, 4, 1, 262140, 4, 0, 262141, 4, 3, 196611, 6, 0, 196616, 6, 0, 196621, 1610612742, 0, 196624, -1610612731, 0, 196625, -1610612731, 0, 196626, 5, 0, 196629, 6, 0 ) -brick_color = Color( 0.0431373, 0.129412, 0.0470588, 1 ) +brick_color = Color( 0.12549, 0.188235, 0.129412, 1 ) grass_color = Color( 0.0392157, 0.411765, 0.941176, 1 ) wood_color = Color( 0.658824, 0.176471, 0.176471, 1 ) @@ -176,9 +176,10 @@ tile_set = SubResource( 3 ) tile_data = PoolIntArray( -917515, 0, 0, -917514, 0, 0, -917513, 0, 0, -917512, 0, 0, -917511, 0, 0, -917510, 0, 0, -917509, 0, 0, -917508, 0, 0, -917507, 0, 0, -917506, 0, 0, -917505, 0, 0, -983040, 0, 0, -983039, 0, 0, -983038, 0, 0, -983037, 0, 0, -983036, 0, 0, -983035, 0, 0, -983034, 0, 0, -983033, 0, 0, -983032, 0, 0, -983031, 0, 0, -983030, 0, 0, -983029, 0, 0, -983028, 0, 0, -983027, 0, 0, -983026, 0, 0, -983025, 0, 0, -983024, 0, 0, -983023, 0, 0, -983022, 0, 0, -983021, 0, 0, -983020, 0, 0, -983019, 0, 0, -983018, 0, 0, -983017, 0, 0, -983016, 0, 0, -983015, 536870912, 0, -851979, 0, 0, -851978, 0, 0, -851977, 0, 0, -851976, 0, 0, -851975, 0, 0, -851974, 0, 0, -851973, 0, 0, -851972, 0, 0, -851971, 0, 0, -851970, 0, 0, -851969, 0, 0, -917504, 0, 0, -917503, 0, 0, -917502, 0, 0, -917501, 0, 0, -917500, 0, 0, -917499, 0, 0, -917498, 0, 0, -917497, 0, 0, -917496, 0, 0, -917495, 0, 0, -917494, 0, 0, -917493, 0, 0, -917492, 0, 0, -917491, 0, 0, -917490, 0, 0, -917489, 0, 0, -917488, 0, 0, -917487, 0, 0, -917486, 0, 0, -917485, 0, 0, -917484, 0, 0, -917483, 0, 0, -917482, 0, 0, -917481, 0, 0, -917480, 0, 0, -917479, 536870912, 0, -786443, 0, 0, -786442, 0, 0, -786441, 0, 0, -786440, 0, 0, -786439, 0, 0, -786438, 0, 0, -786437, 0, 0, -786436, 0, 0, -786435, 0, 0, -786434, 0, 0, -786433, 0, 0, -851968, 0, 0, -851967, 0, 0, -851966, 0, 0, -851965, 0, 0, -851964, 0, 0, -851963, 0, 0, -851962, 0, 0, -851961, 0, 0, -851960, 0, 0, -851959, 0, 0, -851958, 0, 0, -851957, 0, 0, -851956, 0, 0, -851955, 0, 0, -851954, 0, 0, -851953, 0, 0, -851952, 0, 0, -851951, 0, 0, -851950, 0, 0, -851949, 0, 0, -851948, 0, 0, -851947, 0, 0, -851946, 0, 0, -851945, 0, 0, -851944, 0, 0, -851943, 536870912, 0, -720907, 0, 0, -720906, 0, 0, -720905, 0, 0, -720904, 0, 0, -720903, 0, 0, -720902, 0, 0, -720901, 0, 0, -720900, 0, 0, -720899, 0, 0, -720898, 0, 0, -720897, 0, 0, -786432, 0, 0, -786431, 0, 0, -786430, 0, 0, -786429, 0, 0, -786428, 0, 0, -786427, 0, 0, -786426, 0, 0, -786425, 0, 0, -786424, 0, 0, -786423, 0, 0, -786422, 0, 0, -786421, 0, 0, -786420, 0, 0, -786419, 0, 0, -786418, 0, 0, -786417, 0, 0, -786416, 0, 0, -786415, 0, 0, -786414, 0, 0, -786413, 0, 0, -786412, 0, 0, -786411, 0, 0, -786410, 0, 0, -786409, 0, 0, -786408, 0, 0, -786407, 536870912, 0, -655371, 0, 0, -655370, 0, 0, -655369, 0, 0, -655368, 0, 0, -655367, 0, 0, -655366, 0, 0, -655365, 0, 0, -655364, 0, 0, -655363, 0, 0, -655362, 0, 0, -655361, 0, 0, -720896, 0, 0, -720878, 0, 0, -720877, 0, 0, -720876, 0, 0, -720875, 0, 0, -720874, 0, 0, -720873, 0, 0, -720872, 0, 0, -720871, 536870912, 0, -589835, 0, 0, -589834, 0, 0, -655342, 0, 0, -655341, 0, 0, -655340, 0, 0, -655339, 0, 0, -655338, 0, 0, -655337, 0, 0, -655336, 0, 0, -655335, 536870912, 0, -524299, 0, 0, -524298, 0, 0, -589800, 0, 0, -589799, 0, 0, -458763, 0, 0, -458762, 0, 0, -458761, 536870914, 3, -524264, 0, 0, -524263, 0, 0, -393227, 0, 0, -393226, 0, 0, -393225, 2, 2, -458728, 0, 0, -458727, 0, 0, -393192, 0, 0, -393191, 0, 0 ) tile_color = Color( 0.4, 0.741176, 0.415686, 1 ) -[node name="GameCamera" parent="." instance=ExtResource( 8 )] +[node name="CamBounds" type="Node2D" parent="."] position = Vector2( 34, -40 ) -bounds = Rect2( 8, 0, 60, 0 ) +script = ExtResource( 8 ) +bounds = Rect2( 0, 0, 60, 0 ) [node name="Actors" type="Node2D" parent="."] @@ -196,5 +197,3 @@ position = Vector2( -50, -16 ) [node name="Note" parent="Actors" instance=ExtResource( 9 )] position = Vector2( 195, -53 ) - -[editable path="GameCamera"] diff --git a/src/map/5-2.tscn b/src/map/5-2.tscn index 02958f8..d387e6f 100644 --- a/src/map/5-2.tscn +++ b/src/map/5-2.tscn @@ -5,7 +5,7 @@ [ext_resource path="res://src/stage/ObscureMap.tscn" type="PackedScene" id=3] [ext_resource path="res://src/actor/Player.tscn" type="PackedScene" id=4] [ext_resource path="res://src/stage/DetailTileMap.tscn" type="PackedScene" id=5] -[ext_resource path="res://src/stage/GameCamera.tscn" type="PackedScene" id=6] +[ext_resource path="res://src/stage/CamBounds.gd" type="Script" id=6] [ext_resource path="res://src/stage/SolidTileMap.tscn" type="PackedScene" id=7] [ext_resource path="res://src/actor/Exit.tscn" type="PackedScene" id=8] [ext_resource path="res://src/actor/Box.tscn" type="PackedScene" id=9] @@ -56,7 +56,7 @@ 4/name = "bricks.png 4" 4/texture = ExtResource( 14 ) 4/tex_offset = Vector2( 0, 0 ) -4/modulate = Color( 0.0431373, 0.129412, 0.0470588, 1 ) +4/modulate = Color( 0.12549, 0.188235, 0.129412, 1 ) 4/region = Rect2( 0, 0, 40, 8 ) 4/tile_mode = 2 4/autotile/icon_coordinate = Vector2( 0, 0 ) @@ -151,7 +151,7 @@ script = ExtResource( 10 ) palette = 4 color_solid = Color( 0.4, 0.741176, 0.415686, 1 ) -color_back = Color( 0.0431373, 0.129412, 0.0470588, 1 ) +color_back = Color( 0.12549, 0.188235, 0.129412, 1 ) color_grass = Color( 0.0392157, 0.411765, 0.941176, 1 ) color_wood = Color( 0.658824, 0.176471, 0.176471, 1 ) @@ -167,7 +167,7 @@ tile_data = PoolIntArray( -131075, 0, 0, -131074, 0, 0, -131073, 0, 0, -196608, z_index = -11 tile_set = SubResource( 2 ) tile_data = PoolIntArray( -786438, 536870916, 3, -786437, 4, 0, -786436, 4, 1, -786435, 4, 1, -786434, 4, 1, -786433, 536870916, 0, -851968, 4, 1, -851967, 4, 3, -851965, 536870918, 0, -851959, 536870916, 3, -851958, 4, 1, -851957, 4, 0, -851956, 4, 1, -851955, 4, 0, -851954, 4, 3, -851950, 4, 1, -851949, 4, 1, -851948, 536870916, 0, -851947, 4, 1, -720902, 4, 2, -720901, 4, 1, -720900, 4, 1, -720899, 536870916, 0, -720898, 4, 1, -720897, 4, 1, -786432, 4, 0, -786431, 536870916, 2, -786429, 536870918, 0, -786425, 536870916, 3, -786424, 536870916, 0, -786423, 536870916, 1, -786422, 536870916, 0, -786421, 4, 1, -786420, 536870916, 0, -786419, 4, 1, -786418, 4, 0, -786417, 4, 3, -786414, 4, 2, -786413, 536870916, 0, -786412, 4, 1, -786411, 4, 0, -655365, 4, 2, -655364, 4, 0, -655363, 4, 1, -655362, 536870916, 0, -655361, 4, 1, -720896, 536870916, 2, -720893, 536870918, 0, -720887, 4, 2, -720886, 4, 1, -720885, 536870916, 2, -720884, 536870916, 3, -720883, 536870916, 0, -720882, 536870916, 2, -720877, 4, 2, -720876, 4, 0, -720875, 4, 1, -655353, 536870917, 2, -655351, 536870916, 3, -655350, 536870916, 0, -655349, 536870916, 2, -655343, 536870917, 2, -655340, 4, 2, -655339, 4, 1, -524292, 4, 2, -524291, 4, 1, -524290, 536870916, 0, -524289, 536870916, 2, -589817, 1610612742, 0, -458755, 4, 2, -458754, 536870916, 2, -458753, 5, 2, -524288, -1073741819, 0, -524287, -1073741819, 0, -524286, -1610612731, 2, -524274, 6, 0, -524271, 1073741829, 2, -524270, 5, 0, -393217, 1610612741, 0, -458752, 5, 0, -458751, 5, 0, -458750, 5, 0, -458742, 1610612742, 0, -458738, 6, 0, -458734, -1073741819, 2, -458732, -1610612731, 2, -327683, -1610612730, 0, -327682, -1610612730, 0, -327681, 1610612741, 0, -393216, -1610612731, 2, -393215, 5, 0, -393214, 5, 0, -393211, 536870916, 3, -393210, 4, 0, -393209, 4, 3, -393206, 1610612741, 0, -393204, 5, 2, -393203, 5, 0, -393202, 5, 0, -393201, 5, 0, -393200, -1610612731, 2, -393196, -1610612731, 0, -262145, -1073741819, 2, -327680, -1610612731, 0, -327679, -1610612731, 0, -327678, 1610612741, 2, -327676, 536870916, 3, -327675, 4, 1, -327674, 4, 3, -327668, -1073741819, 2, -327667, 5, 0, -327666, 5, 0, -327665, 5, 0, -327664, 1610612741, 2, -327660, -2147483643, 0, -196614, -1073741819, 2, -196613, -1610612730, 0, -262143, 6, 0, -262140, 536870916, 3, -262139, 536870916, 0, -262138, 4, 3, -262137, 5, 0, -262136, -1610612731, 0, -262135, -1610612731, 0, -262131, -1073741819, 2, -262130, 5, 0, -262129, 1610612741, 2, -262124, -1610612731, 0, -196607, 6, 0, -196605, 4, 2, -196604, 4, 1, -196603, 536870916, 2, -196601, 5, 0, -196600, -1073741819, 2, -196599, 1610612741, 0, -196591, 5, 2, -196590, 5, 0, -196588, 1610612741, 2, -65545, 536870916, 0, -65544, 4, 3, -131068, 4, 0, -131067, 4, 3, -131065, -1073741819, 0, -131064, -1073741819, 0, -131063, 1610612741, 0, -131055, -1073741819, 2, -131054, 5, 2, -9, 4, 1, -8, 536870916, 0, -7, 4, 3, -2, 6, 0, -65535, 536870916, 3, -65534, 4, 1, -65532, 4, 1, -65531, 536870916, 2, -65528, 6, 0, 65527, 536870916, 0, 65528, 4, 1, 65529, 4, 0, 65530, 4, 3, 65534, 6, 0, 1, 536870916, 3, 2, 4, 0, 4, 536870916, 0, 5, 536870916, 2, 8, 6, 0, 131063, 4, 1, 131064, 536870916, 0, 131065, 4, 1, 131066, 4, 3, 131069, 5, 2, 131070, 1073741829, 0, 131071, -1610612731, 2, 65537, 4, 2, 65538, 4, 1, 65553, 536870916, 3, 65554, 4, 1, 65555, 4, 0, 65556, 4, 1, 65557, 4, 1, 196599, 4, 0, 196600, 4, 1, 196601, 536870916, 2, 196604, 5, 2, 196605, 1073741829, 0, 196606, 1610612741, 0, 196607, 1073741829, 0, 131072, -1610612731, 2, 131073, 4, 2, 131074, 536870916, 0, 131075, 4, 1, 131076, 536870916, 0, 131077, 4, 3, 131083, 1610612742, 0, 131089, 4, 2, 131090, 536870916, 2, 131091, 536870916, 3, 131092, 536870916, 0, 131093, 4, 1, 262135, 4, 1, 262136, 536870916, 2, 262139, 5, 2, 262140, 1073741829, 0, 262141, 1610612741, 0, 262142, 1073741829, 0, 262143, 1610612741, 0, 196608, 1073741829, 0, 196609, -1610612731, 2, 196610, 4, 2, 196611, 4, 0, 196612, 4, 1, 196613, 536870916, 0, 196614, 536870916, 2, 196619, 1073741829, 2, 196625, 4, 2, 196626, 4, 0, 196627, 4, 0, 196628, 4, 1, 196629, 4, 1, 327675, 5, 0, 327676, 1610612741, 0, 327677, 1073741829, 0, 327678, 1610612741, 0, 327679, 1073741829, 0, 262144, 1610612741, 0, 262145, 5, 0, 262147, 4, 2, 262148, 4, 1, 262149, 4, 1, 262150, 4, 1, 262151, 536870916, 2, 262162, 4, 1, 262163, 4, 1, 262164, 4, 1, 262165, 4, 1 ) -brick_color = Color( 0.0431373, 0.129412, 0.0470588, 1 ) +brick_color = Color( 0.12549, 0.188235, 0.129412, 1 ) grass_color = Color( 0.0392157, 0.411765, 0.941176, 1 ) wood_color = Color( 0.658824, 0.176471, 0.176471, 1 ) @@ -176,8 +176,9 @@ tile_set = SubResource( 3 ) tile_data = PoolIntArray( -327688, 1610612736, 0, -327687, 1610612736, 0, -327686, 1610612736, 0, -327685, 1610612736, 0, -262152, 1610612736, 0, -262151, 1610612736, 0, -262150, 1610612736, 0, -262149, 1610612736, 0, -196616, 1610612736, 0, -196615, 1610612736, 0, -196614, 1610612736, 0, -196613, 1610612736, 0, -131080, 1610612736, 0, -131079, 1610612736, 0, -131078, 1610612736, 0, -131077, 1610612736, 0, -196588, 1610612736, 0, -65544, 1610612736, 0, -65543, 1610612736, 0, -65542, 1610612736, 0, -65541, 1610612736, 0, -131052, 1610612736, 0, -8, 1610612736, 0, -7, 1610612736, 0, -6, 1610612736, 0, -5, 1610612736, 0, -4, 1610612736, 0, -3, 1610612736, 0, -2, 1610612736, 0, -1, 1610612736, 0, -65536, 1610612736, 0, -65535, 1610612736, 0, -65534, 1610612736, 0, -65533, 2, 2, -65516, 1610612736, 0, 65528, 1610612736, 0, 65529, 1610612736, 0, 65530, 1610612736, 0, 65531, 1610612736, 0, 65532, 1610612736, 0, 65533, 1610612736, 0, 65534, 1610612736, 0, 65535, 1610612736, 0, 0, 1610612736, 0, 1, 1610612736, 0, 2, 1610612736, 0, 15, 1610612736, 0, 16, 1610612736, 0, 17, 1610612736, 0, 18, 1610612736, 0, 19, 1610612736, 0, 20, 1610612736, 0, 131064, 1610612736, 0, 131065, 1610612736, 0, 131066, 1610612736, 0, 131067, 1610612736, 0, 131068, 1610612736, 0, 131069, 1610612736, 0, 131070, 1610612736, 0, 131071, 1610612736, 0, 65536, 1610612736, 0, 65537, 1610612736, 0, 65538, 1610612736, 0, 65551, 1610612736, 0, 65552, 1610612736, 0, 65553, 1610612736, 0, 65554, 1610612736, 0, 65555, 1610612736, 0, 65556, 1610612736, 0, 196600, 1610612736, 0, 196601, 1610612736, 0, 196602, 1610612736, 0, 196603, 1610612736, 0, 196604, 1610612736, 0, 196605, 1610612736, 0, 196606, 1610612736, 0, 196607, 1610612736, 0, 131072, 1610612736, 0, 131073, 1610612736, 0, 131074, 1610612736, 0, 131075, 1610612736, 0, 131076, 1610612736, 0, 131077, 1610612736, 0, 131078, 1610612736, 0, 131079, 1610612736, 0, 131080, 1610612736, 0, 131081, 1610612736, 0, 131082, 1610612736, 0, 131083, 1610612736, 0, 131084, 1610612736, 0, 131085, 1610612736, 0, 131086, 1610612736, 0, 131087, 1610612736, 0, 131088, 1610612736, 0, 131089, 1610612736, 0, 131090, 1610612736, 0, 131091, 1610612736, 0, 131092, 1610612736, 0, 262136, 1610612736, 0, 262137, 1610612736, 0, 262138, 1610612736, 0, 262139, 1610612736, 0, 262140, 1610612736, 0, 262141, 1610612736, 0, 262142, 1610612736, 0, 262143, 1610612736, 0, 196608, 1610612736, 0, 196609, 1610612736, 0, 196610, 1610612736, 0, 196611, 1610612736, 0, 196612, 1610612736, 0, 196613, 1610612736, 0, 196614, 1610612736, 0, 196615, 1610612736, 0, 196616, 1610612736, 0, 196617, 1610612736, 0, 196618, 1610612736, 0, 196619, 1610612736, 0, 196620, 1610612736, 0, 196621, 1610612736, 0, 196622, 1610612736, 0, 196623, 1610612736, 0, 196624, 1610612736, 0, 196625, 1610612736, 0, 196626, 1610612736, 0, 196627, 1610612736, 0, 196628, 1610612736, 0 ) tile_color = Color( 0.4, 0.741176, 0.415686, 1 ) -[node name="GameCamera" parent="." instance=ExtResource( 6 )] +[node name="CamBounds" type="Node2D" parent="."] position = Vector2( 52, -32 ) +script = ExtResource( 6 ) [node name="Actors" type="Node2D" parent="."] @@ -195,5 +196,3 @@ position = Vector2( 143, -24 ) [node name="Note" parent="Actors" instance=ExtResource( 1 )] position = Vector2( -61, -29 ) - -[editable path="GameCamera"] diff --git a/src/map/5-3.tscn b/src/map/5-3.tscn index 5813c64..5af176f 100644 --- a/src/map/5-3.tscn +++ b/src/map/5-3.tscn @@ -5,7 +5,7 @@ [ext_resource path="res://src/stage/ObscureMap.tscn" type="PackedScene" id=3] [ext_resource path="res://src/actor/Player.tscn" type="PackedScene" id=4] [ext_resource path="res://src/stage/DetailTileMap.tscn" type="PackedScene" id=5] -[ext_resource path="res://src/stage/GameCamera.tscn" type="PackedScene" id=6] +[ext_resource path="res://src/stage/CamBounds.gd" type="Script" id=6] [ext_resource path="res://src/stage/SolidTileMap.tscn" type="PackedScene" id=7] [ext_resource path="res://src/actor/Exit.tscn" type="PackedScene" id=8] [ext_resource path="res://src/actor/Box.tscn" type="PackedScene" id=9] @@ -179,8 +179,9 @@ tile_set = SubResource( 3 ) tile_data = PoolIntArray( -1114121, 0, 0, -1114120, 0, 0, -1114119, 0, 0, -1114118, 0, 0, -1114117, 0, 0, -1114116, 0, 0, -1114115, 0, 0, -1114114, 0, 0, -1114113, 0, 0, -1179648, 0, 0, -1179647, 0, 0, -1179646, 0, 0, -1179645, 0, 0, -1179644, 0, 0, -1179643, 0, 0, -1179642, 0, 0, -1179641, 0, 0, -1179640, 0, 0, -1179639, 0, 0, -1179638, 0, 0, -1179637, 0, 0, -1179636, 0, 0, -1179635, 0, 0, -1179634, 0, 0, -1179633, 0, 0, -1179632, 0, 0, -1179631, 0, 0, -1179630, 0, 0, -1179629, 0, 0, -1179628, 0, 0, -1048585, 0, 0, -1048584, 0, 0, -1048583, 0, 0, -1048582, 0, 0, -1048581, 0, 0, -1048580, 0, 0, -1048579, 0, 0, -1048578, 0, 0, -1048577, 0, 0, -1114112, 0, 0, -1114111, 0, 0, -1114110, 0, 0, -1114109, 0, 0, -1114108, 0, 0, -1114107, 0, 0, -1114106, 0, 0, -1114105, 0, 0, -1114104, 0, 0, -1114103, 0, 0, -1114102, 0, 0, -1114101, 0, 0, -1114100, 0, 0, -1114099, 0, 0, -1114098, 0, 0, -1114097, 0, 0, -1114096, 0, 0, -1114095, 0, 0, -1114094, 0, 0, -1114093, 0, 0, -1114092, 0, 0, -983049, 0, 0, -983048, 0, 0, -983047, 0, 0, -983046, 0, 0, -983045, 0, 0, -983044, 0, 0, -983043, 0, 0, -983042, 0, 0, -983041, 0, 0, -1048576, 0, 0, -1048575, 0, 0, -1048574, 0, 0, -1048573, 0, 0, -1048572, 0, 0, -1048571, 0, 0, -1048570, 0, 0, -1048569, 0, 0, -1048568, 0, 0, -1048567, 0, 0, -1048566, 0, 0, -1048565, 0, 0, -1048564, 0, 0, -1048563, 0, 0, -1048562, 0, 0, -1048561, 0, 0, -1048560, 0, 0, -1048559, 0, 0, -1048558, 0, 0, -1048557, 0, 0, -1048556, 0, 0, -917513, 0, 0, -917512, 0, 0, -917511, 0, 0, -917510, 0, 0, -917509, 0, 0, -917508, 0, 0, -917507, 0, 0, -917506, 0, 0, -917505, 0, 0, -983040, 0, 0, -983039, 0, 0, -983038, 0, 0, -983037, 0, 0, -983036, 0, 0, -983035, 0, 0, -983034, 0, 0, -983033, 0, 0, -983032, 0, 0, -983031, 0, 0, -983030, 0, 0, -983029, 0, 0, -983028, 0, 0, -983027, 0, 0, -983026, 0, 0, -983025, 0, 0, -983024, 0, 0, -983023, 0, 0, -983022, 0, 0, -983021, 0, 0, -983020, 0, 0, -851977, 0, 0, -851976, 0, 0, -851975, 0, 0, -851974, 0, 0, -851973, 0, 0, -851972, 0, 0, -851971, 0, 0, -851970, 0, 0, -851969, 0, 0, -917504, 0, 0, -917503, 0, 0, -917502, 0, 0, -917501, 0, 0, -917500, 0, 0, -917499, 0, 0, -917498, 0, 0, -917497, 0, 0, -917496, 0, 0, -917495, 0, 0, -917494, 0, 0, -917493, 0, 0, -917492, 0, 0, -917491, 0, 0, -917490, 0, 0, -917489, 0, 0, -917488, 0, 0, -917487, 0, 0, -917486, 0, 0, -917485, 0, 0, -917484, 0, 0, -786441, 0, 0, -786440, 0, 0, -786439, 0, 0, -786438, 0, 0, -786437, 0, 0, -786436, 0, 0, -786435, 0, 0, -786434, 0, 0, -720905, 0, 0, -720904, 0, 0, -720903, 0, 0, -720902, 0, 0, -720901, 0, 0, -720900, 0, 0, -720899, 0, 0, -655369, 0, 0, -655368, 0, 0, -655367, 0, 0, -655366, 0, 0, -655365, 0, 0, -655364, 0, 0, -589833, 0, 0, -589832, 0, 0, -589831, 0, 0, -589830, 0, 0, -589829, 0, 0, -589828, 0, 0, -524297, 0, 0, -524296, 0, 0, -524295, 0, 0, -524294, 0, 0, -524293, 0, 0, -524292, 0, 0, -458761, 0, 0, -458760, 0, 0, -458757, 536870914, 3, -458756, 2, 2 ) tile_color = Color( 0.4, 0.741176, 0.415686, 1 ) -[node name="GameCamera" parent="." instance=ExtResource( 6 )] +[node name="CamBounds" type="Node2D" parent="."] position = Vector2( 48, -48 ) +script = ExtResource( 6 ) [node name="Actors" type="Node2D" parent="."] @@ -198,5 +199,3 @@ position = Vector2( 4, -56 ) [node name="Note" parent="Actors" instance=ExtResource( 1 )] position = Vector2( -53, -101 ) - -[editable path="GameCamera"] diff --git a/src/map/5-4.tscn b/src/map/5-4.tscn index 708a536..37f43b9 100644 --- a/src/map/5-4.tscn +++ b/src/map/5-4.tscn @@ -7,7 +7,7 @@ [ext_resource path="res://media/image/bricks.png" type="Texture" id=5] [ext_resource path="res://src/stage/ObscureMap.tscn" type="PackedScene" id=6] [ext_resource path="res://src/stage/SpikeTileMap.tscn" type="PackedScene" id=7] -[ext_resource path="res://src/stage/GameCamera.tscn" type="PackedScene" id=8] +[ext_resource path="res://src/stage/CamBounds.gd" type="Script" id=8] [ext_resource path="res://src/actor/Player.tscn" type="PackedScene" id=9] [ext_resource path="res://src/actor/Exit.tscn" type="PackedScene" id=10] [ext_resource path="res://src/actor/Box.tscn" type="PackedScene" id=11] @@ -176,8 +176,9 @@ tile_set = SubResource( 3 ) tile_data = PoolIntArray( -589818, 536870914, 2, -589817, 0, 0, -589816, 0, 0, -589815, 0, 0, -589814, 0, 0, -524282, 2, 3, -524281, 0, 0, -524280, 0, 0, -524279, 0, 0, -524278, 0, 0 ) tile_color = Color( 0.4, 0.741176, 0.415686, 1 ) -[node name="GameCamera" parent="." instance=ExtResource( 8 )] +[node name="CamBounds" type="Node2D" parent="."] position = Vector2( 34, -56 ) +script = ExtResource( 8 ) bounds = Rect2( 0, 0, 140, 0 ) [node name="Actors" type="Node2D" parent="."] @@ -196,5 +197,3 @@ position = Vector2( -59, -48 ) [node name="Note" parent="Actors" instance=ExtResource( 12 )] position = Vector2( 75, -69 ) - -[editable path="GameCamera"] diff --git a/src/map/win.tscn b/src/map/win.tscn index 760fe4e..d60b1d6 100644 --- a/src/map/win.tscn +++ b/src/map/win.tscn @@ -4,7 +4,7 @@ [ext_resource path="res://src/actor/Exit.tscn" type="PackedScene" id=2] [ext_resource path="res://src/stage/SolidTileMap.tscn" type="PackedScene" id=3] [ext_resource path="res://src/stage/DetailTileMap.tscn" type="PackedScene" id=4] -[ext_resource path="res://src/stage/GameCamera.tscn" type="PackedScene" id=5] +[ext_resource path="res://src/stage/CamBounds.gd" type="Script" id=5] [ext_resource path="res://src/actor/Player.tscn" type="PackedScene" id=6] [ext_resource path="res://src/stage/ObscureMap.tscn" type="PackedScene" id=7] [ext_resource path="res://media/image/crate_tiles.png" type="Texture" id=8] @@ -195,8 +195,9 @@ tile_data = PoolIntArray( -720911, 5, 0, -720910, 5, 0, -720909, -1610612731, 0, tile_set = SubResource( 13 ) tile_data = PoolIntArray( -851982, 0, 0, -851981, 0, 0, -851980, 0, 0, -851979, 0, 0, -851978, 0, 0, -851977, 0, 0, -851976, 0, 0, -851975, 0, 0, -851974, 0, 0, -851973, 0, 0, -851972, 0, 0, -851971, 0, 0, -851970, 0, 0, -851969, 0, 0, -917504, 0, 0, -917503, 0, 0, -917502, 0, 0, -917501, 0, 0, -917500, 0, 0, -917499, 0, 0, -917498, 0, 0, -917497, 0, 0, -917496, 0, 0, -917495, 0, 0, -917494, 0, 0, -917493, 0, 0, -917492, 0, 0, -917491, 0, 0, -786446, 0, 0, -786445, 0, 0, -786444, 0, 0, -786443, 0, 0, -786442, 0, 0, -786441, 0, 0, -786440, 0, 0, -786439, 0, 0, -786438, 0, 0, -786437, 0, 0, -786436, 0, 0, -786435, 0, 0, -786434, 0, 0, -786433, 0, 0, -851968, 0, 0, -851967, 0, 0, -851966, 0, 0, -851965, 0, 0, -851964, 0, 0, -851963, 0, 0, -851962, 0, 0, -851961, 0, 0, -851960, 0, 0, -851959, 0, 0, -851958, 0, 0, -851957, 0, 0, -851956, 0, 0, -851955, 0, 0, -720910, 0, 0, -720909, 0, 0, -720908, 0, 0, -720907, 0, 0, -720906, 0, 0, -720905, 0, 0, -720904, 0, 0, -720903, 0, 0, -720902, 0, 0, -720901, 0, 0, -720900, 0, 0, -720899, 0, 0, -720898, 0, 0, -720897, 0, 0, -786432, 0, 0, -786431, 0, 0, -786430, 0, 0, -786429, 0, 0, -786428, 0, 0, -786427, 0, 0, -786426, 0, 0, -786425, 0, 0, -786424, 0, 0, -786423, 0, 0, -786422, 0, 0, -786421, 0, 0, -786420, 0, 0, -786419, 0, 0, -655374, 0, 0, -655373, 0, 0, -655372, 0, 0, -655371, 0, 0, -655370, 0, 0, -655369, 0, 0, -655368, 0, 0, -655367, 0, 0, -655366, 0, 0, -655365, 0, 0, -655364, 0, 0, -655363, 0, 0, -655362, 0, 0, -655361, 0, 0, -720896, 0, 0, -720895, 0, 0, -720894, 0, 0, -720893, 0, 0, -720892, 0, 0, -720891, 0, 0, -720890, 0, 0, -720889, 0, 0, -720888, 0, 0, -720887, 0, 0, -720886, 0, 0, -720885, 0, 0, -720884, 0, 0, -720883, 0, 0, -589838, 0, 0, -589837, 0, 0, -589836, 0, 0, -589835, 0, 0, -589834, 0, 0, -589833, 0, 0, -589832, 0, 0, -589831, 0, 0, -589830, 0, 0, -589829, 0, 0, -589828, 0, 0, -589827, 0, 0, -589826, 0, 0, -589825, 0, 0, -655360, 0, 0, -655359, 0, 0, -655358, 0, 0, -655357, 0, 0, -655356, 0, 0, -655355, 0, 0, -655354, 0, 0, -655353, 0, 0, -655352, 0, 0, -655351, 0, 0, -655350, 0, 0, -655349, 0, 0, -655348, 0, 0, -655347, 0, 0, -524302, 0, 0, -524301, 0, 0, -524300, 0, 0, -524299, 0, 0, -524298, 0, 0, -589815, 0, 0, -589814, 0, 0, -589813, 0, 0, -589812, 0, 0, -589811, 0, 0, -458766, 0, 0, -458765, 0, 0, -458764, 0, 0, -458763, 0, 0, -458762, 0, 0, -524280, 2, 2, -524279, 0, 0, -524278, 0, 0, -524277, 0, 0, -524276, 0, 0, -524275, 0, 0, -393230, 0, 0, -393229, 0, 0, -393228, 0, 0, -393227, 0, 0, -393226, 0, 0, -458743, 0, 0, -458742, 0, 0, -458741, 0, 0, -458740, 0, 0, -458739, 0, 0, -327694, 0, 0, -327693, 0, 0, -327692, 0, 0, -327691, 0, 0, -327690, 0, 0, -393207, 0, 0, -393206, 0, 0, -393205, 0, 0, -393204, 0, 0, -393203, 0, 0, -262158, 0, 0, -262157, 0, 0, -262156, 0, 0, -262155, 0, 0, -262154, 0, 0, -327671, 0, 0, -327670, 0, 0, -327669, 0, 0, -327668, 0, 0, -327667, 0, 0, -262135, 0, 0, -262134, 0, 0, -262133, 0, 0, -262132, 0, 0, -262131, 0, 0, -196599, 0, 0, -196598, 0, 0, -196597, 0, 0, -196596, 0, 0, -196595, 0, 0, -131063, 0, 0, -131062, 0, 0, -131061, 0, 0, -131060, 0, 0, -131059, 0, 0 ) -[node name="GameCamera" parent="." instance=ExtResource( 5 )] +[node name="CamBounds" type="Node2D" parent="."] position = Vector2( 0, -24 ) +script = ExtResource( 5 ) [node name="Actors" type="Node2D" parent="."] @@ -437,5 +438,3 @@ margin_right = 24.0 margin_bottom = 6.0 custom_fonts/font = SubResource( 11 ) text = "13" - -[editable path="GameCamera"] diff --git a/src/menu/select.gd b/src/menu/select.gd index bd5e9f2..9c5b5e6 100644 --- a/src/menu/select.gd +++ b/src/menu/select.gd @@ -69,6 +69,7 @@ var lockdict= {0:["1-1", "1-2", "1-3", "1-4", "1-5", "1-6", "1-7", "1-8"], 24: ['5-1', '5-2', '5-3', '5-4'], 30: ['win']} +var stage_size := Vector2(136, 96) func _ready(): #Leaderboard.connect("new_score", self, "new_score") @@ -191,7 +192,13 @@ func _physics_process(delta): if load_list.size() > 0: var pop = load_list.pop_front() if Shared.scene_dict.has(pop[1]): - pop[2].add_child(Shared.scene_dict[pop[1]].instance()) + var inst = Shared.scene_dict[pop[1]].instance() + var cam = inst.get_node("CamBounds") + + pop[2].add_child(inst) + if is_instance_valid(cam): + inst.position += stage_size / 2 + screen_static[pop[0]].visible = false else: is_load = false @@ -240,7 +247,7 @@ func make_screen(i := 0): screens_node.add_child(new) overlays[i] = new.get_node("Overlay") screen_static.append(new.get_node("Vis/Static")) - view_scene(new.get_node("Vis/ViewportContainer/Viewport"), Shared.map_dir + map_list[i] + ".tscn", i) + view_scene(new.get_node("Vis/Node2D"), Shared.map_dir + map_list[i] + ".tscn", i) # view a scene inside the viewport by path func view_scene(port, path, arg): diff --git a/src/menu/select.tscn b/src/menu/select.tscn index 34cfb5d..6abe422 100644 --- a/src/menu/select.tscn +++ b/src/menu/select.tscn @@ -1,8 +1,9 @@ -[gd_scene load_steps=32 format=2] +[gd_scene load_steps=21 format=2] [ext_resource path="res://media/image/corner.png" type="Texture" id=1] [ext_resource path="res://media/font/QuinqueFive.ttf" type="DynamicFontData" id=2] [ext_resource path="res://media/image/note.png" type="Texture" id=3] +[ext_resource path="res://src/menu/Vis.gd" type="Script" id=4] [ext_resource path="res://src/shader/tv_static.gdshader" type="Shader" id=5] [ext_resource path="res://src/shader/outline2D_outer.shader" type="Shader" id=6] [ext_resource path="res://src/menu/select.gd" type="Script" id=7] @@ -10,148 +11,7 @@ [ext_resource path="res://media/image/diamond12.png" type="Texture" id=9] [ext_resource path="res://media/image/menu.png" type="Texture" id=10] [ext_resource path="res://media/image/skull.png" type="Texture" id=11] -[ext_resource path="res://src/stage/Stage.gd" type="Script" id=12] [ext_resource path="res://src/menu/cursor_anim.gd" type="Script" id=13] -[ext_resource path="res://media/image/solid_bricks.png" type="Texture" id=14] -[ext_resource path="res://media/image/bricks.png" type="Texture" id=15] -[ext_resource path="res://media/image/8pixel.png" type="Texture" id=16] -[ext_resource path="res://media/image/crate_tiles.png" type="Texture" id=17] -[ext_resource path="res://src/stage/SpikeTileMap.tscn" type="PackedScene" id=18] -[ext_resource path="res://src/stage/ObscureMap.tscn" type="PackedScene" id=19] -[ext_resource path="res://src/stage/SolidTileMap.tscn" type="PackedScene" id=20] -[ext_resource path="res://src/stage/DetailTileMap.tscn" type="PackedScene" id=21] - -[sub_resource type="TileSet" id=1] -0/name = "solid_bricks.png 0" -0/texture = ExtResource( 14 ) -0/tex_offset = Vector2( 0, 0 ) -0/modulate = Color( 0.768627, 0.407843, 0.454902, 1 ) -0/region = Rect2( 0, 0, 16, 8 ) -0/tile_mode = 2 -0/autotile/icon_coordinate = Vector2( 0, 0 ) -0/autotile/tile_size = Vector2( 8, 8 ) -0/autotile/spacing = 0 -0/autotile/occluder_map = [ ] -0/autotile/navpoly_map = [ ] -0/autotile/priority_map = [ ] -0/autotile/z_index_map = [ ] -0/occluder_offset = Vector2( 0, 0 ) -0/navigation_offset = Vector2( 0, 0 ) -0/shape_offset = Vector2( 0, 0 ) -0/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 ) -0/shape_one_way = false -0/shape_one_way_margin = 0.0 -0/shapes = [ ] -0/z_index = 0 -1/name = "8pixel.png 1" -1/texture = ExtResource( 16 ) -1/tex_offset = Vector2( 0, 0 ) -1/modulate = Color( 1, 0, 1, 0.33 ) -1/region = Rect2( 0, 0, 8, 8 ) -1/tile_mode = 0 -1/occluder_offset = Vector2( 0, 0 ) -1/navigation_offset = Vector2( 0, 0 ) -1/shape_offset = Vector2( 0, 0 ) -1/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 ) -1/shape_one_way = false -1/shape_one_way_margin = 0.0 -1/shapes = [ ] -1/z_index = 0 - -[sub_resource type="TileSet" id=12] -4/name = "bricks.png 4" -4/texture = ExtResource( 15 ) -4/tex_offset = Vector2( 0, 0 ) -4/modulate = Color( 0.239216, 0.109804, 0.184314, 1 ) -4/region = Rect2( 0, 0, 40, 8 ) -4/tile_mode = 2 -4/autotile/icon_coordinate = Vector2( 0, 0 ) -4/autotile/tile_size = Vector2( 8, 8 ) -4/autotile/spacing = 0 -4/autotile/occluder_map = [ ] -4/autotile/navpoly_map = [ ] -4/autotile/priority_map = [ ] -4/autotile/z_index_map = [ ] -4/occluder_offset = Vector2( 0, 0 ) -4/navigation_offset = Vector2( 0, 0 ) -4/shape_offset = Vector2( 0, 0 ) -4/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 ) -4/shape_one_way = false -4/shape_one_way_margin = 0.0 -4/shapes = [ ] -4/z_index = 0 -5/name = "crate_tiles.png 5" -5/texture = ExtResource( 17 ) -5/tex_offset = Vector2( 0, 0 ) -5/modulate = Color( 0.741176, 0.580392, 0, 1 ) -5/region = Rect2( 0, 16, 24, 8 ) -5/tile_mode = 2 -5/autotile/icon_coordinate = Vector2( 0, 0 ) -5/autotile/tile_size = Vector2( 8, 8 ) -5/autotile/spacing = 0 -5/autotile/occluder_map = [ ] -5/autotile/navpoly_map = [ ] -5/autotile/priority_map = [ ] -5/autotile/z_index_map = [ ] -5/occluder_offset = Vector2( 0, 0 ) -5/navigation_offset = Vector2( 0, 0 ) -5/shape_offset = Vector2( 0, 0 ) -5/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 ) -5/shape_one_way = false -5/shape_one_way_margin = 0.0 -5/shapes = [ ] -5/z_index = 0 -6/name = "crate_tiles.png 6" -6/texture = ExtResource( 17 ) -6/tex_offset = Vector2( 0, 0 ) -6/modulate = Color( 0.678431, 0, 0.156863, 1 ) -6/region = Rect2( 0, 24, 8, 8 ) -6/tile_mode = 0 -6/occluder_offset = Vector2( 0, 0 ) -6/navigation_offset = Vector2( 0, 0 ) -6/shape_offset = Vector2( 0, 0 ) -6/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 ) -6/shape_one_way = false -6/shape_one_way_margin = 0.0 -6/shapes = [ ] -6/z_index = 0 - -[sub_resource type="TileSet" id=13] -0/name = "8pixel.png 0" -0/texture = ExtResource( 16 ) -0/tex_offset = Vector2( 0, 0 ) -0/modulate = Color( 0, 1, 0, 0.14902 ) -0/region = Rect2( 0, 0, 8, 8 ) -0/tile_mode = 0 -0/occluder_offset = Vector2( 0, 0 ) -0/navigation_offset = Vector2( 0, 0 ) -0/shape_offset = Vector2( 0, 0 ) -0/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 ) -0/shape_one_way = false -0/shape_one_way_margin = 0.0 -0/shapes = [ ] -0/z_index = 0 -2/name = "solid_bricks.png 2" -2/texture = ExtResource( 14 ) -2/tex_offset = Vector2( 0, 0 ) -2/modulate = Color( 0.768627, 0.407843, 0.454902, 1 ) -2/region = Rect2( 0, 0, 32, 8 ) -2/tile_mode = 2 -2/autotile/icon_coordinate = Vector2( 0, 0 ) -2/autotile/tile_size = Vector2( 8, 8 ) -2/autotile/spacing = 0 -2/autotile/occluder_map = [ ] -2/autotile/navpoly_map = [ ] -2/autotile/priority_map = [ ] -2/autotile/z_index_map = [ ] -2/occluder_offset = Vector2( 0, 0 ) -2/navigation_offset = Vector2( 0, 0 ) -2/shape_offset = Vector2( 0, 0 ) -2/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 ) -2/shape_one_way = false -2/shape_one_way_margin = 0.0 -2/shapes = [ ] -2/z_index = 0 [sub_resource type="ShaderMaterial" id=8] shader = ExtResource( 5 ) @@ -239,49 +99,11 @@ margin_bottom = 96.0 rect_min_size = Vector2( 136, 96 ) color = Color( 0, 0, 0, 1 ) -[node name="Stage" type="Node2D" parent="Control/Screen"] -position = Vector2( 128, 64 ) -script = ExtResource( 12 ) -__meta__ = { -"_editor_description_": "" -} -palette = 1 -color_solid = Color( 0.768627, 0.407843, 0.454902, 1 ) -color_back = Color( 0.239216, 0.109804, 0.184314, 1 ) -color_grass = Color( 0.741176, 0.580392, 0, 1 ) - -[node name="SolidTileMap" parent="Control/Screen/Stage" instance=ExtResource( 20 )] -tile_set = SubResource( 1 ) -tile_data = PoolIntArray( -851985, 1, 0, -851984, 1, 0, -851983, 1, 0, -851982, 1, 0, -851981, 1, 0, -851980, 1, 0, -851979, 1, 0, -851978, 1, 0, -851977, 1, 0, -851976, 1, 0, -851975, 1, 0, -851974, 1, 0, -851973, 1, 0, -851972, 1, 0, -851971, 1, 0, -851970, 1, 0, -851969, 1, 0, -917504, 1, 0, -917503, 1, 0, -917502, 1, 0, -917501, 1, 0, -917500, 1, 0, -917499, 1, 0, -917498, 1, 0, -917497, 1, 0, -917496, 1, 0, -917495, 1, 0, -917494, 1, 0, -917493, 1, 0, -917492, 1, 0, -917491, 1, 0, -917490, 1, 0, -917489, 1, 0, -917488, 1, 0, -917487, 1, 0, -917486, 1, 0, -917485, 1, 0, -917484, 1, 0, -917483, 1, 0, -917482, 1, 0, -786449, 1, 0, -851946, 1, 0, -720913, 1, 0, -786410, 1, 0, -655377, 1, 0, -720874, 1, 0, -589841, 1, 0, -655338, 1, 0, -524305, 1, 0, -589802, 1, 0, -458769, 1, 0, -524274, 0, 1, -524273, 0, 0, -524272, 0, 1, -524271, 536870912, 0, -524270, 0, 1, -524269, 536870912, 0, -524268, 536870912, 1, -524266, 1, 0, -393233, 1, 0, -393229, 0, 1, -393228, 0, 0, -393227, 0, 1, -393226, 0, 1, -393225, 536870912, 0, -393224, 0, 1, -393223, 0, 1, -393222, 0, 0, -393221, 0, 1, -393220, 0, 1, -393219, 536870912, 0, -393218, 536870912, 1, -458751, 536870912, 1, -458750, 0, 0, -458749, 536870912, 1, -458748, 536870912, 0, -458747, 0, 1, -458746, 0, 0, -458745, 0, 1, -458744, 536870912, 0, -458743, 0, 1, -458742, 0, 1, -458741, 0, 0, -458740, 0, 1, -458739, 536870912, 1, -458738, 536870912, 0, -458730, 1, 0, -327697, 1, 0, -327693, 0, 0, -327682, 0, 0, -327681, 0, 1, -393216, 0, 1, -393215, 536870912, 0, -393202, 536870912, 1, -393196, 536870912, 1, -393195, 1, 0, -393194, 1, 0, -262161, 1, 0, -262160, 1, 0, -262159, 536870912, 1, -262158, 536870912, 0, -262157, 0, 1, -327666, 0, 0, -327665, 0, 1, -327664, 536870912, 0, -327660, 536870912, 0, -196623, 0, 0, -262124, 536870912, 1, -131087, 536870912, 1, -196588, 0, 0, -65551, 0, 0, -131054, 0, 1, -131053, 536870912, 0, -131052, 536870912, 1, -15, 536870912, 1, -65518, 0, 0, 65521, 0, 0, 65522, 0, 1, 65523, 536870912, 0, 65524, 0, 1, 65525, 0, 0, 65526, 0, 1, 65527, 536870912, 0, 65534, 0, 1, 65535, 0, 0, 0, 0, 1, 1, 536870912, 0, 14, 0, 1, 15, 0, 0, 16, 0, 1, 17, 536870912, 0, 18, 0, 1, 131063, 536870912, 1, 131070, 0, 0, 65537, 0, 1, 65550, 0, 0, 196599, 0, 0, 196600, 0, 1, 196601, 536870912, 0, 196602, 0, 1, 196603, 0, 0, 196604, 0, 1, 196605, 536870912, 0, 196606, 0, 1, 131073, 0, 0, 131074, 0, 1, 131075, 536870912, 0, 131076, 0, 1, 131077, 0, 0, 131078, 0, 1, 131079, 536870912, 0, 131080, 0, 1, 131081, 0, 1, 131082, 0, 0, 131083, 0, 1, 131084, 0, 1, 131085, 536870912, 0, 131086, 0, 1 ) -tile_color = Color( 0.768627, 0.407843, 0.454902, 1 ) - -[node name="SpikeTileMap" parent="Control/Screen/Stage" instance=ExtResource( 18 )] -tile_data = PoolIntArray( 131064, 0, 0, 131065, 0, 0, 131066, 0, 0, 131067, 0, 0, 131068, 0, 0, 131069, 0, 0, 65538, 0, 0, 65539, 0, 0, 65540, 0, 0, 65541, 0, 0, 65542, 0, 0, 65543, 0, 0, 65544, 0, 0, 65545, 0, 0, 65546, 0, 0, 65547, 0, 0, 65548, 0, 0, 65549, 0, 0 ) - -[node name="DetailTileMap" parent="Control/Screen/Stage" instance=ExtResource( 21 )] -z_index = -11 -tile_set = SubResource( 12 ) -tile_data = PoolIntArray( -458766, 536870916, 3, -458765, 536870916, 0, -458764, 4, 1, -458763, 4, 3, -458758, 5, 2, -458757, 5, 0, -458756, 536870917, 2, -524282, 5, 2, -524281, 5, 0, -524280, 5, 0, -524279, 5, 0, -524278, 5, 0, -524277, 536870917, 2, -393230, 4, 0, -393217, 5, 2, -458752, 536870917, 2, -458737, 536870916, 1, -458736, 536870916, 0, -458735, 4, 3, -327694, 4, 2, -327692, 4, 1, -327691, 4, 3, -327688, 6, 0, -327685, 1073741829, 2, -327684, 5, 0, -327683, 1610612741, 2, -393211, 1073741829, 2, -393210, 5, 0, -393209, 1610612741, 2, -393206, 1073741829, 2, -393205, 6, 0, -393204, 5, 0, -393203, 1610612741, 2, -393201, 4, 0, -393200, 536870916, 1, -393199, 536870916, 2, -393197, -2147483643, 2, -262156, 4, 0, -262155, 536870916, 2, -262153, 5, 2, -262152, 5, 0, -262151, -1610612731, 2, -262145, 4, 2, -327680, 536870916, 0, -327679, 4, 3, -327669, 6, 0, -327661, -1073741819, 0, -196617, -1073741819, 0, -196616, -1073741819, 0, -196615, -1073741819, 0, -196613, 4, 2, -196612, 4, 3, -196610, 536870916, 3, -196609, 4, 0, -262144, 536870916, 1, -262143, 4, 3, -262141, 5, 2, -262140, 5, 0, -262139, -1610612731, 2, -262134, 5, 2, -262133, 5, 0, -262132, -1610612731, 2, -262130, 536870916, 3, -262129, 4, 0, -262128, 4, 0, -262127, 4, 3, -262125, -1073741819, 2, -131081, -1073741819, 2, -131080, -1073741819, 0, -131079, 1610612741, 2, -131077, 4, 2, -131076, 4, 3, -131074, 4, 2, -131073, 536870916, 2, -196608, 536870916, 3, -196607, 4, 3, -196605, 5, 0, -196604, 5, 0, -196603, 5, 0, -196601, 536870916, 3, -196600, 536870916, 2, -196598, -1073741819, 2, -196597, 5, 0, -196596, 1610612741, 2, -196594, 4, 2, -196593, 536870916, 2, -196592, 4, 2, -196591, 4, 3, -65550, 536870916, 3, -65549, 536870916, 1, -65548, 4, 0, -65547, 4, 3, -65538, 4, 2, -65537, 536870916, 0, -131072, 536870916, 1, -131071, 4, 3, -131069, -1073741819, 2, -131068, 5, 0, -131067, 1610612741, 2, -131065, 536870916, 3, -131064, 536870916, 2, -131058, 4, 2, -131057, 4, 3, -131056, 536870916, 3, -131055, 536870916, 2, -14, 536870916, 1, -13, 4, 0, -12, 536870916, 1, -11, 4, 0, -10, 4, 3, -5, 5, 0, -2, 4, 2, -1, 536870916, 1, -65536, 4, 0, -65535, 4, 3, -65532, 6, 0, -65522, 536870916, 3, -65521, 4, 0, -65520, 4, 0, -65519, 4, 3, 65531, 6, 0, 4, 6, 0, 5, -1610612731, 2, 9, 5, 2, 131058, 4, 2, 131059, 536870916, 1, 131060, 4, 0, 131061, 536870916, 1, 131062, 536870916, 2, 131067, 6, 0, 131071, 1073741829, 2, 65536, 1610612741, 2, 65540, 6, 0, 65545, 6, 0, 196594, 4, 2, 196595, 4, 0, 196596, 4, 1, 196597, 536870916, 2, 262136, 1073741829, 2, 262137, 5, 0, 262138, 5, 0, 262139, 5, 0, 262140, 1610612741, 2, 196612, 1073741829, 2, 196613, 5, 0, 196614, 5, 0, 196615, 5, 0, 196616, 5, 0, 196617, 1610612741, 2 ) -brick_color = Color( 0.239216, 0.109804, 0.184314, 1 ) -grass_color = Color( 0.741176, 0.580392, 0, 1 ) - -[node name="ObscureMap" parent="Control/Screen/Stage" instance=ExtResource( 19 )] -tile_set = SubResource( 13 ) -tile_data = PoolIntArray( -786448, 536870912, 0, -786447, 536870912, 0, -786446, 536870912, 0, -786445, 536870912, 0, -786444, 536870912, 0, -786443, 536870912, 0, -786442, 536870912, 0, -786441, 536870912, 0, -786440, 536870912, 0, -786439, 536870912, 0, -786438, 536870912, 0, -786437, 536870912, 0, -786436, 536870912, 0, -786435, 536870912, 0, -786434, 536870912, 0, -786433, 536870912, 0, -851968, 536870912, 0, -851967, 536870912, 0, -851966, 536870912, 0, -851965, 536870912, 0, -851964, 536870912, 0, -851963, 536870912, 0, -851962, 536870912, 0, -851961, 536870912, 0, -851960, 536870912, 0, -851959, 536870912, 0, -851958, 536870912, 0, -851957, 536870912, 0, -851956, 536870912, 0, -851955, 536870912, 0, -851954, 536870912, 0, -851953, 536870912, 0, -851952, 536870912, 0, -851951, 536870912, 0, -851950, 536870912, 0, -851949, 536870912, 0, -851948, 536870912, 0, -851947, 536870912, 0, -720912, 536870912, 0, -720911, 536870912, 0, -720910, 536870912, 0, -720909, 536870912, 0, -720908, 536870912, 0, -720907, 536870912, 0, -720906, 536870912, 0, -720905, 536870912, 0, -720904, 536870912, 0, -720903, 536870912, 0, -720902, 536870912, 0, -720901, 536870912, 0, -720900, 536870912, 0, -720899, 536870912, 0, -720898, 536870912, 0, -720897, 536870912, 0, -786432, 536870912, 0, -786431, 536870912, 0, -786430, 536870912, 0, -786429, 536870912, 0, -786428, 536870912, 0, -786427, 536870912, 0, -786426, 536870912, 0, -786425, 536870912, 0, -786424, 536870912, 0, -786423, 536870912, 0, -786422, 536870912, 0, -786421, 536870912, 0, -786420, 536870912, 0, -786419, 536870912, 0, -786418, 536870912, 0, -786417, 536870912, 0, -786416, 536870912, 0, -786415, 536870912, 0, -786414, 536870912, 0, -786413, 536870912, 0, -786412, 536870912, 0, -786411, 536870912, 0, -655376, 536870912, 0, -655375, 536870912, 0, -655374, 536870912, 0, -655373, 536870912, 0, -655372, 536870912, 0, -655371, 536870912, 0, -655370, 536870912, 0, -655369, 536870912, 0, -655368, 536870912, 0, -655367, 536870912, 0, -655366, 536870912, 0, -655365, 536870912, 0, -655364, 536870912, 0, -655363, 536870912, 0, -655362, 536870912, 0, -655361, 536870912, 0, -720896, 536870912, 0, -720895, 536870912, 0, -720894, 536870912, 0, -720893, 536870912, 0, -720892, 536870912, 0, -720891, 536870912, 0, -720890, 536870912, 0, -720889, 536870912, 0, -720888, 536870912, 0, -720887, 536870912, 0, -720886, 536870912, 0, -720885, 536870912, 0, -720884, 536870912, 0, -720883, 536870912, 0, -720882, 536870912, 0, -720881, 536870912, 0, -720880, 536870912, 0, -720879, 536870912, 0, -720878, 536870912, 0, -720877, 536870912, 0, -720876, 536870912, 0, -720875, 536870912, 0, -589840, 536870912, 0, -589839, 536870912, 0, -589838, 536870912, 0, -589837, 536870912, 0, -589836, 536870912, 0, -589835, 536870912, 0, -589834, 536870912, 0, -589833, 536870912, 0, -589832, 536870912, 0, -589831, 536870912, 0, -589830, 536870912, 0, -589829, 536870912, 0, -589828, 536870912, 0, -589827, 536870912, 0, -589826, 536870912, 0, -589825, 536870912, 0, -655360, 536870912, 0, -655359, 536870912, 0, -655358, 536870912, 0, -655357, 536870912, 0, -655356, 536870912, 0, -655355, 536870912, 0, -655354, 536870912, 0, -655353, 536870912, 0, -655352, 536870912, 0, -655351, 536870912, 0, -655350, 536870912, 0, -655349, 536870912, 0, -655348, 536870912, 0, -655347, 536870912, 0, -655346, 536870912, 0, -655345, 536870912, 0, -655344, 536870912, 0, -655343, 536870912, 0, -655342, 536870912, 0, -655341, 536870912, 0, -655340, 536870912, 0, -655339, 536870912, 0, -524304, 536870912, 0, -524303, 536870912, 0, -524302, 536870912, 0, -524301, 536870912, 0, -524300, 536870912, 0, -524299, 536870912, 0, -524298, 536870912, 0, -524297, 536870912, 0, -524296, 536870912, 0, -524295, 536870912, 0, -524294, 536870912, 0, -524293, 536870912, 0, -524292, 536870912, 0, -524291, 536870912, 0, -524290, 536870912, 0, -524289, 536870912, 0, -589824, 536870912, 0, -589823, 536870912, 0, -589822, 536870912, 0, -589821, 536870912, 0, -589820, 536870912, 0, -589819, 536870912, 0, -589818, 536870912, 0, -589817, 536870912, 0, -589816, 536870912, 0, -589815, 536870912, 0, -589814, 536870912, 0, -589813, 536870912, 0, -589812, 536870912, 0, -589811, 536870912, 0, -589810, 536870912, 0, -589809, 536870912, 0, -589808, 536870912, 0, -589807, 536870912, 0, -589806, 536870912, 0, -589805, 536870912, 0, -589804, 536870912, 0, -589803, 536870912, 0, -458768, 536870912, 0, -458767, 536870912, 0, -458766, 536870912, 0, -458765, 536870912, 0, -458764, 536870912, 0, -458763, 536870912, 0, -458762, 536870912, 0, -458761, 536870912, 0, -458760, 536870912, 0, -458759, 536870912, 0, -458758, 536870912, 0, -458757, 536870912, 0, -458756, 536870912, 0, -458755, 536870912, 0, -458754, 536870912, 0, -458753, 536870912, 0, -524288, 536870912, 0, -524287, 536870912, 0, -524286, 536870912, 0, -524285, 536870912, 0, -524284, 536870912, 0, -524283, 536870912, 0, -524282, 536870912, 0, -524281, 536870912, 0, -524280, 536870912, 0, -524279, 536870912, 0, -524278, 536870912, 0, -524277, 536870912, 0, -524276, 536870912, 0, -524275, 536870912, 0, -524267, 536870912, 0, -393232, 536870912, 0, -393231, 536870912, 0, -393230, 536870912, 0, -393217, 536870912, 0, -458752, 536870912, 0, -458732, 2, 2, -458731, 536870912, 0, -327696, 536870912, 0, -327695, 536870912, 0, -327694, 536870912, 0 ) -tile_color = Color( 0.768627, 0.407843, 0.454902, 1 ) - [node name="Vis" type="VisibilityNotifier2D" parent="Control/Screen"] -visible = false rect = Rect2( 0, 0, 136, 96 ) +script = ExtResource( 4 ) -[node name="ViewportContainer" type="ViewportContainer" parent="Control/Screen/Vis"] -margin_right = 136.0 -margin_bottom = 96.0 - -[node name="Viewport" type="Viewport" parent="Control/Screen/Vis/ViewportContainer"] -size = Vector2( 136, 96 ) -handle_input_locally = false -render_target_update_mode = 0 +[node name="Node2D" type="Node2D" parent="Control/Screen/Vis"] [node name="Static" type="ColorRect" parent="Control/Screen/Vis"] modulate = Color( 0.14, 0.14, 0.14, 1 ) @@ -465,6 +287,7 @@ text = "12:67 long_name1234567 [node name="Camera2D" type="Camera2D" parent="."] position = Vector2( 160, 90 ) +current = true smoothing_enabled = true editor_draw_screen = false diff --git a/src/stage/CamBounds.gd b/src/stage/CamBounds.gd new file mode 100644 index 0000000..335e3aa --- /dev/null +++ b/src/stage/CamBounds.gd @@ -0,0 +1,31 @@ +tool +extends Node2D + +export var bounds := Rect2(0, 0, 0, 0) setget _set_bounds + +var bounds_upper := Vector2.ZERO +var bounds_lower := Vector2.ZERO + +var rect : Rect2 +var screen = Vector2(228, 128) + +func _ready(): + rect = Rect2(-screen/2, screen) + # set limits + bounds_upper.x = -bounds.position.x + position.x + bounds_upper.y = -bounds.position.y + position.y + bounds_lower.x = bounds.size.x + position.x + bounds_lower.y = bounds.size.y + position.y + print("CamBounds upper: ", bounds_upper, " lower: ", bounds_lower) + +func _set_bounds(arg): + bounds.position.x = abs(arg.position.x) + bounds.position.y = abs(arg.position.y) + bounds.size.x = abs(arg.size.x) + bounds.size.y = abs(arg.size.y) + update() + +func _draw(): + if Engine.editor_hint: + draw_rect(Rect2(-bounds.position.x - (screen.x/2), -bounds.position.y - (screen.y/2), screen.x + bounds.size.x + bounds.position.x, screen.y + bounds.size.y + bounds.position.y), Color.red, false) + draw_rect(rect, Color.yellow, false) diff --git a/src/stage/GameCamera.tscn b/src/stage/GameCamera.tscn index 6c486dd..b0ce3bb 100644 --- a/src/stage/GameCamera.tscn +++ b/src/stage/GameCamera.tscn @@ -2,8 +2,6 @@ [ext_resource path="res://src/stage/GameCamera.gd" type="Script" id=1] -[node name="GameCamera" type="Camera2D" groups=[ -"game_camera", -]] +[node name="GameCamera" type="Camera2D" groups=["game_camera"]] current = true script = ExtResource( 1 ) From 54ea3cff32b16d76b6991ff2ff417667af2eb3b3 Mon Sep 17 00:00:00 2001 From: Harmony Honey Monroe Date: Mon, 24 Feb 2025 20:27:20 -0500 Subject: [PATCH 03/39] stage display lined up ! can remove excess tiles --- src/menu/select.gd | 4 ++-- src/menu/select.tscn | 3 ++- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/menu/select.gd b/src/menu/select.gd index 9c5b5e6..7adb5bd 100644 --- a/src/menu/select.gd +++ b/src/menu/select.gd @@ -9,7 +9,7 @@ var current_map := "1-1" onready var screens_node : Control = $Control/Screens onready var screen : Control = $Control/Screen export var screen_dist = Vector2(5, 5) -export var screen_size = Vector2(136, 104) +export var screen_size = Vector2(136, 96) export var columns = 8 var screen_pos := [] var screen_static := [] @@ -197,7 +197,7 @@ func _physics_process(delta): pop[2].add_child(inst) if is_instance_valid(cam): - inst.position += stage_size / 2 + inst.position -= cam.position screen_static[pop[0]].visible = false else: diff --git a/src/menu/select.tscn b/src/menu/select.tscn index 6abe422..b7dbe7b 100644 --- a/src/menu/select.tscn +++ b/src/menu/select.tscn @@ -69,7 +69,6 @@ script = ExtResource( 7 ) __meta__ = { "_edit_lock_": true } -screen_size = Vector2( 136, 96 ) [node name="Control" type="Control" parent="."] margin_right = 320.0 @@ -104,6 +103,8 @@ rect = Rect2( 0, 0, 136, 96 ) script = ExtResource( 4 ) [node name="Node2D" type="Node2D" parent="Control/Screen/Vis"] +position = Vector2( 68, 48 ) +z_index = -400 [node name="Static" type="ColorRect" parent="Control/Screen/Vis"] modulate = Color( 0.14, 0.14, 0.14, 1 ) From f22ee3b33a69ef7457a855f2a6c167cdec111503 Mon Sep 17 00:00:00 2001 From: Harmony Honey Monroe Date: Tue, 25 Feb 2025 01:01:01 -0500 Subject: [PATCH 04/39] Cam & CamBounds working (-= level select working too --- project.godot | 6 ---- src/actor/Player.gd | 2 +- src/autoload/Shared.gd | 62 ++--------------------------------- src/autoload/Shared.tscn | 7 +++- src/menu/Creator.tscn | 9 +++--- src/menu/StartMenu.gd | 7 ++-- src/menu/StartMenu.tscn | 7 ++-- src/menu/select.gd | 28 ++++++++-------- src/menu/select.tscn | 54 +++++++++++++++---------------- src/menu/splash.tscn | 7 ++-- src/stage/Cam.gd | 41 +++++++++++++++++++++++ src/stage/CamBounds.gd | 20 ++++++------ src/stage/GameCamera.gd | 68 --------------------------------------- src/stage/GameCamera.tscn | 7 ---- src/stage/preview.gd | 19 ----------- 15 files changed, 118 insertions(+), 226 deletions(-) create mode 100644 src/stage/Cam.gd delete mode 100644 src/stage/GameCamera.gd delete mode 100644 src/stage/GameCamera.tscn delete mode 100644 src/stage/preview.gd diff --git a/project.godot b/project.godot index fab076c..8d36831 100644 --- a/project.godot +++ b/project.godot @@ -54,11 +54,6 @@ _global_script_classes=[ { "language": "GDScript", "path": "res://src/class/savedict.gd" }, { -"base": "Resource", -"class": "StagePreview", -"language": "GDScript", -"path": "res://src/stage/preview.gd" -}, { "base": "Actor", "class": "Switch", "language": "GDScript", @@ -79,7 +74,6 @@ _global_script_class_icons={ "Passthrough": "", "Player": "", "SaveDict": "", -"StagePreview": "", "Switch": "", "SwitchBlock": "" } diff --git a/src/actor/Player.gd b/src/actor/Player.gd index 6ce41ea..cbffde8 100644 --- a/src/actor/Player.gd +++ b/src/actor/Player.gd @@ -71,7 +71,7 @@ func _ready(): btnx_array.append(0) # assign camera target - if !is_attract_mode and Shared.cam: + if !is_attract_mode: Shared.cam.node_target = self Shared.cam.pos_target_offset = Vector2(4, 4) diff --git a/src/autoload/Shared.gd b/src/autoload/Shared.gd index 84df606..793d928 100644 --- a/src/autoload/Shared.gd +++ b/src/autoload/Shared.gd @@ -2,10 +2,11 @@ extends Node onready var node_ghost := $Ghost onready var node_ghosts := $Ghosts +onready var cam := $Cam + var ghosts := [] var ghost_count := 10 -var cam : Camera2D var map_solid : TileMap var map_obscure : TileMap @@ -102,7 +103,7 @@ func _ready(): var dir = Directory.new() if !dir.open(save_path) == OK: dir.make_dir(save_path) - for i in range(save_limit) + ["map"]: + for i in save_limit: var s = save_path + str(i) if !dir.open(s) == OK: dir.make_dir(s) @@ -112,10 +113,6 @@ func _ready(): for i in dir_list(map_dir): scene_dict[map_dir + i] = load(map_dir + i) maps.append(i.split(".")[0]) - - #print("maps: ", maps, " ", maps.size(), " ", scene_dict) - - load_options() @@ -125,59 +122,6 @@ func _ready(): Wipe.connect("finish", self, "wipe_finish") -func make_preview(inst : Node, map_short): - # make preview - var sp = StagePreview.new() - sp.palette = inst.palette - - for c in inst.get_children(): - var cname = c.name.to_lower() - - var cells = [] - if "map" in cname: - cells = c.get_used_cells() - - if "spike" in cname: - for p in cells: - sp.spike += vec_string(p) + " " - - elif "solid" in cname: - for p in cells: - make_key(p, c, sp.solid, 1) - - elif "detail" in cname: - for p in cells: - make_key(p, c, sp.detail) - - elif "obscure" in cname: - for p in cells: - make_key(p, c, sp.obscure, 0) - - elif "camera" in cname: - var p = c.position - sp.camera = vec_string(p) - - elif "actors" in cname: - for a in c.get_children(): - var aname = a.name.to_lower() - - var p = Vector2.ZERO - if a is Node2D: - p = a.position - - if "player" in aname: - sp.player = vec_string(p) - - elif "exit" in aname: - sp.exit = vec_string(p) - - elif "box" in aname: - sp.box += vec_string(p) + " " - - - - ResourceSaver.save(save_path + "map/" + map_short + ".tres", sp) - func vec_string(p : Vector2): return str(int(p.x)) + "," + str(int(p.y)) diff --git a/src/autoload/Shared.tscn b/src/autoload/Shared.tscn index e059746..34e0d0f 100644 --- a/src/autoload/Shared.tscn +++ b/src/autoload/Shared.tscn @@ -1,8 +1,9 @@ -[gd_scene load_steps=5 format=2] +[gd_scene load_steps=6 format=2] [ext_resource path="res://src/autoload/Shared.gd" type="Script" id=1] [ext_resource path="res://media/image/player_swap.png" type="Texture" id=2] [ext_resource path="res://src/shader/player_palette_swap.gdshader" type="Shader" id=3] +[ext_resource path="res://src/stage/Cam.gd" type="Script" id=4] [sub_resource type="ShaderMaterial" id=1] shader = ExtResource( 3 ) @@ -32,3 +33,7 @@ vframes = 2 region_rect = Rect2( 0, 0, 8, 24 ) [node name="Ghosts" type="Node2D" parent="."] + +[node name="Cam" type="Camera2D" parent="." groups=["game_camera"]] +current = true +script = ExtResource( 4 ) diff --git a/src/menu/Creator.tscn b/src/menu/Creator.tscn index 2841b3f..40398e6 100644 --- a/src/menu/Creator.tscn +++ b/src/menu/Creator.tscn @@ -2,7 +2,7 @@ [ext_resource path="res://src/stage/SolidTileMap.tscn" type="PackedScene" id=1] [ext_resource path="res://media/image/player_swap.png" type="Texture" id=2] -[ext_resource path="res://src/stage/GameCamera.tscn" type="PackedScene" id=3] +[ext_resource path="res://src/stage/CamBounds.gd" type="Script" id=3] [ext_resource path="res://src/stage/DetailTileMap.tscn" type="PackedScene" id=4] [ext_resource path="res://media/image/tinyArrow.png" type="Texture" id=5] [ext_resource path="res://media/image/creator.png" type="Texture" id=6] @@ -252,9 +252,10 @@ z_index = -11 tile_set = SubResource( 22 ) tile_data = PoolIntArray( 65516, 5, 0, 65517, 5, 0, 65518, 5, 0, 65519, 5, 0, 65520, 5, 0, 131052, 5, 0, 131053, 5, 0, 131054, 5, 0, 131055, 5, 0, 131056, 5, 0, 196588, 1073741829, 2, 196589, 5, 0, 196590, 5, 0, 196591, 5, 0, 196592, 1610612741, 2, 262125, 1073741829, 2, 262126, 5, 0, 262127, 1610612741, 2, 327662, 6, 0, 393198, 6, 0, 524273, 1073741829, 2, 524275, -1610612731, 2, 589811, -1610612731, 0, 655347, -1610612731, 0 ) -[node name="GameCamera" parent="." instance=ExtResource( 3 )] +[node name="CamBounds" type="Node2D" parent="."] position = Vector2( -92, 48 ) -zoom = Vector2( 0.5, 0.5 ) +scale = Vector2( 0.5, 0.5 ) +script = ExtResource( 3 ) [node name="Player" type="Node2D" parent="."] position = Vector2( -120, 40 ) @@ -1353,5 +1354,3 @@ margin_bottom = 7.0 custom_fonts/font = SubResource( 14 ) text = "random" align = 1 - -[editable path="GameCamera"] diff --git a/src/menu/StartMenu.gd b/src/menu/StartMenu.gd index c9f2035..17a1c0d 100644 --- a/src/menu/StartMenu.gd +++ b/src/menu/StartMenu.gd @@ -9,6 +9,7 @@ onready var user_label := $Username/Label onready var menu_stuff := main_menu.get_children() onready var credits_node := $Credits onready var stage := $Stage +onready var cam := Shared.cam export var open_player_path : NodePath = "" onready var open_player_mat : ShaderMaterial = get_node(open_player_path).material @@ -125,13 +126,13 @@ func menu_select(tag : String = menu_items[clamp(cursor, 0, menu_items.size() - "options": open_sub(OptionsMenu) Audio.play("menu_options", 0.9, 1.1) - Shared.cam.pos_target += Vector2(24, -4) + cam.pos_target += Vector2(24, -4) "credits": is_credits = true credits_node.visible = true if parent_node: parent_node.visible = false - Shared.cam.pos_target += Vector2(104, 0) + cam.pos_target += Vector2(104, 0) Audio.play("menu_options", 0.9, 1.1) UI.keys(false, false, false, false) TouchScreen.show_keys() @@ -167,7 +168,7 @@ func menu_select(tag : String = menu_items[clamp(cursor, 0, menu_items.size() - func on_close_sub(): - Shared.cam.pos_target = Vector2(90, 76) + cam.pos_target = Vector2(90, 76) UI.keys(false) func switch_menu(arg, silent := false, _cursor := 0): diff --git a/src/menu/StartMenu.tscn b/src/menu/StartMenu.tscn index 0fdc56c..e074215 100644 --- a/src/menu/StartMenu.tscn +++ b/src/menu/StartMenu.tscn @@ -3,6 +3,7 @@ [ext_resource path="res://media/image/creator.png" type="Texture" id=1] [ext_resource path="res://media/image/crate_tiles.png" type="Texture" id=2] [ext_resource path="res://src/menu/StartMenu.gd" type="Script" id=3] +[ext_resource path="res://src/stage/CamBounds.gd" type="Script" id=4] [ext_resource path="res://media/font/ThaleahFat.ttf" type="DynamicFontData" id=5] [ext_resource path="res://media/font/ExpressionPro.ttf" type="DynamicFontData" id=6] [ext_resource path="res://media/image/8pixel.png" type="Texture" id=7] @@ -11,7 +12,6 @@ [ext_resource path="res://src/menu/AttractMode.gd" type="Script" id=10] [ext_resource path="res://src/stage/SolidTileMap.tscn" type="PackedScene" id=11] [ext_resource path="res://src/actor/Player.tscn" type="PackedScene" id=12] -[ext_resource path="res://src/stage/GameCamera.tscn" type="PackedScene" id=13] [ext_resource path="res://src/actor/SwitchBlockBlue.tscn" type="PackedScene" id=14] [ext_resource path="res://src/actor/SwitchBlue.tscn" type="PackedScene" id=15] [ext_resource path="res://media/image/menu.png" type="Texture" id=16] @@ -1084,8 +1084,9 @@ z_index = -11 tile_set = SubResource( 29 ) tile_data = PoolIntArray( 131093, 536870916, 3, 131094, 4, 1, 131095, 4, 0, 131096, 4, 3, 196624, 5, 2, 196625, 5, 0, 196626, -1610612731, 2, 196630, 536870916, 0, 196631, 4, 1, 196632, 4, 0, 262154, 536870916, 3, 262155, 536870916, 0, 262156, 4, 3, 262159, 5, 2, 262160, 5, 0, 262161, 5, 0, 262162, 5, 0, 262163, -1610612731, 2, 262166, 4, 1, 262167, 4, 0, 262168, 4, 1, 327685, 5, 2, 327686, 5, 0, 327687, 5, 0, 327688, 5, 0, 327689, 536870917, 2, 327690, 536870916, 0, 327691, 4, 1, 327692, 4, 0, 327695, -1610612731, 0, 327696, 5, 0, 327697, 5, 0, 327698, 5, 0, 327699, -1073741819, 0, 327701, 536870916, 3, 327702, 4, 0, 327703, 4, 1, 327704, 536870916, 2, 393221, -1073741819, 0, 393227, 4, 1, 393228, 4, 0, 393229, 4, 3, 393231, -1073741819, 2, 393232, 5, 0, 393233, 5, 0, 393234, 5, 0, 393235, -536870907, 2, 393237, 536870916, 0, 393238, 4, 1, 393239, 536870916, 0, 458757, -1073741819, 2, 458759, -1610612731, 2, 458762, 4, 1, 458763, 536870916, 0, 458764, 4, 1, 458765, 4, 0, 458768, -1073741819, 2, 458769, 5, 0, 458770, 1610612741, 2, 458773, 4, 2, 458774, 4, 0, 458775, 4, 1, 458776, 4, 3, 524295, -1610612731, 0, 524298, 4, 2, 524299, 4, 1, 524300, 536870916, 0, 524301, 4, 1, 524302, 4, 3, 524305, 6, 0, 524310, 4, 2, 524311, 536870916, 0, 524312, 536870916, 2, 589831, -1610612730, 0, 589832, -1610612731, 0, 589836, 4, 2, 589837, 4, 1, 589838, 4, 0, 589839, 4, 3, 589841, 6, 0, 589842, -536870907, 2, 655367, -1610612731, 0, 655373, 536870916, 3, 655374, 4, 1, 655375, 536870916, 0, 655377, 6, 0, 720901, -2147483643, 2, 720903, -536870907, 2, 720905, 5, 2, 720906, 5, 0, 720907, 5, 0, 720908, 536870917, 2, 720909, 536870916, 3, 720910, 536870916, 0, 720911, 536870916, 2, 720912, 5, 2, 720913, 6, 0, 720914, 5, 0, 720915, 536870917, 2, 720917, 5, 2, 720918, 5, 0, 720919, 536870917, 2, 786437, -2147483643, 0, 786441, -1073741819, 0, 786455, -1610612731, 0, 851973, -1073741819, 2, 851974, 1610612741, 2, 851977, 1073741829, 2, 851978, 5, 0, 851979, 1610612741, 2, 851982, 4, 1, 851983, 4, 0, 851987, 1073741829, 2, 851988, 5, 0, 851989, 6, 0, 851990, 5, 0, 851991, -536870907, 2, 917517, 536870916, 0, 917518, 4, 1, 917519, 536870916, 2, 917525, 1610612741, 2, 983053, 4, 2, 983054, 4, 0, 983055, 536870916, 2 ) -[node name="GameCamera" parent="Stage" instance=ExtResource( 13 )] +[node name="CamBounds" type="Node2D" parent="Stage"] position = Vector2( 90, 76 ) +script = ExtResource( 4 ) bounds = Rect2( 300, 200, 300, 200 ) [node name="Actors" type="Node2D" parent="Stage"] @@ -1181,5 +1182,3 @@ margin_right = 126.0 margin_bottom = 54.0 custom_fonts/font = SubResource( 28 ) text = "long_name1234567" - -[editable path="Stage/GameCamera"] diff --git a/src/menu/select.gd b/src/menu/select.gd index 7adb5bd..4bd4f3b 100644 --- a/src/menu/select.gd +++ b/src/menu/select.gd @@ -1,6 +1,6 @@ extends Node2D -onready var cam : Camera2D = $Camera2D +onready var cam : Camera2D = Shared.cam onready var cursor_node := $Cursor var cursor = 0 @@ -110,7 +110,7 @@ func _ready(): overlays.resize(screen_pos.size()) scroll(Shared.map_select) - cam.reset_smoothing() + cam.set_pos(cam.pos_target) screen_list.sort_custom(self, "sort_list") is_screening = true @@ -193,11 +193,11 @@ func _physics_process(delta): var pop = load_list.pop_front() if Shared.scene_dict.has(pop[1]): var inst = Shared.scene_dict[pop[1]].instance() - var cam = inst.get_node("CamBounds") + var cb = inst.get_node("CamBounds") pop[2].add_child(inst) - if is_instance_valid(cam): - inst.position -= cam.position + if is_instance_valid(cb): + inst.position -= cb.position screen_static[pop[0]].visible = false else: @@ -211,20 +211,20 @@ func make_screen(i := 0): var is_locked = Shared.count_gems < map_lock[map_name] new.rect_position = screen_pos[i] - new.get_node("Overlay/HBox/Label").text = (str(map_lock[map_name]) + " to unlock") if is_locked else map_name - new.get_node("Overlay/HBox/Gem").visible = is_locked + new.get_node("Vis/Overlay/HBox/Label").text = (str(map_lock[map_name]) + " to unlock") if is_locked else map_name + new.get_node("Vis/Overlay/HBox/Gem").visible = is_locked var s = {} if Shared.save_maps.has(map_name): s = Shared.save_maps[map_name] var has_note = s.has("note") - new.get_node("Overlay/Notes").visible = has_note - var note_label = new.get_node("Overlay/Notes/Label") + new.get_node("Vis/Overlay/Notes").visible = has_note + var note_label = new.get_node("Vis/Overlay/Notes/Label") if has_note: note_label.text = Shared.time_to_string(s["note"]) - var gem = new.get_node("Overlay/Gem") + var gem = new.get_node("Vis/Overlay/Gem") gem.visible = !is_locked var has_time = s.has("time") @@ -235,9 +235,9 @@ func make_screen(i := 0): gem_label.text = Shared.time_to_string(s["time"]) var has_die = s.has("die") - new.get_node("Overlay/Death").visible = has_die + new.get_node("Vis/Overlay/Death").visible = has_die if has_die: - new.get_node("Overlay/Death/Label").text = str(s["die"]) + new.get_node("Vis/Overlay/Death/Label").text = str(s["die"]) if is_faster and i == Shared.map_select: blink_label = note_label if is_faster_note else gem_label @@ -245,7 +245,7 @@ func make_screen(i := 0): Audio.play("menu_bell", 0.5, 1.0) screens_node.add_child(new) - overlays[i] = new.get_node("Overlay") + overlays[i] = new.get_node("Vis/Overlay") screen_static.append(new.get_node("Vis/Static")) view_scene(new.get_node("Vis/Node2D"), Shared.map_dir + map_list[i] + ".tscn", i) @@ -268,7 +268,7 @@ func scroll(arg := cursor): var sp = screen_pos[cursor] cursor_node.rect_position = sp score_node.rect_position = sp + Vector2(1, 1) - cam.position = sp + (screen_size * 0.5) + cam.pos_target = sp + (screen_size * 0.5) refresh_score() func show_scoreboard(arg := show_score): diff --git a/src/menu/select.tscn b/src/menu/select.tscn index b7dbe7b..4ef7c3e 100644 --- a/src/menu/select.tscn +++ b/src/menu/select.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=21 format=2] +[gd_scene load_steps=22 format=2] [ext_resource path="res://media/image/corner.png" type="Texture" id=1] [ext_resource path="res://media/font/QuinqueFive.ttf" type="DynamicFontData" id=2] @@ -11,6 +11,7 @@ [ext_resource path="res://media/image/diamond12.png" type="Texture" id=9] [ext_resource path="res://media/image/menu.png" type="Texture" id=10] [ext_resource path="res://media/image/skull.png" type="Texture" id=11] +[ext_resource path="res://src/stage/CamBounds.gd" type="Script" id=12] [ext_resource path="res://src/menu/cursor_anim.gd" type="Script" id=13] [sub_resource type="ShaderMaterial" id=8] @@ -70,6 +71,11 @@ __meta__ = { "_edit_lock_": true } +[node name="CamBounds" type="Node2D" parent="."] +position = Vector2( 178, 88 ) +script = ExtResource( 12 ) +bounds = Rect2( 9000, 9000, 9000, 9000 ) + [node name="Control" type="Control" parent="."] margin_right = 320.0 margin_bottom = 180.0 @@ -89,19 +95,19 @@ margin_bottom = 136.0 rect_min_size = Vector2( 136, 96 ) rect_clip_content = true -[node name="BG" type="Node2D" parent="Control/Screen"] +[node name="Vis" type="VisibilityNotifier2D" parent="Control/Screen"] +rect = Rect2( 0, 0, 136, 96 ) +script = ExtResource( 4 ) + +[node name="BG" type="Node2D" parent="Control/Screen/Vis"] z_index = -500 -[node name="ColorRect" type="ColorRect" parent="Control/Screen/BG"] +[node name="ColorRect" type="ColorRect" parent="Control/Screen/Vis/BG"] margin_right = 136.0 margin_bottom = 96.0 rect_min_size = Vector2( 136, 96 ) color = Color( 0, 0, 0, 1 ) -[node name="Vis" type="VisibilityNotifier2D" parent="Control/Screen"] -rect = Rect2( 0, 0, 136, 96 ) -script = ExtResource( 4 ) - [node name="Node2D" type="Node2D" parent="Control/Screen/Vis"] position = Vector2( 68, 48 ) z_index = -400 @@ -112,16 +118,16 @@ material = SubResource( 8 ) margin_right = 136.0 margin_bottom = 96.0 -[node name="Overlay" type="Control" parent="Control/Screen"] +[node name="Overlay" type="Control" parent="Control/Screen/Vis"] margin_right = 136.0 margin_bottom = 104.0 -[node name="HBox" type="HBoxContainer" parent="Control/Screen/Overlay"] +[node name="HBox" type="HBoxContainer" parent="Control/Screen/Vis/Overlay"] anchor_right = 1.0 anchor_bottom = 1.0 alignment = 1 -[node name="Gem" type="Control" parent="Control/Screen/Overlay/HBox"] +[node name="Gem" type="Control" parent="Control/Screen/Vis/Overlay/HBox"] margin_left = 48.0 margin_top = 44.0 margin_right = 64.0 @@ -129,13 +135,13 @@ margin_bottom = 60.0 rect_min_size = Vector2( 16, 16 ) size_flags_vertical = 4 -[node name="Sprite" type="Sprite" parent="Control/Screen/Overlay/HBox/Gem"] +[node name="Sprite" type="Sprite" parent="Control/Screen/Vis/Overlay/HBox/Gem"] modulate = Color( 1, 0.92549, 0.152941, 1 ) material = SubResource( 10 ) position = Vector2( 8, 8 ) texture = ExtResource( 9 ) -[node name="Label" type="Label" parent="Control/Screen/Overlay/HBox"] +[node name="Label" type="Label" parent="Control/Screen/Vis/Overlay/HBox"] margin_left = 68.0 margin_top = 49.0 margin_right = 88.0 @@ -146,17 +152,17 @@ text = "1-1" align = 1 valign = 1 -[node name="Death" type="Control" parent="Control/Screen/Overlay"] +[node name="Death" type="Control" parent="Control/Screen/Vis/Overlay"] margin_top = 96.0 margin_bottom = 96.0 -[node name="Clock" type="Sprite" parent="Control/Screen/Overlay/Death"] +[node name="Clock" type="Sprite" parent="Control/Screen/Vis/Overlay/Death"] material = SubResource( 3 ) position = Vector2( 8, -7 ) texture = ExtResource( 11 ) region_rect = Rect2( 15, 7, 10, 10 ) -[node name="Label" type="Label" parent="Control/Screen/Overlay/Death"] +[node name="Label" type="Label" parent="Control/Screen/Vis/Overlay/Death"] margin_left = 15.0 margin_top = -9.0 margin_right = 83.0 @@ -165,14 +171,14 @@ grow_horizontal = 2 custom_fonts/font = SubResource( 4 ) text = "79" -[node name="Notes" type="Control" parent="Control/Screen/Overlay"] +[node name="Notes" type="Control" parent="Control/Screen/Vis/Overlay"] -[node name="Sprite" type="Sprite" parent="Control/Screen/Overlay/Notes"] +[node name="Sprite" type="Sprite" parent="Control/Screen/Vis/Overlay/Notes"] material = SubResource( 3 ) position = Vector2( 10, 10 ) texture = ExtResource( 3 ) -[node name="Label" type="Label" parent="Control/Screen/Overlay/Notes"] +[node name="Label" type="Label" parent="Control/Screen/Vis/Overlay/Notes"] margin_left = 19.0 margin_top = 4.0 margin_right = 101.0 @@ -181,19 +187,19 @@ grow_horizontal = 2 custom_fonts/font = SubResource( 4 ) text = "12:34" -[node name="Gem" type="Control" parent="Control/Screen/Overlay"] +[node name="Gem" type="Control" parent="Control/Screen/Vis/Overlay"] margin_left = 136.0 margin_top = 96.0 margin_right = 136.0 margin_bottom = 96.0 -[node name="Sprite" type="Sprite" parent="Control/Screen/Overlay/Gem"] +[node name="Sprite" type="Sprite" parent="Control/Screen/Vis/Overlay/Gem"] modulate = Color( 0.513726, 0.462745, 0.611765, 1 ) material = SubResource( 9 ) position = Vector2( -12, -12 ) texture = ExtResource( 8 ) -[node name="Label" type="Label" parent="Control/Screen/Overlay/Gem"] +[node name="Label" type="Label" parent="Control/Screen/Vis/Overlay/Gem"] margin_left = -103.0 margin_top = -9.0 margin_right = -21.0 @@ -286,12 +292,6 @@ text = "12:67 long_name1234567 9. waahuu 10. thats it" -[node name="Camera2D" type="Camera2D" parent="."] -position = Vector2( 160, 90 ) -current = true -smoothing_enabled = true -editor_draw_screen = false - [node name="Cursor" type="Control" parent="."] modulate = Color( 1, 0.92549, 0.152941, 1 ) margin_left = 110.0 diff --git a/src/menu/splash.tscn b/src/menu/splash.tscn index 5075f02..21da7a9 100644 --- a/src/menu/splash.tscn +++ b/src/menu/splash.tscn @@ -1,6 +1,7 @@ -[gd_scene load_steps=3 format=2] +[gd_scene load_steps=4 format=2] [ext_resource path="res://media/image/title_splash-pixel.png" type="Texture" id=1] +[ext_resource path="res://src/stage/CamBounds.gd" type="Script" id=2] [ext_resource path="res://src/menu/splash.gd" type="Script" id=3] [node name="Splash" type="Node2D"] @@ -27,6 +28,6 @@ modulate = Color( 0, 0, 0, 1 ) position = Vector2( 114, 64 ) texture = ExtResource( 1 ) -[node name="Camera2D" type="Camera2D" parent="CanvasLayer/Center/Control"] +[node name="CamBounds" type="Node2D" parent="CanvasLayer/Center/Control"] position = Vector2( 114, 64 ) -current = true +script = ExtResource( 2 ) diff --git a/src/stage/Cam.gd b/src/stage/Cam.gd new file mode 100644 index 0000000..8bc26dd --- /dev/null +++ b/src/stage/Cam.gd @@ -0,0 +1,41 @@ +extends Camera2D + +var node_target : Node2D +var pos_target := Vector2.ZERO +var pos_target_offset := Vector2.ZERO +export var lerp_step := 0.1 +var lerp_pos := Vector2.ZERO + +var bounds_upper := Vector2.ZERO +var bounds_lower := Vector2.ZERO + + +func set_pos(arg : Vector2 = position): + position = arg + lerp_pos = position + pos_target = position + +func _ready(): + set_pos() + + Wipe.connect("finish", self, "wipe_finish") + +func wipe_finish(): + node_target = null + pos_target_offset = Vector2.ZERO + +func _physics_process(delta): + if is_instance_valid(node_target): + pos_target = node_target.position + pos_target_offset + pos_target.x = clamp(pos_target.x, bounds_upper.x, bounds_lower.x) + pos_target.y = clamp(pos_target.y, bounds_upper.y, bounds_lower.y) + + # smoothing + lerp_pos = lerp_pos.linear_interpolate(pos_target, clamp(lerp_step, 0, 1)) + position = lerp_pos.round() + +# super simple screen shake +func shake(dist : int): + position.x += dist if randf() < 0.5 else -dist + position.y += dist if randf() < 0.5 else -dist + lerp_pos = position diff --git a/src/stage/CamBounds.gd b/src/stage/CamBounds.gd index 335e3aa..c4b0ba5 100644 --- a/src/stage/CamBounds.gd +++ b/src/stage/CamBounds.gd @@ -3,20 +3,22 @@ extends Node2D export var bounds := Rect2(0, 0, 0, 0) setget _set_bounds -var bounds_upper := Vector2.ZERO -var bounds_lower := Vector2.ZERO - +var cam var rect : Rect2 var screen = Vector2(228, 128) func _ready(): rect = Rect2(-screen/2, screen) - # set limits - bounds_upper.x = -bounds.position.x + position.x - bounds_upper.y = -bounds.position.y + position.y - bounds_lower.x = bounds.size.x + position.x - bounds_lower.y = bounds.size.y + position.y - print("CamBounds upper: ", bounds_upper, " lower: ", bounds_lower) + + if (!Shared.is_level_select or get_parent().name == "Select") and is_instance_valid(Shared.cam): + cam = Shared.cam + cam.bounds_upper = position - bounds.position + cam.bounds_lower = bounds.size + position + + cam.set_pos(global_position) + cam.zoom = scale + + print("CamBounds upper: ", cam.bounds_upper, " lower: ", cam.bounds_lower) func _set_bounds(arg): bounds.position.x = abs(arg.position.x) diff --git a/src/stage/GameCamera.gd b/src/stage/GameCamera.gd deleted file mode 100644 index 5911347..0000000 --- a/src/stage/GameCamera.gd +++ /dev/null @@ -1,68 +0,0 @@ -tool -extends Camera2D - -export var is_moving := true - -var node_target : Node2D -var pos_target := Vector2.ZERO -var pos_target_offset := Vector2.ZERO -export var lerp_step := 0.1 -var lerp_pos := Vector2.ZERO - -export var is_focal_point := false -# between 0.0 and 1.0, distance of lerp between focal point and target -export var target_influence := 0.5 - -var node_bounds : ColorRect -var bounds_upper := Vector2.ZERO -var bounds_lower := Vector2.ZERO - -export var bounds := Rect2(0, 0, 0, 0) setget _set_bounds - -func _ready(): - if Engine.editor_hint or Shared.is_level_select: - set_physics_process(false) - return - - Shared.cam = self - - # set limits - bounds_upper.x = -bounds.position.x + position.x - bounds_upper.y = -bounds.position.y + position.y - bounds_lower.x = bounds.size.x + position.x - bounds_lower.y = bounds.size.y + position.y - print("GameCamera - bounds upper: ", bounds_upper, " lower: ", bounds_lower) - - # set vars - lerp_pos = position - pos_target = position - -func _physics_process(delta): - if !is_moving or Engine.editor_hint: - return - - if is_instance_valid(node_target): - pos_target = node_target.position + pos_target_offset - pos_target.x = clamp(pos_target.x, bounds_upper.x, bounds_lower.x) - pos_target.y = clamp(pos_target.y, bounds_upper.y, bounds_lower.y) - - # smoothing - lerp_pos = lerp_pos.linear_interpolate(pos_target, lerp_step) - position = lerp_pos.round() - -func _set_bounds(arg): - bounds.position.x = abs(arg.position.x) - bounds.position.y = abs(arg.position.y) - bounds.size.x = abs(arg.size.x) - bounds.size.y = abs(arg.size.y) - update() - -func _draw(): - if Engine.editor_hint: - draw_rect(Rect2(-bounds.position.x - 228/2, -bounds.position.y - 128/2, 228 + bounds.size.x + bounds.position.x, 128 + bounds.size.y + bounds.position.y), Color.red, false) - -# super simple screen shake -func shake(dist : int): - position.x += dist if randf() < 0.5 else -dist - position.y += dist if randf() < 0.5 else -dist - lerp_pos = position diff --git a/src/stage/GameCamera.tscn b/src/stage/GameCamera.tscn deleted file mode 100644 index b0ce3bb..0000000 --- a/src/stage/GameCamera.tscn +++ /dev/null @@ -1,7 +0,0 @@ -[gd_scene load_steps=2 format=2] - -[ext_resource path="res://src/stage/GameCamera.gd" type="Script" id=1] - -[node name="GameCamera" type="Camera2D" groups=["game_camera"]] -current = true -script = ExtResource( 1 ) diff --git a/src/stage/preview.gd b/src/stage/preview.gd deleted file mode 100644 index 634ce54..0000000 --- a/src/stage/preview.gd +++ /dev/null @@ -1,19 +0,0 @@ -extends Resource -class_name StagePreview - -export var file_md5 := "" - -export var palette := 0 - -export var camera := "" -export var player := "" -export var exit := "" -export var box := "" - -export var spike := "" - -export var solid := {} -export var detail := {} -export var obscure := {} - -# ID CO-ORDS.x is_transpose + is_x + is_y From 56ec7561e1580fc5bb1330223a4d378bfc2e5abb Mon Sep 17 00:00:00 2001 From: Harmony Honey Monroe Date: Tue, 25 Feb 2025 02:06:04 -0500 Subject: [PATCH 05/39] take screenshots of every level --- src/actor/BoxSpawner.gd | 2 ++ src/actor/ExitStar.gd | 3 +++ src/actor/Switch.gd | 4 ++-- src/autoload/Shared.gd | 22 ++-------------------- src/menu/splash.gd | 30 ++++++++++++++++++++++++++++++ src/menu/splash.tscn | 14 ++++++++++++++ 6 files changed, 53 insertions(+), 22 deletions(-) diff --git a/src/actor/BoxSpawner.gd b/src/actor/BoxSpawner.gd index 8d5297f..17536ca 100644 --- a/src/actor/BoxSpawner.gd +++ b/src/actor/BoxSpawner.gd @@ -13,6 +13,8 @@ export var color := "red" var box = preload("res://src/actor/Box.tscn") func _ready(): + if Shared.is_level_select: return + for i in get_tree().get_nodes_in_group("switch_" + color): i.connect("press", self, "release") diff --git a/src/actor/ExitStar.gd b/src/actor/ExitStar.gd index e3fcc96..9cde57e 100644 --- a/src/actor/ExitStar.gd +++ b/src/actor/ExitStar.gd @@ -26,6 +26,9 @@ func _ready(): rot_speed += rand_range(-rot_speed_diff, rot_speed_diff) if randf() > 0.5: rot_speed = -rot_speed + + for i in 5: + _physics_process(1.0/60.0) func _physics_process(delta): counter += delta diff --git a/src/actor/Switch.gd b/src/actor/Switch.gd index 9bc9757..d2e3e04 100644 --- a/src/actor/Switch.gd +++ b/src/actor/Switch.gd @@ -14,11 +14,11 @@ signal press signal release func _enter_tree(): - if Engine.editor_hint: return + if Engine.editor_hint or Shared.is_level_select: return add_to_group("switch_" + color) func _physics_process(delta): - if Engine.editor_hint: return + if Engine.editor_hint or Shared.is_level_select: return is_last = is_on is_on = is_area_solid_actor(position.x, position.y) diff --git a/src/autoload/Shared.gd b/src/autoload/Shared.gd index 793d928..b36997e 100644 --- a/src/autoload/Shared.gd +++ b/src/autoload/Shared.gd @@ -103,7 +103,8 @@ func _ready(): var dir = Directory.new() if !dir.open(save_path) == OK: dir.make_dir(save_path) - for i in save_limit: + + for i in range(save_limit) + ["map"]: var s = save_path + str(i) if !dir.open(s) == OK: dir.make_dir(s) @@ -122,25 +123,6 @@ func _ready(): Wipe.connect("finish", self, "wipe_finish") -func vec_string(p : Vector2): - return str(int(p.x)) + "," + str(int(p.y)) - -func make_key(p : Vector2, c : TileMap, dict : Dictionary, skip_id := -1): - var id = c.get_cellv(p) - if id == skip_id: - return - var coord = c.get_cell_autotile_coord(p.x, p.y) - - var t = c.is_cell_transposed(p.x, p.y) - var x = c.is_cell_x_flipped(p.x, p.y) - var y = c.is_cell_y_flipped(p.x, p.y) - var key = str(id) + " " + str(int(coord.x)) + " " + str(int(t)) + str(int(x)) + str(int(y)) - - if !dict.has(key): - dict[key] = "" - - dict[key] += vec_string(p) + " " - func _input(event): var joy = event is InputEventJoypadButton or event is InputEventJoypadMotion if is_gamepad != joy: diff --git a/src/menu/splash.gd b/src/menu/splash.gd index 886459a..de4e097 100644 --- a/src/menu/splash.gd +++ b/src/menu/splash.gd @@ -1,8 +1,38 @@ extends Node2D +onready var viewport := $ViewportContainer/Viewport +onready var view_node := $ViewportContainer/Viewport/Node2D + func _ready(): + + Shared.is_level_select = true + for i in Shared.scene_dict.keys(): + var inst = Shared.scene_dict[i].instance() + + for c in view_node.get_children(): + c.queue_free() + + view_node.add_child(inst) + + var cb = inst.get_node("CamBounds") + if is_instance_valid(cb): + inst.position -= cb.position + var ps = inst.get_node("Actors/Player/Sprite") + if is_instance_valid(ps): + ps.material = null + + for f in 2: + yield(get_tree(), "idle_frame") + + var image = viewport.get_texture().get_data() + image.flip_y() + + image.save_png("user://save/map/" + str(i).split("/")[-1].trim_suffix(".tscn") + ".png") + + yield(get_tree(), "idle_frame") Music.play() Audio.play("menu_bell") yield(get_tree().create_timer(1.5), "timeout") Shared.wipe_scene(Shared.main_menu_path) + diff --git a/src/menu/splash.tscn b/src/menu/splash.tscn index 21da7a9..d00fa0a 100644 --- a/src/menu/splash.tscn +++ b/src/menu/splash.tscn @@ -31,3 +31,17 @@ texture = ExtResource( 1 ) [node name="CamBounds" type="Node2D" parent="CanvasLayer/Center/Control"] position = Vector2( 114, 64 ) script = ExtResource( 2 ) + +[node name="ViewportContainer" type="ViewportContainer" parent="."] +margin_left = -163.0 +margin_top = -120.0 +margin_right = -27.0 +margin_bottom = -24.0 + +[node name="Viewport" type="Viewport" parent="ViewportContainer"] +size = Vector2( 136, 96 ) +handle_input_locally = false +render_target_update_mode = 3 + +[node name="Node2D" type="Node2D" parent="ViewportContainer/Viewport"] +position = Vector2( 68, 48 ) From ee2dfaa0b80649f08b23cdd9161df6e0445e8ee9 Mon Sep 17 00:00:00 2001 From: Harmony Honey Monroe Date: Tue, 25 Feb 2025 02:15:47 -0500 Subject: [PATCH 06/39] color invert after screenshots --- src/menu/splash.gd | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/menu/splash.gd b/src/menu/splash.gd index de4e097..5d76233 100644 --- a/src/menu/splash.gd +++ b/src/menu/splash.gd @@ -1,10 +1,16 @@ extends Node2D +onready var color_rect := $CanvasLayer/ColorRect +onready var logo := $CanvasLayer/Center/Control/Logo + onready var viewport := $ViewportContainer/Viewport onready var view_node := $ViewportContainer/Viewport/Node2D func _ready(): + color_rect.modulate = Color.black + logo.modulate = Color.white + Shared.is_level_select = true for i in Shared.scene_dict.keys(): var inst = Shared.scene_dict[i].instance() @@ -31,6 +37,10 @@ func _ready(): yield(get_tree(), "idle_frame") + + color_rect.modulate = Color.white + logo.modulate = Color.black + Music.play() Audio.play("menu_bell") yield(get_tree().create_timer(1.5), "timeout") From f75b735580816d23ce4e70423b1755df71edbb6c Mon Sep 17 00:00:00 2001 From: Harmony Honey Monroe Date: Tue, 25 Feb 2025 03:58:21 -0500 Subject: [PATCH 07/39] sheet.png & sheet.tres, showing map images on select (-= --- src/actor/BoxSpawner.gd | 4 +- src/actor/BoxSpawner.tscn | 1 + src/actor/ExitStar.gd | 3 -- src/autoload/Shared.gd | 4 +- src/menu/select.gd | 6 ++- src/menu/select.tscn | 10 ++++- src/menu/splash.gd | 83 +++++++++++++++++++++++++++----------- src/menu/splash.tscn | 1 + src/stage/sheet.png | Bin 0 -> 48459 bytes src/stage/sheet.tres | 45 +++++++++++++++++++++ 10 files changed, 125 insertions(+), 32 deletions(-) create mode 100644 src/stage/sheet.png create mode 100644 src/stage/sheet.tres diff --git a/src/actor/BoxSpawner.gd b/src/actor/BoxSpawner.gd index 17536ca..e9650fe 100644 --- a/src/actor/BoxSpawner.gd +++ b/src/actor/BoxSpawner.gd @@ -13,7 +13,9 @@ export var color := "red" var box = preload("res://src/actor/Box.tscn") func _ready(): - if Shared.is_level_select: return + if Shared.is_level_select: + node_anim.advance(0.5) + return for i in get_tree().get_nodes_in_group("switch_" + color): i.connect("press", self, "release") diff --git a/src/actor/BoxSpawner.tscn b/src/actor/BoxSpawner.tscn index d6c2c8e..a2a4720 100644 --- a/src/actor/BoxSpawner.tscn +++ b/src/actor/BoxSpawner.tscn @@ -96,6 +96,7 @@ vframes = 8 frame = 15 [node name="Sprite2" type="Sprite" parent="."] +visible = false position = Vector2( 4, 4 ) z_index = 50 z_as_relative = false diff --git a/src/actor/ExitStar.gd b/src/actor/ExitStar.gd index 9cde57e..e3fcc96 100644 --- a/src/actor/ExitStar.gd +++ b/src/actor/ExitStar.gd @@ -26,9 +26,6 @@ func _ready(): rot_speed += rand_range(-rot_speed_diff, rot_speed_diff) if randf() > 0.5: rot_speed = -rot_speed - - for i in 5: - _physics_process(1.0/60.0) func _physics_process(delta): counter += delta diff --git a/src/autoload/Shared.gd b/src/autoload/Shared.gd index b36997e..16b358c 100644 --- a/src/autoload/Shared.gd +++ b/src/autoload/Shared.gd @@ -48,6 +48,8 @@ var bus_volume = [10, 10, 10] var actors := [] var player +var map_dict : Dictionary = load("res://src/stage/sheet.tres").dict + var map_select := 0 var maps := [] var map_name := "" @@ -104,7 +106,7 @@ func _ready(): if !dir.open(save_path) == OK: dir.make_dir(save_path) - for i in range(save_limit) + ["map"]: + for i in save_limit: var s = save_path + str(i) if !dir.open(s) == OK: dir.make_dir(s) diff --git a/src/menu/select.gd b/src/menu/select.gd index 4bd4f3b..dc20e88 100644 --- a/src/menu/select.gd +++ b/src/menu/select.gd @@ -244,10 +244,14 @@ func make_screen(i := 0): print("faster ", i, ", blink_label ", blink_label) Audio.play("menu_bell", 0.5, 1.0) + var sprite = new.get_node("Vis/Sprite") + var dict = Shared.map_dict[map_name] + sprite.region_rect = Rect2(screen_size * Vector2(dict[0], dict[1]), screen_size) + screens_node.add_child(new) overlays[i] = new.get_node("Vis/Overlay") screen_static.append(new.get_node("Vis/Static")) - view_scene(new.get_node("Vis/Node2D"), Shared.map_dir + map_list[i] + ".tscn", i) + #view_scene(new.get_node("Vis/Node2D"), Shared.map_dir + map_list[i] + ".tscn", i) # view a scene inside the viewport by path func view_scene(port, path, arg): diff --git a/src/menu/select.tscn b/src/menu/select.tscn index 4ef7c3e..33e7ec6 100644 --- a/src/menu/select.tscn +++ b/src/menu/select.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=22 format=2] +[gd_scene load_steps=23 format=2] [ext_resource path="res://media/image/corner.png" type="Texture" id=1] [ext_resource path="res://media/font/QuinqueFive.ttf" type="DynamicFontData" id=2] @@ -13,6 +13,7 @@ [ext_resource path="res://media/image/skull.png" type="Texture" id=11] [ext_resource path="res://src/stage/CamBounds.gd" type="Script" id=12] [ext_resource path="res://src/menu/cursor_anim.gd" type="Script" id=13] +[ext_resource path="res://src/stage/sheet.png" type="Texture" id=14] [sub_resource type="ShaderMaterial" id=8] shader = ExtResource( 5 ) @@ -93,7 +94,6 @@ margin_top = 40.0 margin_right = 246.0 margin_bottom = 136.0 rect_min_size = Vector2( 136, 96 ) -rect_clip_content = true [node name="Vis" type="VisibilityNotifier2D" parent="Control/Screen"] rect = Rect2( 0, 0, 136, 96 ) @@ -118,6 +118,12 @@ material = SubResource( 8 ) margin_right = 136.0 margin_bottom = 96.0 +[node name="Sprite" type="Sprite" parent="Control/Screen/Vis"] +texture = ExtResource( 14 ) +centered = false +region_enabled = true +region_rect = Rect2( 0, 0, 136, 96 ) + [node name="Overlay" type="Control" parent="Control/Screen/Vis"] margin_right = 136.0 margin_bottom = 104.0 diff --git a/src/menu/splash.gd b/src/menu/splash.gd index 5d76233..a3e0159 100644 --- a/src/menu/splash.gd +++ b/src/menu/splash.gd @@ -1,5 +1,7 @@ extends Node2D +export var is_build_sheet := false + onready var color_rect := $CanvasLayer/ColorRect onready var logo := $CanvasLayer/Center/Control/Logo @@ -7,42 +9,75 @@ onready var viewport := $ViewportContainer/Viewport onready var view_node := $ViewportContainer/Viewport/Node2D func _ready(): + if is_build_sheet: + color_rect.modulate = Color.black + logo.modulate = Color.white - color_rect.modulate = Color.black - logo.modulate = Color.white - - Shared.is_level_select = true - for i in Shared.scene_dict.keys(): - var inst = Shared.scene_dict[i].instance() + yield(get_tree(), "idle_frame") - for c in view_node.get_children(): - c.queue_free() + Shared.is_level_select = true + Shared.map_dict = {} + var ix = 136 + var iy = 96 + var vx = 5 + var vy = 8 - view_node.add_child(inst) + var image_sheet = viewport.get_texture().get_data() + image_sheet.resize(ix * vx, iy * vy) - var cb = inst.get_node("CamBounds") - if is_instance_valid(cb): - inst.position -= cb.position - var ps = inst.get_node("Actors/Player/Sprite") - if is_instance_valid(ps): - ps.material = null - - for f in 2: + for i in Shared.maps.size(): + var dx = int(i % vx) + var dy = int(floor(i / vx)) + var s = str(Shared.maps[i]) + Shared.map_dict[s] = [dx,dy,0,0,0,0,0,0] + var dict = Shared.map_dict[s] + + var inst = load(Shared.map_dir + s + ".tscn").instance() + + for c in view_node.get_children(): + c.queue_free() + + view_node.add_child(inst) + + var cb = inst.get_node("CamBounds") + if is_instance_valid(cb): + inst.position -= cb.position + dict[2] = int(cb.position.x) + dict[3] = int(cb.position.y) + + var p = inst.get_node("Actors/Player") + if is_instance_valid(p): + p.visible = false + dict[4] = int(p.position.x) + dict[5] = int(p.position.y) + + var e = inst.get_node("Actors/Exit") + if is_instance_valid(e): + e.visible = false + dict[6] = int(e.position.x) + dict[7] = int(e.position.y) + yield(get_tree(), "idle_frame") + + var image = viewport.get_texture().get_data() + image.flip_y() + + image_sheet.blit_rect(image, Rect2(0, 0, ix, iy), Vector2(dx * ix, dy * iy)) + image_sheet.save_png("res://src/stage/sheet.png") - var image = viewport.get_texture().get_data() - image.flip_y() + var sd := SaveDict.new() + sd.dict = Shared.map_dict - image.save_png("user://save/map/" + str(i).split("/")[-1].trim_suffix(".tscn") + ".png") - - - yield(get_tree(), "idle_frame") + ResourceSaver.save("res://src/stage/sheet.tres", sd) + + yield(get_tree(), "idle_frame") color_rect.modulate = Color.white logo.modulate = Color.black - Music.play() Audio.play("menu_bell") + yield(get_tree().create_timer(1.5), "timeout") + Shared.wipe_scene(Shared.main_menu_path) diff --git a/src/menu/splash.tscn b/src/menu/splash.tscn index d00fa0a..8bfdfb0 100644 --- a/src/menu/splash.tscn +++ b/src/menu/splash.tscn @@ -6,6 +6,7 @@ [node name="Splash" type="Node2D"] script = ExtResource( 3 ) +is_build_sheet = true [node name="CanvasLayer" type="CanvasLayer" parent="."] layer = 9 diff --git a/src/stage/sheet.png b/src/stage/sheet.png new file mode 100644 index 0000000000000000000000000000000000000000..9c0258351f4e8c56e3dea2b760ad14299e9dc8e6 GIT binary patch literal 48459 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 literal 0 HcmV?d00001 diff --git a/src/stage/sheet.tres b/src/stage/sheet.tres new file mode 100644 index 0000000..b57099c --- /dev/null +++ b/src/stage/sheet.tres @@ -0,0 +1,45 @@ +[gd_resource type="Resource" load_steps=2 format=2] + +[ext_resource path="res://src/class/savedict.gd" type="Script" id=1] + +[resource] +script = ExtResource( 1 ) +dict = { +"1-1": [ 0, 0, 0, 0, -40, 8, 45, 5 ], +"1-2": [ 1, 0, 0, 0, -48, 24, 45, -19 ], +"1-3": [ 2, 0, -24, -16, -92, 24, -67, -51 ], +"1-4": [ 3, 0, 16, 0, 40, 32, -51, -27 ], +"1-5": [ 4, 0, 32, -24, 34, 16, 53, -67 ], +"1-6": [ 0, 1, 8, -24, -12, -8, -3, -67 ], +"1-7": [ 1, 1, 16, -40, -4, -8, 77, -75 ], +"1-8": [ 2, 1, 0, -48, -4, -8, -3, -83 ], +"2-1": [ 3, 1, 40, -16, -53, -8, 125, -11 ], +"2-2": [ 4, 1, 40, -20, 36, -24, 125, -27 ], +"2-3": [ 0, 2, -14, -24, -84, -8, 125, -51 ], +"2-4": [ 1, 2, 20, -24, 52, 16, 29, -123 ], +"2-5": [ 2, 2, 52, -20, -11, -8, 133, -35 ], +"2-6": [ 3, 2, 8, 8, -27, -24, 57, 49 ], +"2-7": [ 4, 2, 0, -24, -68, -8, -3, -55 ], +"2-8": [ 0, 3, -16, -32, -40, 8, -91, -67 ], +"3-1": [ 1, 3, 8, -8, -28, -8, 61, -35 ], +"3-2": [ 2, 3, -4, -16, -40, -8, 5, -59 ], +"3-3": [ 3, 3, -8, -24, -56, -16, -35, -67 ], +"3-4": [ 4, 3, 16, -8, -64, 16, 149, -35 ], +"3-5": [ 0, 4, -16, -24, -68, -8, 29, -43 ], +"3-6": [ 1, 4, -16, -36, -63, -32, 53, -59 ], +"3-7": [ 2, 4, 16, -44, -52, -32, 95, -67 ], +"3-8": [ 3, 4, 4, -33, -60, -16, 77, -75 ], +"4-1": [ 4, 4, 0, -4, -44, 8, 41, -15 ], +"4-2": [ 0, 5, 0, -52, -9, -8, -3, -99 ], +"4-3": [ 1, 5, 16, -4, 60, 24, -59, -51 ], +"4-4": [ 2, 5, 28, -40, -4, -24, 25, -55 ], +"4-5": [ 3, 5, -8, -28, 5, -24, 49, -63 ], +"4-6": [ 4, 5, 48, -44, 87, -16, -35, -51 ], +"4-7": [ 0, 6, 40, -36, 86, -16, -119, -55 ], +"4-8": [ 1, 6, 40, -44, -8, -16, -47, -79 ], +"5-1": [ 2, 6, 34, -40, -12, -16, 174, -59 ], +"5-2": [ 3, 6, 52, -32, 121, -16, -43, -67 ], +"5-3": [ 4, 6, 48, -48, 33, -64, -39, -47 ], +"5-4": [ 0, 7, 34, -56, 69, -16, -51, -91 ], +"win": [ 1, 7, 0, -24, -13, 8, 89, -39 ] +} From 364f8a40620a6f362249d622157038e1bb602171 Mon Sep 17 00:00:00 2001 From: Harmony Honey Monroe Date: Tue, 25 Feb 2025 04:15:29 -0500 Subject: [PATCH 08/39] clean up scene_dict and select --- src/autoload/Shared.gd | 6 +----- src/menu/select.gd | 44 ------------------------------------------ src/menu/select.tscn | 27 +------------------------- src/menu/splash.tscn | 1 - 4 files changed, 2 insertions(+), 76 deletions(-) diff --git a/src/autoload/Shared.gd b/src/autoload/Shared.gd index 16b358c..877e353 100644 --- a/src/autoload/Shared.gd +++ b/src/autoload/Shared.gd @@ -35,7 +35,6 @@ var save_path := "user://save/" var save_filename := "box.save" var keys_path := "keys.tres" var options_path := "options.tres" -var scene_dict := {} var replays := [{}, {}, {}, {}, {}, {}, {}] var is_save := false var last_menu := "main" @@ -114,7 +113,6 @@ func _ready(): # get all maps for i in dir_list(map_dir): - scene_dict[map_dir + i] = load(map_dir + i) maps.append(i.split(".")[0]) @@ -197,9 +195,7 @@ func change_map(): if is_win: save_replays() - if !scene_dict.has(scene_path): - scene_dict[scene_path] = load(scene_path) - get_tree().change_scene_to(scene_dict[scene_path]) + get_tree().change_scene_to(load(scene_path)) is_win = false is_save = false diff --git a/src/menu/select.gd b/src/menu/select.gd index dc20e88..9fad5b8 100644 --- a/src/menu/select.gd +++ b/src/menu/select.gd @@ -10,9 +10,7 @@ onready var screens_node : Control = $Control/Screens onready var screen : Control = $Control/Screen export var screen_dist = Vector2(5, 5) export var screen_size = Vector2(136, 96) -export var columns = 8 var screen_pos := [] -var screen_static := [] var screen_max := 1 var overlays := [] @@ -32,17 +30,10 @@ onready var score_clock := $Control/Scores/HBoxContainer/Clock onready var score_map := $Control/Scores/HBoxContainer/Map onready var score_row := $Control/Scores/Row -var load_list := [] -var loader : ResourceInteractiveLoader -var port_count = 0 -var is_load := false var is_screening := false -var map_limit := 0 var screen_list := [] export var timeout_mod := 1.0 - var screen_time := 0.0 -var loading_time := 0.0 export var color_gem := Color("ffec27") export var color_new := Color("83769c") @@ -69,8 +60,6 @@ var lockdict= {0:["1-1", "1-2", "1-3", "1-4", "1-5", "1-6", "1-7", "1-8"], 24: ['5-1', '5-2', '5-3', '5-4'], 30: ['win']} -var stage_size := Vector2(136, 96) - func _ready(): #Leaderboard.connect("new_score", self, "new_score") #SilentWolf.Scores.connect("sw_scores_received", self, "new_score") @@ -135,7 +124,6 @@ func _input(event): if open_map(): Audio.play("menu_pick", 0.9, 1.1) is_input = false - is_load = false else: Audio.play("menu_random", 0.8, 1.2) elif event.is_action_pressed("ui_pause"): @@ -180,30 +168,8 @@ func _physics_process(delta): make_screen(screen_list.pop_front()) else: is_screening = false - is_load = true print(screen_time, " screeening time") break - - # load stages - elif is_load: - loading_time += delta - - while OS.get_ticks_msec() < ticks + (delta * timeout_mod): - if load_list.size() > 0: - var pop = load_list.pop_front() - if Shared.scene_dict.has(pop[1]): - var inst = Shared.scene_dict[pop[1]].instance() - var cb = inst.get_node("CamBounds") - - pop[2].add_child(inst) - if is_instance_valid(cb): - inst.position -= cb.position - - screen_static[pop[0]].visible = false - else: - is_load = false - print(loading_time, " loading time") - break func make_screen(i := 0): var new = screen.duplicate() @@ -250,16 +216,6 @@ func make_screen(i := 0): screens_node.add_child(new) overlays[i] = new.get_node("Vis/Overlay") - screen_static.append(new.get_node("Vis/Static")) - #view_scene(new.get_node("Vis/Node2D"), Shared.map_dir + map_list[i] + ".tscn", i) - -# view a scene inside the viewport by path -func view_scene(port, path, arg): - for i in port.get_children(): - i.queue_free() - - load_list.append([port_count, path, port]) - port_count += 1 func scroll(arg := cursor): if overlays[cursor]: overlays[cursor].visible = true diff --git a/src/menu/select.tscn b/src/menu/select.tscn index 33e7ec6..86fbf70 100644 --- a/src/menu/select.tscn +++ b/src/menu/select.tscn @@ -1,10 +1,9 @@ -[gd_scene load_steps=23 format=2] +[gd_scene load_steps=21 format=2] [ext_resource path="res://media/image/corner.png" type="Texture" id=1] [ext_resource path="res://media/font/QuinqueFive.ttf" type="DynamicFontData" id=2] [ext_resource path="res://media/image/note.png" type="Texture" id=3] [ext_resource path="res://src/menu/Vis.gd" type="Script" id=4] -[ext_resource path="res://src/shader/tv_static.gdshader" type="Shader" id=5] [ext_resource path="res://src/shader/outline2D_outer.shader" type="Shader" id=6] [ext_resource path="res://src/menu/select.gd" type="Script" id=7] [ext_resource path="res://media/image/diamond16.png" type="Texture" id=8] @@ -15,11 +14,6 @@ [ext_resource path="res://src/menu/cursor_anim.gd" type="Script" id=13] [ext_resource path="res://src/stage/sheet.png" type="Texture" id=14] -[sub_resource type="ShaderMaterial" id=8] -shader = ExtResource( 5 ) -shader_param/mouse_pos = Vector2( 0.01, 0.005 ) -shader_param/vsync_issues = 0.7 - [sub_resource type="ShaderMaterial" id=10] shader = ExtResource( 6 ) shader_param/line_color = Color( 0, 0, 0, 1 ) @@ -99,25 +93,6 @@ rect_min_size = Vector2( 136, 96 ) rect = Rect2( 0, 0, 136, 96 ) script = ExtResource( 4 ) -[node name="BG" type="Node2D" parent="Control/Screen/Vis"] -z_index = -500 - -[node name="ColorRect" type="ColorRect" parent="Control/Screen/Vis/BG"] -margin_right = 136.0 -margin_bottom = 96.0 -rect_min_size = Vector2( 136, 96 ) -color = Color( 0, 0, 0, 1 ) - -[node name="Node2D" type="Node2D" parent="Control/Screen/Vis"] -position = Vector2( 68, 48 ) -z_index = -400 - -[node name="Static" type="ColorRect" parent="Control/Screen/Vis"] -modulate = Color( 0.14, 0.14, 0.14, 1 ) -material = SubResource( 8 ) -margin_right = 136.0 -margin_bottom = 96.0 - [node name="Sprite" type="Sprite" parent="Control/Screen/Vis"] texture = ExtResource( 14 ) centered = false diff --git a/src/menu/splash.tscn b/src/menu/splash.tscn index 8bfdfb0..d00fa0a 100644 --- a/src/menu/splash.tscn +++ b/src/menu/splash.tscn @@ -6,7 +6,6 @@ [node name="Splash" type="Node2D"] script = ExtResource( 3 ) -is_build_sheet = true [node name="CanvasLayer" type="CanvasLayer" parent="."] layer = 9 From 4425e61508c9ffa2b1fa661a70317023647c1101 Mon Sep 17 00:00:00 2001 From: Harmony Honey Monroe Date: Tue, 25 Feb 2025 04:54:10 -0500 Subject: [PATCH 09/39] player and exit showing on select ! --- src/menu/select.gd | 12 ++++++- src/menu/select.tscn | 40 +++++++++++++++++++----- src/menu/splash.gd | 28 ++++++++--------- src/stage/sheet.tres | 74 ++++++++++++++++++++++---------------------- 4 files changed, 94 insertions(+), 60 deletions(-) diff --git a/src/menu/select.gd b/src/menu/select.gd index 9fad5b8..ef329e3 100644 --- a/src/menu/select.gd +++ b/src/menu/select.gd @@ -2,6 +2,8 @@ extends Node2D onready var cam : Camera2D = Shared.cam onready var cursor_node := $Cursor +onready var player := $"%Player" +onready var exit := $"%Exit" var cursor = 0 var current_map := "1-1" @@ -228,8 +230,16 @@ func scroll(arg := cursor): var sp = screen_pos[cursor] cursor_node.rect_position = sp score_node.rect_position = sp + Vector2(1, 1) - cam.pos_target = sp + (screen_size * 0.5) + var half = sp + (screen_size * 0.5) + cam.pos_target = half refresh_score() + + var dict = Shared.map_dict[str(map_list[cursor])] + + player.position = Vector2(dict[2], dict[3]) + player.node_sprite.flip_h = randf() > 0.5 + exit.position = Vector2(dict[4], dict[5]) + func show_scoreboard(arg := show_score): var n = arg == 2 diff --git a/src/menu/select.tscn b/src/menu/select.tscn index 86fbf70..c6c1c95 100644 --- a/src/menu/select.tscn +++ b/src/menu/select.tscn @@ -1,9 +1,10 @@ -[gd_scene load_steps=21 format=2] +[gd_scene load_steps=23 format=2] [ext_resource path="res://media/image/corner.png" type="Texture" id=1] [ext_resource path="res://media/font/QuinqueFive.ttf" type="DynamicFontData" id=2] [ext_resource path="res://media/image/note.png" type="Texture" id=3] [ext_resource path="res://src/menu/Vis.gd" type="Script" id=4] +[ext_resource path="res://src/actor/Player.tscn" type="PackedScene" id=5] [ext_resource path="res://src/shader/outline2D_outer.shader" type="Shader" id=6] [ext_resource path="res://src/menu/select.gd" type="Script" id=7] [ext_resource path="res://media/image/diamond16.png" type="Texture" id=8] @@ -13,6 +14,7 @@ [ext_resource path="res://src/stage/CamBounds.gd" type="Script" id=12] [ext_resource path="res://src/menu/cursor_anim.gd" type="Script" id=13] [ext_resource path="res://src/stage/sheet.png" type="Texture" id=14] +[ext_resource path="res://src/actor/Exit.tscn" type="PackedScene" id=15] [sub_resource type="ShaderMaterial" id=10] shader = ExtResource( 6 ) @@ -274,39 +276,63 @@ text = "12:67 long_name1234567 10. thats it" [node name="Cursor" type="Control" parent="."] -modulate = Color( 1, 0.92549, 0.152941, 1 ) margin_left = 110.0 margin_top = 40.0 margin_right = 246.0 -margin_bottom = 144.0 +margin_bottom = 136.0 + +[node name="Arrows" type="Control" parent="Cursor"] +modulate = Color( 1, 0.92549, 0.152941, 1 ) +margin_right = 136.0 +margin_bottom = 96.0 script = ExtResource( 13 ) +__meta__ = { +"_editor_description_": "" +} time = 0.5 distance = 12.0 offset = -6.0 size = Vector2( 136, 96 ) -[node name="c1" type="Sprite" parent="Cursor"] +[node name="c1" type="Sprite" parent="Cursor/Arrows"] material = SubResource( 11 ) texture = ExtResource( 1 ) -[node name="c2" type="Sprite" parent="Cursor"] +[node name="c2" type="Sprite" parent="Cursor/Arrows"] material = SubResource( 11 ) position = Vector2( 136, 0 ) rotation = 1.5708 texture = ExtResource( 1 ) -[node name="c3" type="Sprite" parent="Cursor"] +[node name="c3" type="Sprite" parent="Cursor/Arrows"] material = SubResource( 11 ) position = Vector2( 0, 103 ) rotation = -1.5708 texture = ExtResource( 1 ) -[node name="c4" type="Sprite" parent="Cursor"] +[node name="c4" type="Sprite" parent="Cursor/Arrows"] material = SubResource( 11 ) position = Vector2( 136, 103 ) rotation = 3.14159 texture = ExtResource( 1 ) +[node name="Control" type="Control" parent="Cursor"] +margin_right = 40.0 +margin_bottom = 40.0 +rect_min_size = Vector2( 136, 96 ) +rect_clip_content = true + +[node name="Actors" type="Node2D" parent="Cursor/Control"] +position = Vector2( 68, 48 ) + +[node name="Player" parent="Cursor/Control/Actors" instance=ExtResource( 5 )] +unique_name_in_owner = true +position = Vector2( -21, 10 ) + +[node name="Exit" parent="Cursor/Control/Actors" instance=ExtResource( 15 )] +unique_name_in_owner = true +position = Vector2( 19, 17 ) + [node name="BG" type="CanvasLayer" parent="."] layer = -1 diff --git a/src/menu/splash.gd b/src/menu/splash.gd index a3e0159..29c51fd 100644 --- a/src/menu/splash.gd +++ b/src/menu/splash.gd @@ -42,21 +42,19 @@ func _ready(): var cb = inst.get_node("CamBounds") if is_instance_valid(cb): inst.position -= cb.position - dict[2] = int(cb.position.x) - dict[3] = int(cb.position.y) - - var p = inst.get_node("Actors/Player") - if is_instance_valid(p): - p.visible = false - dict[4] = int(p.position.x) - dict[5] = int(p.position.y) - - var e = inst.get_node("Actors/Exit") - if is_instance_valid(e): - e.visible = false - dict[6] = int(e.position.x) - dict[7] = int(e.position.y) - + + var p = inst.get_node("Actors/Player") + if is_instance_valid(p): + p.visible = false + dict[2] = int(p.position.x - cb.position.x) + dict[3] = int(p.position.y - cb.position.y) + + var e = inst.get_node("Actors/Exit") + if is_instance_valid(e): + e.visible = false + dict[4] = int(e.position.x - cb.position.x) + dict[5] = int(e.position.y - cb.position.y) + yield(get_tree(), "idle_frame") var image = viewport.get_texture().get_data() diff --git a/src/stage/sheet.tres b/src/stage/sheet.tres index b57099c..df9db77 100644 --- a/src/stage/sheet.tres +++ b/src/stage/sheet.tres @@ -5,41 +5,41 @@ [resource] script = ExtResource( 1 ) dict = { -"1-1": [ 0, 0, 0, 0, -40, 8, 45, 5 ], -"1-2": [ 1, 0, 0, 0, -48, 24, 45, -19 ], -"1-3": [ 2, 0, -24, -16, -92, 24, -67, -51 ], -"1-4": [ 3, 0, 16, 0, 40, 32, -51, -27 ], -"1-5": [ 4, 0, 32, -24, 34, 16, 53, -67 ], -"1-6": [ 0, 1, 8, -24, -12, -8, -3, -67 ], -"1-7": [ 1, 1, 16, -40, -4, -8, 77, -75 ], -"1-8": [ 2, 1, 0, -48, -4, -8, -3, -83 ], -"2-1": [ 3, 1, 40, -16, -53, -8, 125, -11 ], -"2-2": [ 4, 1, 40, -20, 36, -24, 125, -27 ], -"2-3": [ 0, 2, -14, -24, -84, -8, 125, -51 ], -"2-4": [ 1, 2, 20, -24, 52, 16, 29, -123 ], -"2-5": [ 2, 2, 52, -20, -11, -8, 133, -35 ], -"2-6": [ 3, 2, 8, 8, -27, -24, 57, 49 ], -"2-7": [ 4, 2, 0, -24, -68, -8, -3, -55 ], -"2-8": [ 0, 3, -16, -32, -40, 8, -91, -67 ], -"3-1": [ 1, 3, 8, -8, -28, -8, 61, -35 ], -"3-2": [ 2, 3, -4, -16, -40, -8, 5, -59 ], -"3-3": [ 3, 3, -8, -24, -56, -16, -35, -67 ], -"3-4": [ 4, 3, 16, -8, -64, 16, 149, -35 ], -"3-5": [ 0, 4, -16, -24, -68, -8, 29, -43 ], -"3-6": [ 1, 4, -16, -36, -63, -32, 53, -59 ], -"3-7": [ 2, 4, 16, -44, -52, -32, 95, -67 ], -"3-8": [ 3, 4, 4, -33, -60, -16, 77, -75 ], -"4-1": [ 4, 4, 0, -4, -44, 8, 41, -15 ], -"4-2": [ 0, 5, 0, -52, -9, -8, -3, -99 ], -"4-3": [ 1, 5, 16, -4, 60, 24, -59, -51 ], -"4-4": [ 2, 5, 28, -40, -4, -24, 25, -55 ], -"4-5": [ 3, 5, -8, -28, 5, -24, 49, -63 ], -"4-6": [ 4, 5, 48, -44, 87, -16, -35, -51 ], -"4-7": [ 0, 6, 40, -36, 86, -16, -119, -55 ], -"4-8": [ 1, 6, 40, -44, -8, -16, -47, -79 ], -"5-1": [ 2, 6, 34, -40, -12, -16, 174, -59 ], -"5-2": [ 3, 6, 52, -32, 121, -16, -43, -67 ], -"5-3": [ 4, 6, 48, -48, 33, -64, -39, -47 ], -"5-4": [ 0, 7, 34, -56, 69, -16, -51, -91 ], -"win": [ 1, 7, 0, -24, -13, 8, 89, -39 ] +"1-1": [ 0, 0, -40, 8, 45, 5, 0, 0 ], +"1-2": [ 1, 0, -48, 24, 45, -19, 0, 0 ], +"1-3": [ 2, 0, -68, 40, -43, -35, 0, 0 ], +"1-4": [ 3, 0, 24, 32, -67, -27, 0, 0 ], +"1-5": [ 4, 0, 2, 40, 21, -43, 0, 0 ], +"1-6": [ 0, 1, -20, 16, -11, -43, 0, 0 ], +"1-7": [ 1, 1, -20, 32, 61, -35, 0, 0 ], +"1-8": [ 2, 1, -4, 40, -3, -35, 0, 0 ], +"2-1": [ 3, 1, -93, 8, 85, 5, 0, 0 ], +"2-2": [ 4, 1, -4, -4, 85, -7, 0, 0 ], +"2-3": [ 0, 2, -70, 16, 139, -27, 0, 0 ], +"2-4": [ 1, 2, 32, 40, 9, -99, 0, 0 ], +"2-5": [ 2, 2, -63, 12, 81, -15, 0, 0 ], +"2-6": [ 3, 2, -35, -32, 49, 41, 0, 0 ], +"2-7": [ 4, 2, -68, 16, -3, -31, 0, 0 ], +"2-8": [ 0, 3, -24, 40, -75, -35, 0, 0 ], +"3-1": [ 1, 3, -36, 0, 53, -27, 0, 0 ], +"3-2": [ 2, 3, -36, 8, 9, -43, 0, 0 ], +"3-3": [ 3, 3, -48, 8, -27, -43, 0, 0 ], +"3-4": [ 4, 3, -80, 24, 133, -27, 0, 0 ], +"3-5": [ 0, 4, -52, 16, 45, -19, 0, 0 ], +"3-6": [ 1, 4, -47, 4, 69, -23, 0, 0 ], +"3-7": [ 2, 4, -68, 12, 79, -23, 0, 0 ], +"3-8": [ 3, 4, -64, 17, 73, -42, 0, 0 ], +"4-1": [ 4, 4, -44, 12, 41, -11, 0, 0 ], +"4-2": [ 0, 5, -9, 44, -3, -47, 0, 0 ], +"4-3": [ 1, 5, 44, 28, -75, -47, 0, 0 ], +"4-4": [ 2, 5, -32, 16, -3, -15, 0, 0 ], +"4-5": [ 3, 5, 13, 4, 57, -35, 0, 0 ], +"4-6": [ 4, 5, 39, 28, -83, -7, 0, 0 ], +"4-7": [ 0, 6, 46, 20, -159, -19, 0, 0 ], +"4-8": [ 1, 6, -48, 28, -87, -35, 0, 0 ], +"5-1": [ 2, 6, -46, 24, 140, -19, 0, 0 ], +"5-2": [ 3, 6, 69, 16, -95, -35, 0, 0 ], +"5-3": [ 4, 6, -15, -16, -87, 1, 0, 0 ], +"5-4": [ 0, 7, 35, 40, -85, -35, 0, 0 ], +"win": [ 1, 7, -13, 32, 89, -15, 0, 0 ] } From 2ca6baa859b0e73d5e8712621b658058c44ec2dd Mon Sep 17 00:00:00 2001 From: Harmony Honey Monroe Date: Tue, 25 Feb 2025 12:17:15 -0500 Subject: [PATCH 10/39] draw Overlay over player & exit --- src/menu/select.tscn | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/src/menu/select.tscn b/src/menu/select.tscn index c6c1c95..9d7ebd1 100644 --- a/src/menu/select.tscn +++ b/src/menu/select.tscn @@ -68,6 +68,17 @@ __meta__ = { "_edit_lock_": true } +[node name="BG" type="CanvasLayer" parent="."] +layer = -1 + +[node name="ColorRect" type="ColorRect" parent="BG"] +anchor_right = 1.0 +anchor_bottom = 1.0 +color = Color( 0.160784, 0.678431, 1, 1 ) +__meta__ = { +"_edit_lock_": true +} + [node name="CamBounds" type="Node2D" parent="."] position = Vector2( 178, 88 ) script = ExtResource( 12 ) @@ -92,10 +103,12 @@ margin_bottom = 136.0 rect_min_size = Vector2( 136, 96 ) [node name="Vis" type="VisibilityNotifier2D" parent="Control/Screen"] +z_index = 1000 rect = Rect2( 0, 0, 136, 96 ) script = ExtResource( 4 ) [node name="Sprite" type="Sprite" parent="Control/Screen/Vis"] +z_index = -1000 texture = ExtResource( 14 ) centered = false region_enabled = true @@ -332,14 +345,3 @@ position = Vector2( -21, 10 ) [node name="Exit" parent="Cursor/Control/Actors" instance=ExtResource( 15 )] unique_name_in_owner = true position = Vector2( 19, 17 ) - -[node name="BG" type="CanvasLayer" parent="."] -layer = -1 - -[node name="ColorRect" type="ColorRect" parent="BG"] -anchor_right = 1.0 -anchor_bottom = 1.0 -color = Color( 0.160784, 0.678431, 1, 1 ) -__meta__ = { -"_edit_lock_": true -} From ea2f02966ffd2b5ec3d433e8618c12a2d880a681 Mon Sep 17 00:00:00 2001 From: Harmony Honey Monroe Date: Tue, 25 Feb 2025 15:37:17 -0500 Subject: [PATCH 11/39] CanvasLayers on level select and... reorder all CanvasLayers in project --- src/autoload/Pause.tscn | 1 + src/autoload/UI.tscn | 2 +- src/autoload/Wipe.tscn | 2 +- src/autoload/touch_screen.tscn | 2 +- src/menu/Vis.gd | 6 +- src/menu/options/KeyMenu.tscn | 1 + src/menu/options/OptionsMenu.tscn | 1 + src/menu/select.gd | 59 +++++++----- src/menu/select.tscn | 148 ++++++++++++++++-------------- src/stage/Cam.gd | 3 + 10 files changed, 128 insertions(+), 97 deletions(-) diff --git a/src/autoload/Pause.tscn b/src/autoload/Pause.tscn index 9768c6f..ff545a2 100644 --- a/src/autoload/Pause.tscn +++ b/src/autoload/Pause.tscn @@ -20,6 +20,7 @@ font_data = ExtResource( 6 ) [node name="Pause" type="CanvasLayer"] pause_mode = 2 +layer = 20 script = ExtResource( 3 ) __meta__ = { "_edit_horizontal_guides_": [ -19.0 ] diff --git a/src/autoload/UI.tscn b/src/autoload/UI.tscn index 4b0b3eb..47a1358 100644 --- a/src/autoload/UI.tscn +++ b/src/autoload/UI.tscn @@ -69,7 +69,7 @@ font_data = ExtResource( 1 ) [node name="UI" type="CanvasLayer"] pause_mode = 2 -layer = 5 +layer = 50 script = ExtResource( 3 ) pos_left = 60 pos_right = 184 diff --git a/src/autoload/Wipe.tscn b/src/autoload/Wipe.tscn index e5924b5..79bdd2a 100644 --- a/src/autoload/Wipe.tscn +++ b/src/autoload/Wipe.tscn @@ -15,7 +15,7 @@ shader_param/tex = ExtResource( 2 ) [node name="Wipe" type="CanvasLayer"] pause_mode = 2 -layer = 10 +layer = 100 script = ExtResource( 1 ) duration = 0.35 diff --git a/src/autoload/touch_screen.tscn b/src/autoload/touch_screen.tscn index 13c7d94..f7a2363 100644 --- a/src/autoload/touch_screen.tscn +++ b/src/autoload/touch_screen.tscn @@ -35,7 +35,7 @@ points = PoolVector2Array( 2.12132, -2.12132, 3.57746e-08, -3, -2.12132, -2.1213 [node name="TouchScreen" type="CanvasLayer"] pause_mode = 2 -layer = 6 +layer = 60 script = ExtResource( 1 ) [node name="Control" type="Control" parent="."] diff --git a/src/menu/Vis.gd b/src/menu/Vis.gd index 0313598..4f4f1a9 100644 --- a/src/menu/Vis.gd +++ b/src/menu/Vis.gd @@ -1,9 +1,11 @@ extends VisibilityNotifier2D +var node_list = [self] + func _ready(): connect("screen_entered", self, "enter") connect("screen_exited", self, "enter") - pass # Replace with function body. func enter(): - visible = is_on_screen() + for i in node_list: + i.visible = is_on_screen() diff --git a/src/menu/options/KeyMenu.tscn b/src/menu/options/KeyMenu.tscn index 38d066b..58b7fc9 100644 --- a/src/menu/options/KeyMenu.tscn +++ b/src/menu/options/KeyMenu.tscn @@ -26,6 +26,7 @@ font_data = ExtResource( 5 ) [node name="KeyMenu" type="CanvasLayer"] pause_mode = 2 +layer = 40 script = ExtResource( 3 ) parent_path = NodePath(".") list_path = NodePath("Center/Control/VBox") diff --git a/src/menu/options/OptionsMenu.tscn b/src/menu/options/OptionsMenu.tscn index d1bac34..ca30a87 100644 --- a/src/menu/options/OptionsMenu.tscn +++ b/src/menu/options/OptionsMenu.tscn @@ -27,6 +27,7 @@ font_data = ExtResource( 6 ) [node name="OptionsMenu" type="CanvasLayer"] pause_mode = 2 +layer = 30 script = ExtResource( 1 ) parent_path = NodePath(".") list_path = NodePath("Center/Control/MenuItems") diff --git a/src/menu/select.gd b/src/menu/select.gd index ef329e3..a8f76e6 100644 --- a/src/menu/select.gd +++ b/src/menu/select.gd @@ -1,15 +1,18 @@ extends Node2D onready var cam : Camera2D = Shared.cam -onready var cursor_node := $Cursor +onready var cursor_node := $"%Cursor" onready var player := $"%Player" onready var exit := $"%Exit" var cursor = 0 var current_map := "1-1" -onready var screens_node : Control = $Control/Screens -onready var screen : Control = $Control/Screen +onready var screens_node := $"%MapLayer" +onready var screen := $"%Screen" +onready var overlay_node := $"%Overlay" +onready var overlay_layer := $"%OverlayLayer" + export var screen_dist = Vector2(5, 5) export var screen_size = Vector2(136, 96) var screen_pos := [] @@ -24,13 +27,14 @@ var show_score := 0 var last_refresh := {} var refresh_wait := 5.0 -onready var score_node := $Control/Scores -onready var score_title := $Control/Scores/HBoxContainer/Title -onready var score_list := $Control/Scores/List -onready var score_note := $Control/Scores/HBoxContainer/Note -onready var score_clock := $Control/Scores/HBoxContainer/Clock -onready var score_map := $Control/Scores/HBoxContainer/Map -onready var score_row := $Control/Scores/Row +onready var score_node := $"%Scores" +onready var score_list := score_node.get_node("List") +onready var score_row := score_node.get_node("Row") +onready var score_hbox := score_node.get_node("HBoxContainer") +onready var score_title := score_hbox.get_node("Title") +onready var score_note := score_hbox.get_node("Note") +onready var score_clock := score_hbox.get_node("Clock") +onready var score_map := score_hbox.get_node("Map") var is_screening := false var screen_list := [] @@ -63,6 +67,12 @@ var lockdict= {0:["1-1", "1-2", "1-3", "1-4", "1-5", "1-6", "1-7", "1-8"], 30: ['win']} func _ready(): + screen = screen.duplicate() + $"%Screen".queue_free() + + overlay_node = overlay_node.duplicate() + $"%Overlay".queue_free() + #Leaderboard.connect("new_score", self, "new_score") #SilentWolf.Scores.connect("sw_scores_received", self, "new_score") @@ -84,8 +94,6 @@ func _ready(): print("map_lock: ", map_lock) print("map_rows: ", map_rows) - screen.rect_position -= Vector2.ONE * 500 - # make screens screen_pos = [] var sum = -1 @@ -175,24 +183,30 @@ func _physics_process(delta): func make_screen(i := 0): var new = screen.duplicate() + var new_overlay = overlay_node.duplicate() + new.node_list.append(new_overlay) + var map_name = map_list[i] var is_locked = Shared.count_gems < map_lock[map_name] - new.rect_position = screen_pos[i] - new.get_node("Vis/Overlay/HBox/Label").text = (str(map_lock[map_name]) + " to unlock") if is_locked else map_name - new.get_node("Vis/Overlay/HBox/Gem").visible = is_locked + new.position = screen_pos[i] + new_overlay.rect_position = screen_pos[i] + + new_overlay.get_node("HBox/Label") + new_overlay.get_node("HBox/Label").text = (str(map_lock[map_name]) + " to unlock") if is_locked else map_name + new_overlay.get_node("HBox/Gem").visible = is_locked var s = {} if Shared.save_maps.has(map_name): s = Shared.save_maps[map_name] var has_note = s.has("note") - new.get_node("Vis/Overlay/Notes").visible = has_note - var note_label = new.get_node("Vis/Overlay/Notes/Label") + new_overlay.get_node("Notes").visible = has_note + var note_label = new_overlay.get_node("Notes/Label") if has_note: note_label.text = Shared.time_to_string(s["note"]) - var gem = new.get_node("Vis/Overlay/Gem") + var gem = new_overlay.get_node("Gem") gem.visible = !is_locked var has_time = s.has("time") @@ -203,21 +217,22 @@ func make_screen(i := 0): gem_label.text = Shared.time_to_string(s["time"]) var has_die = s.has("die") - new.get_node("Vis/Overlay/Death").visible = has_die + new_overlay.get_node("Death").visible = has_die if has_die: - new.get_node("Vis/Overlay/Death/Label").text = str(s["die"]) + new_overlay.get_node("Death/Label").text = str(s["die"]) if is_faster and i == Shared.map_select: blink_label = note_label if is_faster_note else gem_label print("faster ", i, ", blink_label ", blink_label) Audio.play("menu_bell", 0.5, 1.0) - var sprite = new.get_node("Vis/Sprite") + var sprite = new.get_node("Sprite") var dict = Shared.map_dict[map_name] sprite.region_rect = Rect2(screen_size * Vector2(dict[0], dict[1]), screen_size) screens_node.add_child(new) - overlays[i] = new.get_node("Vis/Overlay") + overlay_layer.add_child(new_overlay) + overlays[i] = new_overlay func scroll(arg := cursor): if overlays[cursor]: overlays[cursor].visible = true diff --git a/src/menu/select.tscn b/src/menu/select.tscn index 9d7ebd1..e0b04e6 100644 --- a/src/menu/select.tscn +++ b/src/menu/select.tscn @@ -84,46 +84,61 @@ position = Vector2( 178, 88 ) script = ExtResource( 12 ) bounds = Rect2( 9000, 9000, 9000, 9000 ) -[node name="Control" type="Control" parent="."] -margin_right = 320.0 -margin_bottom = 180.0 -__meta__ = { -"_edit_lock_": true -} +[node name="MapLayer" type="CanvasLayer" parent="."] +unique_name_in_owner = true +follow_viewport_enable = true -[node name="Screens" type="Control" parent="Control"] -margin_right = 40.0 -margin_bottom = 40.0 - -[node name="Screen" type="Control" parent="Control"] -margin_left = 110.0 -margin_top = 40.0 -margin_right = 246.0 -margin_bottom = 136.0 -rect_min_size = Vector2( 136, 96 ) - -[node name="Vis" type="VisibilityNotifier2D" parent="Control/Screen"] -z_index = 1000 +[node name="Screen" type="VisibilityNotifier2D" parent="MapLayer"] +unique_name_in_owner = true +position = Vector2( 110, 40 ) rect = Rect2( 0, 0, 136, 96 ) script = ExtResource( 4 ) -[node name="Sprite" type="Sprite" parent="Control/Screen/Vis"] -z_index = -1000 +[node name="Sprite" type="Sprite" parent="MapLayer/Screen"] texture = ExtResource( 14 ) centered = false region_enabled = true region_rect = Rect2( 0, 0, 136, 96 ) -[node name="Overlay" type="Control" parent="Control/Screen/Vis"] -margin_right = 136.0 -margin_bottom = 104.0 +[node name="ActorLayer" type="CanvasLayer" parent="."] +layer = 2 -[node name="HBox" type="HBoxContainer" parent="Control/Screen/Vis/Overlay"] +[node name="Control" type="Control" parent="ActorLayer"] +margin_left = 46.0 +margin_top = 16.0 +margin_right = 182.0 +margin_bottom = 112.0 +rect_clip_content = true + +[node name="Actors" type="Node2D" parent="ActorLayer/Control"] +position = Vector2( 68, 48 ) + +[node name="Player" parent="ActorLayer/Control/Actors" instance=ExtResource( 5 )] +unique_name_in_owner = true +position = Vector2( -21, 10 ) + +[node name="Exit" parent="ActorLayer/Control/Actors" instance=ExtResource( 15 )] +unique_name_in_owner = true +position = Vector2( 19, 17 ) + +[node name="OverlayLayer" type="CanvasLayer" parent="."] +unique_name_in_owner = true +layer = 3 +follow_viewport_enable = true + +[node name="Overlay" type="Control" parent="OverlayLayer"] +unique_name_in_owner = true +margin_left = 110.0 +margin_top = 40.0 +margin_right = 246.0 +margin_bottom = 144.0 + +[node name="HBox" type="HBoxContainer" parent="OverlayLayer/Overlay"] anchor_right = 1.0 anchor_bottom = 1.0 alignment = 1 -[node name="Gem" type="Control" parent="Control/Screen/Vis/Overlay/HBox"] +[node name="Gem" type="Control" parent="OverlayLayer/Overlay/HBox"] margin_left = 48.0 margin_top = 44.0 margin_right = 64.0 @@ -131,13 +146,13 @@ margin_bottom = 60.0 rect_min_size = Vector2( 16, 16 ) size_flags_vertical = 4 -[node name="Sprite" type="Sprite" parent="Control/Screen/Vis/Overlay/HBox/Gem"] +[node name="Sprite" type="Sprite" parent="OverlayLayer/Overlay/HBox/Gem"] modulate = Color( 1, 0.92549, 0.152941, 1 ) material = SubResource( 10 ) position = Vector2( 8, 8 ) texture = ExtResource( 9 ) -[node name="Label" type="Label" parent="Control/Screen/Vis/Overlay/HBox"] +[node name="Label" type="Label" parent="OverlayLayer/Overlay/HBox"] margin_left = 68.0 margin_top = 49.0 margin_right = 88.0 @@ -148,17 +163,17 @@ text = "1-1" align = 1 valign = 1 -[node name="Death" type="Control" parent="Control/Screen/Vis/Overlay"] +[node name="Death" type="Control" parent="OverlayLayer/Overlay"] margin_top = 96.0 margin_bottom = 96.0 -[node name="Clock" type="Sprite" parent="Control/Screen/Vis/Overlay/Death"] +[node name="Clock" type="Sprite" parent="OverlayLayer/Overlay/Death"] material = SubResource( 3 ) position = Vector2( 8, -7 ) texture = ExtResource( 11 ) region_rect = Rect2( 15, 7, 10, 10 ) -[node name="Label" type="Label" parent="Control/Screen/Vis/Overlay/Death"] +[node name="Label" type="Label" parent="OverlayLayer/Overlay/Death"] margin_left = 15.0 margin_top = -9.0 margin_right = 83.0 @@ -167,14 +182,14 @@ grow_horizontal = 2 custom_fonts/font = SubResource( 4 ) text = "79" -[node name="Notes" type="Control" parent="Control/Screen/Vis/Overlay"] +[node name="Notes" type="Control" parent="OverlayLayer/Overlay"] -[node name="Sprite" type="Sprite" parent="Control/Screen/Vis/Overlay/Notes"] +[node name="Sprite" type="Sprite" parent="OverlayLayer/Overlay/Notes"] material = SubResource( 3 ) position = Vector2( 10, 10 ) texture = ExtResource( 3 ) -[node name="Label" type="Label" parent="Control/Screen/Vis/Overlay/Notes"] +[node name="Label" type="Label" parent="OverlayLayer/Overlay/Notes"] margin_left = 19.0 margin_top = 4.0 margin_right = 101.0 @@ -183,19 +198,19 @@ grow_horizontal = 2 custom_fonts/font = SubResource( 4 ) text = "12:34" -[node name="Gem" type="Control" parent="Control/Screen/Vis/Overlay"] +[node name="Gem" type="Control" parent="OverlayLayer/Overlay"] margin_left = 136.0 margin_top = 96.0 margin_right = 136.0 margin_bottom = 96.0 -[node name="Sprite" type="Sprite" parent="Control/Screen/Vis/Overlay/Gem"] +[node name="Sprite" type="Sprite" parent="OverlayLayer/Overlay/Gem"] modulate = Color( 0.513726, 0.462745, 0.611765, 1 ) material = SubResource( 9 ) position = Vector2( -12, -12 ) texture = ExtResource( 8 ) -[node name="Label" type="Label" parent="Control/Screen/Vis/Overlay/Gem"] +[node name="Label" type="Label" parent="OverlayLayer/Overlay/Gem"] margin_left = -103.0 margin_top = -9.0 margin_right = -21.0 @@ -205,7 +220,12 @@ custom_fonts/font = SubResource( 4 ) text = "12:34" align = 2 -[node name="Scores" type="Control" parent="Control"] +[node name="ScoreLayer" type="CanvasLayer" parent="."] +layer = 4 +follow_viewport_enable = true + +[node name="Scores" type="Control" parent="ScoreLayer"] +unique_name_in_owner = true visible = false margin_left = 111.0 margin_top = 41.0 @@ -213,20 +233,20 @@ margin_right = 245.0 margin_bottom = 135.0 rect_min_size = Vector2( 134, 94 ) -[node name="Row" type="ColorRect" parent="Control/Scores"] +[node name="Row" type="ColorRect" parent="ScoreLayer/Scores"] margin_left = -1.0 margin_top = 14.0 margin_right = 135.0 margin_bottom = 23.0 -[node name="HBoxContainer" type="HBoxContainer" parent="Control/Scores"] +[node name="HBoxContainer" type="HBoxContainer" parent="ScoreLayer/Scores"] anchor_right = 1.0 margin_top = 1.0 margin_bottom = 11.0 custom_constants/separation = 2 alignment = 1 -[node name="Title" type="Label" parent="Control/Scores/HBoxContainer"] +[node name="Title" type="Label" parent="ScoreLayer/Scores/HBoxContainer"] margin_left = 9.0 margin_top = 2.0 margin_right = 92.0 @@ -235,34 +255,34 @@ custom_fonts/font = SubResource( 6 ) text = "FASTEST note" valign = 1 -[node name="Note" type="Control" parent="Control/Scores/HBoxContainer"] +[node name="Note" type="Control" parent="ScoreLayer/Scores/HBoxContainer"] margin_left = 94.0 margin_right = 103.0 margin_bottom = 10.0 rect_min_size = Vector2( 9, 10 ) -[node name="Sprite" type="Sprite" parent="Control/Scores/HBoxContainer/Note"] +[node name="Sprite" type="Sprite" parent="ScoreLayer/Scores/HBoxContainer/Note"] material = SubResource( 3 ) position = Vector2( 5, 4 ) texture = ExtResource( 10 ) region_enabled = true region_rect = Rect2( 7, 7, 9, 10 ) -[node name="Clock" type="Control" parent="Control/Scores/HBoxContainer"] +[node name="Clock" type="Control" parent="ScoreLayer/Scores/HBoxContainer"] visible = false margin_left = 99.0 margin_right = 109.0 margin_bottom = 10.0 rect_min_size = Vector2( 10, 10 ) -[node name="Sprite" type="Sprite" parent="Control/Scores/HBoxContainer/Clock"] +[node name="Sprite" type="Sprite" parent="ScoreLayer/Scores/HBoxContainer/Clock"] material = SubResource( 3 ) position = Vector2( 5, 4 ) texture = ExtResource( 10 ) region_enabled = true region_rect = Rect2( 15, 7, 10, 10 ) -[node name="Map" type="Label" parent="Control/Scores/HBoxContainer"] +[node name="Map" type="Label" parent="ScoreLayer/Scores/HBoxContainer"] margin_left = 105.0 margin_top = 2.0 margin_right = 125.0 @@ -271,7 +291,7 @@ custom_fonts/font = SubResource( 6 ) text = "1-3" valign = 1 -[node name="List" type="Label" parent="Control/Scores"] +[node name="List" type="Label" parent="ScoreLayer/Scores"] margin_left = 1.0 margin_top = 16.0 margin_right = 133.0 @@ -288,13 +308,18 @@ text = "12:67 long_name1234567 9. waahuu 10. thats it" -[node name="Cursor" type="Control" parent="."] +[node name="CursorLayer" type="CanvasLayer" parent="."] +layer = 5 +follow_viewport_enable = true + +[node name="Cursor" type="Control" parent="CursorLayer"] +unique_name_in_owner = true margin_left = 110.0 margin_top = 40.0 margin_right = 246.0 margin_bottom = 136.0 -[node name="Arrows" type="Control" parent="Cursor"] +[node name="Arrows" type="Control" parent="CursorLayer/Cursor"] modulate = Color( 1, 0.92549, 0.152941, 1 ) margin_right = 136.0 margin_bottom = 96.0 @@ -307,41 +332,24 @@ distance = 12.0 offset = -6.0 size = Vector2( 136, 96 ) -[node name="c1" type="Sprite" parent="Cursor/Arrows"] +[node name="c1" type="Sprite" parent="CursorLayer/Cursor/Arrows"] material = SubResource( 11 ) texture = ExtResource( 1 ) -[node name="c2" type="Sprite" parent="Cursor/Arrows"] +[node name="c2" type="Sprite" parent="CursorLayer/Cursor/Arrows"] material = SubResource( 11 ) position = Vector2( 136, 0 ) rotation = 1.5708 texture = ExtResource( 1 ) -[node name="c3" type="Sprite" parent="Cursor/Arrows"] +[node name="c3" type="Sprite" parent="CursorLayer/Cursor/Arrows"] material = SubResource( 11 ) position = Vector2( 0, 103 ) rotation = -1.5708 texture = ExtResource( 1 ) -[node name="c4" type="Sprite" parent="Cursor/Arrows"] +[node name="c4" type="Sprite" parent="CursorLayer/Cursor/Arrows"] material = SubResource( 11 ) position = Vector2( 136, 103 ) rotation = 3.14159 texture = ExtResource( 1 ) - -[node name="Control" type="Control" parent="Cursor"] -margin_right = 40.0 -margin_bottom = 40.0 -rect_min_size = Vector2( 136, 96 ) -rect_clip_content = true - -[node name="Actors" type="Node2D" parent="Cursor/Control"] -position = Vector2( 68, 48 ) - -[node name="Player" parent="Cursor/Control/Actors" instance=ExtResource( 5 )] -unique_name_in_owner = true -position = Vector2( -21, 10 ) - -[node name="Exit" parent="Cursor/Control/Actors" instance=ExtResource( 15 )] -unique_name_in_owner = true -position = Vector2( 19, 17 ) diff --git a/src/stage/Cam.gd b/src/stage/Cam.gd index 8bc26dd..a58daa5 100644 --- a/src/stage/Cam.gd +++ b/src/stage/Cam.gd @@ -4,6 +4,7 @@ var node_target : Node2D var pos_target := Vector2.ZERO var pos_target_offset := Vector2.ZERO export var lerp_step := 0.1 +export var lerp_jump := 0.5 var lerp_pos := Vector2.ZERO var bounds_upper := Vector2.ZERO @@ -32,6 +33,8 @@ func _physics_process(delta): # smoothing lerp_pos = lerp_pos.linear_interpolate(pos_target, clamp(lerp_step, 0, 1)) + if lerp_pos.distance_to(pos_target) < lerp_jump: + lerp_pos = pos_target position = lerp_pos.round() # super simple screen shake From d6d7327d3c6b8cf6f831a76ca856436b9f623e42 Mon Sep 17 00:00:00 2001 From: Harmony Honey Monroe Date: Tue, 25 Feb 2025 16:46:20 -0500 Subject: [PATCH 12/39] actors lerp smoothing on select (: TODO fix scoreboard scoreboard not always showing most recent high score --- src/menu/select.gd | 30 +++++++++++++++++++----------- src/menu/select.tscn | 10 +++++----- 2 files changed, 24 insertions(+), 16 deletions(-) diff --git a/src/menu/select.gd b/src/menu/select.gd index a8f76e6..36dfcdf 100644 --- a/src/menu/select.gd +++ b/src/menu/select.gd @@ -2,8 +2,6 @@ extends Node2D onready var cam : Camera2D = Shared.cam onready var cursor_node := $"%Cursor" -onready var player := $"%Player" -onready var exit := $"%Exit" var cursor = 0 var current_map := "1-1" @@ -66,6 +64,10 @@ var lockdict= {0:["1-1", "1-2", "1-3", "1-4", "1-5", "1-6", "1-7", "1-8"], 24: ['5-1', '5-2', '5-3', '5-4'], 30: ['win']} +onready var actors = [[Vector2.ZERO, Vector2.ZERO, $"%Player"], [Vector2.ZERO, Vector2.ZERO, $"%Exit"]] +var actor_lerp := 0.1 +var actor_jump := 0.5 + func _ready(): screen = screen.duplicate() $"%Screen".queue_free() @@ -157,10 +159,19 @@ func _input(event): Audio.play("menu_scroll3", 0.9, 1.5) func _physics_process(delta): + # move actors + for i in actors: + i[0] = i[0].linear_interpolate(i[1], clamp(actor_lerp, 0, 1)) + if i[0].distance_to(i[1]) < actor_jump: + i[0] = i[1] + i[2].position = i[0].round() + + # input count input_count = max(0, input_count - 1) for i in last_refresh.keys(): last_refresh[i] = max(0, last_refresh[i] - delta) + # blink if is_instance_valid(blink_label) and blink_count > 0: blink_clock -= delta if blink_clock < -blink_off: @@ -168,9 +179,9 @@ func _physics_process(delta): blink_count -= 1 blink_label.modulate = [Color.transparent, Color.white][int(blink_clock > 0.0)] - var ticks : float = OS.get_ticks_msec() - + # make screens if is_screening: + var ticks : float = OS.get_ticks_msec() screen_time += delta while OS.get_ticks_msec() < ticks + (delta * timeout_mod): @@ -192,7 +203,6 @@ func make_screen(i := 0): new.position = screen_pos[i] new_overlay.rect_position = screen_pos[i] - new_overlay.get_node("HBox/Label") new_overlay.get_node("HBox/Label").text = (str(map_lock[map_name]) + " to unlock") if is_locked else map_name new_overlay.get_node("HBox/Gem").visible = is_locked @@ -226,9 +236,8 @@ func make_screen(i := 0): print("faster ", i, ", blink_label ", blink_label) Audio.play("menu_bell", 0.5, 1.0) - var sprite = new.get_node("Sprite") var dict = Shared.map_dict[map_name] - sprite.region_rect = Rect2(screen_size * Vector2(dict[0], dict[1]), screen_size) + new.get_node("Sprite").region_rect = Rect2(screen_size * Vector2(dict[0], dict[1]), screen_size) screens_node.add_child(new) overlay_layer.add_child(new_overlay) @@ -251,10 +260,9 @@ func scroll(arg := cursor): var dict = Shared.map_dict[str(map_list[cursor])] - player.position = Vector2(dict[2], dict[3]) - player.node_sprite.flip_h = randf() > 0.5 - exit.position = Vector2(dict[4], dict[5]) - + actors[0][1] = Vector2(dict[2], dict[3]) + actors[0][2].node_sprite.flip_h = randf() > 0.5 + actors[1][1] = Vector2(dict[4], dict[5]) func show_scoreboard(arg := show_score): var n = arg == 2 diff --git a/src/menu/select.tscn b/src/menu/select.tscn index e0b04e6..e3fa7dc 100644 --- a/src/menu/select.tscn +++ b/src/menu/select.tscn @@ -68,6 +68,11 @@ __meta__ = { "_edit_lock_": true } +[node name="CamBounds" type="Node2D" parent="."] +position = Vector2( 178, 88 ) +script = ExtResource( 12 ) +bounds = Rect2( 9000, 9000, 9000, 9000 ) + [node name="BG" type="CanvasLayer" parent="."] layer = -1 @@ -79,11 +84,6 @@ __meta__ = { "_edit_lock_": true } -[node name="CamBounds" type="Node2D" parent="."] -position = Vector2( 178, 88 ) -script = ExtResource( 12 ) -bounds = Rect2( 9000, 9000, 9000, 9000 ) - [node name="MapLayer" type="CanvasLayer" parent="."] unique_name_in_owner = true follow_viewport_enable = true From ca939789e84fd591e6adcb1d7b31d29fc40a5b1f Mon Sep 17 00:00:00 2001 From: Harmony Honey Monroe Date: Wed, 26 Feb 2025 23:47:52 -0500 Subject: [PATCH 13/39] remove Delete.gd and Shared.delete_save() --- src/autoload/Shared.gd | 3 --- src/menu/options/Delete.gd | 6 ------ 2 files changed, 9 deletions(-) delete mode 100644 src/menu/options/Delete.gd diff --git a/src/autoload/Shared.gd b/src/autoload/Shared.gd index 877e353..d583843 100644 --- a/src/autoload/Shared.gd +++ b/src/autoload/Shared.gd @@ -430,9 +430,6 @@ func generate_username(): var _name = pf[0] + middle[0] + sf[0] + end[0] + str(randi() % 100) return _name -func delete_save(): - print("delete save") - func unlock(): print("unlock") diff --git a/src/menu/options/Delete.gd b/src/menu/options/Delete.gd deleted file mode 100644 index daf5dde..0000000 --- a/src/menu/options/Delete.gd +++ /dev/null @@ -1,6 +0,0 @@ -extends Node2D - -func act(): - Audio.play("menu_delete", 0.9, 1.1) - Shared.delete_save() - Shared.cam.shake(5) From 9b6804ea20108fc8e82b26ba6e56f28bee901639 Mon Sep 17 00:00:00 2001 From: Harmony Honey Monroe Date: Thu, 27 Feb 2025 00:46:17 -0500 Subject: [PATCH 14/39] use an array on scoreboard, not a dict + sort_custom() --- src/menu/select.gd | 25 +++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/src/menu/select.gd b/src/menu/select.gd index 36dfcdf..fcdd3d3 100644 --- a/src/menu/select.gd +++ b/src/menu/select.gd @@ -284,32 +284,37 @@ func refresh_score(var map_name : String = current_map): write_score() if !last_refresh.has(map_name) or last_refresh[map_name] == 0: - #Leaderboard.refresh_score(map_name) print(" - ", map_name, " REFRESH SCORE ") last_refresh[map_name] = refresh_wait -func new_score(arg1 = null, arg2 = null, arg3 = null): - write_score() +func sort_scores(a, b): + if a[0] < b[0]: + return true + return false func write_score(): var key = "note" if show_score == 2 else "time" var dat = Shared.save_data - var dict = {} + var array = [] for i in dat.keys(): + #print("dat ", i, " ", dat[i]) if dat[i].has_all(["username", "maps"]) and dat[i]["maps"].has(current_map) and dat[i]["maps"][current_map].has(key): - dict[int(dat[i]["maps"][current_map][key])] = dat[i]["username"] + var k := int(dat[i]["maps"][current_map][key]) + var v := str(dat[i]["username"]) + #print(k, " / ", v) + array.append([k, v]) var t = "" - var keys = dict.keys() var row = 0 var my_row = -1 - keys.sort() - for i in keys: - t += Shared.time_to_string(i) + " " + dict[i] + "\n" + array.sort_custom(self, "sort_scores") + + for i in array: + t += Shared.time_to_string(i[0]) + " " + i[1] + "\n" - if dict[i] == Shared.username: + if i[1] == Shared.username: my_row = row row += 1 From 2c48fd462c32bff80de6d2415baf707964f48107 Mon Sep 17 00:00:00 2001 From: Harmony Honey Monroe Date: Thu, 27 Feb 2025 01:18:07 -0500 Subject: [PATCH 15/39] Shared.load_save() on select _ready() remove is_load argument from load_save() --- src/autoload/Shared.gd | 7 +++---- src/menu/StartMenu.gd | 4 ++-- src/menu/select.gd | 2 ++ 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/src/autoload/Shared.gd b/src/autoload/Shared.gd index d583843..d2ee259 100644 --- a/src/autoload/Shared.gd +++ b/src/autoload/Shared.gd @@ -355,13 +355,13 @@ func delete_slot(_slot := save_slot): dir.remove(fname) fname = dir.get_next() - replays[_slot] = {} + replays[_slot] = {} load_save(_slot) func save_replays(arg := replay_map, _slot := save_slot): save_file(save_path + str(_slot) + "/" + arg + ".save", JSON.print(replays[save_slot][arg], "\t")) -func load_save(_slot = save_slot, is_reload := false): +func load_save(_slot = save_slot): save_slot = clamp(_slot, 0, save_limit - 1) var save_string = save_path + str(save_slot) + "/" + save_filename @@ -374,14 +374,13 @@ func load_save(_slot = save_slot, is_reload := false): save_clock = 0.0 var dict := {} - if is_reload: dict = save_data[_slot] if dict.empty(): var l = load_file(save_string) if l: dict = JSON.parse(l).result else: print(save_string + " not found") - print(_slot, " / ", dict) + print(save_slot, " / ", dict) if !dict.empty(): if dict.has("clock"): save_clock = dict["clock"] diff --git a/src/menu/StartMenu.gd b/src/menu/StartMenu.gd index 17a1c0d..385ae7d 100644 --- a/src/menu/StartMenu.gd +++ b/src/menu/StartMenu.gd @@ -138,10 +138,10 @@ func menu_select(tag : String = menu_items[clamp(cursor, 0, menu_items.size() - TouchScreen.show_keys() "yes": Audio.play("menu_yes", 0.9, 1.1) + menu_stuff[cursor].text = "quit!!" if OS.get_name() == "HTML5": Shared.wipe_scene(Shared.splash_path) else: - menu_stuff[cursor].text = "quit!!" Shared.wipe_quit() "no": switch_menu("main") @@ -206,7 +206,7 @@ func switch_menu(arg, silent := false, _cursor := 0): Shared.map_select = 0 user_label.visible = true "open": - Shared.load_save(Shared.last_slot, true) + Shared.load_save(Shared.last_slot) Player.set_palette(open_player_mat, Shared.player_colors) Player.set_palette(demo_player_mat, Shared.player_colors) if menu_last == "erase": diff --git a/src/menu/select.gd b/src/menu/select.gd index fcdd3d3..6b23c6a 100644 --- a/src/menu/select.gd +++ b/src/menu/select.gd @@ -69,6 +69,8 @@ var actor_lerp := 0.1 var actor_jump := 0.5 func _ready(): + Shared.load_save() + screen = screen.duplicate() $"%Screen".queue_free() From 74cde82194c1f9f06be9da38807d0de54c2442b7 Mon Sep 17 00:00:00 2001 From: Harmony Honey Monroe Date: Thu, 27 Feb 2025 01:55:00 -0500 Subject: [PATCH 16/39] CenterContainer Actors on select --- src/menu/select.tscn | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/src/menu/select.tscn b/src/menu/select.tscn index e3fa7dc..12486ef 100644 --- a/src/menu/select.tscn +++ b/src/menu/select.tscn @@ -103,21 +103,26 @@ region_rect = Rect2( 0, 0, 136, 96 ) [node name="ActorLayer" type="CanvasLayer" parent="."] layer = 2 -[node name="Control" type="Control" parent="ActorLayer"] +[node name="CenterContainer" type="CenterContainer" parent="ActorLayer"] +anchor_right = 1.0 +anchor_bottom = 1.0 + +[node name="Control" type="Control" parent="ActorLayer/CenterContainer"] margin_left = 46.0 margin_top = 16.0 margin_right = 182.0 margin_bottom = 112.0 +rect_min_size = Vector2( 136, 96 ) rect_clip_content = true -[node name="Actors" type="Node2D" parent="ActorLayer/Control"] +[node name="Actors" type="Node2D" parent="ActorLayer/CenterContainer/Control"] position = Vector2( 68, 48 ) -[node name="Player" parent="ActorLayer/Control/Actors" instance=ExtResource( 5 )] +[node name="Player" parent="ActorLayer/CenterContainer/Control/Actors" instance=ExtResource( 5 )] unique_name_in_owner = true position = Vector2( -21, 10 ) -[node name="Exit" parent="ActorLayer/Control/Actors" instance=ExtResource( 15 )] +[node name="Exit" parent="ActorLayer/CenterContainer/Control/Actors" instance=ExtResource( 15 )] unique_name_in_owner = true position = Vector2( 19, 17 ) From dc96e13e19586f1984ba9a99a216549271056299 Mon Sep 17 00:00:00 2001 From: Harmony Honey Monroe Date: Thu, 27 Feb 2025 02:09:25 -0500 Subject: [PATCH 17/39] Adjust for odd number X resolutions (: --- src/autoload/Wipe.gd | 2 +- src/menu/select.gd | 6 ++++++ src/menu/select.tscn | 11 ++++++----- 3 files changed, 13 insertions(+), 6 deletions(-) diff --git a/src/autoload/Wipe.gd b/src/autoload/Wipe.gd index 99ef43c..c4e6910 100644 --- a/src/autoload/Wipe.gd +++ b/src/autoload/Wipe.gd @@ -53,7 +53,7 @@ func item_rect(): mat.set_shader_param("size", (image.rect_size / Vector2(228, 128)) * Vector2(14.25, 8)) mat.set_shader_param("offset", Vector2(fposmod(image.rect_size.x / 32, 1.0), 0)) - print(mat.get_shader_param("size"), " / ", mat.get_shader_param("offset")) + #print(mat.get_shader_param("size"), " / ", mat.get_shader_param("offset")) func set_duration(arg): duration = arg diff --git a/src/menu/select.gd b/src/menu/select.gd index 6b23c6a..7507ab5 100644 --- a/src/menu/select.gd +++ b/src/menu/select.gd @@ -70,6 +70,8 @@ var actor_jump := 0.5 func _ready(): Shared.load_save() + $"%Center".connect("item_rect_changed", self, "item_rect") + item_rect() screen = screen.duplicate() $"%Screen".queue_free() @@ -194,6 +196,10 @@ func _physics_process(delta): print(screen_time, " screeening time") break +func item_rect(): + print($"%Center".rect_size) + $"%Center".rect_position.x = posmod($"%Center".rect_size.x, 2) + func make_screen(i := 0): var new = screen.duplicate() var new_overlay = overlay_node.duplicate() diff --git a/src/menu/select.tscn b/src/menu/select.tscn index 12486ef..bd43b07 100644 --- a/src/menu/select.tscn +++ b/src/menu/select.tscn @@ -103,11 +103,12 @@ region_rect = Rect2( 0, 0, 136, 96 ) [node name="ActorLayer" type="CanvasLayer" parent="."] layer = 2 -[node name="CenterContainer" type="CenterContainer" parent="ActorLayer"] +[node name="Center" type="CenterContainer" parent="ActorLayer"] +unique_name_in_owner = true anchor_right = 1.0 anchor_bottom = 1.0 -[node name="Control" type="Control" parent="ActorLayer/CenterContainer"] +[node name="Control" type="Control" parent="ActorLayer/Center"] margin_left = 46.0 margin_top = 16.0 margin_right = 182.0 @@ -115,14 +116,14 @@ margin_bottom = 112.0 rect_min_size = Vector2( 136, 96 ) rect_clip_content = true -[node name="Actors" type="Node2D" parent="ActorLayer/CenterContainer/Control"] +[node name="Actors" type="Node2D" parent="ActorLayer/Center/Control"] position = Vector2( 68, 48 ) -[node name="Player" parent="ActorLayer/CenterContainer/Control/Actors" instance=ExtResource( 5 )] +[node name="Player" parent="ActorLayer/Center/Control/Actors" instance=ExtResource( 5 )] unique_name_in_owner = true position = Vector2( -21, 10 ) -[node name="Exit" parent="ActorLayer/CenterContainer/Control/Actors" instance=ExtResource( 15 )] +[node name="Exit" parent="ActorLayer/Center/Control/Actors" instance=ExtResource( 15 )] unique_name_in_owner = true position = Vector2( 19, 17 ) From d5259f7ad97b4157b9bc188ec6f746b7d9d29650 Mon Sep 17 00:00:00 2001 From: Harmony Honey Monroe Date: Fri, 28 Feb 2025 03:49:47 -0500 Subject: [PATCH 18/39] working on touch_controls visible on touch, hide on key --- src/autoload/touch_screen.gd | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/autoload/touch_screen.gd b/src/autoload/touch_screen.gd index 64e7aa2..7305122 100644 --- a/src/autoload/touch_screen.gd +++ b/src/autoload/touch_screen.gd @@ -16,6 +16,12 @@ func _ready(): visible = (OS.has_touchscreen_ui_hint() and OS.get_name() == "HTML5") or OS.get_name() == "Android" vis() +func _input(event): + if event is InputEventScreenTouch or event is InputEventScreenDrag: + visible = true + elif event is InputEventKey or event is InputEventJoypadButton or event is InputEventJoypadMotion: + visible = false + func vis(): if is_instance_valid(UI.keys_node): UI.keys_node.visible = !visible From bddb9123e8b91638b7d7c18e24c28a66577cc48a Mon Sep 17 00:00:00 2001 From: Harmony Honey Monroe Date: Mon, 3 Mar 2025 15:30:35 -0500 Subject: [PATCH 19/39] touch screen toggle, always options ! fullscreen & borderless option simplified splash drawn on top of touch controls save options for view and touch controls --- src/autoload/Shared.gd | 31 ++- src/autoload/touch_screen.gd | 5 +- src/menu/Menu.gd | 2 +- src/menu/options/Borderless.gd | 20 -- src/menu/options/Fullscreen.gd | 34 ++-- src/menu/options/OptionsMenu.tscn | 328 ++++++++++++++---------------- src/menu/options/Touch.gd | 14 +- src/menu/splash.tscn | 2 +- 8 files changed, 198 insertions(+), 238 deletions(-) delete mode 100644 src/menu/options/Borderless.gd diff --git a/src/autoload/Shared.gd b/src/autoload/Shared.gd index d2ee259..4a4b590 100644 --- a/src/autoload/Shared.gd +++ b/src/autoload/Shared.gd @@ -80,6 +80,7 @@ var last_palette = -1 var time_elapsed := 0 var auto_save_clock := 0 var auto_save_time := 1800 +var window_option := 0 setget set_window_option func _ready(): print("Shared._ready(): ") @@ -94,7 +95,7 @@ func _ready(): # scale window window_scale = floor(OS.get_screen_size().x / get_viewport().size.x) window_scale = max(1, floor(window_scale * 0.9)) - set_window_scale() + #set_window_scale() # lower volume for i in [1, 2]: @@ -317,11 +318,23 @@ func load_keys(path := keys_path): for e in r.dict[a]: InputMap.action_add_event(a, e) +func set_window_option(arg := window_option): + window_option = clamp(arg, 0, 4) + OS.window_borderless = window_option == 1 or window_option == 2 + OS.window_fullscreen = window_option == 3 + if window_option == 2: + OS.window_size = OS.get_screen_size() + + OS.set_window_position(Vector2.ZERO if window_option == 2 else (OS.get_screen_size() * 0.5 - OS.get_window_size() * 0.5)) + Input.mouse_mode = Input.MOUSE_MODE_VISIBLE if window_option < 3 else Input.MOUSE_MODE_HIDDEN + func save_options(path := options_path): var data = {} data["sfx"] = bus_volume[1] - data["music"] = bus_volume[2] - data["fullscreen"] = int(OS.window_fullscreen) + data["ost"] = bus_volume[2] + data["touch"] = int(TouchScreen.is_stay) + data["full"] = int(OS.window_fullscreen) + data["view"] = int(window_option) data["time"] = time_elapsed print("save_options, path: ", path, " time: ", time_elapsed) @@ -337,12 +350,16 @@ func load_options(path := options_path): var v = int(dict["sfx"]) bus_volume[1] = v set_bus_volume(1, v) - if dict.has("music"): - var v = int(dict["music"]) + if dict.has("ost"): + var v = int(dict["ost"]) bus_volume[2] = v set_bus_volume(2, v) - if dict.has("fullscreen"): - set_fullscreen(bool(dict["fullscreen"])) + if dict.has("full"): + set_fullscreen(bool(dict["full"])) + if dict.has("touch"): + TouchScreen.is_stay = bool(dict["touch"]) + if dict.has("view"): + self.window_option = int(dict["view"]) if dict.has("time"): time_elapsed = abs(int(dict["time"])) diff --git a/src/autoload/touch_screen.gd b/src/autoload/touch_screen.gd index 7305122..ff7ad4c 100644 --- a/src/autoload/touch_screen.gd +++ b/src/autoload/touch_screen.gd @@ -9,18 +9,19 @@ onready var buttons := [$Control/HBoxRight/C/Control/Button, $Control/HBoxRight/ onready var btns := $Control/DPad/Buttons.get_children() onready var actions := InputMap.get_actions() +export var is_stay := false + func _ready(): connect("visibility_changed", self, "vis") yield(get_tree(), "idle_frame") - visible = (OS.has_touchscreen_ui_hint() and OS.get_name() == "HTML5") or OS.get_name() == "Android" vis() func _input(event): if event is InputEventScreenTouch or event is InputEventScreenDrag: visible = true elif event is InputEventKey or event is InputEventJoypadButton or event is InputEventJoypadMotion: - visible = false + visible = is_stay func vis(): if is_instance_valid(UI.keys_node): diff --git a/src/menu/Menu.gd b/src/menu/Menu.gd index 6d36d73..0be52b5 100644 --- a/src/menu/Menu.gd +++ b/src/menu/Menu.gd @@ -56,7 +56,7 @@ func make_list(arg): list_node = arg list = [] for i in arg.get_children(): - if !i.is_in_group("no_item"): + if !i.is_in_group("no_item") and i.visible: list.append(i) func menu_input(event): diff --git a/src/menu/options/Borderless.gd b/src/menu/options/Borderless.gd deleted file mode 100644 index 2aef2e9..0000000 --- a/src/menu/options/Borderless.gd +++ /dev/null @@ -1,20 +0,0 @@ -extends CanvasItem - -onready var fill = $Box/Fill -var is_selected = false - -func _ready(): - fill.visible = OS.window_borderless - -func select(): - is_selected = true - -func deselect(): - is_selected = false - -func _input(event): - if is_selected and event.is_action_pressed("ui_yes"): - var is_full = OS.window_borderless - OS.window_borderless = !is_full - Audio.play("menu_delete", 0.5, 1.5) - fill.visible = !is_full diff --git a/src/menu/options/Fullscreen.gd b/src/menu/options/Fullscreen.gd index 8deeb61..d572bc8 100644 --- a/src/menu/options/Fullscreen.gd +++ b/src/menu/options/Fullscreen.gd @@ -1,27 +1,19 @@ extends CanvasItem -onready var fill = $Box/Fill -var is_selected = false +onready var label := $Label2 +var cursor = 0 +var text = ["windowed", "win no border", "full no border", "fullscreen"] func _ready(): - fill.visible = OS.window_fullscreen + yield(get_tree(), "idle_frame") + cursor = Shared.window_option + label.text = text[cursor] -func select(): - is_selected = true +func act(): + scroll() -func deselect(): - is_selected = false - -# HTML5 fullscreen fix -func _input(event): - if is_selected and event.is_action_pressed("ui_yes"): - var is_full = OS.window_fullscreen - Shared.set_fullscreen(!is_full) - #OS.window_fullscreen = !is_full - Shared.set_window_scale() - Audio.play("menu_pause", 0.7, 1.3) - fill.visible = !is_full - if !is_full: - Input.set_mouse_mode(Input.MOUSE_MODE_HIDDEN) - else: - Input.set_mouse_mode(Input.MOUSE_MODE_VISIBLE) +func scroll(arg := 1): + cursor = wrapi(cursor + arg, 0, 4) + label.text = text[cursor] + Shared.window_option = cursor + Audio.play("menu_pause", 0.7, 1.3) diff --git a/src/menu/options/OptionsMenu.tscn b/src/menu/options/OptionsMenu.tscn index ca30a87..435b7c2 100644 --- a/src/menu/options/OptionsMenu.tscn +++ b/src/menu/options/OptionsMenu.tscn @@ -7,7 +7,7 @@ [ext_resource path="res://media/audio/sfx/btn0.wav" type="AudioStream" id=5] [ext_resource path="res://media/font/QuinqueFive.ttf" type="DynamicFontData" id=6] [ext_resource path="res://media/font/ThaleahFat.ttf" type="DynamicFontData" id=7] -[ext_resource path="res://src/menu/options/Borderless.gd" type="Script" id=8] +[ext_resource path="res://media/image/tinyArrow.png" type="Texture" id=9] [ext_resource path="res://src/menu/options/Fullscreen.gd" type="Script" id=20] [ext_resource path="res://src/menu/options/WindowSize.gd" type="Script" id=21] [ext_resource path="res://src/menu/options/Touch.gd" type="Script" id=22] @@ -30,7 +30,7 @@ pause_mode = 2 layer = 30 script = ExtResource( 1 ) parent_path = NodePath(".") -list_path = NodePath("Center/Control/MenuItems") +list_path = NodePath("Center/Control/CenterContainer/MenuItems") cursor_path = NodePath("Center/Control/Cursor") cursor_expand = Vector2( 4, 4 ) is_audio_scroll = true @@ -63,178 +63,190 @@ margin_bottom = 35.0 script = ExtResource( 4 ) color_blink = PoolColorArray( 0, 0, 1, 1, 0, 0.482353, 1, 1 ) -[node name="Header" type="Label" parent="Center/Control"] -margin_top = 7.0 -margin_right = 228.0 -margin_bottom = 20.0 +[node name="CenterContainer" type="CenterContainer" parent="Center/Control"] +anchor_right = 1.0 +anchor_bottom = 1.0 + +[node name="MenuItems" type="VBoxContainer" parent="Center/Control/CenterContainer"] +margin_left = 53.0 +margin_top = 11.0 +margin_right = 175.0 +margin_bottom = 116.0 +rect_min_size = Vector2( 122, 0 ) +alignment = 1 + +[node name="Header" type="Label" parent="Center/Control/CenterContainer/MenuItems" groups=["no_item"]] +margin_right = 122.0 +margin_bottom = 12.0 +rect_min_size = Vector2( 0, 12 ) custom_colors/font_color_shadow = Color( 0, 0, 0, 1 ) custom_constants/shadow_as_outline = 1 custom_fonts/font = SubResource( 4 ) text = "OPTIONS" align = 1 -[node name="MenuItems" type="VBoxContainer" parent="Center/Control"] -margin_left = 58.0 -margin_top = 21.0 -margin_right = 174.0 -margin_bottom = 113.0 -alignment = 1 - -[node name="Keyboard" type="HBoxContainer" parent="Center/Control/MenuItems"] -margin_right = 116.0 -margin_bottom = 8.0 +[node name="Keyboard" type="HBoxContainer" parent="Center/Control/CenterContainer/MenuItems"] +margin_top = 16.0 +margin_right = 122.0 +margin_bottom = 24.0 rect_min_size = Vector2( 0, 8 ) script = ExtResource( 3 ) -[node name="Label" type="Label" parent="Center/Control/MenuItems/Keyboard"] +[node name="Label" type="Label" parent="Center/Control/CenterContainer/MenuItems/Keyboard"] margin_top = 1.0 margin_right = 84.0 margin_bottom = 6.0 custom_fonts/font = SubResource( 2 ) text = "Keyboard Setup" -[node name="Spacer" type="Control" parent="Center/Control/MenuItems/Keyboard"] +[node name="Spacer" type="Control" parent="Center/Control/CenterContainer/MenuItems/Keyboard"] margin_left = 88.0 -margin_right = 104.0 +margin_right = 110.0 margin_bottom = 8.0 size_flags_horizontal = 3 -[node name="Spacer2" type="Control" parent="Center/Control/MenuItems/Keyboard"] -margin_left = 108.0 -margin_right = 116.0 +[node name="Spacer2" type="Control" parent="Center/Control/CenterContainer/MenuItems/Keyboard"] +margin_left = 114.0 +margin_right = 122.0 margin_bottom = 8.0 rect_min_size = Vector2( 8, 0 ) -[node name="Gamepad" type="HBoxContainer" parent="Center/Control/MenuItems"] -margin_top = 12.0 -margin_right = 116.0 -margin_bottom = 20.0 +[node name="Gamepad" type="HBoxContainer" parent="Center/Control/CenterContainer/MenuItems"] +margin_top = 28.0 +margin_right = 122.0 +margin_bottom = 36.0 rect_min_size = Vector2( 0, 8 ) script = ExtResource( 3 ) is_gamepad = true -[node name="Label" type="Label" parent="Center/Control/MenuItems/Gamepad"] +[node name="Label" type="Label" parent="Center/Control/CenterContainer/MenuItems/Gamepad"] margin_top = 1.0 margin_right = 78.0 margin_bottom = 6.0 custom_fonts/font = SubResource( 2 ) text = "gamepad Setup" -[node name="Spacer" type="Control" parent="Center/Control/MenuItems/Gamepad"] +[node name="Spacer" type="Control" parent="Center/Control/CenterContainer/MenuItems/Gamepad"] margin_left = 82.0 -margin_right = 104.0 +margin_right = 110.0 margin_bottom = 8.0 size_flags_horizontal = 3 -[node name="Spacer2" type="Control" parent="Center/Control/MenuItems/Gamepad"] -margin_left = 108.0 -margin_right = 116.0 +[node name="Spacer2" type="Control" parent="Center/Control/CenterContainer/MenuItems/Gamepad"] +margin_left = 114.0 +margin_right = 122.0 margin_bottom = 8.0 rect_min_size = Vector2( 8, 0 ) -[node name="Sounds" parent="Center/Control/MenuItems" instance=ExtResource( 2 )] -margin_top = 24.0 -margin_right = 116.0 -margin_bottom = 32.0 +[node name="Sounds" parent="Center/Control/CenterContainer/MenuItems" instance=ExtResource( 2 )] +margin_top = 40.0 +margin_right = 122.0 +margin_bottom = 48.0 -[node name="Music" parent="Center/Control/MenuItems" instance=ExtResource( 2 )] -margin_top = 36.0 -margin_right = 116.0 -margin_bottom = 44.0 +[node name="Music" parent="Center/Control/CenterContainer/MenuItems" instance=ExtResource( 2 )] +margin_top = 52.0 +margin_right = 122.0 +margin_bottom = 60.0 bus = 2 -[node name="Label" parent="Center/Control/MenuItems/Music" index="0"] +[node name="Label" parent="Center/Control/CenterContainer/MenuItems/Music" index="0"] margin_right = 30.0 text = "Music" -[node name="Spacer" parent="Center/Control/MenuItems/Music" index="1"] +[node name="Spacer" parent="Center/Control/CenterContainer/MenuItems/Music" index="1"] margin_left = 32.0 -margin_right = 65.0 +margin_right = 71.0 -[node name="Arrow" parent="Center/Control/MenuItems/Music" index="2"] -margin_left = 67.0 -margin_right = 70.0 +[node name="Arrow" parent="Center/Control/CenterContainer/MenuItems/Music" index="2"] +margin_left = 73.0 +margin_right = 76.0 -[node name="Meter" parent="Center/Control/MenuItems/Music" index="3"] -margin_left = 72.0 -margin_right = 111.0 +[node name="Meter" parent="Center/Control/CenterContainer/MenuItems/Music" index="3"] +margin_left = 78.0 +margin_right = 117.0 -[node name="Arrow2" parent="Center/Control/MenuItems/Music" index="4"] -margin_left = 113.0 -margin_right = 116.0 +[node name="Arrow2" parent="Center/Control/CenterContainer/MenuItems/Music" index="4"] +margin_left = 119.0 +margin_right = 122.0 -[node name="AudioStreamPlayer" parent="Center/Control/MenuItems/Music" index="5"] +[node name="AudioStreamPlayer" parent="Center/Control/CenterContainer/MenuItems/Music" index="5"] stream = ExtResource( 5 ) bus = "Music" -[node name="Fullscreen" type="HBoxContainer" parent="Center/Control/MenuItems"] -margin_top = 48.0 -margin_right = 116.0 -margin_bottom = 56.0 +[node name="View" type="HBoxContainer" parent="Center/Control/CenterContainer/MenuItems"] +margin_top = 64.0 +margin_right = 122.0 +margin_bottom = 72.0 +rect_min_size = Vector2( 116, 8 ) +custom_constants/separation = 2 script = ExtResource( 20 ) -[node name="Label" type="Label" parent="Center/Control/MenuItems/Fullscreen"] +[node name="Label" type="Label" parent="Center/Control/CenterContainer/MenuItems/View"] margin_top = 1.0 -margin_right = 60.0 +margin_right = 24.0 margin_bottom = 6.0 custom_fonts/font = SubResource( 2 ) -text = "Fullscreen" +text = "view" __meta__ = { "_edit_use_anchors_": false } -[node name="Spacer" type="Control" parent="Center/Control/MenuItems/Fullscreen"] -margin_left = 64.0 -margin_right = 92.0 +[node name="Spacer" type="Control" parent="Center/Control/CenterContainer/MenuItems/View"] +margin_left = 26.0 +margin_right = 26.0 margin_bottom = 8.0 size_flags_horizontal = 3 -[node name="Box" type="ColorRect" parent="Center/Control/MenuItems/Fullscreen"] -margin_left = 96.0 -margin_right = 104.0 +[node name="Arrow" type="Control" parent="Center/Control/CenterContainer/MenuItems/View"] +margin_left = 28.0 +margin_right = 31.0 margin_bottom = 8.0 -rect_min_size = Vector2( 8, 8 ) +rect_min_size = Vector2( 3, 0 ) -[node name="Back" type="ColorRect" parent="Center/Control/MenuItems/Fullscreen/Box"] -margin_left = 1.0 +[node name="Sprite" type="Sprite" parent="Center/Control/CenterContainer/MenuItems/View/Arrow"] +position = Vector2( 2, 4 ) +texture = ExtResource( 9 ) + +[node name="Label2" type="Label" parent="Center/Control/CenterContainer/MenuItems/View"] +margin_left = 33.0 margin_top = 1.0 -margin_right = 7.0 -margin_bottom = 7.0 -color = Color( 0, 0, 0, 1 ) - -[node name="Fill" type="ColorRect" parent="Center/Control/MenuItems/Fullscreen/Box"] -margin_left = 2.0 -margin_top = 2.0 -margin_right = 6.0 +margin_right = 117.0 margin_bottom = 6.0 +custom_fonts/font = SubResource( 2 ) +text = "full no border" __meta__ = { "_edit_use_anchors_": false } -[node name="Spacer2" type="Control" parent="Center/Control/MenuItems/Fullscreen"] -margin_left = 108.0 -margin_right = 116.0 +[node name="Arrow2" type="Control" parent="Center/Control/CenterContainer/MenuItems/View"] +margin_left = 119.0 +margin_right = 122.0 margin_bottom = 8.0 -rect_min_size = Vector2( 8, 0 ) +rect_min_size = Vector2( 3, 0 ) -[node name="WindowSize" type="HBoxContainer" parent="Center/Control/MenuItems"] -margin_top = 60.0 -margin_right = 116.0 -margin_bottom = 68.0 +[node name="Sprite" type="Sprite" parent="Center/Control/CenterContainer/MenuItems/View/Arrow2"] +position = Vector2( 1, 4 ) +texture = ExtResource( 9 ) +flip_h = true + +[node name="WindowSize" type="HBoxContainer" parent="Center/Control/CenterContainer/MenuItems"] +margin_top = 76.0 +margin_right = 122.0 +margin_bottom = 84.0 rect_min_size = Vector2( 0, 8 ) script = ExtResource( 21 ) -[node name="Label" type="Label" parent="Center/Control/MenuItems/WindowSize"] +[node name="Label" type="Label" parent="Center/Control/CenterContainer/MenuItems/WindowSize"] margin_top = 1.0 -margin_right = 36.0 +margin_right = 24.0 margin_bottom = 6.0 custom_fonts/font = SubResource( 2 ) -text = "Window" +text = "Size" -[node name="Scale" type="Label" parent="Center/Control/MenuItems/WindowSize"] -margin_left = 40.0 +[node name="Scale" type="Label" parent="Center/Control/CenterContainer/MenuItems/WindowSize"] +margin_left = 28.0 margin_top = 1.0 -margin_right = 58.0 +margin_right = 64.0 margin_bottom = 6.0 size_flags_horizontal = 3 custom_fonts/font = SubResource( 2 ) @@ -244,121 +256,77 @@ __meta__ = { "_edit_use_anchors_": false } -[node name="Resolution" type="Label" parent="Center/Control/MenuItems/WindowSize"] -margin_left = 62.0 +[node name="Resolution" type="Label" parent="Center/Control/CenterContainer/MenuItems/WindowSize"] +margin_left = 68.0 margin_top = 1.0 -margin_right = 116.0 +margin_right = 122.0 margin_bottom = 6.0 custom_fonts/font = SubResource( 2 ) text = "228 x 128" align = 1 -[node name="Borderless" type="HBoxContainer" parent="Center/Control/MenuItems"] -margin_top = 72.0 -margin_right = 116.0 -margin_bottom = 80.0 -script = ExtResource( 8 ) - -[node name="Label" type="Label" parent="Center/Control/MenuItems/Borderless"] -margin_top = 1.0 -margin_right = 60.0 -margin_bottom = 6.0 -custom_fonts/font = SubResource( 2 ) -text = "Borderless" - -[node name="Spacer" type="Control" parent="Center/Control/MenuItems/Borderless"] -margin_left = 64.0 -margin_right = 92.0 -margin_bottom = 8.0 -size_flags_horizontal = 3 - -[node name="Box" type="ColorRect" parent="Center/Control/MenuItems/Borderless"] -margin_left = 96.0 -margin_right = 104.0 -margin_bottom = 8.0 -rect_min_size = Vector2( 8, 8 ) - -[node name="Back" type="ColorRect" parent="Center/Control/MenuItems/Borderless/Box"] -margin_left = 1.0 -margin_top = 1.0 -margin_right = 7.0 -margin_bottom = 7.0 -color = Color( 0, 0, 0, 1 ) - -[node name="Fill" type="ColorRect" parent="Center/Control/MenuItems/Borderless/Box"] -margin_left = 2.0 -margin_top = 2.0 -margin_right = 6.0 -margin_bottom = 6.0 -__meta__ = { -"_edit_use_anchors_": false -} - -[node name="Spacer2" type="Control" parent="Center/Control/MenuItems/Borderless"] -margin_left = 108.0 -margin_right = 116.0 -margin_bottom = 8.0 -rect_min_size = Vector2( 8, 0 ) - -[node name="TouchControls" type="HBoxContainer" parent="Center/Control/MenuItems"] -margin_top = 84.0 -margin_right = 116.0 -margin_bottom = 92.0 +[node name="Touch" type="HBoxContainer" parent="Center/Control/CenterContainer/MenuItems"] +margin_top = 88.0 +margin_right = 122.0 +margin_bottom = 96.0 +rect_min_size = Vector2( 0, 8 ) +custom_constants/separation = 2 script = ExtResource( 22 ) -[node name="Label" type="Label" parent="Center/Control/MenuItems/TouchControls"] +[node name="Label" type="Label" parent="Center/Control/CenterContainer/MenuItems/Touch"] margin_top = 1.0 -margin_right = 84.0 +margin_right = 72.0 margin_bottom = 6.0 custom_fonts/font = SubResource( 2 ) -text = "Touch Controls" +text = "Touch screen" -[node name="Spacer" type="Control" parent="Center/Control/MenuItems/TouchControls"] -margin_left = 88.0 -margin_right = 92.0 +[node name="Spacer" type="Control" parent="Center/Control/CenterContainer/MenuItems/Touch"] +margin_left = 74.0 +margin_right = 74.0 margin_bottom = 8.0 size_flags_horizontal = 3 -[node name="Box" type="ColorRect" parent="Center/Control/MenuItems/TouchControls"] -margin_left = 96.0 -margin_right = 104.0 +[node name="Arrow" type="Control" parent="Center/Control/CenterContainer/MenuItems/Touch"] +margin_left = 76.0 +margin_right = 79.0 margin_bottom = 8.0 -rect_min_size = Vector2( 8, 8 ) +rect_min_size = Vector2( 3, 0 ) -[node name="Back" type="ColorRect" parent="Center/Control/MenuItems/TouchControls/Box"] -margin_left = 1.0 +[node name="Sprite" type="Sprite" parent="Center/Control/CenterContainer/MenuItems/Touch/Arrow"] +position = Vector2( 2, 4 ) +texture = ExtResource( 9 ) + +[node name="Label2" type="Label" parent="Center/Control/CenterContainer/MenuItems/Touch"] +margin_left = 81.0 margin_top = 1.0 -margin_right = 7.0 -margin_bottom = 7.0 -color = Color( 0, 0, 0, 1 ) - -[node name="Fill" type="ColorRect" parent="Center/Control/MenuItems/TouchControls/Box"] -margin_left = 2.0 -margin_top = 2.0 -margin_right = 6.0 +margin_right = 117.0 margin_bottom = 6.0 -__meta__ = { -"_edit_use_anchors_": false -} +custom_fonts/font = SubResource( 2 ) +text = "always" -[node name="Spacer2" type="Control" parent="Center/Control/MenuItems/TouchControls"] -margin_left = 108.0 -margin_right = 116.0 +[node name="Arrow2" type="Control" parent="Center/Control/CenterContainer/MenuItems/Touch"] +margin_left = 119.0 +margin_right = 122.0 margin_bottom = 8.0 -rect_min_size = Vector2( 8, 0 ) +rect_min_size = Vector2( 3, 0 ) -[node name="Time" type="HBoxContainer" parent="Center/Control/MenuItems" groups=["no_item"]] -margin_top = 96.0 -margin_right = 116.0 -margin_bottom = 101.0 +[node name="Sprite" type="Sprite" parent="Center/Control/CenterContainer/MenuItems/Touch/Arrow2"] +position = Vector2( 1, 4 ) +texture = ExtResource( 9 ) +flip_h = true -[node name="TimeLabel" type="Label" parent="Center/Control/MenuItems/Time"] +[node name="Time" type="HBoxContainer" parent="Center/Control/CenterContainer/MenuItems" groups=["no_item"]] +margin_top = 100.0 +margin_right = 122.0 +margin_bottom = 105.0 + +[node name="TimeLabel" type="Label" parent="Center/Control/CenterContainer/MenuItems/Time"] unique_name_in_owner = true -margin_right = 116.0 +margin_right = 122.0 margin_bottom = 5.0 size_flags_horizontal = 3 custom_fonts/font = SubResource( 2 ) -text = "Touch Controls" +text = "01:23" align = 1 -[editable path="Center/Control/MenuItems/Music"] +[editable path="Center/Control/CenterContainer/MenuItems/Music"] diff --git a/src/menu/options/Touch.gd b/src/menu/options/Touch.gd index d122fab..ca0b225 100644 --- a/src/menu/options/Touch.gd +++ b/src/menu/options/Touch.gd @@ -1,14 +1,16 @@ extends CanvasItem -onready var fill = $Box/Fill -var is_selected = false +onready var label := $Label2 +var text = ["toggle", "always"] func _ready(): yield(get_tree(), "idle_frame") - fill.visible = TouchScreen.visible + label.text = text[int(TouchScreen.is_stay)] + +func scroll(arg := 1): + act() func act(): - var is_touch = !TouchScreen.visible - TouchScreen.visible = is_touch - fill.visible = is_touch + TouchScreen.is_stay = !TouchScreen.is_stay + label.text = text[int(TouchScreen.is_stay)] Audio.play("menu_pause", 0.9, 1.1) diff --git a/src/menu/splash.tscn b/src/menu/splash.tscn index d00fa0a..4330ee2 100644 --- a/src/menu/splash.tscn +++ b/src/menu/splash.tscn @@ -8,7 +8,7 @@ script = ExtResource( 3 ) [node name="CanvasLayer" type="CanvasLayer" parent="."] -layer = 9 +layer = 90 [node name="ColorRect" type="ColorRect" parent="CanvasLayer"] anchor_right = 1.0 From 0a63473f296c8783e85fc843649d499fb6bf7447 Mon Sep 17 00:00:00 2001 From: Harmony Honey Monroe Date: Mon, 3 Mar 2025 16:22:16 -0500 Subject: [PATCH 20/39] save and load window size ! win size shown in options remove Back.gd and Unlock.gd unused option scripts remove Shared.set_window_scale() and window_scale --- project.godot | 4 ++-- src/autoload/Shared.gd | 22 +++++++--------------- src/menu/options/Back.gd | 5 ----- src/menu/options/Unlock.gd | 6 ------ src/menu/options/WindowSize.gd | 21 +++++++++++++++------ 5 files changed, 24 insertions(+), 34 deletions(-) delete mode 100644 src/menu/options/Back.gd delete mode 100644 src/menu/options/Unlock.gd diff --git a/project.godot b/project.godot index 8d36831..66a6257 100644 --- a/project.godot +++ b/project.godot @@ -109,8 +109,8 @@ KeyMenu="*res://src/menu/options/KeyMenu.tscn" window/size/width=228 window/size/height=128 -window/size/test_width=1280 -window/size/test_height=720 +window/size/test_width=1140 +window/size/test_height=640 window/dpi/allow_hidpi=true window/stretch/mode="viewport" window/stretch/aspect="keep_height" diff --git a/src/autoload/Shared.gd b/src/autoload/Shared.gd index 4a4b590..ad4e9aa 100644 --- a/src/autoload/Shared.gd +++ b/src/autoload/Shared.gd @@ -40,7 +40,6 @@ var is_save := false var last_menu := "main" var last_cursor := 0 -var window_scale := 1 var view_size := Vector2(228, 128) var bus_volume = [10, 10, 10] @@ -92,11 +91,6 @@ func _ready(): ghosts.append(g) node_ghost.visible = false - # scale window - window_scale = floor(OS.get_screen_size().x / get_viewport().size.x) - window_scale = max(1, floor(window_scale * 0.9)) - #set_window_scale() - # lower volume for i in [1, 2]: set_bus_volume(i, 7) @@ -111,7 +105,6 @@ func _ready(): if !dir.open(s) == OK: dir.make_dir(s) - # get all maps for i in dir_list(map_dir): maps.append(i.split(".")[0]) @@ -335,6 +328,8 @@ func save_options(path := options_path): data["touch"] = int(TouchScreen.is_stay) data["full"] = int(OS.window_fullscreen) data["view"] = int(window_option) + var ws = OS.window_size + data["size"] = str(ws.x) + "," + str(ws.y) data["time"] = time_elapsed print("save_options, path: ", path, " time: ", time_elapsed) @@ -360,6 +355,11 @@ func load_options(path := options_path): TouchScreen.is_stay = bool(dict["touch"]) if dict.has("view"): self.window_option = int(dict["view"]) + if dict.has("size"): + var ws = str(dict["size"]).split_floats(",", false) + if ws.size() == 2: + OS.window_size = Vector2(float(ws[0]), float(ws[1])) + set_window_option() if dict.has("time"): time_elapsed = abs(int(dict["time"])) @@ -552,14 +552,6 @@ func set_bus_volume(_bus := 1, _vol := 5): bus_volume[_bus] = clamp(_vol, 0, 10) AudioServer.set_bus_volume_db(_bus, linear2db(bus_volume[_bus] / 10.0)) -func set_window_scale(arg := window_scale): - window_scale = max(1, arg if arg else window_scale) - if OS.get_name() != "HTML5": - OS.window_size = Vector2(view_size.x * window_scale, view_size.y * window_scale) - # center window - OS.set_window_position(OS.get_screen_size() * 0.5 - OS.get_window_size() * 0.5) - return "window_scale: " + str(window_scale) + " - resolution: " + str(OS.get_window_size()) - func get_all_children(n, a := []): if is_instance_valid(n): a.append(n) diff --git a/src/menu/options/Back.gd b/src/menu/options/Back.gd deleted file mode 100644 index 3e0d89d..0000000 --- a/src/menu/options/Back.gd +++ /dev/null @@ -1,5 +0,0 @@ -extends Node2D - -func act(): - Shared.wipe_scene(Shared.main_menu_path) - Audio.play("menu_back", 0.9, 1.1) diff --git a/src/menu/options/Unlock.gd b/src/menu/options/Unlock.gd deleted file mode 100644 index 60fb5c9..0000000 --- a/src/menu/options/Unlock.gd +++ /dev/null @@ -1,6 +0,0 @@ -extends Node2D - -func act(): - Audio.play("menu_pick", 0.9, 1.1) - Shared.unlock() - Shared.cam.shake(10) diff --git a/src/menu/options/WindowSize.gd b/src/menu/options/WindowSize.gd index 3593b3f..bddf5c1 100644 --- a/src/menu/options/WindowSize.gd +++ b/src/menu/options/WindowSize.gd @@ -3,14 +3,23 @@ extends CanvasItem onready var label_scale := $Scale onready var label_res := $Resolution +var cursor = 0 + func _ready(): - set_text() + get_tree().connect("screen_resized", self, "size_changed") + yield(get_tree(),"idle_frame") + + size_changed() func scroll(arg = 1): - Shared.set_window_scale(clamp(Shared.window_scale + arg, 1, 12)) - set_text() + cursor = clamp(cursor + arg, 1, 32) + OS.window_size = Shared.view_size * cursor + Shared.set_window_option() Audio.play("menu_scroll2", 0.7, 1.4) -func set_text(): - label_scale.text = str(Shared.window_scale) + "x" - label_res.text = str(Shared.view_size.x * Shared.window_scale) + " x " + str(Shared.view_size.y * Shared.window_scale) +func size_changed(): + var view_size = OS.window_size + label_res.text = str(view_size.x) + " x " + str(view_size.y) + + cursor = floor(view_size.y / Shared.view_size. y) + label_scale.text = str(cursor) + "x" if OS.window_size == Shared.view_size * cursor else "" From 238d8db040d3be3764276b8b7eaebd5785996375 Mon Sep 17 00:00:00 2001 From: Cassidy James Blaede Date: Mon, 3 Mar 2025 21:07:39 -0700 Subject: [PATCH 21/39] Linux: Update MetaInfo for 2025.03.03 release (#9) --- linux/net.hhoney.tinycrate.metainfo.xml | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/linux/net.hhoney.tinycrate.metainfo.xml b/linux/net.hhoney.tinycrate.metainfo.xml index 472c9be..a964397 100644 --- a/linux/net.hhoney.tinycrate.metainfo.xml +++ b/linux/net.hhoney.tinycrate.metainfo.xml @@ -60,6 +60,23 @@ + + +
    +
  • 6 Save Slots
  • +
  • Local High Scores
  • +
  • More support for Touch Screens
  • +
  • Optimize level select screen, much faster
  • +
  • Display global time played on Options Menu
  • +
+

Save and Load Options for:

+
    +
  • Touch Screen: Toggle or Always
  • +
  • Window Size: x and y
  • +
  • View: Window, Window No Border, Fullscreen No Border, Exclusive Fullscreen
  • +
+
+

Updated icon

From 5fface5eb1ba038cde4e31066ddb136943ae15d2 Mon Sep 17 00:00:00 2001 From: Harmony Honey Monroe Date: Wed, 5 Mar 2025 17:31:00 -0500 Subject: [PATCH 22/39] fix title logo color --- src/menu/StartMenu.tscn | 1 + 1 file changed, 1 insertion(+) diff --git a/src/menu/StartMenu.tscn b/src/menu/StartMenu.tscn index e074215..cbca30c 100644 --- a/src/menu/StartMenu.tscn +++ b/src/menu/StartMenu.tscn @@ -1074,6 +1074,7 @@ valign = 2 [node name="Stage" type="Node2D" parent="."] script = ExtResource( 26 ) is_random = true +color_path = NodePath("../Control/Logo") [node name="SolidTileMap" parent="Stage" instance=ExtResource( 11 )] tile_set = SubResource( 13 ) From 248ae6efe60e4c13ca703c2d355ff81671315b5e Mon Sep 17 00:00:00 2001 From: Harmony Honey Monroe Date: Wed, 5 Mar 2025 17:59:57 -0500 Subject: [PATCH 23/39] background darkness option (: --- media/image/tinyArrow5.png | Bin 0 -> 106 bytes src/autoload/Shared.gd | 9 ++ src/menu/options/OptionsMenu.tscn | 220 ++++++++++++++++++------------ src/menu/options/Volume.tscn | 56 ++++---- src/menu/options/detail.gd | 19 +++ src/stage/DetailTileMap.gd | 7 + 6 files changed, 199 insertions(+), 112 deletions(-) create mode 100644 media/image/tinyArrow5.png create mode 100644 src/menu/options/detail.gd diff --git a/media/image/tinyArrow5.png b/media/image/tinyArrow5.png new file mode 100644 index 0000000000000000000000000000000000000000..9ff9100be00a08ebd42d1af6eee0fac8dda24001 GIT binary patch literal 106 zcmeAS@N?(olHy`uVBq!ia0vp^93afW1|*O0@9PFqjKx9jP7LeL$-D$|R6JcALnNjq zCn$*i`TzgFz0rKm`6^vZIg>QFBqSvzPZlvhWnj2j&i`9m?#V@ Date: Wed, 5 Mar 2025 19:07:41 -0500 Subject: [PATCH 24/39] DetailTileMap.visible = Shared.background_option > 0 --- src/stage/DetailTileMap.gd | 1 + 1 file changed, 1 insertion(+) diff --git a/src/stage/DetailTileMap.gd b/src/stage/DetailTileMap.gd index f674ee4..5cfd498 100644 --- a/src/stage/DetailTileMap.gd +++ b/src/stage/DetailTileMap.gd @@ -31,3 +31,4 @@ func set_wood_color(arg := wood_color): func background_signal(): var f = float(Shared.background_option) modulate = Color.black.linear_interpolate(Color.white, f / 10.0) + visible = f > 0 From e8836964e0e1f1b856015d3fd1121e8792a90e63 Mon Sep 17 00:00:00 2001 From: Harmony Honey Monroe Date: Wed, 5 Mar 2025 19:16:43 -0500 Subject: [PATCH 25/39] remove AAB Android App Bundle Export --- export_presets.cfg | 209 +-------------------------------------------- 1 file changed, 1 insertion(+), 208 deletions(-) diff --git a/export_presets.cfg b/export_presets.cfg index 19adadb..3506368 100644 --- a/export_presets.cfg +++ b/export_presets.cfg @@ -191,213 +191,6 @@ texture_format/etc2=false [preset.4] -name="Android AAB" -platform="Android" -runnable=true -custom_features="" -export_filter="all_resources" -include_filter="" -exclude_filter="" -export_path="export/android-bundle/Tiny-Crate33-11.aab" -script_export_mode=1 -script_encryption_key="" - -[preset.4.options] - -custom_template/debug="" -custom_template/release="" -custom_build/use_custom_build=true -custom_build/export_format=1 -custom_build/min_sdk="" -custom_build/target_sdk="34" -architectures/armeabi-v7a=true -architectures/arm64-v8a=true -architectures/x86=false -architectures/x86_64=false -keystore/debug="" -keystore/debug_user="" -keystore/debug_password="" -keystore/release="C:/Dev/keys/harmony.keystore" -keystore/release_user="harmony" -keystore/release_password="harmony" -one_click_deploy/clear_previous_install=true -version/code=9 -version/name="1.0" -package/unique_name="harmonyhoney.tinycrate2" -package/name="Tiny Crate" -package/signed=true -package/classify_as_game=true -package/retain_data_on_uninstall=false -package/exclude_from_recents=false -launcher_icons/main_192x192="res://media/image/android_icon.png" -launcher_icons/adaptive_foreground_432x432="" -launcher_icons/adaptive_background_432x432="" -graphics/opengl_debug=false -xr_features/xr_mode=0 -xr_features/hand_tracking=0 -xr_features/hand_tracking_frequency=0 -xr_features/passthrough=0 -screen/immersive_mode=true -screen/support_small=true -screen/support_normal=true -screen/support_large=true -screen/support_xlarge=true -user_data_backup/allow=false -command_line/extra_args="" -apk_expansion/enable=false -apk_expansion/SALT="" -apk_expansion/public_key="" -permissions/custom_permissions=PoolStringArray( ) -permissions/access_checkin_properties=false -permissions/access_coarse_location=false -permissions/access_fine_location=false -permissions/access_location_extra_commands=false -permissions/access_mock_location=false -permissions/access_network_state=false -permissions/access_surface_flinger=false -permissions/access_wifi_state=false -permissions/account_manager=false -permissions/add_voicemail=false -permissions/authenticate_accounts=false -permissions/battery_stats=false -permissions/bind_accessibility_service=false -permissions/bind_appwidget=false -permissions/bind_device_admin=false -permissions/bind_input_method=false -permissions/bind_nfc_service=false -permissions/bind_notification_listener_service=false -permissions/bind_print_service=false -permissions/bind_remoteviews=false -permissions/bind_text_service=false -permissions/bind_vpn_service=false -permissions/bind_wallpaper=false -permissions/bluetooth=false -permissions/bluetooth_admin=false -permissions/bluetooth_privileged=false -permissions/brick=false -permissions/broadcast_package_removed=false -permissions/broadcast_sms=false -permissions/broadcast_sticky=false -permissions/broadcast_wap_push=false -permissions/call_phone=false -permissions/call_privileged=false -permissions/camera=false -permissions/capture_audio_output=false -permissions/capture_secure_video_output=false -permissions/capture_video_output=false -permissions/change_component_enabled_state=false -permissions/change_configuration=false -permissions/change_network_state=false -permissions/change_wifi_multicast_state=false -permissions/change_wifi_state=false -permissions/clear_app_cache=false -permissions/clear_app_user_data=false -permissions/control_location_updates=false -permissions/delete_cache_files=false -permissions/delete_packages=false -permissions/device_power=false -permissions/diagnostic=false -permissions/disable_keyguard=false -permissions/dump=false -permissions/expand_status_bar=false -permissions/factory_test=false -permissions/flashlight=false -permissions/force_back=false -permissions/get_accounts=false -permissions/get_package_size=false -permissions/get_tasks=false -permissions/get_top_activity_info=false -permissions/global_search=false -permissions/hardware_test=false -permissions/inject_events=false -permissions/install_location_provider=false -permissions/install_packages=false -permissions/install_shortcut=false -permissions/internal_system_window=false -permissions/internet=true -permissions/kill_background_processes=false -permissions/location_hardware=false -permissions/manage_accounts=false -permissions/manage_app_tokens=false -permissions/manage_documents=false -permissions/manage_external_storage=false -permissions/master_clear=false -permissions/media_content_control=false -permissions/modify_audio_settings=false -permissions/modify_phone_state=false -permissions/mount_format_filesystems=false -permissions/mount_unmount_filesystems=false -permissions/nfc=false -permissions/persistent_activity=false -permissions/post_notifications=false -permissions/process_outgoing_calls=false -permissions/read_calendar=false -permissions/read_call_log=false -permissions/read_contacts=false -permissions/read_external_storage=false -permissions/read_frame_buffer=false -permissions/read_history_bookmarks=false -permissions/read_input_state=false -permissions/read_logs=false -permissions/read_phone_state=false -permissions/read_profile=false -permissions/read_sms=false -permissions/read_social_stream=false -permissions/read_sync_settings=false -permissions/read_sync_stats=false -permissions/read_user_dictionary=false -permissions/reboot=false -permissions/receive_boot_completed=false -permissions/receive_mms=false -permissions/receive_sms=false -permissions/receive_wap_push=false -permissions/record_audio=false -permissions/reorder_tasks=false -permissions/restart_packages=false -permissions/send_respond_via_message=false -permissions/send_sms=false -permissions/set_activity_watcher=false -permissions/set_alarm=false -permissions/set_always_finish=false -permissions/set_animation_scale=false -permissions/set_debug_app=false -permissions/set_orientation=false -permissions/set_pointer_speed=false -permissions/set_preferred_applications=false -permissions/set_process_limit=false -permissions/set_time=false -permissions/set_time_zone=false -permissions/set_wallpaper=false -permissions/set_wallpaper_hints=false -permissions/signal_persistent_processes=false -permissions/status_bar=false -permissions/subscribed_feeds_read=false -permissions/subscribed_feeds_write=false -permissions/system_alert_window=false -permissions/transmit_ir=false -permissions/uninstall_shortcut=false -permissions/update_device_stats=false -permissions/use_credentials=false -permissions/use_sip=false -permissions/vibrate=false -permissions/wake_lock=false -permissions/write_apn_settings=false -permissions/write_calendar=false -permissions/write_call_log=false -permissions/write_contacts=false -permissions/write_external_storage=false -permissions/write_gservices=false -permissions/write_history_bookmarks=false -permissions/write_profile=false -permissions/write_secure_settings=false -permissions/write_settings=false -permissions/write_sms=false -permissions/write_social_stream=false -permissions/write_sync_settings=false -permissions/write_user_dictionary=false - -[preset.5] - name="Android APK" platform="Android" runnable=false @@ -409,7 +202,7 @@ export_path="export/android/Tiny-Crate.apk" script_export_mode=1 script_encryption_key="" -[preset.5.options] +[preset.4.options] custom_template/debug="" custom_template/release="" From 62a69688a0eb8bb56694662ddf4518c979c541e3 Mon Sep 17 00:00:00 2001 From: Harmony Honey Monroe Date: Wed, 5 Mar 2025 19:17:56 -0500 Subject: [PATCH 26/39] remove android-bundle dir from scripts --- export/ready_folders.bat | 3 --- export/ready_folders.sh | 3 --- 2 files changed, 6 deletions(-) diff --git a/export/ready_folders.bat b/export/ready_folders.bat index 883fb8f..e599547 100644 --- a/export/ready_folders.bat +++ b/export/ready_folders.bat @@ -1,9 +1,6 @@ rmdir /s /q android mkdir android -rmdir /s /q android-bundle -mkdir android-bundle - rmdir /s /q linux mkdir linux diff --git a/export/ready_folders.sh b/export/ready_folders.sh index 8d87c73..14a2ffc 100755 --- a/export/ready_folders.sh +++ b/export/ready_folders.sh @@ -1,9 +1,6 @@ rm -rf android mkdir android -rm -rf android-bundle -mkdir android-bundle - rm -rf linux mkdir linux From 281cb1ee9934cf2ec20ae64bfff2d6b4ae37f774 Mon Sep 17 00:00:00 2001 From: Harmony Honey Monroe Date: Tue, 8 Apr 2025 00:15:45 -0400 Subject: [PATCH 27/39] revert butler push tinycrate-open to tinycrate --- export/butler_push.bat | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/export/butler_push.bat b/export/butler_push.bat index 67cd04c..b0bcc14 100644 --- a/export/butler_push.bat +++ b/export/butler_push.bat @@ -1,6 +1,6 @@ -butler push win hhoneysoftware/tinycrate-open:windows -butler push linux hhoneysoftware/tinycrate-open:linux -butler push mac hhoneysoftware/tinycrate-open:mac -butler push web hhoneysoftware/tinycrate-open:web -butler push android hhoneysoftware/tinycrate-open:android +butler push win hhoneysoftware/tinycrate:windows +butler push linux hhoneysoftware/tinycrate:linux +butler push mac hhoneysoftware/tinycrate:mac +butler push web hhoneysoftware/tinycrate:web +butler push android hhoneysoftware/tinycrate:android pause \ No newline at end of file From 4d750827169114109f9acfc662bd25e39acc3365 Mon Sep 17 00:00:00 2001 From: Cassidy James Blaede Date: Thu, 10 Apr 2025 10:41:14 -0600 Subject: [PATCH 28/39] MetaInfo: Add 2025.03.05 release notes (#11) --- linux/net.hhoney.tinycrate.metainfo.xml | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/linux/net.hhoney.tinycrate.metainfo.xml b/linux/net.hhoney.tinycrate.metainfo.xml index a964397..13e40d0 100644 --- a/linux/net.hhoney.tinycrate.metainfo.xml +++ b/linux/net.hhoney.tinycrate.metainfo.xml @@ -60,6 +60,15 @@ + + +
    +
  • Option for Background Visibility
  • +
  • Adjust visibility from 0% to 100%
  • +
  • HHoney Software Logo color fix
  • +
+
+
    From 7c4afaea5df6960c2fba3e7f60a1ce30afa4d70d Mon Sep 17 00:00:00 2001 From: Cassidy James Blaede Date: Thu, 10 Apr 2025 13:13:51 -0600 Subject: [PATCH 29/39] Workflows: improve filenames of CI artifacts (#13) - Changes the export name to `tinycrate-ci` to make it clear the artifacts are generated in CI - Appends the release tag to artifacts for releases resulting in e.g. `tinycrate-ci-2025.03.05.pck` Fixes #12 --- .github/workflows/godot.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/godot.yml b/.github/workflows/godot.yml index 19a5e30..733d58d 100644 --- a/.github/workflows/godot.yml +++ b/.github/workflows/godot.yml @@ -8,7 +8,7 @@ on: env: GODOT_VERSION: 3.6 - EXPORT_NAME: tinycrate-linux + EXPORT_NAME: tinycrate-ci jobs: export: @@ -53,4 +53,5 @@ jobs: env: GITHUB_TOKEN: ${{ github.token }} run: | - gh release upload '${{ github.ref_name }}' ${{ env.EXPORT_NAME }}.pck --repo '${{ github.repository }}' + mv '${{ env.EXPORT_NAME }}.pck' '${{ env.EXPORT_NAME }}-${{ github.ref_name }}.pck' + gh release upload '${{ github.ref_name }}' '${{ env.EXPORT_NAME }}-${{ github.ref_name }}.pck' --repo '${{ github.repository }}' From e5ce112c76b9dadbbb75205fa4fad1d9be2d56e0 Mon Sep 17 00:00:00 2001 From: Cassidy James Blaede Date: Fri, 11 Apr 2025 00:53:44 -0600 Subject: [PATCH 30/39] linux: Move release notes to their own file (#14) * linux: Put release info into its own file See https://www.freedesktop.org/software/appstream/docs/chap-Metadata.html#tag-releases * linux: point to external release info in main MetaInfo file * linux: Update manifest to install releases XML --- linux/net.hhoney.tinycrate.metainfo.xml | 150 +----------------------- linux/net.hhoney.tinycrate.releases.xml | 148 +++++++++++++++++++++++ linux/net.hhoney.tinycrate.yml | 1 + 3 files changed, 150 insertions(+), 149 deletions(-) create mode 100644 linux/net.hhoney.tinycrate.releases.xml diff --git a/linux/net.hhoney.tinycrate.metainfo.xml b/linux/net.hhoney.tinycrate.metainfo.xml index 13e40d0..e2c12cf 100644 --- a/linux/net.hhoney.tinycrate.metainfo.xml +++ b/linux/net.hhoney.tinycrate.metainfo.xml @@ -59,155 +59,7 @@ - - - -
      -
    • Option for Background Visibility
    • -
    • Adjust visibility from 0% to 100%
    • -
    • HHoney Software Logo color fix
    • -
    -
    -
    - - -
      -
    • 6 Save Slots
    • -
    • Local High Scores
    • -
    • More support for Touch Screens
    • -
    • Optimize level select screen, much faster
    • -
    • Display global time played on Options Menu
    • -
    -

    Save and Load Options for:

    -
      -
    • Touch Screen: Toggle or Always
    • -
    • Window Size: x and y
    • -
    • View: Window, Window No Border, Fullscreen No Border, Exclusive Fullscreen
    • -
    -
    -
    - - -

    Updated icon

    -
    -
    - - -

    Updated icon and under-the-hood cleanup

    -
    -
    - - -

    Patch 13 - Touch Controls Ghosting Fixed

    -
      -
    • Little fix for touch controls!
    • -
    • The D-Pad control Actions are swapped when changing between Menu & Gameplay.
    • -
    • Any button held down when finishing a level would stay held down when starting a new level.
    • -
    • Now the actions all release when being swapped (:
    • -
    -
    -
    - - -

    Patch 12 / Virtual D-Pad & Title Colors

    -
      -
    • Borderless Option
    • -
    • Palette Swaps on Start & Char Menu (-;
    • -
    • Virtual D-Pad Touch Controls !
    • -
    • Engine Upgrade to Godot 3.6
    • -
    -
    -
    - - -

    Tiny Patch - Touch Controls Rework & Volume Fix

    -
      -
    • I reworked how the virtual joystick works with touch controls! some users had issues, i hope this works for you!
    • -
    • also fixed loading the volume options (-:
    • -
    -
    -
    - - -

    Tiny Patch! Victory Bell & Secret Shortcut

    -
      -
    • Victory bell chime & blinking timer after finishing a level, or finishing FASTER !
    • -
    • Secret shortcut for Note on 2-1
    • -
    -
    -
    - - -

    Character Creator, Online Leaderboards, Speedruns + More!

    -

    Hello! A lot of love went into this March 2024 Tiny Crate Update (-:

    -

    Noteworthy changes:

    -
      -
    • Character Creator
    • -
    -

    Style & Name your character! Pick a color for your Hat, Skin, Suit, Eyes & Shoes (= Submit Speedrun High Scores with your username!

    -
      -
    • Online Leaderboards / Speedrunning
    • -
    • Speedrun Ghosts!
    • -
    -

    SilentWolf leaderboard backend has been integrated into Tiny Crate! Press Enter on level select to see the "Fastest Run" + "Fastest Note" high scores. Starting the level from either leaderboard will enable Speedrun Ghosts for that score! Ghosts are replays of your fastest runs completing the level (: Turn Ghosts On + Off in the Pause Menu!

    -
      -
    • 10 New Maps!
    • -
    • Unique Color Palette for each world!
    • -
    • Crate Variety / Colors
    • -
    -

    10 New Maps have been added to level select, with a total of 36 Gems to collect! Each of the 5 Worlds now has a unique color palette standing out from one another (= Crates now pick 1 of 5 different Images to display, reversing the x-axis or color for more variety. Crate palette changed to improve contrast (:

    -
      -
    • Rebind Keyboard & GamePad Inputs!
    • -
    • UI Input Display
    • -
    -

    I had been hearing of players with different keyboard layouts & other people having trouble playing Tiny Crate with the default keybindings! Now you can rebind the controls to any Keyboard or GamePad input you like! (-; These Inputs are shown on the UI in Menus.

    -
      -
    • Pause Menu Rebuilt!
    • -
    • Gameplay Stats
    • -
    -

    Pausing a level will show your fastest runs in the top left corner, along with death accumulated. Options are now accessible through the Pause Menu & Enabling Speedrun Ghosts (:

    -
      -
    • Touch Control Improvements!
    • -
    -

    I developed a new Virtual Joystick for touch screen devices! Mobile gameplay is now more intuitive & accessible with a full joystick to navigate! Coming Soon: X + C buttons will overlap to make double press easier

    -
      -
    • Start Menu Overhaul
    • -
    • Save Slots (=
    • -
    -

    Tiny Crate now has 3 Save Slots holding up to Three different Characters! Erase & Modify saves from the Start Menu <3 This Menu has been redesigned to incorporate new additions (: At the moment, old saves will be discarded, sorry!

    -
    -
    - - -

    Secret Update!

    -

    Find a Music Note hidden in every level! <3

    -
    -
    - - -

    Tiny Touch! Touch Control Support! ^.^

    -

    Tiny Crate is now playable on your mobile devices with Touch Screen support!

    -

    Touch controls are visible by default on all touch devices!

    -

    Enable or disable Touch Controls in the options menu on any device!

    -
    -
    - - -

    Tiny Update! Fixed Framerate Processing! (:

    -

    A user reported the game was running too fast for them 0=

    -

    You'll understand if you use Godot:

    -

    I had a feeling this would happen as the whole game has been written with _process() xD

    -

    Now everything runs under _physics_process() at a fixed 60FPS! (:

    -

    <3 Hopefully this is a smoother experience for everyone! (:

    -
    -
    - - -

    Tiny Crate is released! Thanks for playing! <3

    -
    -
    -
    - + net.hhoney.tinycrate.desktop CC0-1.0 Unlicense diff --git a/linux/net.hhoney.tinycrate.releases.xml b/linux/net.hhoney.tinycrate.releases.xml new file mode 100644 index 0000000..f82226b --- /dev/null +++ b/linux/net.hhoney.tinycrate.releases.xml @@ -0,0 +1,148 @@ + + + +
      +
    • Option for Background Visibility
    • +
    • Adjust visibility from 0% to 100%
    • +
    • HHoney Software Logo color fix
    • +
    +
    +
    + + +
      +
    • 6 Save Slots
    • +
    • Local High Scores
    • +
    • More support for Touch Screens
    • +
    • Optimize level select screen, much faster
    • +
    • Display global time played on Options Menu
    • +
    +

    Save and Load Options for:

    +
      +
    • Touch Screen: Toggle or Always
    • +
    • Window Size: x and y
    • +
    • View: Window, Window No Border, Fullscreen No Border, Exclusive Fullscreen
    • +
    +
    +
    + + +

    Updated icon

    +
    +
    + + +

    Updated icon and under-the-hood cleanup

    +
    +
    + + +

    Patch 13 - Touch Controls Ghosting Fixed

    +
      +
    • Little fix for touch controls!
    • +
    • The D-Pad control Actions are swapped when changing between Menu & Gameplay.
    • +
    • Any button held down when finishing a level would stay held down when starting a new level.
    • +
    • Now the actions all release when being swapped (:
    • +
    +
    +
    + + +

    Patch 12 / Virtual D-Pad & Title Colors

    +
      +
    • Borderless Option
    • +
    • Palette Swaps on Start & Char Menu (-;
    • +
    • Virtual D-Pad Touch Controls !
    • +
    • Engine Upgrade to Godot 3.6
    • +
    +
    +
    + + +

    Tiny Patch - Touch Controls Rework & Volume Fix

    +
      +
    • I reworked how the virtual joystick works with touch controls! some users had issues, i hope this works for you!
    • +
    • also fixed loading the volume options (-:
    • +
    +
    +
    + + +

    Tiny Patch! Victory Bell & Secret Shortcut

    +
      +
    • Victory bell chime & blinking timer after finishing a level, or finishing FASTER !
    • +
    • Secret shortcut for Note on 2-1
    • +
    +
    +
    + + +

    Character Creator, Online Leaderboards, Speedruns + More!

    +

    Hello! A lot of love went into this March 2024 Tiny Crate Update (-:

    +

    Noteworthy changes:

    +
      +
    • Character Creator
    • +
    +

    Style & Name your character! Pick a color for your Hat, Skin, Suit, Eyes & Shoes (= Submit Speedrun High Scores with your username!

    +
      +
    • Online Leaderboards / Speedrunning
    • +
    • Speedrun Ghosts!
    • +
    +

    SilentWolf leaderboard backend has been integrated into Tiny Crate! Press Enter on level select to see the "Fastest Run" + "Fastest Note" high scores. Starting the level from either leaderboard will enable Speedrun Ghosts for that score! Ghosts are replays of your fastest runs completing the level (: Turn Ghosts On + Off in the Pause Menu!

    +
      +
    • 10 New Maps!
    • +
    • Unique Color Palette for each world!
    • +
    • Crate Variety / Colors
    • +
    +

    10 New Maps have been added to level select, with a total of 36 Gems to collect! Each of the 5 Worlds now has a unique color palette standing out from one another (= Crates now pick 1 of 5 different Images to display, reversing the x-axis or color for more variety. Crate palette changed to improve contrast (:

    +
      +
    • Rebind Keyboard & GamePad Inputs!
    • +
    • UI Input Display
    • +
    +

    I had been hearing of players with different keyboard layouts & other people having trouble playing Tiny Crate with the default keybindings! Now you can rebind the controls to any Keyboard or GamePad input you like! (-; These Inputs are shown on the UI in Menus.

    +
      +
    • Pause Menu Rebuilt!
    • +
    • Gameplay Stats
    • +
    +

    Pausing a level will show your fastest runs in the top left corner, along with death accumulated. Options are now accessible through the Pause Menu & Enabling Speedrun Ghosts (:

    +
      +
    • Touch Control Improvements!
    • +
    +

    I developed a new Virtual Joystick for touch screen devices! Mobile gameplay is now more intuitive & accessible with a full joystick to navigate! Coming Soon: X + C buttons will overlap to make double press easier

    +
      +
    • Start Menu Overhaul
    • +
    • Save Slots (=
    • +
    +

    Tiny Crate now has 3 Save Slots holding up to Three different Characters! Erase & Modify saves from the Start Menu <3 This Menu has been redesigned to incorporate new additions (: At the moment, old saves will be discarded, sorry!

    +
    +
    + + +

    Secret Update!

    +

    Find a Music Note hidden in every level! <3

    +
    +
    + + +

    Tiny Touch! Touch Control Support! ^.^

    +

    Tiny Crate is now playable on your mobile devices with Touch Screen support!

    +

    Touch controls are visible by default on all touch devices!

    +

    Enable or disable Touch Controls in the options menu on any device!

    +
    +
    + + +

    Tiny Update! Fixed Framerate Processing! (:

    +

    A user reported the game was running too fast for them 0=

    +

    You'll understand if you use Godot:

    +

    I had a feeling this would happen as the whole game has been written with _process() xD

    +

    Now everything runs under _physics_process() at a fixed 60FPS! (:

    +

    <3 Hopefully this is a smoother experience for everyone! (:

    +
    +
    + + +

    Tiny Crate is released! Thanks for playing! <3

    +
    +
    +
    diff --git a/linux/net.hhoney.tinycrate.yml b/linux/net.hhoney.tinycrate.yml index 5f31c75..e4f2a49 100644 --- a/linux/net.hhoney.tinycrate.yml +++ b/linux/net.hhoney.tinycrate.yml @@ -28,3 +28,4 @@ modules: - install -Dm644 linux/${FLATPAK_ID}.svg ${FLATPAK_DEST}/share/icons/hicolor/scalable/apps/${FLATPAK_ID}.svg - install -Dm644 linux/${FLATPAK_ID}-symbolic.svg ${FLATPAK_DEST}/share/icons/hicolor/symbolic/apps/${FLATPAK_ID}-symbolic.svg - install -Dm644 linux/${FLATPAK_ID}.metainfo.xml ${FLATPAK_DEST}/share/metainfo/${FLATPAK_ID}.metainfo.xml + - install -Dm644 linux/${FLATPAK_ID}.releases.xml ${FLATPAK_DEST}/share/metainfo/${FLATPAK_ID}.releases.xml From 39f3f3cb1a8fb7417888adfc6a8a140db50b5582 Mon Sep 17 00:00:00 2001 From: Cassidy James Blaede Date: Tue, 22 Apr 2025 13:32:22 -0600 Subject: [PATCH 31/39] Workflows: Switch to upstream Flatpak Builder (#15) See: https://github.com/flathub-infra/flatpak-github-actions/issues/17 --- .github/workflows/flatpak.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/flatpak.yml b/.github/workflows/flatpak.yml index bcb2f5c..191445f 100644 --- a/.github/workflows/flatpak.yml +++ b/.github/workflows/flatpak.yml @@ -17,7 +17,7 @@ jobs: options: --privileged steps: - uses: actions/checkout@v4 - - uses: flathub-infra/flatpak-github-actions/flatpak-builder@master + - uses: flatpak/flatpak-github-actions/flatpak-builder@v6 with: bundle: tinycrate.flatpak manifest-path: linux/net.hhoney.tinycrate.yml From 2f0397f7da65873174b1ea6b559c672c2a8deed6 Mon Sep 17 00:00:00 2001 From: Harmony Honey Monroe Date: Tue, 29 Apr 2025 22:01:53 -0400 Subject: [PATCH 32/39] update logos and links --- .../harmony-monroe-square-margin-white.png | Bin 0 -> 53194 bytes media/image/harmony-monroe-square-white.png | Bin 0 -> 56751 bytes media/image/harmony-monroe-white.png | Bin 0 -> 45178 bytes project.godot | 6 +- src/menu/StartMenu.tscn | 76 ++++++++++++------ src/menu/splash.tscn | 15 +++- 6 files changed, 66 insertions(+), 31 deletions(-) create mode 100644 media/image/harmony-monroe-square-margin-white.png create mode 100644 media/image/harmony-monroe-square-white.png create mode 100644 media/image/harmony-monroe-white.png diff --git a/media/image/harmony-monroe-square-margin-white.png b/media/image/harmony-monroe-square-margin-white.png new file mode 100644 index 0000000000000000000000000000000000000000..29a1e7bf07775e72ba1a8d9981e5de06710733a8 GIT binary patch literal 53194 zcmeFZ`8$;R{|7z@9R@kJiEvI%D_OE-Z<9_MaxgRY8I?)K7GpB9<&dQ~=X9d1MWLC& zFxFuh*^({kX6&TMZ41p8V&*e|f(FP?L_J2XFdP8#+LoUP4nm_drNE}m~- z=|T(s_p?6!`2U`sH^TNdg?{3-qXhoD{4=VLPAo$@6KYZbbFZ}QY80<&B@Shd@$QS+- z!;iS|BQE@i3qRt*|ChLs%Gyee@Un9x zte><*>@lCK66^d^Q2T%SVP8EC6Z+rdj}Q0c@IxT~S;G%w_+bqHKOjT%*x^07V}DY{ zWG(15@H{pm@e62iRi4WRx5<8cRMoK!eavCpqNQZ1XuICA4hGXu7sl>=MZRl;VvSZP z)^x~fU}A~UPdsJ_;cXT5=ji_eNuut!LDtgUck^e==f8d^eUpAlYvJtS81;wxVKlQr_u27+Se_0su@m4o0Kb(~uK%Rj!Gp4`-YfkBdE!-4iU zp*Uj6!OFP@fWJddP{P1yo9M>DyV+ny*thIuRiqW{;a4Xh=j%zOPv-!JsPC2`#aa&; zfY%O7f<+x6wSw1l9Ed$&>A|!2xpdpU$|o~LnhjYNLHD=~NTJ&~ev02WZgJc5&kGY$ zPa$Pq`DrD-s)*#ad1B8gUmJbtAs3FU9;*>YKPcMXwBz#fJ-=m8ml7TjgHyo@q>0eZ z)kB0b8A={yKx$}b%Q3QF??gN|D8JQRWBH|Qrav@vn3Fk27nTMF?!){HPv- zmye81Z=jf$t>EVJ)ORC#@)xwK;*%soGQiWG80WRy&N!hY&k~SCO*1Ic*cb*=Ow*Q9 zbxTZ}8p=0^uB1j@TToZ*Z-0_exe#mljr6E?b?hLutwy+iG)5#Md1o9H_KOZY0TZIn ztNe1`-stK+dH~N`@m8%>pAjwRwlRABk-9~b=BdL5Ul}>q1ylR#fu?5m{q+jaHY54` z`U9{Si1u{S-Eyq*I~jkkg6!UxIz;c6e7&eCBG2w`%&}V<;*p+u_GA^2zp@u12_Zin ziZ}p+r2-Wc4~3@JuC>g65ZKAAJa1~}jGnIozX9+t@XeaNYTe(FMM+A)&5l$s|3Yvs z;$3T`#>dMUEioC%7qR>tIZ2mx{x~(PfYUuhcJH3`(y60vHpEnhm*k%!JE=+)Nh+2v z zR*VhPpswm?;or`VzA{ciV7;?mF|Tve!8v5iqG4xEBkfU`gMxh1hw2N&-*xDX#nmfg zt2OyQ?VpitKX0aX$UQul?BC~in0`#to^=_n5hZ1ayo>h5wY*W`6p-T)sc%xjzdf-+d{m!}tg1`s z(xA(4;tNB75_L_#NJZD~;VAI|7~zQ(Fl8D?Osq|0)C%`^#-_JQSaILBy4m%dfIyo5 zkXN**7N=Y$q1V}Sgo=0c@H1vCoIZ>*R30inqL{QGk5t#evD^yCByJB9->d$cW||Kw z(j&Z%Sv1$?M@DhyJh6|%D>tbSOuhW*)Bi4ysw)W@gTqp=_+P5WVH&SZ9A>1OB;8&x zixJpVNkaPP<<}tcAnp2q^851i%$AUs`!V=5e`CK1vuq`NkeSDD`TebsPgsQoG~bsf zX-98YLGy#(S9<8w))d8BJ4EW;8m=;sYk2VoOayB*>amY{$3vP;^YtD&Iv)clQPh+E zbPH$zf6>vPDWTCaLUW%z0d>mmEe>b?wO9C3B@I- zNb`U#)p5OFV@B6Ft!Aeexq#@1VCF>uMAXe7E@;?7KUvj&#T(I>3Z?>9=_2=}aaJmrEGM}5OjVh(md}y_ zP(W?dTYPp`ZK!O8@GT)fcg*}SPA=Qk%>_=#T|)ODs`*xW$o?Ax%6--PC20=3v+@)F z%0>xbj?TRH(~5JuvvgZahkZ@5FxhWtXqD95D4EIfR=*|RA$=Gt;a0ZU0L)Ruldfa% zud|)_VMMb)y3CeCNpbfPF@xS9N{Pe}FUV1fC_Y~{P8e#zUTnCPzE83s7Y1jauCeW- zpioN_pqFRVuWq?ytG=rfjHH-_^{M>dg*4)*C__0RA8ZL|OG$Aw{8?08(}P9bOajja z(uEWX-Lp%t8}!&xj=^^xE?zEiTm7@utZ91#P#6`=Of?LIrM8$OsZN8$?v&_2-`9)% z!DD&3KM&u@2Hia|i0+-6r(EmE_&(mVWFf3ekI0(Oko;!cC#dt#BV@=lNKEZ!OgJt4toRgr_Z-{)VlXU%9sw(yL_JHV+H zw#u0c+;91BvV&d@K8wky6pf4^9u1@`Tg_aSHs}dN;s;W|_xZoO&5yhlevfw?4;H7h zq(otKxXSVSX5@y36a>5Hem>*nSWeI{Mit@)MY52EzrzRf*frEDlx

    aY>Z7HE|ql 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

    )XNV<57iCy)Gk- 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

    4Uxk-;tZu(M%)r4J$_+1ICi!SPUNo zUYeHFPc8g67r-^z3WPB&z&@Ex?A!g9Ms9=?F!rrhM`}m>j*qNPf>1j1X4Z#56?Lg& z%>!e0jpYCrJo?xK9lSoU2M!+!22MsUWZg(?co-Q)tlg(3LQ(b5N+DW#Wmv2x;EF1? z1>4`=SY>)r*6iy5%1_O}ekAbHWJg+r9gnLsBF9N|cpV*7*OFuU%-G~}}_ zCutsxy*>go>Cjv%-()5ZU%S}8l$XlC85D0wJZYsB0TJE;fg%llhlSppgL<8EAF2i% zHkf^_g|QSZomL!h0C{T+vZ45~kV;zGHi?02-o(nh6PwtDQP?o|qOPM1;>-(Gv^2UG zf3s>1q-{nz5J_1vi48{b{UD7Hmny+I#>YC)I)6L9>}<#K@ZYw^`v6qD!X@+a+Bt2=8XAw$7c@s>2RhOxEA=B;fxkrCjy zWWKDXI3#(MYT8-7qWpCGT7Z6VQFauc$`AVdmu(xKXNg7a# zyMd!5CqmCZ{QUhuGYasYGFf6MrUfUW?lSH`lW61X>q4Y4L$7Tle}PXX-J=^848A`L z%579BO1cqJ4gtqDk4l#ee4sJBcsz0e|I_Z)VL zj!kNB_G2YH?4S?-41-PU)^v{na%hAK7lIa0BY{86mPZjid?)@#57PeMFEi4!tMYfV zUx%OFo6ZAPI?NX`%I|UXld-%}>#H4PwVjnz-EUjx?mbpDwQZp-TN4XI_s2&(JI;)& z^t1@w^m>Iw-mS=-Ger&kdE5o>f5Kw{MbR?~ZLEJ{`@+_~%wreON;*I+@eA*sHw0k*<`4@;rSpn9I6=@0*T33Hlbo3f-c>Ku!{WDPv z^ZnM;1uk`b=!X`m19^yes%$P__?AwUM|%c^U(LWTJpdvPmTz57iTosjObJGBJL}^r ziDiEd6V!!lS+8VHC_Fz~4f0>)H7fxzPP?iig3GZ2$}|38xIJ%^LCYWx+j!}X;n9(M zH*}AFswsF-?HoINjv$!3FkIiG=G)nQ_0yX=N*6ken1h-52Z;b*2g-z?s{On4_<7%qP;J!)mh+(}Syp&%*nq>3 z3)M3B23in)SR`=gVJHhHpqze?0tWJnTbmAvB9?6H>EvTt6%yu?Ve%TWwx?H z{EBRbJ-qSTrzwCFZO5`VD`G}ZQIdVjcCfFnF)*GdT*^4MYUzT>m6Ohtm;@I-Q z?Anh4_r--_QSF#=3ODseUV6~c-QQ+{1nBB0E9u-0=Q^c!_b7j>tgRE>sQsSWwOzpT z3wXJs1=3m~Be(Z;jgBHdL6XMb?<3p2<8;>Ok!i}=k5I6cs;L;D=qaR#+uxQvs~i!ZJYf$Vly5I zHDTT)sP}3Ul8{Bn)2nDguCsjA(Q3NDs>Fl)wfj4g8FrVa1T%-k1KKvho)crx(RY?c zdGZ^nV{YrHZ^)R@!I)3)<@oZakH6*tOd!KOs1#Js@j-Zvx*lFL1(A?vPkdq{h|k>O z0+-!unw1|GVjMsxycr@Ow+HMgFLvH>Bnru(0sGPrvZ8AedWyFZB=h!zux@sNfI-(3oy|7|i)x+iv~!=wuy6Kp52ZpCT)282_fcw*uQn|L z8s2g*zkLI+wXL5+e6D8vhO(3)817C5LE-N!9nM=JBo5D@8xc`8X<#%_+QMr zu0TXGSC3zO_i9yfZb6;0dCV#MT~T98O{Rfu+X10{10Rf(>3x`!Y9_Dp6@tfT-?U~>h;>>jr%c4Uh`sk22D%k}coS$?Tr^-7?#Lv0isGH9Q~fAY+vHa7 z0Dc^ZMLXocqsg~~RfVr@?mso{o2|qarP6_C-aGG%-ofWs9N$~wu!I_Re1s!IH9D^+2k@8~6qc2&=Ira+IyNWNwnewy40 zL);DR{Mf){=S8+<^?yxE(RZ&Sw*3;<9I%A0>o~B#`t`2T$eS_^b41(=h$4VD zc4-IvxL6K>lr2!50Sq+zlW{(=+1IDeX9E|5Yy~J;(^qr>Bt?l^1uCbh!;eD+J^(2I zQFPEU=H2YWS7+U+2`~P>3Ff#kfYNag4;aJMj*VYLxr=@F@mX^upf(E*&%hWg>pQ`( z?&q#wu&G4C1|QRscG&KgN4z@Ln2d7F13 zqi*_=Pz+F`5%U8HZG)EtZzQ!{k7>5=D2}MO$l^t7Qr9HhfP;d|^L<3*MB3iDWqIW) zd3kNzvY`@#Lprf|dW&w>b@VWOm8ZZQjR#m#-btTJ>s#xnpNwa=T~zGE<{8*r^vos% zmo0g(m`M6bhZ#HZIS>RXm1c}8SU*Jkv6jhHeDi%i(FsNX2Ex0=kR-p^cD-pgp^8a( zlVu;9|JCd_0F7(dxE9ehgIysY9}zzR*ipo?QCh!%yEF8`o=m1#a1w0@7A7jSkL?rm zv>+&u{D~4cI4IM39t%hK)HL=hO6>jRkUkT8WbK4Z}&WDNWtM(8*4&c`is$!sF+6nhI1Y3L^TepV@yh!zXXnF@4ct3zk z*8UvCLOmEbxtF1K_Bv^{MO0lSMAa5DcEsSNN**K$l0^KRUv<=QPJRaR!gGwGJRMoD ztuU1o*LfT=Q%@Jl0o{8zz}%29$H7hs>Z21BkPOI=B8Jf0iL)s2p?Ge0PcqF3i+G70 z3*{$Ub6zLP6Cc@lYJ5r40|Gl#)vS#9dQ~Ng-?2$fa9mOE=a3V?QHF3&gRe-~H}7VD zx6JDPyUJqd9^X)RLTsQ&FW`sw6QyhicfiTk+@F8}j&9*Gg%w@O^ zPr9&))MJ3??vlL9wzz-82-7DtQKN2>f!UZ$yhBrU13w(5{BZU=ZZSN$> zq4D_TcL6_V_3=MS3P&Ul?K5MmIh2a#p4VD!Pphy;t_ zzAm-SuzE>_`sdBusd~{BO&vq^QB(z>o}Hp+sd>4RE#Mzh)a4sfyE6Um+RV)4(7L-2 zGlFnc2U<0eG79`*u4n699;WH{rGvZ>m)O+!zJ>uI9i9(KQHt`;sc zD6OP^mu%)uF$|93x^haUa83I2RIw1#QWSYo_2K(Z;1yA9zoPQJ7>UTe5|J+>y(&WN zYbxgPJJ{Vf&kfi2agpd!%-52!4cB&4Kw%BgWzG*>-rI4xU7Hn1_isrhy?b=Enl>r2 z6@EOXStfpu?GNiO%=$91KA zySam6!+m_0oCC9zwr=ZsUZHB?&=1h{Dnb=phZ~mjl6Kwy1D|d=?uw%3V;`4ofo9-q zI7blfWa=d$B@CtIHl}fGa$C4Q6SlIV(MNRyRRU| zwY#?P{kyh>X*b1@Uu}4EQ4zA^$vf}{D9P8SmO1)Vr9}pDNpAycktYlPj&UT@LG(1* z5BFRX0vr<6m=nxjwq@mYKO5>LT~cM};FtAeGkNK(MHmEcE}3FDUS$*I@PR+tD0CRYJRzYG@zuhTLTZo)98mM>DA*;cgOo)Sa0m*M>(55JFdby`${cr zJbQ)Dak2ijDh?=cAu(N%bI-qWRE&V6aASZmS4eTLHHv!lkc6ew7VLAmhtZoyAIb4-0iroOxiQE#AugCIwYeO z6K2Z-$yv0urF0LKB7K|L$$Y^Lbn@xPd4})`ZGtJ_sP&~RpZV04WTG2q`9>8O-+Bv} zDT@~;2k36Y4JvsH(M;MTE%5iZZ3|Q7mg8MI@kK?`OxouWoxaV-kzM56gEQ zZftd3nymt3y-(3FIE4^hB>rOMb7)9c>(3`d6|N$GK1x{OWdD2w8YAf+5vf8}tl|Hi zF$^x31Nkp?l+@IaygX?OrSkcJ1+@IbN`q~XE;Sa?wJ-ziGz ez3hL}@jCQ!CwOT*Z*OJp|_Q49&8WDD7uvL?$Dh3u7m z9c{`IB}FfSJ!8n&dcj#*7N87&qF9}++Vohzm^?U%GW+vPxm|M|1O zl<_~W3cDbbhk}3ZqVdrGz7jxU|N8<@3rGF;6<_zikAa@}=aB!x;U7Z&{ELNuvG6YzAdr9c!hcZkuU`0%8~){me|h0w zUig<6{=ejftoB2uj4H`PrN0Zm<1cE{wZ}8v8$Z>GKNS%`7^4%u6VLRWN?X5@jfGl= z&gLT9Lk?XPT1zSm@%L1hE(+Z=nA^MWY5!u#%`^1t(39O`$0_HurpS@aCy$g@=0}4y zE%odnSwe>C|NUD+Btazq_di00oGwuN|9J;|U$z@Y`oEtPa*wCR{=ZKS&@ur3?~|D< z?0Dh-`=+>{B*ggtzWMKg|6KY%(D(<>706#%2!aBAB4bp`w+8;m8%{A5f zFNuV|P$F@WBuMlm*`n!JLL}5!X4=Nl-GJn-0Ei4!hW+oM2)a*4+%Ual^Tq$LSxNO{ zW_tz{q?+NkC|gvdJ9eo9<}AV%UqGD?%l|rer5Ch3ApXA;HgKCM-gWaC5E1`$)B9rI zlP_BmMW>F~woqF_MQ0kp4c!nBrzYnEmzebpn@{NlNpKw#;3-8V+xQbsov%^nrr)7v zZ=TtDjB)EOif4~8s+$2sgO3jeyQh9{9-Z_7Grr|p)*&f#)zXY4()~Ov5QX4u+Gd~qmwY4+icyc1KRbf&3{%Smp zc;(O%K|WBbzwJBC(L-}8tMEG5c}|^GDdhS^u`tH&+X3<#!fbJ|)JI%lO9qykPoFGI z#psHKX?`lYOnilRy3ux`2s_l@iXMUWhO3+jPbNk6*y%k$IpMSM9eNg@)vzY43MCnR z+Uc@B>XLtLKVq?JTX!rBDn4-9w{1;i-J)Cj)NZ*SK`^&JYG#qpIe@-`H*@RO5_>+@ z{c<^@?XsMECG~7diO4p`ulYOZz;ATgKfl@mnnZo^F~*jZv9HmsL1H>1@Ptp~XPZ|O z#&*6&6&nx*pYJ;i+$7JJ_!1S9(leckQwjyz3CBdOfd*mP8h&OO$Gay9Xyg58@?y8? z?jm5RSDKl7(d%qkls(Jz6e`nY5Qd|JH#-Y7Y%U^`J1y2AzEn?izKQ%)>?WtXr|8i& z!?uF!qBAic7&iMP6jHa4mw&El<(L$^u4ELtD@Z|%Efu8b*Kx=*-2POS(mT*5gc;1A zdJ(Y*dB&p0u_q@`I;1j9uX)+5x7K+ee-U5-;^KvqMi2+w#yUHK4SdmgB2ytH<{kQ}&ZH%=?u(I)yS#xx=?eW|>URI|;G!L_d>Vp<v zin}0&9Ds@VE1}7#`XYnfv}qnz(G6aozv$H| zB|JQnpF5BvLlEyZe~+;bBRa@Pz8)QX1gsdo%E=INHx|X_U>fFV1=FlSV~=DMS@eQ6 zU__{`ESK=O9+1_W7B2b`t692q6i=ucW$`%r@hLpdet~ezFr{@O=E(3;qcr`goD0P8 zT(Nn=5i;x@D(N>wgj=UNm4;m*K_K810wa&rBqm9nR^jS7R zlwMIYnLCBm<2H-i)pOd(j^Z`8Flj-__N~)cQ$fRr6ZBKs0kCX%73v-<_BuHtYO-cM zhw+IwQkZe4UQ{6&(#NS|m_ew^XtIbAGqT*}@uRZ&&cx%2OqUp^s%CbCw84*fmF}Vi zt|ZN6P19orQ@7jo#2XQTXI&8AEdZEay7x9*kfCpT3P{j&|L{LW}><1P#>b&uNvR97$D&qk3Ql9%J3rV2IgJ&rgPD77Wit>QMwmF%jpNGn^R zSVR^meftaupsmSg7LvSD?CV6cL8ZoYR1|0`^u}G5^bjK^_&CVCr){0F+7rpxShB~z zec>M3NAm&4_4JZ;lpmG+6}stJl+Xm$rMrCEjxdMcj%oeQpMxsMr8;sM zh+Pe15@Sk+D!Md7-TU6g&j8+jr$Y0*GCKel5K{3%of?$D2<2hADVOkggGv&IOc!Xt zY@OHkd3`oThp~aC=v1*U3h^6*5T5=8$SWND`QKT99pD;W4QFY92Vsfsw<44Lm`96V z`HN4ZLSYFmLnB>;$&^5@u{Wrsd4?m*TW&9k|BFtKIHt%B3KF#}&-y~4%O!ET59moal zgQ?I8|A)wbqwEvcV5tf9-v@2IsqKm*(XarYMJ?mhMBLrP)Ed3k;T}c~RY!Cf`px!hIQy>g9s{qM|_nw+$%U-=6Kn}-p7n`5`P312l*(FdqLmjV8 zy1I5JFZk&TDbgJb+n-Fdn5;Zl3|U5mQ0Z~$EXeTgDIyFp-}Jm_qB&}l%f1n**f9y? z)6iE?F%8pr+azXa6)KU-OPtJ0X6-(j}f9xHIlD<59iaF=Ps8$*$hhodt02Y8Z_IN9`$M|A8zdk!O zlkPg2d1Mzi5CUx1yXN{_&?yzF{wmh+l#pbW2X*xWSM$b80^w!#VF4@}}ZcMS{ zxFUt~7^BjgQkp1G7-yb-kK*!(XE8{+6432i9Y@rbznV72W%^d3i*_8lRIMB>Ly8X) z(_)AH;H!SQ5^SPdN)yP9?z9klQ%my~T&#*~^13%8^Z%oqz&jk&q{}dDI-Mixd0B8t8OY zaS=?$rK3ekKB7!LNAsDPe0?q~_KnI9(179F7b2t#Ou3eVXmwp{lZBY>0rWDqj7oP! z8>@~pH?wce)0o=M)DqLC?VRK!) zyHHkmkjn9^PRetdK<2SNu}p1-Gb2kydPTH1sbjRhr3sY2gWuV^bVili2m26prA5=) z=Q4-JIm^L}Yw7RZX|QK-cZb1To{8>bo%GGD43c%J5f$!{0P=ea5z(RZdN~{Xr8c77 z2Q__McLYd0f$~hhO6mMVoe&2F%`& z42>86!cRVV-*MV`3yh^|dS5@}^H_gg7w~Mp33Th6uV|N45$U<1q^h+u!P&x|TPzr2QLje(M1KO z2!#{1HyR{J*_hWqgnavI4!&#WoVi(OA=bl0y_k0q z6;^>|9s2<0L5N!R!@TEUK)#)#;&Dgbd%?M-j!VllcVN+rG2U3#83~i5LMkFAv=qtN zfV5r_&uj)d?t=iy8^eimLmCwY6TXAXE8A0(%7Uj}NDz?2Th%w{P>%Xf6SXZS;q_0K zni3&y248Qacj6Agk65&v+Vx;B$yu~}XlWxwTe*qGh5i1hhD{9r$ZUmGpcm=G)P2smrI)y=&eF1e=kpzu5`U=zoBE?s8p;(w#VD_do<*@e7a@yI zPddR+NJoEUW!F6bgP(b14T}{rSd zzQb6RA_wBtSE&8Vlc59PAq&rmEmfWN0~yVzr3XxJ#t&~eRriA2ej=&+-Hm(+mzMM- zA+OQ;@Nmt)w=nY$=hkI#Z3N`V@9HrwU@;%2`wY(Ew&Rv9By4pVBxQpJd4egZO1ho& zyh4O+Tph55nDGS`fVH=f_AKNH4*6cqiFO^_t>x)J#<3}}OaZy)@a{I>%im%$6+K-| zNtwa4KAxVbG!E(MYgka`3FX)0g@qTq0XlG}fl}my)pZ|B7H){6u9&%jM2#T2W-H=B z<#WEk^J5dBHAVO+O2=^J%lhnfK2kVI*yONAYT;KfJEUzpO=GtSe7!j})?l{Ymmw__nu4@@}lRs9-*e**m znvVX}kt>j_5;rcY-*O4o-;C^WR_W>0H0T+Wb&<#uYDbx~1Po{|%4+CEUW@h1FL>1; z_OePvdQfO(3UtDMC?=$jAXL6!HJf2gzXLhK&$g%xs#0`a`t=5uk^$OoxRasL3myDK ziq@G~Zu<$8Kr=Jx1x5^J8c$=p#(ihpKNn)h73UpTIyGVR==p!Ns7*I()RkMUiLE7c z08w(Y5Ue$f^1l$y68UYisGHY8Fv8b*z$Zo5}wE>+T@JdsKL7~m8xtumB0umw|Y zq)u?4bqX!H5SC7Ii%-fkYRY~;%{krQ&&43t{gMRisQ;> z6o893bE;Y@TMR;6_L#tsq9xw~v!6p{vX()vfr)q#Fyx#oO9kAR{R~fUzbO9C>QZHI zTXWOjq;US!qxGg1%ipaZtAC0S6=Aw$bT=Qb;X5w99ARObV(vgWN`9waq>2H>!dXVi zM@7fVDEr}_tDl($}0o8Aww!E(tf;Z}RKcJI)m;2fPFu-zA^H^5_v7tX)b0 zZJ@TdkbZ~KmZ{8hrK+?z?b4K5KUi|`UDxZmw2cosG{j0J3LiJ{^-Caj2f5xChz)1< ze2`1<+-~ThY?L#LI#eOSWSY&skFqisy~0owqofydqe+2OgDKbRp<6RBuB^+$M^oH( zckGXjQR_L_Cg`?Q;JWxy;vakv?|?wPY@qMlFojQg3<@(aZoL$Sr*0BxV0$R>98!DM zDa9~;CfBm@0JZ|M6FU3j3z|x2PqH4*g|g3wLu<+5vka)5j~nM0C4aa`-eBCaTnwEB zt-YyJEqZhJ#V1I2+zmscgLXgzBmpG^D2&dm(X4wQE8ksyzEeMLkPOM@jPoAj$Vq|& znNfC-6WIg-Q(#7XVb>Wj@Q)lhuF%h>4)8YsMk(+hb&L$<5R~_eV^H+_(B?qsa>$s zrs6bykgm8~KHxlACB4%0a`!=$QPyRKDO(xVS=tW!{fM(U3nQD2mzLXIL$Ed7jU$l4 zT#RV#*ZkMxQp^61o<)O^{DNIrDBJrgNU`;~!n_^+A10q3;)L>hN7%Dlh*LGJmu z6OHx5^_Og(Nv%_iwA^{d(UA|Yl{s=|#u{VwvA3`oT&1BEf1fc?`^;4yCFC3~ORo3O zZ^BD})Bws1V=}bcWK5raN~m7oU~!YZgEwz&uayqPhl5^OuwBVU=lspe^xd>~R4B=0z%y^RZZ{RDmxL)FD$ePl2y8E9 z@UIx^>fGskrWY?q=zS4+X9glw<=)tP>ryFdP~cW}Nq_~;soYWgb)YuhT|ATznHll; zTT9YNiVb;VKW%$(Ji9 zg_ZgRnC?Sp*lL%UAu+nBF!r)$hLs)&mXU1K-P-LLwkQ0n5?dV`)>XT0|?^*k@l@49Y(^ z&vkIKwm@j_7`mQr(4^YXzQdjCCr9+k7iw*qOn2H1m9ofvu8-#0KbAR-bOF0i)1p=jA@?0k_(_oV@Vz;-w zxQa}xGOa%aUN5y|7nSTwvo1?dRhURoctmQ@`=J>nWSG({(}WmFcBflQF!X+MpN=_L zpT%RhyiJOD(FV1t?tZ>KXhUkk;}%v2S6<}-3b@S$q0+ zs!ZU8xQnTgc!kJE{8P&a7DT7W@b~EuQYM`eCxmkK7&J|5KZ?5H?f~k)G}j;w(&;9B z$ujQRfU?zq+FT;x4<1L%_gC*0Q-F6dU0* z!HK9vwbR6aTSmG`}XrrOa1)nQsTf(TZE)Mg=8^o$Hy zwQLn$4<;jd?m7&FIS#ho0g>QcElj&%@K95SP}|G*<|{AR9OsomjkWR79@*YRgBi-G(YL8dA)NahcEU`Z_4|T3qnYe& zgJD=NtH;-smxq0J@iY^CuwXSQflv5zy6);^7}(naOL8}`mQE*zw3UU4C0)Sj=Lvwx ztRkotqR*vM%cuww5AB1;f|ZS}9BhKGt{$%n6^-1tiQB-35cy>{Sr8>peAuL<`H`27 zyTt^ai#GkRxtR*vl}8AV=>vbj3ROBDN(!3cou2P8|I9?D!+BAXoBYTk@Ub_|hZ}6v z#IaS?5gxRNn25L28J{tjn5LgbCmyz+V~1JiV)RZuDx;HI<;5fkG@qW;{W~Y-J$VmZ zbv0?g2B_>Uq-v$wzYoTvnTcjIozlX7@(@CVQwIYIg>j|gl#2jZxw`Ht)!tK-8G+eK z{hGW{1uq(|wyq(>%j?>_>cdOXt+7`&lreDrL3f7g5bhAQSRS2gVf^O8W|T8ZkOPbD zO}Oftt>8Tf0u}pU4Ihir`Oa-?Xn9=2?3?!K_|~(9=3O|5d$w0}fC*0Q#Z#7Yglbxy zZBrzqDstK;&PDIkJ$>4m22D)T3uhPtdJd&)8Uag0#R)VZ0$*ap2r=|v<3%`67q{kf zHfUqXvIAizm++oapx{17?`}#dy^s2lNKL~9KB1X**wM0vBFIpi*)Ju0#oce}J4d^u@=KYr$mW%>}r3_QI_$Zi06R2A~gb6qzE z*>)XSN}NU=uckniEp%m8oY+igz3t zh7kGG&RdyY%aT}e&L0o0nmjU{S|z>SN|nknS1{=YL;>puzG%zWBop?ZfIwXn~vF!%86FWQRvOu zmF|8E>h_e2EXp~)wc_nibbn73*Gj`yrIgeJ; zq~7}GN|OM3nzr&6w20cZ-eP=s%`KR0Cb;fHRhiKNgj~$95aZ7my}4)g+yzKtiRq-K zqsBJwQb@g=NI8=Gy7=fD`CS{Cyjn4;MM~9Ju$p>)n9S1fevp>!fj{t^bGG2#qE3~b zDZtxn{%{#M>@~lo2?r@ObdHAMW@W)yLPm-foh)aL3rK;dJ)Y^gOEQf}e__LBVXS*| z?Z77p(lM)V`>v|RoSY_0Uw*(o2dP4Ve5IID_^?(FtiyE`X0vK&*Eg1}QxpVpeQ;BA zroh?Wu~SRcG)Ipt8V==L3o+%XBM=2Sgz#%0zy>^(Q{CzK#;Y)t`xD)KxW8P&03{H= zg$NMMN9z>{hjaVeYwD&~FR)y7GfEomBo;oD1|Kv`LmUBOOdu)|N;buLDTND*gZ+^P zvp>E#Znhoo%EBfrM7yy$Z;0A-K?o*xiBdWxxu=o$d3&$8N!DsDNK?v_h*!(~f7b@0 z_?D8T=D&uDjV+)`rlYuPquNlY+)}RTZROd|z%&dp z=@qItu;wJd-)AB>p&Z;ghI3Gd@vY6nkCz@;@>2c4B#qh&`E`a&~ToX1(Yj>2E4VHE!8AF!IY0Q z2~@|53wMPpy)3Trt#sm!kq!MK@#cq+4MiTjyUMU1Ga?s871nsW)06w#Bt_6xjiwap ziVB*a<qUVRdT@zNM;lo?Q zP%tI!oI|CTc!ABdx8aC_)4Y?`t9qAnZ4ovY||DmLj6mdGR?exuyIN&x&D`-eX8NN$G*+=LZkkqYIQ zRT48sCKD`LDhhgm9nPH>Y#WiZtj)!QKkB|ozyR1zGJk%a z5X+_G`sDV4mc+#A=`qweU+yUnlu=MFeVZHDb$#~BU)$6CxV7twe0^F`r5ngqPv5b4 z-i-==H^mzOW9D{9{)3ML!~2eubEkX{t+hVRpikw4I>CZhTGvfbuzcFY@iO|lGe7dT zjk^K{CO`HQ49LQqVS#GX8dqbhnHz*PxGKu-K^1UOe`_l8 zph1>L|Hv?i1UUlJMpb?m&8~4*Xet%^ZlJip8n@OPf9Rq@!t0mwv=U9vS;`5I@l}K~ zL~YEgv-|ZRpCjx^Lrcmu1=KN99KfSqb8e8J*izo<0U^K>iN6anfg8gwYnYAzR7t|x zbt)+hQ0dIH#4ja>iVl@OcXPRYdFS6`k&(@toq7h z>!<>jmH}5@5#16R(ld#$x&X{&y-G*iqM z_(0fBDGH@Xv{3y|v`dM2JD>f%CW618BG{ox=m|{bRh*$WF3?HLvkum6`7gG&HeTe=Yz5i2Uz5 z0K%(>vj8ny#`!=*>&G3oz(nv2*z7}UuiXM>I!oIqUFdg|aBhqZ8_nKEYKT^Ua!7sz zNadT=@DS>COZ2YH&|Z!5rSdMMqnpc51yIb%0+UO$5;xSDE*cF6S%xpk!QPaJF8?uM zE;c8M!0L%b2BKu*%b0c#%1eTh z!B}qVH#;wbsRQp?h>6Iss!-3))K2Hef6>aPHj_^ksDonw1?S;d_sL!>H_))RrOZ7kq*W4mrWKS8iNc2V3`zk$C;6MkHT=FOj+_j@_g@@!91^Zj`=B*5 zd*+sG&}*Ksb09Y|ptK(R1bF_}{JZ#%j`{MZ>64;B>&=QFSsQ0g%?tmbknoL?YIhwVO8uxX+OQg?rM-w^KX-oYHC)o7Eq9{g?E?yu zH*SfcJ2B`+v!y*-vdDY}UT6M{MfFhuq!%Ca4CztBxo2G@q@ok;HQuO1Wb^_pu^=p-7vuu(wxi?R{cz90mpKY|+i z>UoGNO6PnXO6%hh+VfB~r?>V|tF+7Ua$8u+0VCP!dK2D%?xv)`vl%PBv1h4(ELf0T zVQNW5e>3wg;RM`p=5) z))nzz6Sd8P=q7?@fZCr3+6aF1T((WmO+*$tK|wuP?)``L>w;o~3S&l(&vHlA2uI_% zw(M|Yjvfy>{Y@BGbYu)G=Lh0Bf$%+*ool(vKHXP=16yYB9wkix0|D=Nl8)Yh*GFwn zHa4Lbz7oPUv3opU4xn4X*UT6jg*1Z2SFQ+d?Ylpr#tOevN;a8Z<*b{1M$u`x=aTw#AE*GBu-I@H7XCuH9YXXlMnSRpF z?8p?gJXlf0j=BB9_vDGc^jQn%bAn#wOI%vIDo{meGUpwx^(mmZmydkD8_PEFh`B?k zLRLL!S2(_VbBFQZ%6(`ZSNQoVm;+~=b;fhxS+Du8vITz1{st0Bm@ z7Wvmsfi+6?9b#eiR0`k3BGiK`ZWB&-gNMnhdYly)j{l-qqPKM47?dU4I>(d<7~nzv zmPPPVIs1%_dW%%EJf+Ae>qbVr6*##uh5ruTX*WXxzIw&Jf{Bj*JS;HDIZo%8f}HHQ zj|VbvXaC$b!Y?{p^$jk5j*0zq9@0G*~luAt`l$^Xa1F zdaQR`Y(D6;4Va`m((=^~^$)&=Y@6qzDSYodpd4R(3lc2~*jtSs)YVGY;~Apq-gLtP z=N`YE0TF+kBnlP zUnCd&q2G#s*ZiJNsT)-i`W-&66YVhYYyqy97N$8olkzJHcn(%YqO2aMl{Yoh9*WW< zM?Q10c$pObokjF*g)5NMzPkRUUz`)G7r(VNJ+UY!mp$4BKOw9Gh%Y_oBMDM;++SRM!=uzkhs?)~RK^a`^t9 zX@H>D2X4JIIwth>Tx#;Z34~WRA!+mj_j9Xst~EACeU1AgFb(;HUdo329H8JBDWpZ= zSwSQNx@X_v3hVR)s^rB1{65?VrJK7*?JS#M-I5tKoU^9e0RNdPJR~`iyaXRTcyZ74 zvY^=EjNpCTq!gCw`6Fs1bWtuT$rlOU8G0Am(Vb1rJa+<%@kOS%gGz2z;r*Tw#96T8 zUHyr0gTIZBAn~I2hYmmxc%f&JRUiA|Q#96lWcLs1sd&i_EOp>YXj3QAjsx7v3P_2+ zqc4W+24FR@O%~RlmB4ux(>e3UZ$74%cTVGApkCPAp`KQ|A)})ZwaW<_7(*Jje+-&CCAS*2JgZzWTOc z45YwD7EFd!@1RPy{yF4{!U@%n{uzw|+M9LDOM84nLL(X5Q58ZTgAKR85(|7ukoCih zTuA^`NBxgcAg}inGbMOtnZc_;c-oUjgdg0gS`i$y%hXxG z`_V}aEJCFbS#nvGM+3B$k*A|$!4q<;JYOCnJj6GW!9cjuVdA=aT&7u~6YDSeuU3Inu|eYO^L{<&Z1t%Ssqep*3urr)q8 zNUA8C(2gbe{P5k+T$Nib<;-jBn)F3Vssuzc_Z??i;+=L|;5e|TWI&|N+6 z2O!vJvSIO>-+9U5+PNKVCZ7naEdl{owAtU= zgJ+FeXi%uu2r)-&^3xF9Qu_Ki8feOXE0;<7oL%oQxW;_c5NIkq@j(*H8klV1)|dS!rE2^3HLHRWKGKS~Q9SkJL|#1F85!#6FAVcjTM7loq2x*SRX zOz!q*&nm{4$?Bh1#nsr~>gGyJx2{knfHUcHgQhFMNyI!8SrIm%Ed z=}y7_gUAF!{EvXjq5Js86s?d+qB`_rL{M&OCN5XGqEc=R1 z2bN$AynDhw2R!r2PxV{mO*bju+Iz9C?8qfpA$io`#|fJ50QJ}jmzMXunV4gF+erM1 zUNY*=>bK4KtWQQ$jhlCR(}NMJ3$DChHvZ$2M(T+VLXMV# zrX$_Zw0oa&8-%(}VJ&bF?X_Zks~0uQkbv<1Brvr7k?BVJ{I$B-iMS_XWaD&wcHLjz)Y-x&ZdA z4VNNVr%XpPmY_19eGB%ecEPy4295ghJ>P2+lwQZ6!n0Ml{bEt!_V{DiQ5Q<$g;J5K zgMP7jo+B054ZjyckN$v4e+wg(s5zu>0p?we;tT$s(CpAt=mLzv%PAy}am4K5`Nz2Y z=0-etQ<0c@4VE2IDY{tJ^4C)t4w|1-1kGOn&BNC(+w19mIfhL4qOALTD(i{-5B|cy zIlQ+W7Fi{2Tue6=5Pa2TLHb6`$9j$@wVBS~C?DUK#Zi1;3jZyCfoLan>z5#t5&6$V zoo(`yr_8I>Fs2krf|cQ}28jdRBPQ{2TYloheZmxxKd5*4@%MXRAKcP8ggW&?0(*1% zVk7@j&!ow=E4P>U(qG0WzTh`yPPe>9$zE3|V$6TPEG6h=MT5m-N+uB?-0#!EYaaT? z!g?t;44mqe=Ggh(R)AC9^7O#L{*8)DI$@yvje3(PKtYvleY@zGS+Gj1LKW2*fz zl^?6|%p@k`s%g>F^;8!HRLQbdfpQYF=ey2CK zs&jZiTpwiQ9Z7G6f>#ik+;W6taLVKM2}Lz|Jn^Ke*uEtwRwYNu!<39DfTbvdUYhbK zOrPRG@aC;5mvrWqH(0x6Dkj4sIdzf``^|hR5An_FCBlq*a@Ph@f|LZV);L{6ZI#}P zrm8)rJNkecnC*&eu%3BGE77VL z{SGDT!^XZ}+LF?zRU5R=DIJt9K?x{BPqG2d>nGhzB%d$$xA0(fbMd)+;fBcOizSvL znA_Ho3@vX^mS73_WvBb8>*HyQsx~`<43WQHgJzdc&FTT$((z_Z@0j^Dm?x)BD`nr! z+!LiBY=$}8#G_Nk1T5Z!!VW+`8g9Z~o#NFqEIr~3>ql9x!MaT>OFt}uy%ZX5EeS~| zIPK`Jta{tjs{FC@&?gF+cv86;XC|X|JxPvN`I$wd_hODS0D4rrsqXCZCMS?BT_naty zovVF!=(lmttY@KXAe1=bQdhSwff!pMAAjZgNp(2xe>F-L3Sm222Ea!JwkMCiVUC~XKaLM+r zo3y*P@0J(cwWQkJ>kGb{vrdwG6+H4}`^nT=>(^OEt%dM{nMd1d1uGq!G1An&cMGg# z9=KGd);NpwxXMBhSzWqZ{^{Fu4DaLg{wnjXyF0(rUE6JG z5Rt`O*I26ubgK>r(9OFKu{Isfd3-&Ve=K$idk@pphhDAN_Ps^Rk5nh#>sA;)IAE=1Qwq#%geGm})wtdc2~p z-j;W&U#dO0CH{3_ae_&|xn(UDJ- zuJ!yW0$lgaLO#r!yB+hG=Lz)89~kUh;ne#wb>&P8d$Yei^-xrpV~7iRDxY6%zRGIM(qm|dM@Y3}*{UXYQyju$?f2?;+3Ms`>&+~epPb;*z7nnMXXLqT z*M~=*{F9lYgLpuai zb%^zZM!Gg$NqFN4K@umZxtkWCwjO8DLuFQ#i8hgnPdMp51iJ0i$qwbMeDxT#kM1~l ziS+qZ?XAeEFqA*hAzM9reL~+I>l)mnBe|3T^H?29NX(uN-3(AlPhdeq5WTA|6ScB{ za%*G=3n#WVs=igL=Z`MhZ!`m2dqg_$hcxk?sav$+b;thdvy4SbFV5txZ7tqRl(b@_V>ZA4Cms3KDSN*=r_pdT%b0Dx)7n$}Vz zNu?pK>H)03dm7*T;V{&b42>8+-lm@>oEKxpG!_n!^lVM9jM zzekqzIgje>0y14}%qsGwd-hQvShmZ(GeC3Ab-U?MkFUdwRWW(gZ`;DGc5vWmXIv@Va1WNhlI8a@~CwB1Z2*eJb-C_$pFz~Gxs58h2$)t4pShoaFU zk=A?J&`ICKgnE6#%zoUeqAXh9tjbxkCqYT>JSltl`9z=FvooNFCSsDL(Pfx_{%?6SCEmdpjOyVO9_sHn5H_= zmh{yHQ$)_AGMnrSg7OX5{M02{+Y{-sX6w!@m)!QI)(+&_S3Tv#D2F`9b{oXxx6IYi z%9AXZ$H(c_JF?Z^XjqBa;6B-JRmWULOiLdcK;-Iu{F`KB!M^DWkMEjQC+RNYd1-Pw z&3!Mcbhvo2ZikMpzZ$(n3;ni7Cw|J37-P)UTV^GxhvIz#veGH04hAv8g;xAdx)^&!;lp2x0Zj9<)A57sNO9{a~CM+Z2DJa41SQ&2)0L{URdgUWPE1 zld`+5!wEk(e25Deu#?7>>TcLnwK^56go?wfI~tr>vwb)IZtu2U-}$@RW?4NGUU|z# zG1E0Sy7-_3>02ghllT?_T%dqr>p!57<~7f|3_8i!dNd7mlG~0y=d&N-GrK`Eezndr zJ)y6z?`$r1*1jEKbnsd-O4|74O=nM2X17-zBR~yV8-}3lZ>|KO?4fJ8z16?6fXRk~ z(>27`yEXU9*2-6%~;%t4ahp5C=!QJgS6t7P+9cWutf196} ztJHkp`l`J{#SAg|F7d_rQ;@YGa6N9hT(+jrwKe8S%}l7rs>(zRh|6kNe(Gs1+vx6@ zliDjgjT-*e(a&02*-rZIR5DxN0?p)EwA&+|k*_d1%))_Iki*z#&Q_j(3$c2Bp9&p3 zTDhA}Q2trF8pt`hFbMK#VAiHBm_qzx>JF?!?8N`}oe?!vBfr!D^O+#rD$paObM+A1 z7cXUByJB=$?;o~KCSag1a5W{|2`9abC_=8Sj<14WgQXsQh;`a#4OET))p{ zt9$KT_M6t9^$)HeY_2*_Tn7!cQw)Wat~SX6>VX7~IG_N6|YN z&;d?Wxn_&OZ8$@Xl|k!(a{upNuHCwvjpqyx3aL-XdkMkjg7`}Q);0lm$5())c(|%= zDcNwkYIJnDV2x&?K+*R@|7PpW9>(52<1U^so1Nx~Kc&;so7JhAgy2AX5V@h2)vuCm z6RiURP*f*TuM5`HMV6XnzPVq!RZy-RJ4xGli>@8{dZ@r6Z z%=F_?`D%902x;f`#%1EL!+rAhOyhF(Sil8j%cE3gyK@f+j9Xt;U1Y%}QVuV8&Nmib z-%t@zjx>3TnOJkPf4B33zTi*b%^f|?rbiQ<)o-l0Mu;8gfA1_gA-8 zl^OelFzO?J-38k#BHEFV>W7p??q)zdesoPp%c6x3{||d_{nvE#_K$B221to0(x|kA zgtUl?0s}=sHb82$(&6YB#xUpxNkN5;m~=CkfYQe36a^e9NZ04^e&6@^pZMOt`A}ci z&biKYt~%#DpC%tViEo`uf;vfj{@1JCk8@g=PKd!=_S3!c!hGGo6W4ZoC{bsp`s#f! zM^q-3Q4Q+>eHF|K{;DX9cQKA)Vh=(8XNcZAR91OXx21}Cr<{fkk{(E1M_x(}SM~JY z5a1qI+~LkB_YE@#iDviWz3~sb_GC1$^9w$kP7OvIMO1o9i}Wo1_pQgy8~)s>FtNKO zU+yN-U@0K4<@_QPGWmqXj`zX)KdKZDF!ynSW?Z=Hss-b~uMQT%37g{Rp5$`g-y;-# zv9Pd7bB%_&U+@F7l789XeS3`k#xI;gWLhQ+@6kod*mm4F$qg};etH^hxQIG<&P=p% zH?q7BfB$Qbg_E&$9#x-3-FvL~ z56iPl$no;PwqKP;D6$NV@}{@z3p<|ZpV$CzU0-?{bdql(#PlRv!DcK}>Bm*d1km-7 z=|Sz*2gwmap!0?@*dSRZ{1?e6e(OeUcoo?L-vM$jTe6$8|H-vrXF&tvB*C;NlN`v<^l{n=WL2)Nssv1f=`p)yNAOkcjy zAzkoKq?J|PbTdt2`|f#j!NtQCN=zj?)w( zh(EjzhoEdB%-!`}D8EGLZ2O9da!R;Fpf<|FwdatMB~J`DD7Lyt<^;h<7`CuDMYRSl zWKWN5wnY@r8t}A$K=uVeg48ftI&vMJD!HdiI?bQ;X3X5DiMk_CY_W<{n6CbnNl~^( zpV%ypPJzCk{YPz~c;utQGlo5He~)>Yz-Na`5}0JsO=FdHHO#laD)6Gdek|KF zu1*MNd2CBg`>`*><|HevV-h9-yWOLS%1#NVd%XB-Wa=?k6LlCGoi$!sm%}XU=UXCh z5qAGy8?{m1l|sOe+oNIpz~ab9Dn%gN-u}8kQ0{^(EPrQVJJ))lnSRHd`+vS)5`%UZ zM>qxfzVEtIQ#?utjAwSu5p?3h`1WqPO}zczy8u!4oSVf>Vz8n&GlU?g1t-qQbwXGi z6k84)>^e1>qG*q;#r&a0%gf%%F1&h&}$%(SYI$aMH(B`p?Saf=#(p^mqH-iF(O`%E|?J0>gzd|F}zch z9Y>V0GCU|}j{N+Wl8qG8hhjk*6C-0eZU#>c3bU}Zg1?`?Ptma-!oN|xvc$&gFkF50 zYF%K$C79!)su_lLbVh+PrV~MBlf-udT2PKB= zEx|(81RH{ksfIONslP1rAk(z5y{iwt<3L7bcj!Y2z7H^cRB;KeS{;;i3KSi1Jnz|1 zvliOdzi5sVu+A*$7W|c*x+rGXSU=RHX=~qJ5{1z!RH;9X(nwIq$07sl1!U}1_wm!` zb2;8YObw3BZ}={asR}T@#Kz{`3TDFE8g)#b2<-Hlpmpph$ugHT;-}E>o>u#p@`1Qx z#SK-DAaK(1!DIgPzaRZA1`)F`F!j9_q4YEHqH^h>1zd^5DBZF1s&B(c;e$cR@;BmB z7ODCbR5jSlG`lt%B%I}Kh$#&ab!AAz30eGWh7u?5S|ey2@r8&Ca%wyOy|Q+fo*T8a zLwOE1V?&M2yDz38-fPfx>RHMXeg)BTYR_h)gCb`{I`a1ru!WiO9LuUP!5DH^&0k}j zZRZsk!cUgEOTg}LZc-QIi#nhCJdKF@n@8;tI^5sfI#mt{RSB?mWatLQHd$vwC%amo zWf5`@j{SS=S6V_(xqkgZIWONGRgDB?24OP}E1|AHPO02}jpNOcb=gzyo#BWsnwa_R zaGi^$yvTa18s8*D=lYeKazMz|h03~v@o3k3VM4%oVsSqIQrW~%$5yfYz|si*ezAw5 z>|mO7ha$-vZH_hD)!y(B+Hc4jRiPh^95f>nSM*y>g*2M)FwHG~po9>#!Vn6vWUj&wIni38pb;nAhZ`8YSj3ptCME;I@zoMMWf(2iFePM zzEm`zLjYDRYjr%Rx|gZ4m2~nH(BCt6k>Qndw!kL!z17eL9GZ9!jhoq4B!c({=IN^0`fLkB*#)OeK7He z1KKKD76*!dgDW;Q%e2IsD7rGTl>d7Y7c3x#D*fwSHWmHI^!!e!1Xo;)adk;_63u|C z&&JsRA}2cWSYp}zjeFcE`=FK`43U;l7DL-jS}6NwC+%)Ft^;>m?8mvOo*gIPXBsmi zNeD_Np<1tnp`pA^i>#$as!}bfGx1f0a`7MQYb>uWpV|E1U#c$m?7&$O^RchoUWx$F(NT zh(h5}s(93RNgAfGdYAGQv{BmdbDv4@hU%R!G)Fs=rUye^pFe{@Resb&`QlBy zX5dkiy_))EP>y)jN-3ZZM$!d-pLbe~5@kR1Hi4jJpBm)R&D}%zJLPP`omzIE2US@X z$X4ur5vBl=ur<1aa*s_7TwIVorktu{M1+JIj#t^-qbq6-!Fzm$$g-;IL0qvNy2Q7B z#$umkx1vj~{_tE6Pg?rwncTnd4&7;mJh+1~ltBHqNN^l{G^EYzIDLi^aQ2_m;b3EM zjMo5w6g(z*(^kj%?BoR1?X`=W<>U+Z5L}I+J-L!3hKX1 zsO!6ardl3T4L@GY}!b##flVPj2T4PSR!wLz0im;~MJ@j-luPuL0c z^e_!iYGs5;{b%AW9i(8AjSXKq?@5B!Q)-~REbLNgs0=wBlqNy)5Lqw1jTh8D9)S^T zz;=4DD@Jh8O7^}-ft4hTWDEAEH%HOmE*!#kq@YUc2gDN_-96t6{Qc|PWN_)@X&AUj<`+mKZ= ztNKx}@~mirfZ=%gZW^C#O4dDoQJ_vaFo@|^7AI_(!^-Ehi?0`XDRaOzg$SdytxON} zaEjJv8_GruPe6KGY$zC>Xf_o~)++KWF5*$CQKL3%stf2M^l0%wnA#v*sm~*jb8$Ae z==F%JtjTEPvJr50j#EQpx?`M!MFK)Fi22_xTzPouC{g2b5rv)N#@oBAfnqgf&{33H zR?#|vZ9_wtZ;!H4$POwU%KgAbrWMNEGS^v*T<-x@1vH1waD>?L1RSJYXW6f9^ zbknhn#~V25mZ35-UdVwf$`9GmMZ5@dk4Qdb<8_?dS{Zd8)R@|ucu>fW&kw-^F-piF zAS8Hlvd68;8l%Mx8DbU0yBi+ZY-HgSo^pS`jyCcLZ9PHR{zYac*@ee@tcGX-E-y@0Yq_2HoB!^OKHW927yM zGH9hH_smi+;f3-cshVI`6;0JDGwT_{hXD;|HBmezy#ka*2efw6{YE6t&AW#h2b5#b z^n9~D=C(F!I4-OglT8-~84noDasg#B9Y>iW2CT!7#S%n}^q1PIx9g#E$-=85WV{8TE}XghGdqj9L7DHIo9R2yJX`uiZKIsQ*DGdl?DLw< zc0Qssqx=d>OqZ+=Zg5V81-SXv!%`)|6a(v>$vc`w-JC5meju(n*84mDNi(BsC|({R zlIbD0$=sCY%NZQOAF1IK`ttH#?cHE9by43W>_KDKo;X@^v!qEJ=p8h*21Y|EqTHze z#5L`eY{Gr8VS|uo6T`W80?8*ht9tYa;|>sXXEcEoe^_JVuzFwqUTV@Mle?LZo2`IM zI|nH0Pa^dy%Nz}i*aAY^MupA>1eAW^r=*_G@KlxBE%e^k&;^l^+w4w7vCMsqJ8+2O zd_AQczwmD~sb%F0IeFoCB$b0@Zr7@I`bDzSWj+@eQ98N^)KR4NQLpF;&(OiHkGHZ? zA6Pf9RaU*-P;vTmmnVyL^Vw==RHkO_6)O`Tk-H<7zWzB>ph-@Z%)~$EklJ2YVYrmkw^ISAhv#XHhpAE3rvhmFC5z6!mTq zVo-twhsA1E@rK*aU2+Y!9AuRz28gdo9 zf)R7uOc3llI|wuQFQg&MA}}BdUh>Y>68W9E*R#*4Z&;k%1mt!$)_Z1O0Ma*3P;DJc z>vE34*{q(yYY_DBT-_{^`7V2I!mB;(y&WNskS8jrW1?9U+Aq7R(cT4zkW_(V2H#+% zM{{j-8@_c!Q)&t8w+|083FEz+*_y?>lwVsPOqw(H54U}`Rgk_ANL9pte+G<6H$$K1 z_!q(VUcg@d`$sND82Z0|!p8mIUjj}1pF)n!;s1=`KbzwJjN$)`;s3lMuz~*{ZiFF2 z8VL3b=;9T~$nI=}g)JH{Jy??8+495tYL145`e62l4_B;FAl#aGL>qrRGinm{{2$>SwJ04aEVB0d<-FGD7j5En9)Jdi@nyC z)pgDrdo0TCC1aj>j$bn#gp^O?dX)(t#?~dQeP}>ATh(Dep%7e9CTSMR7VqkU%fnO=rAZ{%VvJB2wchpBxxLMc|LYG|!S*_D8?m{5o+D7-4dV`r}vu3N%0pcz3 zE~h?R@dwk)OAgO}aarc{=^%4Jz#BiZWkcapNz zus9LZ9d{pJ+V?lxV-Pof$<$TsZqq>Tp~4|R9XjFi@jm8&nw${x<}x26*>iK%Npz4| zu=r{k5VCa7QXf9Qeu~J@42^21|Cs9@Cpcr+$CSM zQI0!186c)9i5^~xjhHc`0qvYT&mHOnh4-E5#p=G*l;2*tUk3Lx38Tol1p7DY6PUHX zYg8smy{MpdVg%jCpp8u`j#ByyGEb8bqhYeMa#S&Wp6G#^Oy3V2h-iVlcK?8jxV3V5 zrzS&q)P4?UnS4mx-J{Oq=yfNNAvKfZaS%wV77C)!R|K(oL*~tL-T3!yO{J(VjoHPP zZq>F{7gI_VV7a@nmnLheSu|nRSZK4S%-K;^47u8MJ)ti%YOA6MQbm*caoc_4H!kmf z(~nhbD!*2$pStoDslb&lrE@9vcmw=|b>ll54AGK~GvW+MmPnKO4oxQ;*@5ImJ#N%` z_0ID(a~SsrACoW(jhx-@II-=ts4nA}tl<5eK$ndX>gYGw4~GrYHU)!vP;g-HvF0^c zeo&r$`O3}Jzf=y2lftUaRSUnh(5b5|Y%%h@^(KCAf;0Mw7q@e$TEn6|kXhUrQn!L6 zc5wN10@Jy$j~y#87A^UK_7hV(nAg4 zxd>%9b46MbTMThb%PTvXWX__bqnREi3 z+*&J)HLUf;&~t0A>~bHK=s0j*@zdEQ7LJarF z!FmOh(OTK1`j`-`24wFA-@;%JoUH;ZqgsMiAvM#kj^>XQ*h>0|-)ON>UcH;3d{Y}xD=sPqvy8)Uc_EIy5U%#Qc1p1WS24jr zCLhf{UJ>X=el@A%*f#NY#CRMZXud(l@v7B-X@%DZkzpqwu0>2JHfPg=t?yI{rN`bT zN@l>bfwYC6Q@*m;W?N^mkwMjAnWMEvoPwmXz|dS`k~cdRR)SX?TU?!ob{FheoW4wW zt@Uw5yjC9T-wEB=qC6M2foYW1$KQ_$5Ej{w4b47U%#x>J=hqa@=~%KxO(SVhe(HX2#ky z6wwG|i~VX4;v~D_@0vsy560USE?Q}n>>6wo6^)=bWk!jOISYK)oySd7ITok7rt-QH zVf`bYJreHB&n@r9dSfM|U%^!*|HvvRMTya4T;YG~v@jan+B4r+Mnzh#)Q4^eCd4ds zef;6;;(zi_JqufDhR!L+eSvvK(3z<8LHZS5RSsD37eXX=KIe&MSA83ZhBtS)-rx8@ zF~L_OQ&MOl11l`bvQ~E!(U%X^M$vN3oA`+dB6Um2+f(VRYfbG|G4+!7p+Y%0)8&+h zNIe_9TtpLWjlrmDFO5;|<5v`~6k*&EsVXLzzzl=Dk1Pju6czw&4!nJK1*XP z>K?&w>(cp(%Joqz#S_Uh;KB#e<8Aog(ZXFxZqD8&%5w*ByU^L6VcLa7OD#3ok}zj1 zSR^Axf8Vo(+LN$#6C(A#3n}O}G~BYYybkvDS;B|ifUd;xyj?xt_cT}^ke_sc1KBnQ zQ?9v^LnCk$dyBAzywu|x)ZJT*zXT2k*cO)BS=e|W#2R0GmSspz-3vaSX$x=*SddV1 zfnK4^X=9n{Fzm<&UQZ^#r6SgiV-jp^xQ5E(+$pR7niLd<8RiHRM*N8pY^Gr`gk{ix zZmq{`Jg35qTnowtctRX2^Y~n`I;iZfJ*+&JFZCo7-<%xILbN0IykS$i zV#vb#2TBP;nj}5JfV()Bm;ea~=fpdns%N3t)4V^A6f?Sl)g^||CWNcVaqAP1ZD|jT5*RQdSpvy1Q1#WF>u{@975752MKq(Vn?ZQ74y<0VPJYWjj_P7nl z8>^h~1hX5uz4@gS5=nOBt&;F%o!|Ah*vR4&Y5S?_N9LZs8%Kk6IJTmNQj3#)nPU1R zW{dn?PxAeJVu8#(U@i%#i=GltrHN3qvHPSf?F8bLTUBA8)kf=>rv1m}=xoErAA@p` zu6DMordC0yu=C`xnmeEyom$q2C*yf_TNpAvs8s|OoIcVF^5d7$!5n$*^V?oyI5h^l z_3F%}lNGmKRo0xAjQ!cBk*jiAHIU5pMio{SiujNGN8!BK zw8$IrC*BDXtL1LWGYOo{v)xmi7U%A(NESYm1s+5mFsc{)7zsKj;=nTHZt=V5r#cVU zLuTi17f4A%GRE<*W-ZXtb_LFkQ&v}GwA-pr*yNInj(=SqJOSZ^Rw?0<%{Wa=BvoBb zy=vBox*_5v?)hG>0MQI%m4zcNCd!bahS;5)9nUYms@Nu!nF`bhz9z-z(}34Uj5qY9 z{OT&&F)EV;&f+^-14)aZ645s>^T@K;U424$QlU;D54|L&+$4wvHV?a{Q^S(lD{kx^fogJkr!5V!_`Twc zxcE!O^^P4{ZE7Xy?^9#PF4z`C18CD&*uYUY9ZiQ0u>-J#q?M@aa(mpKf+beTqAGOr zF3irY+9bpFbBO2iEUU_$A;x+pQ;x0C4-wPzF$;`y&-LStQzNVp={e2p`LhqN1nK=v zf8!bY)k6FHoga)fCu3Ca`4|XS45SF3>1ZVtiiBRRJ3Ta19e(-c9Z5U-`WZz0i5BoI zPSBjNrt>A8eyE4*bY2>RG=Wp;#3Ol22Exwx^jmEVyo5}r6mNWa4VVC>*PgYnR?^D}-%TPsPk)iH=#p%fUTah9uT19UjZxsNbd@hiYh%+Bl5c3Ft^F7{)Q<}4b;yI z?{%1zcrO#g-9AyhI!JK<+Kk5q$aFEgG;-C%i;5>EI^7PJ)S^GaDJy5JXKeZh)-k!V@G~JqcX;oUd2nqg6&y;(pNHYHve>~R`?{( zQ=T6jVnZT@x~%WH#;^C%hb}KA+ExmCR>|qcuK}{e{0F}DvvN2brUfjfxbC@6K*l_RT6pCDt%`{Vfodpa+V2W$S@vwJR_e8#^G( z_P{OdnT>u{!K&opiqpZz@KE_<=4ZFf46OI)qQ~ET>S4`r09qMxCb^)z%|_C@TJ)VTqB*86RNy@ET3dVjYeka4gmvGei7A{HlFHv z&QnRYRot2CLF@eOBk4+eEFur99A1r8z8H2DhJ#H)HH{CM#iXjqVM6pAm1<_bTV*s0llPh4YvKPqz9~^O4Q%z0Z^?G8-(@RwZl?Pp%cDX%OZRpcDp2Wvr&LZwD(%n%1 zHXLrrSf9ozmxYstOEESiPY>3J5gV%U@2nv1#gV*Ly3>A#rmemIoWjc)=%%fqZ(!yo z?d*Dk>7-2(=GbeU>VqU3m)2sN+GUZFFkY^w>BKX{EV+tLGtW4!e4x!j6=AzIw@QCY zPI)8^%3ZS2*>;(DYurPd0k|f@F9g6~{#PZ=pQfK7-=|w>3f<$Vvw6Ky z5k(_&uENk9R`YCRDgFDVh>gkiw`X*sTY;lS<-E&y!*v6C0B?ej?q?l?711tUQ)$1k z@x>duZJLu(Esosc@Ewu4InTMS-EK8$I^{c6{fzG1)9|>7D&uaQRLKNk2?ekY&Yx&V zz3sATB8>GL`PxgjQg7c|Yo|HOF>+y9Uu8~tL5(57fS3Ihf-QjeegNv~7p@=qB_Lgh zH#Bm|K3^gvw*zVa$h8G!G6`>T@Mvj!(khF9@5%pRSpW7rUt(&n9UyFHdm z;yd2OC%`V|!JO_N<`Vrnxq?*8rC&aGm#lKbW$qRu-PT?2K>oYzqPd|=4Zqy({1B}P zx({lAns0No2x+B;wf%DGkSkvW;Exo6|21W*4;Uly(qpU7OS zERi|YH+Y{1iN789=BV%z$;p-f=C25XY&lDKd$HA$Xacw?2-~W!zJgXSO zsLQM-?nk6ZxHQ0|{(IYAaZVQPXs7$>&NItXCMi=7G~r63i=KxQ=7Q>eP)XLza2GG9 z7x}LKyryTjyT$Rl4mhi>PLkt9{LKc&qFeLb|Fl|4F?=?LBY2YJ#O}}%6z~Sb=c9mU zE;Kv98i@2wdFH(Fpi_LP4ZzA?jLV`WTe&{$@AQ=J!~SGPM-R>BQ$KLashGim|OGbz1j6UtkCyc(m8O9 zSOwSpV1NSE9yBfvc$lCnoMMk>${2~y9rwSSNBaSc^%ZAgbi$F?vyrx^ zVvM~5dcDjkcWf$xD6f7fxZEgAr7HXw-p| zDMTJe?XJ>rir(W!1qi+WDCOBC|M7^YOFwo0NtHEI$Zph7?&eY)T~W;Yf@2IfU~ud)Ln&r8fub*klRS z7I%io4CzWXb1RD4?890lN7BQ*hr8>e6p#nQ!ixcFi8izBlP}%$kKMoaO{DkB-RP+e z@7E4$Fub{@NEBGb8(wyJ)Ee!Kh&OTqn=36rb6~mUv3fIE$Ou3mZk~N+c0fQXTe~H`X*_Rl{C#;lT zyr1(pah9|?Dzq$wUh`q{rI0%QHp!oO;-szic<4jbw42*_+Wn2NL?zy&vSo z{;=gI(E&%f^I%osEd7A&?)$MD5BFUER?AtR9JwCmc$#Gtp4tQ4!K338$K9O$!Pse} z$&{x@d3rx1C^+tLGgvq<->HWJ%zB3i?`dn>{m=sNlumlps^|oRTPy6sv51pLqYO_10^roMu8P#%ei@m5I~TLyyw*icI#)i+wgl38|{Tv$rJCzIGm;w>xVVEc0Gao`dA$;pYq21npvl-+f_}L?GsG$ob8?u}IA> zAvx4w=3H7@+K@LKs5MEeNz_D&P~=;8pJPDwQ~j_S#?%&Z;mZE|+OjVzm`I~s0pw^} z0a@J5#T7p-a+NX-!YCb>u3o1gmX7JMMkZFMq1gGG8i*(Tv1F`Ca>Dd|N|C!0nT7QeTxYqVRbAB`m|WfXFvA zlK$qD{Nkvb^K1|RIs8+GRzMC{=Z4(L6ce#gM|%MLqzjV()Q)_!Jb$~~^=K@0nzVc^ z!cdqRGS%09uX>pAb*l(M?--9CG4ixupqwFk%@>cz43`Fpt|laCTG)VRB-~OmO|s4` zd;e{kjDi ze9?E&6^1_?^#3FAZ>~{%d<9#--S8&QdvN2h3YL~bF22j4C53iHC}V5>X9G$OFhqj9Ci80 z%WoGU^_~@11tCu(a~;|t9lTFx;0UA5V=N7v88*acyDmkfVk0rVvZ>i;L7qm8y(~v_ z+V#?{nVZqy`p?ur&7bP&^@$6mibu`8&3Yzd{A!u&N<TA2vDj`X4${^L~&Oa{4|A#exp{>bJ88CWeC zhU#1tT}KCf2;8UJZsC%j(P%Z$x>b&27r)gpO(TT(@}`$TlqaRN&yn{pnyWg!r^tU+yn+={yda!mBl#;X)f%>`tp^=rpC)dP4}I z*ZEId*6}*>Q;UsmqvW1^ zmVs+?Y0Wk;TybZP0}rbKmD^W7Ql+YYReYlLGUPBjzfa35YyWY#b7eKQKJvVe8um3{ zdpH}T7k>(X1{#fU()f0-F1&diyl8|99cq_O_aX(f$C`yHKKa}?5IUPwRT<6!BFd8) zAv*G@!@VWG)8nfCn;s}joX+k|N(V44g!j9ee3VMM=X-ljde?~Qi+*h%B#Ce3ZhCX9 z0vhZAY0?MM7@z>4l0pDm8vm`K!WDOMgx8xvpth{lNsqalhfUBDSzI@d_Pjw^gyBsd zWpQ;@c$FelpPl_J@Cb)CBw+%Pd?w@s*N(pyGhB?stkxb zdv8TQ0FYWDL>k#2D#C3KuL`Bk*FQTtOo~*Af34fZU!A^gA_dX;NISiqx)OOoVatxu z?sKtD)V1^s0KZ$Q7uIU;kj%&MZ*@RiTc7v3@FhqekJhZEfy$shMcRedInIj2at-7I zr}HMjGR5CY7kD-kZ){2L`BKh);x%c#{oeP>05|m z@JB}IbEbM!j;NS-B3%~*^q!13X7V>8ZQgnyeA$=!qH5mPN0Gd=pc^!^a=@{iIv(FT zzo*xilG>zttRHk%(r{pK3je3#pVE``tMpb%xUm2dgY#}0ySUIUO&D-SET;6SEnK2J z=~I*A+^LfvNM|iS*L;VhqQTD} zn+#cEZ*=<5ygLsZ=|RmY|1)?jNv1G#l($8ALT_~?i)r5Z6Ef=4y8U_q%zuc>`9c5j z&H+x@;d{rk%yfrurF5D;>YbI}){d})2mbHcX*}Hw;J?0eO(Eeu||J=0N7^i>92y}kD_c&A(kPVX)R8D7lK9@z`qJt;=oeWPe7J0e%l;))Z6iN=nj_3 zMl@~hhWzqG$-8QH-S~J=yLDDUMd~Nqux&=WW(OgcBy6g@3ClM%HMGmV-0UoOF_MA|Izm;N+lBXcBxue?178II?>nn>BnDMqXCgjGuj3M3 z*48ntJI#87eA@RYF50m!D=?v`TzqZRIiw)Zb>VT)66|w59sho7$_cEMYJk>}T~?M>)?l66e3-igQvUVz|uw2+OF z=a2`U-g5ZoSOPwrz;rj^|H?r^{|rW^kgfS+|X zjWVjMbiI}I^nVg|^njEu(z&hx%1Q0Q^3@q(>=roG$X}pG>&K7hB8A_a8fnn`MoUlA ztca7)+ns-H7CGc(u##&>FBB`>24FoCL-U-YjEgSJaR+qA*mh7C$Omq+u^Gg7>|6&+G`}#S7Jxx@Mi8)f^&dBWkMAx? z{2k7smpJ1&Wvh8r+J?7!WJ2-DSkNTHzQE@k0;BY8q`ApdAlf%CR?qFx6l*K@bo!X- z)Fk5(Gm|F8?8@V@d+<;;-FRD2Ky*gPk*4A;*C#${o)3`vt+uj!0i7zCo$Prg4C6)u zfU7|U?UX}-)kw;K%8OrqE@#?;pS`V}xlx$GNq;z9?t;7v6XMw4Q->+=_#jt!uP=w( z;Bmay&j)+ZD&BFSm0p)2O7`2Fj^kr0a$z=l zv5kWMNsmVR@jL%=5gaYvClVA9f=DKCH z&!6eNOp+mWJsWR+H5=Ockp`H3*R6<&4tY;{qOe5Vb!>hx_qEy)?%orNoF!IyiQG8_Edwv45p310%v??QYf77(jkjC_Rc!5%?OAnV)+%jH!w;1nBT zqIrc80Rqgrohc^a_4>X&5#P2|UqvJ>Uf)Gb$!Us8&*_EIA34bKJXFTvExu&4WS{hH zsN}vStOI!ikk?#%IMmKHFpaTF*$HD@=$F06`n~x{fEbtdYzzumRs3mi#$t3e$t_~e z;@TwquvQhTxjPa2w7UBv#Ddx2^NwY#7#ockmzHoQgF0Oh@AE|7?=%Ex2dwX8G^-k& zY5zl>P1-+zgV-!r?JS=f{PEa1gwfM0lZeg_I@k~4NWI5BIuI@FN6fwgJ?wjmc%Cxi z!=1DrMIW{A6$A~Fxe_@(KtixAQE%T{fzt$@P$zxq!AAM_X{_^zp>cK1+|2d2q!Xn0 znuN>lgIwV=@PJDqh)xACOUMvojnvPhFi~`Ne4`kAiaKA!N^2y?LG~Hx~mR`t(I&78qFokn_Ugnxt-eA$*6Q)nn;ePq zNdqAePSE`n@qP!y$UkLQ@%21b-~rf`JHB+QkARR=hDpmHSb4H|!b&*Pfr|aB;xT+V zWHCgF$^4qr;JI%uD`|cj;cvWtqKs67A!C1P&fniZm>FvEdMb=y0g>yBUWm1bs*RLDEb41+s+9-K?B=0HTyYi%Al;5Asb-@hI1^QchQ#9y?z7x^>ze0|e zlN;QH``^0&$0u?|a`1x5l*RNtlby+3n)O82*r{i(n>B%hEnxs_VYB|+iuTD~n1I9S zxPNrMfW(we=|oLF-Ha;IiD}+8wHMGA>0Uw@EgnyC%Z&+MSX_01`1SPRUI}Shr0eH{ zDIraG+Il9tF{O*)gbhll!1+opslYXeaj1{$!k(m!GEw*p#&rYPsp+HA@BR-?5AH%K8-W1_hCz)TSr@7Ww!@y?H~seI9g?m7j6So#m3Bn&_OU`6S{$& zFI&TgB3)AkQ^?7~w0}|TKQ3pp|FZHBS`Es%wh6P6#p!a=;XuCmq?Xg4a7%NvEiamv zPx&)QZzKQ-$-AFix;wr+{OfsP&5A^S#+BN#FNlm0&dW3_xs$NY*stI?IfD0=@Tl#A zE28ZyJmXtyw#RgbQ}0_a?&J9K2bkBHjxLf0h*B6v^>B6Qfu8TuU1-d9RiBiYm$Ug8 zgLi2)`?khCSr1r9)cG<6z^;DX2x>v!@J9jEma6WnLD#^!BN&P;_q|q^Wj5CnQs!j~ zSIN~u@1t^p=e!497==DJ0(AU~eSbSYya~VFeiGr=8bHeWBPP+OE%(T&5al^%jnU`1 zzPzFI1mD!L149_mfYoeUJGr_73{8}z3I6fjI5 z7!%KbO7Y#}nSF<6JYs&X$OQ=4Yp3)MM*yPiSQ*6P4TtKE-zCpia=J$6#~CfM;|6V^ zLta{O#lR$i*DeOx)W!GB)7%$s{nG$gw!d&76&twxWb8o?gR{4MHCHtKA)sJ47AJ>? z@G1Z5q^d;xsmZOGIPMjl3igkG^@!OsOYU^;PK=Fx1`kC!CIpYmQo3GJp zrJ4OFb~*CEL9`0ZwzyX5-2K*__4GO`(pr10{xYPbhacR4xCwd*uNG*~&*VNE4j&b#N=ay5PNH_;BQTlPcLK=~n08yfzX>(1EP?VpR;5H|qS>a?7}V zfCGC$RV9N{=S9I}dQN#<`hKs>d)AywReu09F_mq<%S)>S16NYSS$ItsWQQP(n2x=L z2c$%_yIvuZ)M62ifmVUxc%Es_J}BdbyTT$t&$}~<5dK}^kY^mq*W;@l%iA^G`c>RQ z%jX?#qbewWzTi zg_DBYr)qMq{eR!{!MU!xXS&m}&g$i`5eq`3Jpl*gXcj?qqtCRzz6@UM7O&5Y zJQx2VD(CWMJ2((ZL}tSlOb!(#qBab%@M;?+2(HKo*oJqkS%^9Rf&f zJ|`)J``Uf3{77OVIfIUZ0O=)ZOFIrRPSh2oaA@D-(FFeeP+9h=m#&dxu>Qj{`@X$a zTi;0o6HV!ybfHZ9i}sT*IaGhIso8jassu-xX|gm!sh+}G6GOLz>$HfF3}hqm zj-Rm%Ur(}5`1$s8g}Sb37m{>%0m=NYcC;(M#c6|IH~mh^7K$wl6aGaS5zf z8IEwSwIO*hFv+gZo1rtRGHBwV+)1I$m3f5I~gu4 zu(-N2rwv7RW%9VT*3ealve$Zi~;) z50lfs81uD8ON31Z-lT+U<$A?*iR$%&-9EZLEUz45YBj^K#M-QQ0--nFLE?F)FudN| zmiN^S*6qQZRwhRz%H3SMoO?g}zYT??K5NFg3leYIp>teX(^u?4GYjqtkmf(0B<9K8 z+{Cgcj_i?oK^Iro$k__Md$QNwZ|t6oW%vw$KvsixaQ(-L`2ru%ImbI?WcRsf0m~Md z>$$A_q>h*Q<4BKG1ubpf!A9$qIm^`-Ev5 z7j^eA{y$y2ciw8eTwt`{k2mm*-3ay{4vc6MyN9*bkWpSO`z@~Ui-*itKq`?~@c-Jo z@_(q_zkO!LZfp@_CzLI+%aRZol`WMDSwhM(QkHBp*~;2yBKuM(dt;Y%B77o}h#Jd; z8oLppY|lOQ{XRcE|G@KlIX}&dah&r$@Avz@@9VnmbE)9Y;l9#0mV4tUP0jzDLjbb* z=rF(L2QZfN1iYnD4LZ_j*_@|Dw$4Y#H#o1P76qJu+p9!1WI}7lqMm3Cxpg$u$6Vu% zW2{A-P+~#Hj4`#rYucrk%r5gKesYrl0*D($cFeH>2YW*Tu0N2Jp*NdDf4dvSk(s7K zWMb)6@Bf*`sQCtU#g$Db_LYe9%DWTi=6oF(7wQk8eeNM_k|z~i{YLvoY`z@t`;^M7 z`3b)8v0OJ~cj4P$QCZ}84az_S!S#}+)4O2)LG$x|hp8&gCPVLWyPXy( zVX$koHp&Lt=G9>WgGs}Q8e zm>2z%=b5bTUhC__WsDdu1(9=S+{oS$y!|mthrt540MK@l{;<07v2FApG>p6h65PgN@rQk3#19UKli z7xn~@{Q#IsJ7sCU99%L*%t%i3g9LfnSD>e%2 zf%frNgf$0H2Uc0h*3N~b0FS-WnLdOUz?zD+)OGn#UOZUOT)`nk{ec-*o`*B+w%6WX z{#mh8^_Pv(AGy3ypp@@LhiOsLoH>8}2trWMaN!u8IgGqedP*v#VC9ze~h*D8MpWubP$`pkWT+=thezoR(&=&fIk!h&6p zYy9~)=VTwT$n{MB9)`81Q51vNVa)&DpST=X{QxF2MNGe4M#i_DzbmcdAL9d zeO?^`bUsu+$dsY#n>gayo8`~2vuBHJujDK34`LBE5WQ1?C zmY~u3T1Iw_s3<#qn|^V%Nv%w#r2L|^hro7Hhi-cqCGZJQ4K_sSbY(pZYj(+Kp+EEK zE)#r`ETG;(7vzDZU%pc==tQx^s?PqT3D_{)F7BDQAZK6L@^v0IU-9VlyAbdl13_G5 zD)mO*AsZ~Z_A=|h<-u>$5cM3XJ<{m{8r8JC_5_^3&d63oR*~r^U1C_=YyDg4S$(hB=c}$Y#zrzQBp$Ks<*!4%lCgPAWgSxJ z$8!v}ba!L}*%L4A76!7y%@Omc4xV1tZC0BP(&_6+YU+P!c$q*5vz&Khc3@8{f^Y8|vf}xi2lx zPNpQU4Bj^W>UI&I6b2s8x%i{c@o%epQES{U5Q{)&_zM>ebRGBmh=Ii8CssSYD}xEE zw0I6o`**1r`n>R&Ui%-&CCGlYj5EWFC>0_6T|^3TmCJ9p&jm2KIhc3RG*!a&-29?f z%mMFFPODN>4d;HICbJv8C7bV{QDDI!egDY^527wH6o@K5G9Z;1q!x0BXwZ2d&qg-R zYEj>9N-i*uvc0=JFrULPW1fmgAFng?VBpefGQkfj+r^z6u&%zqkU|kKlJBE8<_~{9 zDe2%0s!f&198u-%j~JK!P~(lXjValf@;j;!XLYZY`!^(ricG2p!=>_idINWY_ssNS z+B<~^qZ*E6&F~VeGj<$YOpOSY#c^diUaDb<9w&#b31NLR$LjEa7Jh&y=HFD1Sjf#7 z1BG*-o`|yUI3J;MMMEuSq>QBr5;9*Q5zHAg85R;Bclz8ym?<$72yVGkl3@l%8WHHE%)+*3B^#pR}-720fo zHv_8S;RTD zI1iVTviX~YoeCC|ylF;$(yg*S2NX#_Nu6*_g6CCo-1(JF01z01Ig53V2C!l7CkSGn zcIH0VJ!_+yJAF2FGa#BESMO%_()pf&<4k<_&pYd%4u7{I+c{grW+FyCkXABTH|Wj} zWf9uT-`Saa9TM_=cKs(zL~7xQon+T=g~-#Z{YC+AF5yqSsS1-q^8NK|b630>(YL+$BTl!teV2Ww+WHH6j$dZfTet0^9>bLT__QXmn zljnSpRA3|FDnbq>JGVKdNGbo;;)BfKC&Wr+bB3>`#He5sDNUgma}&!o zxQGNszAcd1v8cgbq|jMS?)lH%t;=JR!-K4w2&$N)c%KqcXuNnZn7mQ1JgrBBb&4hT zA{&ZNB;Y*`9jew#7_4m z-T0PaP_l`m75*y&<7Csbe5+RaSAx@eoCqEM-vgjSby0cH7NCihPWmL!=NV zu-CTUeL8TOoN&gaM+*2Oh$Sa9VoOL_{oiX##~Hv|Df^Xuxnrp2KU&-7&4}AF+Y9u} zu|_YY;}> zFXYCEJJva0_HWCEFBnK07vKFZR&76C_9G|y0PjGn4ZmU2RetTkpwahtl6~3_B~R@2 zaPh_~+?Y-~7DK>TW5oGcaBJB+T|(cqoZ1J2K=gcj0jbwzWuc9Xa&em*-h#np(!c z{C&P9cDtE_{#5t?WJmEZWDqNUZY(V#>%LXhI^q+|RVn6d219DqkJBBS>|w7_Nsiv| zFgmYeEJdnIQu5n2pQWGArFL&jYD+cmmf(c3@xgM}$K#UqVg-zrn)Rgtmym?cK60eU zUgJrCg>c7kz=@p6RT&Jhl`9Hl)dc5zOsN2pY}w?;@wvsb*wr)HuSL#&i8Qvl{e_wJ zhp}L!q)Z9z!Y&EYq--~jQNxv_jZ@$o{NYLUer<1NrSmMzgjfIxZ{8IgcX$rQSV>te1B8&nC!wk1;8^G)t5!`BSe?N?3F!bUdlCQUSstLP0|e1r4M|Vh8O7 zF%5vA*F9E0&98$Hn!2igv%6yiY)eQoq=kR}IQjK~YkRRoLK&7y<%6L~1$RxJFdEI;>V9kO6_650Nur3xsPD!Qd1Kc3)W8BDyQJ*k-6lb9py~ zHieIMOXoL?-fw(v?IBEDA~u4{|DxG;pJT{R;aF8GUqD~oed`o+rmkCYV2x=d0-zzD z=q)UtX~5VrOe1J($Uu>^?+~7+H;kz)$F4r_8Ni1g#zy2nYeZ_dol@e%IK5Rt8O?~T z6?iks;6D(*2V9Snl<5LtjOj^}YWiM)9-Nd73W7Ro=jkMHmJ&mIniG*eO$*_I_gY%!&Go6Uh?2KK=Vu<6VYr0 zwECq{qvswWyS4Np8ekXC6qB33t|yOdkuGqQ(w8l@OsWz*F9FQLH5e3N2^tLUF$#2M zU~7RD7j5u*As&%cVWfe#00j7T9>?e@LE26ted*9KXCB!KQKq9{V$D)SP=Hzh3U0=5 zPY`hgqVR{SJ|yAvz<^XFO$*0IleTHY4|WW}vx^rQLfA?i4o~w1z&OsaQM_Y178q2)k z<3H8qrtIlHb)Zis51*u!`e9#AD%kQ8xuy#`&>=zOnks`a7t16Ef28SLpo5`9y(QQc z2JFi7C6W2{p1utCf|9uvp?OCxn{V5~cR-^%ugWkIgSn2)pX8@QszjN5Kav?<(r*xa zew4ZNM_@K40`KgKwh{*!mJ|VOXD%CXkjweM^{^(x$`*4k@FEDCazn~IBL`e*CjEwjb_q2sXTJX17T^mPAX@#NJlfu-(hK^MPFT6QttIdk1U~ zoBv8%pA;tkLsT*rA1ctR-Aam?xdp7PA9%O`5q0W}cAJv2zhETGoW29XR_rKR76A2l zymfw-)C=d5Q{PB(#B`#d@l&`vVjb!OSMN22^Te6Q8_;&QMJS!}V>$Lx>FgSUz>j%o zS?EwsuimD>{CD$?40_{0pIC3>1}>v1OZMNOz`JChJPTNy<$SCm8)C<)1&Y z7P#sFZ}B+^HK zAlN@7eP|YLYaMuay{Z2#n?!Z^E-MDr|JEc)DFv}L$v=aa1QaS>681H-{w|gqQ+ej| z3IjowH>^OF?eIeAV{7E{ue5Sfas91^bagV517g&%XaPkpM7NO8aSe@!Kq^VjhIJyk z5cAwDZB}x2^raC;Q3V%A1m6cH#Y|6k`({7W7EbL#72ktw*y|^x2c2FbN*oxu(fGrl zE8rz}2KAU9AKws&yyC#)INYm123wa9rQpF;6V&DSqFHpnD#u5=wLLAGr0Nc5*D;CYt##}lIYJb zBAf9_gM-F1hpH8*RW)atq-t811Bv9AVu&N`2^Kg162BO##ni zqH>#34eyhrqcT;lHyiOQDifWyN>vc@= zIxv%+KqO=YXpf>uvML|d zpP>_%nXrd|&3r={*l`>cHQ`&r&HE_ST`1-T4+c(%o4AaZR0FM65`A;<82Mz|uQGG~ z=;BS7<`csFhQidN+w)AL9a0BhqmBC?eZ(CH7H{Cs6=2BM^!deJ291;{=F^~b@)nA=cK1pXqLVf!hKPrx}X_2-ZuSE^{p0 zTbX_5&3WRN2*3A+@rL;P?|)9@69`@@4kA9NX}WCYATz;X^);AoTg2ZR9q8Z0rFz}X zK^MSAf)VsaC9p(+)3eRHc^mB#o#JRK9Wegk^EJDgr1(O?*10)aIo!ot2ckN zwFw9O1q$dj%pnebL&HAC=KuoQ4(OtkbXsaH!y38!e%(D?FNszHARZczKL*$2N)^>) z+I(livJ7i0-eJRr2}WB79D(+Lf!?qVYrRq|uq8C~&|-3HQ9x|72Xulj3LB*4c3^ud zN*(}i0W?c+B2_qwPToM8F3dwRa=`4y&!z)kkuxviPRR~Y!rWSi3-;WWL!ETB=d}{T zu9$=yGh1&4K#sBUu{R~s7Qx$is+4qF_D3@HZ3e#WuMz^wu<&LLiq@BIJ znw9Z(Idda0n_>_|@n{XY*h*MT?xdDBR4(E?UuuVx2dDfqz1>?YI6Fy_M!Es(PS)R=0YQFCL~)%1D`ss=BvRE2 zaqp6y@cz6WLfUmWjbwnzxnTgIwG{cXE}>ofKImiZk+^Bw-|rF_)%6HdndKT@TlE#t z@MgScs~ZyIc${@}AvA;}+)2&cqL#NrY*vv(l<>auJ1@fW8vQa?x9lZgSV2RG0rINm zSPC$qs*yr(kgnG0y2xvcPIzy96DIk!I+B*(uLluT8Y>r%_%9rQY<0XR)(J|PZ-q&r zy{PhxGurk-&Hf~f z==y!niJGZVvgr8wfvLcYJER0VoXCjJsW>t_L`gkJyO)iZr145;m(N++~C%8OB(l=SR_jW!dT(BW_+;$=nUEsl}w z8=X&QMEgfLwQTP3?Rs@xBu%_pEb(9Xv{w7D6~Ziy-ToGnbzHNq#j`7;T7wilzp?p( zqE+v$K~dlg`_`#PnXhZ!O`k6?{y~4@)#CfQoev2|YxX=yVS;D6FL`Y>WCSyaeyQ+< zDD5c=nh2_^Phi)@e9BOYS5SdykJ}pVA!@kcE~!qSJuSrPwER?XLkP+Ln(qW=qL#wn z!xu0yoBefm-q{%cqsjB762qoY;*w1ObR6Wh#g9s14!@R=F2TKxMJ6td$B7Fz->6HT z%U>$WR?mm3LJ+yC#fh{-viI+8Zof2kU8TNyQPF&ZJ*;BUymlv6lnuJUiG^V+Dc(Ut z35;4Vbwfgy6Uy=x8_X9qTQ@+e-#bkW2@v@LLBz{VcXGB4&C2;LR9cPb&P$L)K3ACT zeEs6Up(uw9xtyB)OPvl5CZRXT})2&2->R+ z8|A{mAS|WRlVl&-;8st$GuFIlM6$13?CE>E@$0Q;qW2c%<4(KYLV)EOqH0VR8cm{e zfUxhkf~%b)sj=q6S=zM^8rK_k*5+CLN|`o)e4J?hx#niRwN`$@<5!NSd3H-n^;FY< zTZ701SFmUXqZ$NZvYRoNu1SV`pp41c2I+>hVzy?p9bZf|`rTc5+}LnvV_?>P@`uW( zqE6uNpLs8~qPonlA)w$V;LUk|4o;sEuD_okRVLzpK5>D&{&Sp+_}}k|gC_RpIJN&Z zS{yj{140YKeumJZ073gD^Ct}Z&EZcN_M5|>Fzh#nKVjH!4u8Y2-yHUv!+tI7*TVj! z@ox_7*TQ}+?AOA6E$o8{|BvA&YU|=>+#lmAv9S4|;DWzs+F2%tzj=*ihW!U=J0^~W z{r%Zty8qlSF#-VNe~wg6;@=MtHyqeV&<+QK{~~VtCxf82*mi{@EZzQbJqm_h`C{4f5R$}c;lwqbx+96n>XdX z1AK!$+=4vi1Fw5gmb3&R5HX0+IX&yJ@x?D8*-k_4q(3)j$-1|hP<&37mF-2k*KXdt zea`UXSs|22vmusQkfplhPEC5|*MJh;MBbAY3CiuTw;MaNXp_vG#pKBx-{s}-)mQe4 zn=Q3X!OO4b^GfIDh>}LB|MT^8q@C%1U!J5Yqo(M~XtU+6d+sgfN2W{|=@E=ZF zflaVr`f7w3yfycG&55J?n`^Y14?6#pQDLH6oGT)@&H-_w)M8_0WmQ#2z5k9C{*sFd zqiRuwsB&)922QHj$MlpD_4}fT*lDN>+~w5nauZ-`UILnaG#yI#uRnMW|JEGGBo2zTW-6@76=o2+IgSFivm!C@ER}*NU{8*p>t1 z8pE4rIS8(z`+hMRvI%(?reXXhXNC9KlTVzZ(`czAZz=O*i z-g$qrQFN;o!|hc|J6*TI9wdtzEj^Bf18fk{?N%A@7={M^9PtF>B0l{U?@B#JaUMkw z#=rV0!MKXQLOXyuQpD{_j|9xcoEPAVu37mN>#%=70kTSsOKec8mevI^kdw16DdDx; zE8K2eroSV2?BAiwRYj@nZh$XdXr=01R$Mz{8Xf~Vqhhq+oKpL1JP-w+>W^69nUyEp z6%svQ2U?Hpp7DYlkJ3CE{*W5g(NJpmKpybbb+zKfaH7p=Y(KxfPAR5eh9hHou8HAT zv)x&-AsTSDqtSKW^=bQIfxOWzrULf64^bK7C!w0~28x8;`LB$cRX24SK-;Vp(#$QE z4nBHoNjEI$2bRX@T_(rmUci22Z_J?5cdi7>=)Z%vg}ngEG+3?GvF!S|B-Z=@lA#p-cZ(xhsqZuvI1T4VnAp-A1o(T+Do`<7X{iz zWJ+ui)lzgZZCLh%WVs4It~lt-0i@D{yVK7klI7yqb+(l}Ou`MsMP+@t^Ssgf&+D?t zztXm7|G5q)CZeSONSYQq;*+NkH^ehEo(4D@MO_1lgk>n5bJ0IOmtBQi z%yI)33Ks!UtG?^lv`?ipp%|m+d2w<<|0k8(ZLIqOnZ5Usi7z+eR3xVi2OCWFs}H<8 znTMs8JTy*hTsZgiFEfXNzR}aP-SwX!eevun(pAL|`e_mr@P-K=Zvo3Flj8xt9LgW% zkwlV6@RaZdP#lI0M-DONqK`$S0((~z!@^s ztuJ&0J+|=dzyMi9nU^@X2&jP(L3(46&DY1cpAoM{b9=;I_cDN zQNrN(v$(r|tvW#}WL#4uef6FVIiyz%d%g$$aQ6DWgm*YX0A6ycpS<2%DBx#ozZ!nb zN(MU2Q~(WCydx2cUE#sYbe4V;Qq|MN)?hceHYV53ls-{J2A#xZVbk4t z$aZv#;^XpqbOD>aAr>v z;7!oAW2n$rv6h0`_FDyI?p|L7?A7CWt2u|pgYP`%EdNe%P5tb7jG&HxOQfPCrRbmH zw2zheyG;;Mq2AT3q?X_t;dfnX- z|6mLWp+>9Up-jp6Sj&ZQ1|PUtj)qq6o==SurdUpRjPZ`%78zWlM>ruE|8_rk4Tm>0 zE(8Iks@PclM>g7ovB)%J=LO!jq?Jr;GE?=+e2zpAg4&8nxAY);6J1it;lUJf1q4Oc^6aULjemZ!pR{=*>h?IIbCy32sa9MT z0uAVFcm3WIpvF=;?hkvQ5^MQGAB2wd8$vVfCd?jW5u(g>;T3mVj(3OqZk1-R;3d1` z0du+-wn#-vYx|T9jgt2#n;(SKAw5;bO@O1+g5$SwcKc5;s?RlUY7Qp-tQS13*P{6D zh}Nl02!|>NZNLWy4Y5Nywq4JZiP!%cR%>gSngmh7#mZ9oK*JPVl8Ib(`Sj~t_I6Vp zHr=C%i})vO*=lG3;>7t^;f^H{%qQ$S5ipY+G7q^LTp{yH=x}t3QEKXMLmtV`&_=n2 z;%^HqPQNy>HdoV8f8B~t3j%6lI1gX6KJTJkB!t?%wJ?IIK z^+atd4ULZgKOHn>4wpBUDNcvjuF{zoJrG8yddZ+xj5Rrl^f;%;EgrI#t#{-YCwMP| zAQ3A~v#tsuTlE&EZzI$?&{DtID+^|4buy@zA6#zY+6o-z_>W=N7e&`xdlKimcpgaq}*ejiPsCoKvj_{n;;{6Ab+} z<)}u%AHJ+5@0FaOZlU$kmC@;{&t|g;Sg#`+eSJda^^#H}WLQj!jEPfqys?6Q@QBBF0e%f7T6ZNCnsY9{Bpm(Ht;|Wsu;IDWAG-m0KSY+30EcO1g zruP$ojl&t;!|Tn7&k?gh@C5uYwoDafs=NxW@FpP~e=fkB;DDEbnZ+Hm_02h3G5Qbq zPPAZ`-wdv^Br>_FP%k?cP?=qa^B2nHy_ImvJ;+0TDAk_|s1OY^I>}X_Z_H@Go@MJD zZFW7MEpBNB7~*9lEk201$hLjnN6MtyUa_G?iNePi>yiwz3B8aP z!%oNPKQcg>GM#dEWQ%9iOVg(^izR(wAXs(}V$|Bvk1+l) zgFGMT1{}XBFqX80%0N{xU2ezg zFZ_Z_bg4)H!U#(}P0hwwmqGyvV%ZoUkV~{+l1FCZV|jC;f$hVCgWH1G{Pi3|6ZA7? zp~o*g7FhDWm7nr9b>SF1+-T-;(-a>#sTxGRp!^R@+;#~rc6rJocP>d=FmZ@$y*-Y- z3`f-#7yI0R2f*eO?^rUN86!lQpN56z@yYYL1ZH#JM+a~bdQbZyEB){%m?olVT*FLq z28jqWhtyB~E!H!U)k@&vlo%#>-keyRz6RTy zl&22WN3Zrd@*kd@I%p$2|G5J?+v1^xaDXa|_3v{$W#`S}#x(lm(-xkcaJwH;emR0s z5nz1Re5L5+m^!b$0=!Fs#s2ev!#8Qh9W7z%;jy6;;S&^b9ul?obCOrh9^LUVP_d~afgyLr}-~UDDO(duv z?i0uK<4QbTjn0&6NwA`&KCx7vd)M;xxk4r`!m7g7mEngsWDiydh$vhLK?DGI=h7ox zx3}HvL*c`we}0J~@TKLs?2X~^tq7^6=m zt$6D4nAosbzjep&~?j_%~A_*qMUlMAx7u@mxi@25oU?S z&6*W4?PO9VmuyO9USg^0EA#0sORkW$TmKTAV38?Z@S7ldd{w10S9D=bei&eQZOMJf6y<)=$jp)0o9ePg30bu8_>^d)&bo9UND;-!l3V|1~r0Y!3;$8k2pNbglXm3(bn&`zKZ_M z&(A`gER;KMUmg7NS&cY{G`iKKPJqoX03kK%O4gwi74wkQd3OJ0A`oG@3C-|bjpZYU z;!W5MDPi-J@=*96#Op!B7_r56?N7W%#|D`yJ}SmZjSh_~#IcgOTpk4{gXPDxM{8 zb8o%*2aSlhm9QJT^3iN5{Dr*H9|51+P8dHJmM@EY<7E%9F4l`S<_c_-h3WYy(gA!ZFl7+$g~L^E3twXU(^2qq12)NWVHN;2nc z=Bm=nnUtVI(7@4|Uhjr$eneaPi9kZz_gu$kKgU4%A;_*#PYi*SvbqJaymR>N`n?h zwpH#8zKeFTJU0go_#;B*UWj6Fg9^Ql+p)Yxe?$A6vsHV{jninI|IWa*^dj4CjVE9U zwDu&xlbC%fOT?yb7#@AdPX&I=f^(=%F+IxVcpyfn_pdF8PICuXi?Y-I`X9lFZe6k- zhVW&9;s=<0R>OZz0ngmaQ64c|KXH(|}SN+BG0T zJbEn-i#GIfc76^mjh5?FqJvEpleUGtr*UY(>Aba>LQ!5?C@2*nrBUF z&T(ym0?kB=b91l&<~iIQ?m1tE5r|`e#o8qd7sAn`xg5sdh0E( z@=vJH6@3XA~yUPj~hg(sbh(|tYIVQl0%}g-XP|7Fs;?Z+SuN3_Bn+)_3KSC zDnX728)z1*eZ-m)#nKa9af_3ixUaG0___`52um}&ROiWJ;$w2@4U>H*+Bo|d znIBZo)Czs!`+0q8T&~?&Kn^im8zfof`v{dE9lDk+oLZzE|2`in!g0_YB64wT=XJnL z{7K_Gp`6%Rq3`9kNgQ}RGZ%QM#G-lGf);WSVXA6iHuBFh{SA*THg|&8I3*|URJwKL zX(54H0x_bHnbViyy*DkPA#eAO5*@il^Uc{X3?yE zGi^%1etMu%uo6+}7GGh82!)(cHRxUHLSFWH!9%5j38W{>PPMVob~R#8+wyTzPLiF!m}zNGS#Ra&9#K#6Tf(-eP;;Ky zDgS^h`ovcxA@;Av8!E%^GWL^)#=Dp*(t^o#pbv(l8z<0G!fbN(cc*X46XL=Xn>n3) z;#cLhB#qYpSUHIV(H`#q(`M*R3!dUYf+9?U4c_fEf!Ud)4yJNbCS6`DjZU&Qb(fJ@ z6E(xXfiYrPA~x=5f|G3%i2E76g&I+rZ!p;-;01kBd+{_~WY8;T&Lb$J+VUNAI=3k5 za5sBGIcu{Ah{me7(>F0cMCA~EUI=U`2c%(6j$rT|_p(maT_+~sBrGDkQ1&rbrmmlg z!Ix$;712rWxE9kwjh}2zY)Uz2QGagI7NTWUxa>7((}5y12=#J=@KzP3dlt;mhPrlv z0`<5(tw_&@STbNNTZ4s9&cC07!6#L@RPwS*%DN2OL$V3t#OuTw;c@w_h&3p9V zf&Bow;^_d1y|*wfjIEIdN(pA8+*DgOxPGt0Hv@((KE3}i0=k@_@hpUI$gk)gJBWM| zn8s%oC#5LWIX^9ZwImV6Tcl2Q!>A>H(!F5*%;!}LN_OMY`PRF|zc2Ug^_^^>psX+C zvv79EU1gPe>%B#_z?uO+k2pur-TEYs2XQX^2iiYPpdK%_)#r=8-<;tNsMQeo5rDv| zJP!XeZtTS)H~CsFdyDZIXsm*sZH&}>l7rYHsVKv{oX2PbLtDVu*(bDq6b zda@Eb!rtnC8FK}ORhiB$>{Q|@yO@l8Q@U82uR}R{M;eqi)BR;})HXAimo_acnHqW14Y`bEY~0w1L`GIA*XYTG!DJ)28UF>$+7c4IcVIt?{7r1 zLMTI1x~IWC{2<=ueMwS`O%FQT3{mSP2Hx>yZwoQ>}{R1-~n_8iOVt;-KNB zYeu81&V<|NZe>$NspAduQ*Z4&)+H8)z6|juT*BkJ(Neu^c^}{DOrw|Knb(i36k&Y+ z15E)^F%|=+0+8x=R~P})=c~{vU)8u}<5+x8; z8-Fn6S?D-{vVV)V?2rR*8Gj8y74)z^tD_TwNM8FZbJjOCIjSZNXivOCVcG3RdtSp_ z?R3LY+c3PfkK&9Ze5y2Y^>3%AkJu$(zx(L~pX&etslx0uK?fgXmUOTuN;dBueZmuT z4^tffhny%HX%y14ZIW^M=%_ro<`;y3GJh!XDi_tgdYU1EmmKGf3~F%lrRXZWMtc>W zbm@oP1j|%VV6}EP1XQscyYB*>#C!3F(RGJ&Sv`1);Y&NyT9=KOT%0J+=m@I6Hz?Bs zy2QM+1w85E=&zqF=*?F$?t7*dnfJFKmY4g|#y5F*WTdrOHoZW?=B|Xu4v3e?Ck+s{ zf3<+2$?}^Lt%Ydtx76w-JCZ|5|H>_j?vVuuS^?g`LwqpgBM}s*?kLCV$2sZETE6s; zQrLL`oT-Z4k7HL|yvB<&QtaHPU`S(BFR)HDyfaU-yB6;j5q)-a4)C-%I?|utLy9#m z%5FBc$9~NCo$%XuROA~o<4Q1ZINMed=E*E1NaKvszi)-Re&G zjh}fFK45`XT~#Yy=iof%$$OhRChGU8#>Em}xj&{_x420&gcSw0$GeHZbz;hb z4@cx^fbD^T-r_zqGV|%|7nV^mXpIMQwT@}xcyzh)+b19(y!yo{ZJ04lDU^$DwVsSd zRr(-0ziET)H2oDSr~s4D%rr@ezj|nBLk`K*D{fQH`mcH}J16#B>8(HsTt$>utAO?G zqRt)ZdtXMrEfbBnH(-4eQ*HDAN`|@Q51d4hq=D~&(JnHHa3I0)CM_D!HY>``<1kg! zHwvZ{zLz1CVxD{lA>C%)kj8K-Q077SJ^jnE(im7{%OUI32!>vNvyTaQQrZkRgCZon zYzqh~>~B-xzvjv|qvE2vtYfObeQw<(w^77HM#wQr`b|#z&PG(UJiKbl6xOF2+r6R| z)PQ+1e>g`#09c7x!L8T|M^E1`_4jlkfRGrnBew_%@(s)pJ8}jZO{w(|$sf?sm_vD0WJ_NG|%T0o;gI2ZecXt6CpkLbF+nctFQUc z!L9inVTsvA86##X0`ste;2X`F-2EcWzqmKV`x4urG3!0g-7;}{O(KeVvf5W+ZTlH- z`ZIpz=qYR^Pxg{!MRF?DP2S!i@eu zKNls#k2M~@&^5vI;K5A4Fr{{L$RX~#YD(3i|(@WsKW?7(IDWfT=p`m#NcR2f*@GCahjT|72jc*tNb7V}F+P zJT^`DuxDMKPABkiT2?ZZK%-Z))-C zDU)ny-pxR(gBDEd@kQoJQTkz?h2`EON6{_51xgzh|54YR+Pg|;U&|on2M@0EFdCxO zm90ga=RX(ln=-b0)IbgK+$<@HUWfoAwMs1Uk0T=lKbXaTJk`4O_--o-P*$2VipnC( zt8iucrasx)jVPM#H@PltuJ{Gnoc(n6HyRxXJjP3SO(W%*OSircTC7nDo#hYm0s@3T zwN6Q2Ejs{v$~2&=Ft*&Y>>Egi0-j|na|M^MKtJZ1YF!|rw!=*Wmfs@w93H|0bDJ~1 zlg+?Vz!fGc8DktBb5q*cjX=L`Z6tF`q(>ct@w2(0EUO*pkWdB#2i;9RVs{@Nx74<5I zO;5Mjvi;)UzQKg4f(CU|tvb2w02McOI{cdQO1bNKcGZWd@%3bsr9WaN5dX^i43E;_ zO<)O-v`Y8%U`XQ2+C@6Y{)KNc2i0Q)46P{9gNYzuN#+qG8KT(~r_f((Ipz z)rP3^bzqm9izAKKr;s0Il5#TUjCc&EO4q)bOX^^Kku-$H{wC9vzCVr2 z`JzZWsEDh+8=ymfHG|6c&v;Q?j_gObe3;g^29c15;v#)@KvViXlPJ!c0tfzJ*tI~u zHT_JLVQl16$#YF~TT27J^%?mvB*@G(W~mpjUTgS_9Q}m0Z2AW^hn%E5 zF%yN=_%iav zwRyv8ux-K%9N$7el^A%DK*Er4I}Pd}FY+u*^oLav5asW+;-V@8-hNl@S&so@&)SEP zB>Fa)40eR-gZgavADA10`gPVa*Pr4J>-XSLg9x>?aU+BW!6LN}!P}}#?+lZ?qQ3kt zPvbB;=@8a?r}pE>am~Jn>cnm3Np{l>YhLF(cE#AiCu~7#E3z|2F&SP64#>0KHj?J` zP|liZ210X8ld!bfXnE z&}2vcod5HeXr^29Wg`>O0me*TkcM7zhhLCbo4>PJ3QI2_9=CU5sMUt$WS?Quiu#$x z?2vxQ&0KMjL&NsgK}NeH#MC3$-=J^2Z~>->791h)dP%uU8_*zeYMevGY6MU5hQvQI zctq1Oy5%__ z^Yx1@Zsah8eU8tCkWP~)cvdfqK&Sqs^MW$(cU^OW2g9C5`u+@P0ov8rTKRgv1!8C9 zK1|3lI#CnB)(c{V=E)jS#$jsb{{$m~CWIgxT622H!lxMSStCXm*wcKSV1O@!wnE?K zh^H+f_ub>SZYYu^k2=6c+tH9oynVZ-vZQK}#2 zu)CMzaEw}kk6BcuwkPW{ZsqnR11-Qbs^{_q0w0sJwVBCz@Q-mBvoan_A*= z1L*s!CWP2@C(+I-=~87~hPIkrXUr2Sl58z=Qj@;_5?G~^`4iTKJtI2TyU zPFse{N91V1SsbI)o9d$WNYlJ$tc=!`gaz0p{SxSnJj*uk`lJe_%IlWyBtq{vxIL6! zRBqwW`c;m7c>?zsBWXjB{owG`b*Kpyrs~zDRZ9Og$`Kb8yY|h8!P6$k?U9Qb{|30J zG#!F;a5S{Bxr4m<`^e4uYd}bZYksY^4#SIP1$;1#Nr*$n@V` z^C#`A`(CehWxYR3Z>v`i`f-RvsRWsoW=!`>bkM2aI&mk4d?c417ZBTMNGqQI#G<`+ z*LG!8OcWT2#tA%zvaw)AY~GzQ0gjrjvOiXqSJx;S)^|GgEtul_UuWQs9rBwc1xn;J zECTizj6Ir=3psir8|W2HeDP;HP~kM>I4mREqenlWA(7C@f|ZdlyP1%Ry5A&&Ua@j^ zQBe1_tB*XlDms-g{ttL3wZH%FPD~~UINXNCMqo6!E&V?3ju~T{1)5= zrrh~SP-3=th`gK=MOOUKHwn0p;0%*zS07vN$A9Cr>?+~`D_4?rZd%(EZ0@sQN&`jm zY0qwi!-hma(j#k*-BmmH2Kv^ebFs-jKzq}5(~ zXKA_D&*XpkeSc-n#}TGz(f27lqzhm(S|>|vaPq0Lf_Gmt1--8$&Omb1qSG=ZM~~S9 zXkGh%KVGCa4maeyCjR#rMIKfiQP4 ziZv4}f6F{pLr)1ehjV^k%x++|h1(+P`^R3m>NYx5UAaEzx?_ves|bPcsm4wt73ZP| zIxVp%D@?&no>v6!bHsYo=er=Z5}tA{_kHblZN*9 zO)Ku2lh^1eR|6q-6!9GJYSV9mF7>qrXtUbLb%naD3?B6c+g?(mSCp101t(&dT>8co zmRT1IYCT%fTjSvPQCDw=uH*G8PWj#rZ3(L>NN%MqoE{$xn^?SN9X<^5*?dGdRBeDxFmYI$MW$ zmQ5xPYPEfH#fCs3rD;l8&!?AZL(1>zlZ`#0Q5w2p)~f<3AmT^uIR=ZoNg9Ge+DdY$0$vECa9I!CBEgF@`7k)unh7Rb3dZ=L@sEQs}(0f3%@*h_SRIrPFqMBrGdBE*x2>;l1nxvaBsFu%`hTEu*Z@2^jh@1C6V90< zzI|v0BZ)(G^p9V2Y0PH1QD(O`an%jlr0rg@@7)tyD|c_Z!lrY@@%yY=zVX)AsD)9! zU(W#Euc|>Z{syJ!sYq>l{JePd3$vD6ynQdzyKHgc!!a*_rnPW) z5s<7H4Fwyu40Ha9Q{gkjbn9+B&;c6X8VlYi<6=#Ap&T+->?j{X1*hMXC!8A<2)PRu ziH2k*eV#s&r&VoQc7X&kTyc=8$|>#BEZ9M^7&9m8gTMy2Lh3iqntG~rF_r(-VaVc( z$4#VVdWM19M8oD5QZl&xMCtc;97!g z6{?NvuyXo5)7X}qE;S9&g!O}MCXGlh$&ybcfF04W?gS{F^#NjF`y+2Cl$XT*2qi(!eFcfHUC0 zhl@Q4%!7>qo21zHOZpp@pOcW%IYj{%nOl|gH9{20#X@T6AH;aR$B*{*QX;}~y?pg) zX*)I9XN^miS!&VIUaU55vO(fO)mZL8MBiv%>NBv3%p%i+WoKJGB~{J@GC?VllSk&6 zZ$iAF$IZl*CnafOD>7$L_x6E3K`EEVL3Wr>Dt1Y&ytvr&+TUY(IBEL5PBZLvk0CAqm!&!DqU*9Zt0oArbI?I2%RZrwkic zk`UvW@V@!MtY!JU2$1@6$&km;U`~2bR2C~d#WdV?EFq!q4$uG|G?L^+Pr+IR*%G8w z#OW|wMIksnF#csT6vStzozreyVQ;X-@gTkrfenW2bS3>ahjFII77lj!TBn*kHTk)s z=7v>2edTD$L(+Ysp`6zNap19;#iQV$4>OY4cX5!)RkdJe2q!3GXAasAkge!k_n(n< zvc>lfLCbULnr!csY#ioJYU-~Mpr33GK24#<`S{1hCs`yNFo&3IYf(H2M`nwMK4pmo zR)0BVs8gs_kBi^EVGe6YD<6X@QT{uU%^G*+mq$tweXz{bpNWryErJv14`{e2qf1z{uyaP75tbO!iDyw{6$v9kMi zgmDsol`oB?O@v>2m=&t|MLA1NL&ysMO3rc{D53_QXVCn{cqYA5LO78@N+ zk&u!!WQ*fEZpeKbTfDp9ctViSzcls*A52^dKO_1ud{Gd-7~a1~pWNJebB5pJ#=`|x zcan{Iq1z`WYV^g5{lZ(Op~<+2(|qktTMiu(T^>^-xGI?kP6;A}JP;t17JRbsd8u*NcAB@N zQHDf*@j5ibQ32pnP!uLEM+`YvAZ-q$IEFuk51DjQtNSWBj&yuhJImzwof#|THS-T+ z*QA^`-8YvvjQcY`|AdsYeSY0mp|Tq@6#N!g8MycvW`fE66b!iH$~?& ze`pSKTtBW*NolY?k>KVnl=DT#ad!8`+w*$n{mE&YPleCDFzBnAI*xGUYkc-Uy#Tf| zqYGjRfT?zq+Y2em#`wZrcL7mm98S8)j`IlI@5OJyJ`rZ(?9B?-1hV>d+jUum%EaJW zc*Izqb<|n3<9EKH#J4!*yVfH|JNS02`7XVW#Yn}u6 zZk=71QUK`9VzVQv-&5k56CR|%1Ox_l#>noZs?ZM$Q|_dk@X!zg1>A*;y$f6Ggw5sa zw=S&fxR3e-RtCt$D+kx+>9^KhteL_h>OW$JS}G3snCWkghI%@wPiD{IT)?xGTe5XF zLQ~B+xS({p{Ohsq-SCjU_qio8<@+{hlb`8%m^Y{7orFJ8Nss)4b3XWfk}RxRYZ&_A zPBn8f345PF?sk>e zk?S|rVOJd&hjH=Ir!V={wH<*@FqWTZ-G>st-Z(;i0G^eAQ|+5r0fN~mGrD$t!RIEp zITy?Plkw#{x7MKwa&_k4cIW*=dKO}b49>mi46RPC2#`&v+UQ-tyAzISSN$s%fMg@U zD?~heu5u4L{5E>Xpc8@*&RKZvPDmDVY%xb$ZKghmatfWd3FPZgY4Th*Z*2>BBz)}r z)#;186W`V)2<&;zUuyonkb&6yg4_D!Tv7tp5duZLovFDJrCb%lounmq@x z3SM5YJX}tlo01$ocC8{S(akL1VJ|~q^d5gA!R)tf%d=Z<9fM__8%^v@PihuCUl1cz z6wMBtzqDzX@Iw4fGUKRa)wW-Z&^TpH+lQbNO^RO8I=(hrHH31v$KSQl;e#Lhb7x`J z-QMb0#WN+|_O`k>or60SI@S9x#=rEq^+uMusVbWe%%50xg;34v`JvQ8j&7fT?D{U1 zMZ;_IU)*;_=GOeiE_@T(%n-7SD%LRLt*pf#>r;<>BvU{3dZ_0uAgxvVFHT^1Qv12% z#n#|vFQe$W9=pKufL}jdgZqy_@v9X+)A1jiAXFRBQYGFPu3IPogU&^7OxB|>$-T0A ze!6ew@vp`O&SUSCR-Z>V%^+se4BCaloY(&@xIY<{Uam?$3a6}m0F5`_;KiK0gYc!6 zrXrU85BFk*cP>sfZ2o;!^V-}_lpBt}?y^o@7#~u83k8O8FhTosoV{j-*%|P2K>BX+ ztylruzgr6kcLGP=!tz3H*nJlJJ379NKl^V?HvGHXv7PHdkq#MKa8A3sdQ)THiHSby zJp`{9FaQU$fWQ-p`W;(d1eGOAXB)KX2b1gi9#Rvk=>Ze>Z>z6#FUTqQ)x~%Vba7JF z0@<57a|%rCmi^Q`);5lBg@<~po%~B-XI35f^J&4uoglm$v3^wnLRALO8Qchi8J zf0+nqXy4v0n7P}3N_xrmcsuAUh~Iw7O)+EKF;hWArGbM7dxq=%L+kv1HUC9DfBKwX zMJVmC4U;OZlu`^_ev6o%RlI&3kS+Xx9+e|_s`@W9K$X+T`mWsrT zWyrox$tXn9WZyzGWNnc3xqUw0=lT8(&vkwJq03d?_niCOuXE1pEOWoV5;k}LkiYOw z_cyyyA5u)MSZYpOZg}*8`p~#jcVQ z7Bsy`Ik+)=L;hMoUshCPNHW61qnQ#<_T*0nP@j7K?$Rt7w_w|4n^>RIoW(ovjQqHh zD5w?_cr6wO9K|_+-m7dIZFEZ{#P#Ce31oS&@SaV(6#Xw^iatR<_B#Q8qVBs9pL(;4 zuZ7V0e|vlEWH($-#bCkw8TdR%?OX;EaJy`5)L{GITrqhiF5FKqC^w=S*+gk9r~ zE9p_Ht-3pb5*hsbw@C5J7Dke|S*S(j=OWBEVcQ%cEC7jrZB+p76Ex(1o zS*s#%<5umC91d=79BH=hcG4YchT=j?w|o%tF`p^M@Ge2;LUhrl#1$?3e7gfD*4|f_ z%6+d-m;%dB7VsgycJc=^Xvi@3iu_Ea-#O`i_N!&WqRA(xiM&+5+=n?T2LaRZ=lTb$O`ACO&ru{h>{2>T=wpm{SXhVta*Yz zbhe}BV!MVt>)Fv)y8=@)4xS5k@?0H~dC%5U%kp5jBM_DUYV8lSJwCq>i`06lVaN?B z`}jo+#c|P$Rza1`XZR`mpuZ{ASJCI&HC)#*q{2h)BJ6^ZR5wL}L9CUQ1FM2ke|b6& zjAdGk%<>UJGzMU6Y1R!D(LrrNl*C_VOg7vKpJ}5B|bnG_TgPl)BhNr zAy1`1i&yY)&xwxL;h`M?P{^9V@$;Guqh_oM_8>M}2M7BG`t|AKvyH1gDfis0a1F-yqW5?J8kn0p|UzBfC{E}I8t{g)Tsyoelu z;Wbm@LxR0Jo_*gxlcJQ9#f7`X2{ZlTYUj!gV_7WvT>F0HHDvnk@$*sswQmuqm1U%s zF{|l7Ha_k|hevA#;4)=}$Do^ui>cmCMdZ9zwfEzNl{NM&%U-^(f5^5GtO)Vf0kJb* zNR}qYG2?T1XmQWAhA(5ykAFB$WN==7!Cpp`#yJtVe z3lsBqp?;z?zlOX7qVGrMGNM+5PSF%EkBAPJ3E_wA1+Ki;P%qxaAR+^j{XG^~w8hZZ zTIzNk6%|CK?6+}dymSyCvhYD@NEkS@X15S`aA*bP+LG8WqxI<8OJ&*aA~DgrR26xc z$8y3*2;11t&0{aXco0PuSA>8__-i1ZymbSUup?a6j>tLh39al)!I^*)+epIF3G`5& zk{w*=dxsmzFnpmt)N%PEWs=PI8U^aAt@^Bxo@-Fn-WPc|!v|0vk{I6kBau6%4DcBh z?|#Y~;A+n;Ev4YTFPx1 z8l*^~eSf)JtN5kWF&x*$KfOr{_Vy*h=a`2}!tBj?U?z)y;M-$t+;qf1OMr*DbD@Wdexr=Tlvi=N}g;b za+VX;+-qmGC;e@(`ea$Wl!{M7L!&e#E0NKVI@Ur*YX{@ejLVNlIwU>*FM zEsA^!Afs%mfN_Yr))OGPVo4sz_x;tY{&@9f0T11NWu@}Cx0*G#Y?Z4@F7J`GB}A4T zkWP8Fvd|M91~MW;Q)q{CZR*Vz%5aIdHL7=U2)p?oWDx)bf8(Bjwx20lpbk>{$lF)mbMEPcbWyHY5|4HhWpBWc{KuFcZ*KxPqF8YB zrqw5--c>kE*s+?9G~@jqpl#(I30y485V7+US?}K#HCJSrW_Y~nZj8#JQsefpLPTO^ zqyZJJ2uUpf;9_7%K^2-+rl05-54S(gG|G+{N#2VMcaw`PGxXBEqbd9g>r7pCtJ{C8 zPdy>ZE-f8~lEbb*1wza~VD5SiL8yXIIqB;%fn*g3xzeE?*_&vM-%dimTXAqc7HSOd zmxQ)ev5A}TAE)X4rizafoav|jBsusfxh!O(r+Dd1{zles@~Zr~glDkzOrb#?XIPP% zS82~`n9}AyrmKmeUR6|ZU%1J;mep{bDs`-;n>R1@XW;82t~*@rQqE2Al2UNn5+Rpc zAAazPX^G52Ku9J~*0Q%fHrppV41`=`Oj&~#^vFqIdtG*#58`DsFRE78e=M-I=Y=V4 z$&)<||8BNaYYYx{-`x!jNul(-M%`~i{uv_-Ly@iRWrr@TkXc|zKL*|KLY)LlKi}aQ zQnY$=WFoNTN{a6dRCnx%Lh@7cNNJ>V$JJXoZ?ezbGXjQ0doX{~tq?=WY5xv(_7$MPp^ zRc^{k2>ElqnZa}oWreJ%|DLg>zR9~oR0y@SU)B^?oC`@!KVE6OT<$D3ZPzBG4Dstn zHoh_i9D&6#Asmqx=wJEZ5D`(Eh{$;rWVp8dw+z_4vB6v!<-N9^gMVekigVs+=3x)l zl0zie>T9sop4lse*LwO2+sibQEpYPT4HW%hv4##SKD3mQ0FIz-Y(G5yXy30qcJB7g zn|*g0Mvh)mf&&Pb`+OS;*6x2^LLdd=l>ha?h*v>wLM51oC@K1U|4rt&krU>6dxU+P@o3MggJwbu|Kh@=0lWct)&hArG$ap{??x}C~eO}rC z#SM_whM-o=p|TgnUdB5_nbtlAcDi$%5&f@L2q~k|gfRVE1 z+O=M1b-cNNt!e?m+0ah4MEflBkAW(9;b&I~W+ZQhx0)yfL-z*k=(h`b{v*M1!8S1o zJrmw%w*Vyzg9ByztWI&H^r=6GVy1$fLdGahAA6t7p@#fO!^QE^mAz1s9Ac`dgz!88 zj^a&M3QE5K*LDt@uvrDlD#K;YxWwdmKDEYIv>rVz)gUlH_MgAQN!iwimVZdiwVCh? z{Nw*z4K)$dJSxu;58(lD&w09JU(el>SXeY$2hVCEp99&o^NM0 z*SlGHtI}5vaO|~9WNQJE?ijrH`mO`eY%Do03HIxoHO@R4imC!=bZEHJ!S~Wi{qoY*fi?EdRD`RmSxo+L}o2q&#_KqR5|NORGicUDCWyfM8^nG)d#^2cckP{ z%;25}`QmIy#x7N#6*WLhQ*@xLremRGw~vI+@?S-GJ3d53QB6Q_*n+d@qIg`!6>b!q z+Z?APgDmP~+x3a2S0DGx0|?CRCHaGd#pRBln1sy%iu^|i0RiNxnJ64}1oB+KOLa}R z8+DSxb5jaeaO-~PEpS30!5*02`$`KV47z~gQDEBZK@WXsx1 zw8iN$|9}+~{{a!Ys6Lq()Od5t3yGk4xAuDc!6bjX>x2m_#3#PMHqOSmb_PM8;-o&6 zDA1P{8{9#og{sPP)FNn@aYHr%`7s>~;WxNj6;M!?ezN11plzNk)>i#8ZSSXbvg1dB z?IEry2LTz@y;LSVrtoun;wRFp0PpKKQH6F=QxFD)giFo;pue62*c5l!3w$JqzWLaY zYuReTiVxhQP;Q_M4$pfA`=#|<03jaYI4c0sB2Alu6J1vSqC>VR9_021FoUHa^592^ zLi@39mMyie0^PJ~=&}~NvHqp_lxzX_zY!CsT0i=pd<{TPW#?+h3yK|iPoR(0BUgLE zVt=wGvOoB)bc&};w+ZO1%8xxj1t@tmP+DvYfiA9g(+H19F7y$Jc0`)AlcJdXx@YvrBmycb( z;FLFkXLu0L_s@)Krs(r@$(A7ric#KpiXHfBU+Lm}pexSuJC(9VX@YmI8tT)SEG<0V zrXF$75u*X28uZ@=5J3*Cle;<lf+<0U7Oq`{&894V>MNtb*R5@=k9S*$M5b@gvqveUfWA2S=PKKb8d%0g7iTQ zuJu;VJ?iLAWfX4j&?k72I+aY~9yt>om-69U+7J|fU+H1ROzyOaEql3k?q`jq-zo6s zcX7?T_bAd+g_tkH?Yq@L@%KQ0^JX{(!E1Bdu4MGz!#WLXfP*71b43NQsawPEKm1TH z8okB}F&*j0b>K8rmRS!sxtZT>tdieJHcpkG!?uiWK<$76@qlE#NDyj^fv$4p}{IkJJa%V*YNW4Tj%;5c3ZLJ_jZhxxmBA| z*m*5=+o?{X9O4QLU?|>!8zLR+12|DD=y!9{XU5-CD3Pc7~Js) z0fD6E(ty7q7{!s+CbN(ZmWvg&w3oI^$wN4Km+64u^mYgYslkjoUWc?|1=qY+>Fj)G zqk%M6AphJN=ck-o8__#AB(L&94BXR;1i9DoZ)TBK;O=X-xK>=xHQ^}RY(MD-^#$t% zzl$jMDLbEM?^77a0q}&?q6ouT|NEnX?tkThKomItx8(nH2}%7Qi2i3i5Xk@B#{c{! z1oHovKmihF2H64kd5riyVGA_pBEi}w6{PWA8=IC(c@lx7mp4~y<#-0-XsI>37lhpohZAZT( zI|P$v1wwI;&k%(|w#D_>Wmj%J-#-i_yW@mB_dRzbs2vnTG835{Ct^QUnO>fb?_2*4 zg%EpvT%D_$uGenQY0T714Z)+X#kP;79+`SxtKdy9xM-H+WGLtw69rPqrnhX6tU>H% zpQbr8ggES6)`Sizr#y$N`c_Q(7kUijI>g{-l-E9A{eNcxuzmG7Kf5Crp}ZS_*3@;f zkwb7xwnI5is!oMXf$v-qP33*w$cww>l$_7AOXO^&5JrfBIf(eFUpjFy{LE9EBKE)S zyYOiPM;FF>|J|VaJ$B6~?W1M_UNPk#I}-JN3A?lv*VUX#R)?n;9sQvhVsm}wWd0xj z;F14l5Zqf=`Si#O!O^`jf=B=5#&14dekfR|g>$s6$NLTvt{>^%D8&Z7*R}*@;c#j# z_XoG&b*$z6o}cab)rip;k!NC_Hd8sXm!{<4gYrn9x8^S1y!)w_#Acn*Cd(ER4NZUM z0#dMIXhfgz;r`t7nOU-@6=TLgD4E&`iLs=Wh0!T&E-!!P zmvOs|<90DiH~1?b%Bv&m_MI%zn}?n~`GfvKdyn z;^b^2?wB{LC6zH`=AV@&i;`;4zdU;iOQRL+fv z*u+kFl@)k;G7yA_vX2LG8Riv6+BQOGIXxDc$%VK?Fqq?35#6rQ5^3FW*Xmb>5K(~u z%X#B}nuAy}{;~;=FjytY#PRiag38hmzpv;@_D0yG&n>m>r8M$7sE~O-NKmg13c1op z$B^@80@rL?>5GJ{A5dz^Lg#O%|8B4dS-|EMPn90Z&aYk^ZQkAd929KRq2{}t4@C*J zUxvY*G8g0l0c5oJBwC1v9+Y+VX5wP_!Lw~&o?a|=z_s9(n#q>$ z<2aIfj%|;{)^)-i~c97|RX4kX6trFKqXf$h2&}Le0gB?##oR zRZu@d%MMjoI3T|ULiXClF1tJv%G<|zgNAIIgO=CEvp%&uu39C###DBP76yoQAq2Z# z%@Q7+pShWiWDP6PwimK=b`>;nucsK1!*C1kL-g;$60qxcD}o@u2KDh$7jl2^PExR< z4!iw-^aMg5OifW&tVS#*YQdn%%??qJaKRfDX=X!)CNT1o^=q52LQrFuoZ{D;vRM`_8*Dn% zuPXS3`XFYuYbn|?+sF}j{88nuZs?AJz!>N%Me~6kQEKyrR2uExy>01~xR{$uKHUG(aX>UQZa#>%jdq-m>fnT*u+qtz3{a3_v z@C~lsqf8u3Ggx#Cr~;=}gVteB`O^&wQ3f%tdV*!&@*jJD>7NT%f(%pSe-InAUN!*- z{zI4?4~C$eUPVsL%|uJqZS5_%@%t`oYiM>os~EHI=YbJFjFd-OcJRGd<>=BKEsZpz zQYqUX-`h3a?y%IW>_Ogw42v?O5baz<@`sBw}bjfZ4JY3_pf)K(ky9H`rc$DCs z(OK;sLO|reqEw#*$K}y6m9Ew#n{Fq(UbfVDH)vvf3`9?&|M$EV)Yqa{iJ`Ru7{SoAY&Su zUaRHY)xy`Cw{bxUITgs57IgK!&54EnFL-(T{*8#9ClmF%UXs>OqNEH49dWU`sRqGA zO2C6A`O;!0nE|JF-Zx{U(V6-bySaoepJ+k9fPeOYKI|Uf z2tLx4YR{*{200sR1k38^BR~E~P~hGwdpo9FHW}t2xis^dtcmNW-oeyv7lDC32r|6B zvdw1V3ilFaU%xQU@{T;)kM}y{cK11Oy#| z`CItI+NLaNq@Dmy)z+Sej`*S3spIP6!IdhxL)VVR-Y_1zrR7nwCqD534dgI`29ed{ zOXm8huq|xmti#$n?2gM&N%h-2z(fS(QCJ$Eb&NJ4sTHX#w1|6o_!bT+{MYI!CV=@Sq6toEGPg z58C9jpsdO)fLpNf>qGp!-F%B0_SpLe{3nV{s~UYCBUTGRMlz$2+Pru+&|7RW4+&9J z&;wnTQaO3%U*og*LdgO*0?$^Zuq-`hARI}}Hx19p@>VhRXl$0w2~vI0V&^B#49R*1 z_BHrefTW}3s&aE%{$0@FVqHhz*M$Sb>Lo$#<0_FGX+9*+WP( zW^gxf+fqS zipZ&M#hcrya?ptpf){(?_Hly*e?ijpH042RA_FQ( z8iQ`sDj&6E4SK)gTKq=??s>}DnLG7UC|LmKnQ~Wojp8K&`nugP`~oQUFJBk3)w1GF z?bX7^mB^g|%8Uo97@Nm4B%voJUN@D4Igc2;xqbFYIA zApW3}a3*T50YUn+1vmVxHpq_|0HYlJw}y2(ceNQ5&h6QWd^+PvTD=X%eu*kg#vw>j z0!`|d)8z6_f>E>m(UaL5i1rsMvcU}v(h!6aor3>UiuMhp>QE2Gt9ZcBB0>HFz<4GbH|g-_RI+P862*<2rvE;(QK#cWq81pELxAx!+>*+2 zD7vn~67(-j-`~M++c!VBD?v5nWB5`x@@nQHs#zC8a-RYt(>tzFb|SZPOzC=V6;L|V zxxmMR+-4!lBlLCO=wJ)G65UXFdRZtBoyp4Q$J-9Wpj6DZ?EqKkULrUqy~@M47dTxa zo^RHnW{@jD8_9IM7t&X69%882+Y6MR9IqTYPr2vN%DNC03p(2b_==U5?J;;>QNCvF zl{^u`iSdVCfprXsfGItBL5RWT8{X;Y{uA$eFP`%>ud0(9^p72QqYpju)}uBF1`+Eb zd_k!mLYg%uvt;e;4ZOfLNAeLX8^-2F-v?iW7=Q+o)7Nq-_F~Ygp1Fa7JC~tvlAm6I zwxjp3@)4a1#4YG@NC%iGakcuh@H;Ur@+S2nXim~Iqo#+noN2AMyU1qX z@k>2Z*PYF|39mQ%8=8})hmEs+kyidcm>RO5U`-Bg<~GB(ZY*4u52C-tJIg~i_v2&8!daR|Bg3Bw!Rg#n}0~* z0UfVLGMJ;dtrZQYbjsoEj;8qO%l=_Bof8t5UtKD?6(D1g%q>rQT`<{NT!&LyuG2Z$ zng;yk$V3~aJHFD|eyLCLMCNkeN?&h!i);Vmx5g`do}t@)>Qg~&hTn?9dHe&}=$i!Y z-PmAodM{6QyFD#A-dRc#O7k=}u^PxVUFUsp4l+&?Obs=81ny2|_@%^bWaZ)j$+{rZ z4$D%;4qsyzM6o7+<|n=(og&|HJAOEXrh+ySksyAOsvvNzPuT!E|zU47ZKdvufq#t-|ey{bx zVG>Kr8-sHhER_;Q>h4hFw>cjcSr68#XY^_x5!{2TE8dLyD5JFBS8_f%e3JhDlFZ~u zFv(0t(@(F_xC|W{0aQuS)|AkrB}D`7r{v2`O6}HcvI~=Y_}J&%DxWMPHqp2baNPnH5P^lS_FK( zmGQ?(x}Efg;!p1bb=L-qEvH+#h0^kzr&qqs^5IH)(am1^Tu)Z750h#maz^@9p6RZ8 zW!i&RlbRWMGmJ9>i9k`(TXY_(*rt#V6YXA;WyDU>DG6T&lz^KBmmDPPJiSqOD;489 z|F_n4aoE{-+=n=FtR)SgrPn$1i|(u;W6a1=#P_1jc=c2rY~yBXyvWQa zu6dt4?GuGCcUoht&V)kiF3=lUWdUSylMCYc(q73K3dBFJQAUdzT4{K|`he7E%MWHK zBdfMQ#?rJ4zxhZ%`mLJ!x+2aSSz-V4*k58i>BNWu(U|m7(lqh0n$_8T=r9rS{k}6M zCRHahu-veZ6cj^9NqSNjff)q<^2F9T^|F;vBy<6ym-f2YE%ov>4Yr&y#QEE_YjSJC zYi9HP*+kT|AqqL)kNR+kI$dfs+h!OG(a!yNG?`$57-byhMoug|K>EN1pRNxL zKl_TUdt85(tL>ERnF!p*!X1>2(9!;McY#+iZB}`&W|<@3B~!n@=MGr6%EuGgW*>^X zCjrb+cTLK~*fdjNdwE;*4Wj0@u#;+y05F#T3L&+eVMwE4a}F8}0ks=|81qt(PL zHQ@%fol&4mSExN_=tK3>(lSPFOwIi+r)$LW;KONz7q`)~w})R7Gl`CTv1w7Tv*Gyb zl#|n2-3>EOxnmc=wFjng9BMBtP8`As5`;VMg0F(h;meHUDDKQ6*>zSR(sQoiL4>6D zNt7M{aUFQ~0X8c<`RfO7v+1z=Tjm9|i?z`#`|mb1ew|)sjO%fHg5$%q14FGj=}%C+ zYCNKPzv5a7^aVs-z^J2o-%0zde{y|^gf`SnG&s$nDp16wSed1bbk1d>^1Sabb3@{y zPzra3QvAxXU2p=s;158cpO#97)^LH&Z)}%q?#A_@aSsGGD|2!Yuf}`zszTKyj zWDg&+dZ)R9v)t^1{7|4bI`@@roV|>7`HC7zm-;ynx}%2j@Uz4Ti!RqVKm2;`S6*ss z+W;|-`0GC1sRPW+WSvc~NzU2F;xbCWZ+Ly&CyJz^MNK$EmyFUz6BVAloJ*sZJ6)qc zUf|#7_ao$lWS)v7_hVtIO7TWnbhToMk#qcuDv83PAKH53myv6sNde#8ovS0b4cT?~ zJm1X9=)RbT$HzhMsE2uE-*@ac zc@Kgx^Gu$HS)Y6EXMJ7R;dwxQLOczS?xhTn{=8On#=UKyJ*P3KLaX>qrQPdNN&nmKtgZ-Z+E&c!?4QCudTtbauGCAywD zYD+b+t%x&6)%Yb1?*y8H8dB7lG=grQ zLyb);coy8|e_v5r(vWks&cupm9R61s`?>qW>XBZ6u)G^Eqx&hSaaVKvE5^EY+RF3*q#YRrhP zX*!DOofUL|@D!!0-Sw9vNY)`!;tns~cOFgd;v#wx&l)Jkcb#o)ap$gDq%(DA%`CF3 z0^eno>&p6zp8V13^(&0<=jQBy!L5l<@vpvukAu&yIigA|FWlk%z*k`<=pmZRaPf`h z)o#oHafYN|R6YqE@0mJT)yRir-|3c?ybU2p&P1b>J=suF0I0Re$BOxP36;j_yjnxl znG98)sV9n(zSgLGFr(l>n3IbC5+LROu8E^>CF^IkhJUf*)$RwH@rJ-bq|~i>nqN~h zxB1cx9p*#0aofUaRA^n4l8c3I(EcB}%?z^_uW!RV*0bm_4m z4@nWYSHv2Aq91bbM(%!SMfvoHfnO6>)kqyb{bJfq2S))2Jg=_g0DylF0N)_waMybr zmNVv9F1d_tW_VGnxw3zU)Xqfrm#y$t4wriJSn&NHPptV8ig=bFau={ky<>L^8WDu7 z0o8dG-7(LU_OyS`zq0L`6y6#RC6)n%8^1W#@)-8(&*G9Mn#70~K7QL)K}=GS@p@}sg28*0J@>|v$|ET&nxLJ1yy$M=%huwAYhs&q@Qod5R^ktc-g3a z5cN08v;ySTYFq#Dur{~DQ&&)6wEAo0?5&m`$F-qC)b)ZV1^M< z(k9U7t8NEL1Y0yuP+OW z;tqMig6u*(!K{E6jMf;OE=|Z+zROhP44LfvBoIpbbqc{5@NxT{ByggevpdAEn(b>*i=N-t%5KpR*H z36E6g(9?o$S9_(Ww;RH1I5cgv$1=s=d;sTP6ijz`{pHdKD{^2ACwa%47XF*v=>{v{ zx#8moO5L^juza8&OiY@NRmwhNiy!OkmnT2_s}F+Q=wVS1A%jOH8JKoHy$KI7S>|kU znUesl61U}bqk2WvzKxYif?F+AuuX8-)_bGe3pKE2+w=Cp?;rw*dz`^?giOV&UXR#Q zQ7xrb`wn9QVS0x&(LSuDiwqZUvxdBjdMGZVe7v02W$gyYP?hl4L9k$X(w_o>b$b*> zvFMlHbhul|7@NUM+7Otp*cJ5oSx1VK5^g$`&CH%bb6ZEW?e7#2CdL#@W>}!WQ>1Oevj+RXkyv%2Bl#yiOJ(SO4xD>{}mZVq%Zh5@yR?w}lRL_Y$s~*H9;UP1WPWp47!WV_lO?}dmz#|E8}9~=)NDKG za6%#VA7as)^_&v3+Ixhc>ebBZE^w?DdTEynI)+*WUzNZ8UIyRKbIg9Fmh_OW>qOs{ z)djOTX*eJ;1m%*Vzo`m$*T03!Jx~9dU_2m{vhcNTRGIh!+)uLW3Is1UVw)~Vy*A@nW)kTM z=Y1a+56>~`I=fw*!vZRU2 z$P6Ohha2%?nxQ=cK{rF;-T8Z%?bOqm>X?KykTZ#c*!~TeuEcER`qh{CdSgY0FN~ti zvYikj&V76W=K`)-|(BVeL|Y!1vkuQ+Ua+PXxc{wxZOs+#J0%Z8fb{ zSn_#7(<{M@NG2u|FV8;YE{sS+wTN&X?%AvSyecR8FLd0i?-Btb*vWZ+)-Coza_@MC zMC$4Kd2w%GaQ>Zh&Qo#|>PCP8fiRz*7*TD>^n- zXJuJ@@?Q-pX{~wsrQE11;X^bjmULwIuT50O`*Y0@?xetu1( z7|JGRxpIj{@1Q|Fr{}@K)zI_T)|+5smkrTSWO*nb;Q?@^-;50u;`;?vYit<&-zv^g zHaA)nzt6FOs=y79a*POk{d;ai*%QsX=0aSS=-$^w-506Z)ehD_%x%?%tw!37*@ zzS1wB#WxdWFv%uw3tuw4P2YwhQ0 z+&|_MML;lu{h%vW#;(&#?u3QW|5Cb9pu@5lGVSf=zYHig9IU63$C4^HKt1F^zM;ER z&*Fb2DbSZ;cW2!=?Xg;|R{Fx{Ujr<|25ng*m=)5?)CNe{8x!1AI?&)Y=YI17Z4-Zh zZO8h>k&6_FuoCt;j{=R673Z-U|MH>VdOQ=H03--DfBklZ>RO#h<#!~c;>%}DG(X)% zH&$i!M}=iM^bK@j8%D{#JhG6ZZ+qaFHwFBz^;=ZvZ>0Y_cGKT403k#3jE1WmcpOjk z;Y>`Vray7Ey`4KHXOgc>vzj*rwK~JYAg4rc#Bsos(~XdP2+p#AFM3P1dLfm#3NfaW!}kt_Y=O0ugTXD_ z*d%bQq2m@~XAK@YR?e>cxgLp#7nfn;!MyQVa;{#QU_)MbQxKB6Dk0Hp2c`&&Zb^X5 z7Xn@sBW6LL2P?bDnu*(CQOHm`zspb z2+0j?g^vMxJ*g1w3-n#FbSm}7J`5BHyW6V&jE^VGgU^grY*^Id6%_7sit5=5k+Er}aZr<^-5!UpSvfHegm|DzW8oF8*qUrl^mcENEvuGTo zLGvBT|M3B(S3T^znTc45?f?b(B+{J2HaM9#n0LQ$>P=zL%Mpe!P=J-Uqec-a|C6#kZ_rSqR zD3B0=t8QW?I2MI+Kz^=*S4+{JBx8wHq*G7L%%^2ga)l+7f%`{?zx{ptJo|nMSo6WW zHk=-a871ejKeLKueI5NLn*CJUJDZHxPMTE}FzrpZ!SmMqI=1)HUY@`rbgo(R>GZHd zLSY)9dNGTkrs|wY%flRoJLzy|sQa!xvrdOvqXc6Ak17J?(4L+Sy^wu%Y`Z5KmB=~& z1NwJ;_M4U2oQ>)@BQrXOW5@Ynz|qDw`et7I67W{KXKMJESoAAl#VYAn`!&q}l}!)p zOd0~uSacD@!1Bhan6PM<-!h?Vv@ zYoApMeYiak0P>Rldr+f)8}braeS$?qiL_s z*l&1tEZi6JyJNudd4}jgIyFD)bf1k8hS7|7Pc8EOLu^eKxLyH6pji{9e-2OpsxohQ z0`q)Z{bwzgYxrG!oNwr~d7J9o^tm8e2=6_vz*ye7&mF`h(g`D}4`%O$4NlLKY>50s zCL+uI!h2?PJPOaTTGuot#G>s=`sfnVp+d(l@>G9V=Em=UX?0XBr}O3v@eOfNx9;{Cx2<{+x6|bC|ZS z=7K)vWV}Rx)a~&KC7LeyhKq6L6Hnmq_BFT~%C8J*ULvsg>wi2tVkO2(M4A63kp~J6%xzcQ$OlD0t|Dbif~aBG^U3$E?m9rbKuJ6+tU zs+z9miE9{*U-t6z49VROPhIYd`a47?;J*vC%qMCZq`Xqf4_FG*IgDmso^DNAzN|ao zl-WJ!GObx~^8Bl_E57o~EW}vetH;R)vb!>LdOXv4vl8=1Z2zeEO?0zupG0nkID=mV z3fh3k{kYzIsxn_n@Z76gaY+%YX#ln2-qCsg^L?v#TgG7FT?kPJ`bAIH zOyg-?R9QcBy3kxq@G;ZY1QAb>zC_PB^h=k`zo{+SUveX--ZPCX|91fbWI0S{5-tHs zIv=D(N4SQ+AjD4&Gfr3Yq%PRxoqL&r_7W@U7Hb7ceh0*vVn2r{sv9*Xk{<7@Hq#_N zl}%ZSH$OmtcitFSkb4a*7~dguY~7gX4BW@OiBOQyTw-jFmnbc9!~0nuKD!qmT3G2N zDdxXyK@%GCSiG~3hG4_$Y2Eg;qwCtw_A$Oi%h#+L811$LrQZx~fFP*4qjk#Y45-yxRsEHlQ5J#u(97Ca zFKG|fM-{{0L@xvmc{73i)1|#U)4$&R)-k>f82oW;&;KnY({G@F_AIsYUvLdE`OmiR z;;_^EfOkNFST`cL!`pyZGXA~*t6I~pZ4*kX-r&5Ga-)}$7plk`Z#d?DpzoUr;O@ju zGwZ7IfZIeTiI=&^8APbfP|iZ zf|=eu5a-laxOhN&+!#H_W4*Z_?XwL}AjIdtdh+pI()2C4qc660sP6kvyj0t)#key_ zYKB$wqF5zw(6L<=llbev%H3KW%^(uN*lSSnsW?`H%Hydo-e!5axUAf^+M zhBVy(h^;oz)OronlTQy#g&FYc$u(rQ*V(3?s+WZf{kmdys0GOdEi0R=+YnWcxmx5g zC%cK~i=PGEzGHHi{JS6=dzAwY1$DP^0>o)-6bSAOf}Gheo(?8rJK)aD?h1s0S*()- z*MfqOD)*4#aUtO@ySbHO8hGml_Cq5#;wEb&di`x3HT4uI2gSOxg0CbZYYO+hrE2aT zj!TP|DzGtVfBCxf@2>x0i=>|iiq7qmL>Q3oICBs^25`t}h3^PvH&*`&#kp=n1B*c# z;s?@0O*}LY=n`sRA?*s>(>YW(KbMPG_dJ7OPa-KI}WgoAJw>7v=tcDS1E)yORfN zLV#8seb0++M$Imp36jA>O#!eWKZMTAMJ7Q|Uwh(RKm!U(e9?FOqM`&3JHY?gt z#nzsI8vQW`JX7}$GeCM6C3IQD?Ni=N1B+VnxwKPZbqaT%PhPnDLEC=97p!7(hgd$8$}^@8^Bv5@ zyCjRpQzM<WUb3<0>)mGe^&Pi-TP#Nl$Y;v7i% zPom(3CAa0L#ZeC|Z+?4%EXttV7L!gx-`~U(Fcd4Z8FiK|E(WgGr6WUTIyO0GsleBo2;R5u1uo z_$#VF8bf@pjJHiY{dkMESP^>_03nkT)TYm5pAER7!H$K3;tl$uH|--Tr0xQ?*8v(< zWeBp92%*&Gc8SubZBpEEoBPe-v};ZE=c`=|9;#bI_W1S0^)RZ(UH8B89!B$uoM9z% z??^6Fw`sX*;Nus@}Ewf7-k9 ze<;7VKMS+iw>0)`tjWF=B}5Go8bbIClhDG*TEt8SWp5DKBGV#bM3JrgLq<&{Nl~^z zqDVxc#B=ohzFyCt@ci=JKY97#%ynP)b*^)r_xpXF^Bc2@?DYfQDjcAd(hc9sndUki z1-R$lW!Wv8O)-%WU@waN_v@2+oCqN+KjiL52w5)5;KOg|K`gT zAZIg)7W)R*jxiUHBn)r!$Qq$dWhenE+1)U?x&1MoU=OIN%Hke4`!CFOA-z0%;|xzE zxQXB;&MU-|bbx$mE?&jCYmC|roFNt|$&%7*A`SdNE-)HR?`s0K+2(m9%E=)4X*}Fl1h3y%fKt)Q9{_&nabjcH1rH5&a>E$}=h>?u)n;Y}>{yyGawP9?8IqbSj622=$ z!;ki%Tq62*b=ra1dVLm6zo9>bZrhsr$;!fDKO+~R{)72__ZxK2i_d3xl1|9X{CXj{ z-i7lzvC|^$k$lDCi@lCBJ4ottP0EC@^JtHf3EdM>!@YwZA9nS;E8sKh!F~B&2KK6b z+|DaR-`a7`g!Vaj8rpVx`d)krl3&{9%Wh<#jEzqzPckkseq0|oI-BX?%~vhZ3TT)M z?CI3zo#?p$ft_I*dXM$@ze`R7H$-ZJtzce}xl{e*Ar+0*6wOho078*ulPrL!D|btH zbm6|7EfNhfa6)c?^x4m-+o$;48AU9eS3 zZMHzg1qv;sf>oWEUYXqQqynxY&Hp{jsJ29&lCc>HF+tcaAj;dC@xk9e&>X0$l>A`| z7d|E?_&M=jSPDuYMh}*?2-FMcK_&hLWk@@ZubVA!}re1H`N19Zx3UPqg{h zM{r+EB!?__G%wMLK=9qobbN(G$?%e7X6z!-HKpMPIg)I{t>EUx>A&(c#l%F*zNeN)!#=VKk$Qk7$3}NMrCrH%@NOs7ZeWrbUMETQHh^1SPlK0XvPj>phQXH%?Bzek_FNs!^(kVVk7K zQw`~}Nuqb0Y%tUCSXnCG@k1e~(eyT=lS}NR0f&7ZP{=TnFgfUHiP@$K!TuW9kxv#M z9=vilA|3uq+D0=25u%rz?0BF6Q}nNff0#6@PT%OGIS@M$YfUjZeGDdHR`5lD0L(jt z$MG|NHCdo;23veaK(M8M>-&O|JGl58ZAXTZu_+SZEDgm^gM0kx;cdHRY>!0o2pNJy zDs4S_m5e7)#h6^?vuiYG9!U$n^;bA)08L;E#xx2I6eu#KRl|4S^a?U~=R9DbWweRj zJDlt5ZjAj`H?A!?i1Up)OVhD?oh^u+ejII(n*1o+=H+fo%=;}TMu9`UQM)PSQT3l- z@@Pq;)Z`aJ7MK@+Sj-(bwu~LMC7#$pt;2YM$@CC;~1bG z!QQq{_x;Ho=jJ!I(SKgI0UEU-_<*0N+1*HN*FWkRtf%1gu4mMPu^Edd{hj3y`%B6p9a1U5)>gx=N z@_mt{RUH#=k||&V0#qvMxpV8hqHL!Up>S}#>9>gYe%bBOhy#WyXEC;XP^OkfYnPR2(2A$-HetioP=D3#R|=v5KqWog-H4_%?Zn_w`pj#zI2 zAaf8p?6z^|+!FGY`0mLd|0Q>}+YTw)H@>jaEwxz{SaFRs|IqS5L?fv~8CI4{Qhw8S zC+gJv^8cg)+TIts*R*6RWW)MX&(OaLwjTL*N(6CF8Ia1o@5ohnQd6jwGF?3GRq3~{ zn(|rJGnngJF?9B{e%_&5XV_)`m?49Jy5a@e!ftTUE6RtuL<_(0DedJpNRjMp-OdyB z)6DN8GxNn+qLQjTbNuh?O3^u?4mx+z#0W2OqSlMtgq*=(q za4$9%x#BX~F)abr(RV4Dqq=VEmUpJ%2|M3_2l2laqd}?(-^9*S$?~nX4@Ec4^1$`+J0CN>XwRi907;9M122w==jl& z8y^lh6#r{X_xBMV6RPu4h)L`f`*lmqX9WSdLA%>|{eKu!DnX(9SB!G92A0|Be(a^R zkarNsot|8Il3~TA5ulo&`%_*Iu?`Cs3&~!}VTYYUIvJyGGUZnHEExFtyStv%Q7Yf8R_k@4lrZkvv-IeK;`mjK2;Vg-i7M=*@K}XWM_qs}xj+ z(B+~6=FgwyA1@GBtx{j$@oSvx*wvo-13Pk2hpp1iSjLwA*+JllfP{0yOeW1W;|rPR zZs+eNuJX>2wMuHULU~ysdW32T|90gYBFa~w8>sy5WpV;H66}=ndcq+aww~uKtR;7S zrSo;WpzG_)Eb>psG6mMYOyA!h=;1vIh^x!)YV&wfE{KNvTkoT>_sNKQ#;U1b-aTR# znWg{|aX4~2?7FCAi}sb*1G_9K1`GOrZfh2!&BS7C+)06xbqZMVR}aN=In&1hZlO*3 zB=*lH5^4iKXQ)b1EYImJf$Wag^B;~TMRNnVVIBTh)o&reZzeD z>Dx&mxZQ8}gKmK&K=6)S7m>VD<8*4;qebk4#Xs0MD~t4{o3y2lQp_E(~GRyvA-t;Iz@MXE^{TWWvU0_K;@7MbQH3rZ7yBArz+Gf zm(RKSoLU92Ub$%a(MELn%QK#B!o`zAWdWa*CC0Ch-|m>zf#NjR=Xfz`wzcZo%JG;% z!K_QcNkv%xC_I6at7E5FDHJH?o_E(I`cRb=nVN__^W?49bK-_9ya8S-9yQTsuhEx) z5nyhVY_CV~!_yGY;m?s(FhkrqH4CePr&sQuNFa4_Rv65)F+4HSGreVf6 zyj8V+t?m2mmar4=JgoT}g({p;g6hTSb;SI_70$=w)-9fn9~g8YtpwfAKZKPe%4!zx zWoz;iH`dQum=^SYo;D{1O>JcSdB3?=rF_Pmzx?G|wcWMgK#|N$mkl4+wTkcWWt#eN z#Qj?nxXQG=D_iZGc88Nyr6(FTi!hY3z2yjh;j&iYAD8mjUx34krdh&GrILu!!XlFK z)&3GWk*B9(7ZVx2n-74lhTXo+AoLgKx^24h%BYeA5G!)z%lz<(ZxXmoM%ge=KxK>(FE{bKg6s0ilnPHXRV^S>nol2oC<&+a^3zKCJ5vZ zId6q=Cj?SoPeF-5mR(b#7q+`YBUe0uw-f}Z(L4fFzIRP{qO=!(B%ox!4(+q=dbBr% zz_<@kHm04oP~0g2aVgM(o|k?B6KF%Q@3Dm@*=4d)$o0`cgG!>4;l;w9o5S6=y?K^b z&M2yWQQ0cw@c|{EqRC+O?g~E2#aA=*Ma(!jyd}9$Hx4mpKlras^! zXZ99%@`KEb=fv!$LhtiNTJEJ$NCnjN93)6Z(m&)D4g;E1jf*5ZU)&AS57_lcREaOF z>r9P>fuy6D*Rd07VLQK-fV%b#hy_x1QQAUzHQjZIrJxMuytJvq8-LO6=+R8lW->1z z=k^bV=~SM}g5Q=&7&$~aNNu>tJE%M>w&V@TW`S+ z%qUz`q7>;bgmMGO&i3*u4JC~J;?OXwq|~WXB=fE1A}LyKpN^=T)TOIgig>s zSU1@H&4=JR3bH`IHor@6HzxP~BrD)ve|i+@=;_LuiF2scB0z2opo;wfkB?m5aSo*m z>;C1QU3eDzkO(>_vVr?wp2x;CJsH^4>K$vOxtgE`QLFtL%w$>QaHxRR9YdNqND{48 zw5;^whqtzj2mmZav(S{bAZdF+A2T4Ne zcIAvmB2A+>rge+NY9H=oA)*O3NvW%*OI_U{SI!z4a4ylAGtC62R*NR z?7HB%>?(^!k=kL%zKJQRo<3aoal#=Y2+{=nfcK8krAQ$0ZsOw!_td_PG)R zGFs}JoAi=8Thn4^z!4wk@k^OBw^Pa(u+oSh36;>Q^P^t{^|iHDH9xI3Ly2*OD$j;4 zLu+hBN3Ik16$o@KK#(vdjEeQvoFk6H#$sCXtj6Fnu6xZGj-qD&Ad07g^>fg$Xz z6;g*xZf7+f-L=Ta+AB$O>lw33kpeEOpq{}TKpoU7Z3hMMrQ>@$b~W+sd}7*J0%={( z#~#qwb>b?1+g7s>0k=>8mDrc8mJ_+UwM10I!$fz_W%fiZ@%cWIX;~+juxnR(`Mh4s zf_u{h_GutOg)B}^-Y&59S+j zpBy9#)!8Y%ox+`7(cJbr8cG6ef)=#F)*H>DlaJ3E@@?zygp!-~c`=9xkhMWik-0+; zaBH`NEj)+pzzLias9YX-E z=J7Y8UV*dfWB`_kXIS%w?Oi}`r6vaFuPm~}hkDBFwgJH4xv|#It76lwcm0%O!6~&a z2OWP4161K)(i<5ZfE>^8pFSZVK67V1ekO@ODfipTqCQ01*AfN>+Ui7Mj$i~{EY5Dq zH+2l%xhN%cnhHDnU%7=kl@bW}@mXxpLoNRpiB^ z_D3u`=1mD*3+2~8H{Z)_xm6X66hfOkk-N&t6ovkUMU~A z>$5Z|;Pk&54?5aodMb$c+r-i(i4iGinCCEqKW7abh zS&@wowg$0G=wrqSp0+pR@00Yhe{M+cLgz~-^`8xeC77Uq6S~NIzdTS`I7YrxnbB(- zw1-3u(*W0m4UOM$0nov71Pho_991UFGFoT~)38#Zsn8zKR?=-a={smU!0JVBq#esB z57~|!0qL<@Ycko8Qb%J%3j4jjGZxIiy8%TQ1ON6rd_jgw8WyZxZR4wUD$s6-EX&=4 z2CX@XM2xzhUyUz6>;MoMs$kN7y@QXM3U!?pVF|N#Ej$8&OWdks7!tPTz1uyoF(1q% z62~DIh(lLqF;7bqf)amKxEy@6qPCz55W{lF6=+n|cT6THa1oYWlO`lAR}6SUQyRns zzEVCEehQv|FBaD}o{+argWk~U*h>zv+fQcY}7YwwyoO183~H%4In&{Q;P9?KL-Q zV7iUqF9nt+Yv;mEV2s3HV~Djv;MQUNGKHEiMzPtr@nR;Zf2Y^M%g? zfcYNpT(E%PJ zcd$~u%)Z#)f!|WPGi(^ln7@XENjFZ0yKrNyi-Pi=+dwDj;qhaJLY3L_C;$a$4wRzg z0et8U11%MGt81CBOfxDX_VWBxEMA(;1X_B3AT9tBT0aenn4SVfZ{g+@3EzZ{yMF{} z(-}5et>UxvrM$xhwp5T$OyuZ>|K!8t(XAwW(h9uXq4x%qH|VziKSD1&fgsJd z%qyuTanaI{VI8dAaNhSC1+`pnr=0g?X%qc;;HGyh&(JrMF9%6j@+CJk#guh&>d|*8 z70u!SswE;#wAn7hSd746khiS5>4&r2c5y|ec!{|#Z6B1-WLExm$pMVjHvnZqxQgtv z&!gruuHFBx-TzEO?6txS!7Ox5zT<|<)DiT8B1@lTK{1|R1>2`BEjq!q&(}ClGf3p<3B72xsWnB1aGhCGfaVZASbjZLSj;7+6o0 z89)QhQOuNjT~g^MfJzuI&fh+p^+~mO>G!QGK-wbx*SM;-!v**P@l`pBpx&^D*ZfZI ze(Rz64BBtjpHcwF!lKk8u-UnmD==NqTX2H6$0)g9KuKHHN7kc|rMKun4u13v+j3z* zE#mwaw19~uK*Ij!4^FBJG(vYjzXXegXZgR@cf2m5rk~Gy72yQiYamGw6;O_d1pO$k zIwdD~1cwAc6N2lCn%~idR=Q;8fC%3c`)&#sWu0HP3)6Dp`V*5^419ncAo%bEDI-i% z_4hz`k~qnb+XyYQ#jD`-63a%|Ve-E|u9LoM5fM#;8qDEG$e0p}@9i&dF0+1zd3Id1 zyIGY%x%wj!B0^sD@We*MC&N;Y3kPQSB233G;rQpl4-}YheXVyF_`MwmJx$Pld23zJ zzKY6s?F zVtie9H)F>It*gEo)81o83Pb*#sKpbm4OCWi_Q-Oow_$e#KmSSjbHCA7(>ps%v@nzS`0q|+kvy`v=dDY;M|g;{{m?hi$-b3wsRKN?p`BwvWt{NqP2(v1L z_I0q4l@w6-F__Apm-OoD4g9(`&(f{;UyHLFoLUfD5GcR5L>ZH2;0b*(hKN(hs*Tfg zddHp_;1I2@Qs$u8LdA_A16g1*^jnBm5g$TBKp|CP`^l?azaFp}E;?*(TF$WZ?C8pG zxhBVt5TA4%a@6+0T3cL@$DJi;(yI-YMz0N7fkRCTM;yNICRm$g%U#}_k7X~# zj;Wq25{-LBehm&i-C!@RpHunl$=2K|Jz4lDRLRcu(?v#9(mj1fqX zpL;gFe)V|X$E9M+xED<>%Qmvn!mwxtOaMliTybFwjjM;t2FQvwnoBPIh-YU~Qpm=e>x^6Ql+l4f ze;;RS;IO}sh7vf#?(dT;LjCU{u=W_}KmUTM{_n{DKivPZ@8aP*Nw&GodU1tYABSM; Lw7 Date: Tue, 29 Apr 2025 22:04:17 -0400 Subject: [PATCH 33/39] credit Nico Family Fonts -emhuo --- src/menu/StartMenu.tscn | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/menu/StartMenu.tscn b/src/menu/StartMenu.tscn index 9f2e276..3fcf090 100644 --- a/src/menu/StartMenu.tscn +++ b/src/menu/StartMenu.tscn @@ -1190,7 +1190,7 @@ custom_fonts/font = SubResource( 23 ) text = " Made with Godot Engine -Fonts: NicoPaint -emhuo +Fonts: Nico Family -emhuo QuinqueFive -GGBotNet Expression Pro -somepx Thaleah Fat -Rick Hoppmann From 9a2b12ca622f32e31b01ef07d2e1308894fb8c80 Mon Sep 17 00:00:00 2001 From: Cassidy James Blaede Date: Wed, 30 Apr 2025 15:07:00 -0600 Subject: [PATCH 34/39] MetaInfo: Add 2025.04.29 release notes Needed for Flathub --- linux/net.hhoney.tinycrate.releases.xml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/linux/net.hhoney.tinycrate.releases.xml b/linux/net.hhoney.tinycrate.releases.xml index f82226b..6927f2f 100644 --- a/linux/net.hhoney.tinycrate.releases.xml +++ b/linux/net.hhoney.tinycrate.releases.xml @@ -1,4 +1,9 @@ + + +

    Updated logo and URLs

    +
    +
      From 5c941634694a8e3a71ed668f7540aad81d9b05e4 Mon Sep 17 00:00:00 2001 From: Harmony Honey Monroe Date: Thu, 26 Jun 2025 23:12:21 -0400 Subject: [PATCH 35/39] update screenshots --- media/image/screens/1.png | Bin 8733 -> 8355 bytes media/image/screens/10.png | Bin 8302 -> 8687 bytes media/image/screens/9.png | Bin 8757 -> 9246 bytes 3 files changed, 0 insertions(+), 0 deletions(-) diff --git a/media/image/screens/1.png b/media/image/screens/1.png index 1287c380071eaf711d63bb9cf29c28c3c973ba52..c34e0f50f34e0b19f38c493a47b7b4c6071bd621 100644 GIT binary patch literal 8355 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 literal 8733 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 diff --git a/media/image/screens/10.png b/media/image/screens/10.png index 705eb7e32b5af17436e6c14078875b9370b8c6ee..d7e1d349d95ff8f693f3053448c2dfea538048ed 100644 GIT binary patch literal 8687 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

      Sg?`nj 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 Zg1_$FmD_$4UIf_w#~oW+x9tD({{a7Yj_&{f literal 8302 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 diff --git a/media/image/screens/9.png b/media/image/screens/9.png index b2df8f90516c5003eb1e6921359ec10023895460..7edf1c8d75be79abbdfa4108931859a080541dfd 100644 GIT binary patch literal 9246 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 Q6^H|09Nt_1`HAoT2Vu^g$p8QV From 143b1efce5ddd09771644bf85298f0f67b1dc456 Mon Sep 17 00:00:00 2001 From: Harmony Honey Monroe Date: Thu, 26 Jun 2025 23:22:37 -0400 Subject: [PATCH 36/39] steam screenshots --- media/image/screens/5.png | Bin 12339 -> 12708 bytes media/image/screens/steam/.gdignore | 0 media/image/screens/steam/1.png | Bin 0 -> 28281 bytes media/image/screens/steam/10.png | Bin 0 -> 28636 bytes media/image/screens/steam/2.png | Bin 0 -> 25424 bytes media/image/screens/steam/3.png | Bin 0 -> 25360 bytes media/image/screens/steam/4.png | Bin 0 -> 26965 bytes media/image/screens/steam/5.png | Bin 0 -> 34636 bytes media/image/screens/steam/6.png | Bin 0 -> 27823 bytes media/image/screens/steam/7.png | Bin 0 -> 30448 bytes media/image/screens/steam/8.png | Bin 0 -> 28126 bytes media/image/screens/steam/9.png | Bin 0 -> 29099 bytes 12 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 media/image/screens/steam/.gdignore create mode 100644 media/image/screens/steam/1.png create mode 100644 media/image/screens/steam/10.png create mode 100644 media/image/screens/steam/2.png create mode 100644 media/image/screens/steam/3.png create mode 100644 media/image/screens/steam/4.png create mode 100644 media/image/screens/steam/5.png create mode 100644 media/image/screens/steam/6.png create mode 100644 media/image/screens/steam/7.png create mode 100644 media/image/screens/steam/8.png create mode 100644 media/image/screens/steam/9.png diff --git a/media/image/screens/5.png b/media/image/screens/5.png index d01d8cae8ec3150e95f9c010ecc6e322ab329fd7..d5c2d12f752c99c9d2a3585f88964304f23a1875 100644 GIT binary patch literal 12708 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 F{{g#YH(vk% diff --git a/media/image/screens/steam/.gdignore b/media/image/screens/steam/.gdignore new file mode 100644 index 0000000..e69de29 diff --git a/media/image/screens/steam/1.png b/media/image/screens/steam/1.png new file mode 100644 index 0000000000000000000000000000000000000000..ecf39e084d23277196488cb63c0fe0917d0870ca GIT binary patch literal 28281 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 literal 0 HcmV?d00001 diff --git a/media/image/screens/steam/10.png b/media/image/screens/steam/10.png new file mode 100644 index 0000000000000000000000000000000000000000..41c06e0b04f06bbd44ae1e76476bbbaadb3a7f5d GIT binary patch literal 28636 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 literal 0 HcmV?d00001 diff --git a/media/image/screens/steam/3.png b/media/image/screens/steam/3.png new file mode 100644 index 0000000000000000000000000000000000000000..fe8e62b630691c05d29471cd7b8f84ae80eca2b2 GIT binary patch literal 25360 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 M`PyY=OQQGx7Zb@3t^fc4 literal 0 HcmV?d00001 diff --git a/media/image/screens/steam/4.png b/media/image/screens/steam/4.png new file mode 100644 index 0000000000000000000000000000000000000000..00dd9e35aeb606c4b59c7fe39d0cc81a8b17e732 GIT binary patch literal 26965 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 In-Pcp2WZ_yc>n+a literal 0 HcmV?d00001 diff --git a/media/image/screens/steam/5.png b/media/image/screens/steam/5.png new file mode 100644 index 0000000000000000000000000000000000000000..13bf872c542f13f081d02645d871d9ffa1380c60 GIT binary patch literal 34636 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

      o@5d)}h?uD@M5R*8SF+M2W=;9RYnue_N#g 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 Xclxw{UH6&Ehu5xI|553OJHGf|s4rqa literal 0 HcmV?d00001 diff --git a/media/image/screens/steam/8.png b/media/image/screens/steam/8.png new file mode 100644 index 0000000000000000000000000000000000000000..db01f8e5e8de2125fba8c4a312fe306a2c8ee4f2 GIT binary patch literal 28126 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 literal 0 HcmV?d00001 diff --git a/media/image/screens/steam/9.png b/media/image/screens/steam/9.png new file mode 100644 index 0000000000000000000000000000000000000000..ade1085c647fe74fcfadfaa867a6012e643ffcbe GIT binary patch literal 29099 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 Date: Thu, 17 Jul 2025 02:23:03 -0400 Subject: [PATCH 37/39] Add files via upload --- .github/FUNDING.yml | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 .github/FUNDING.yml diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml new file mode 100644 index 0000000..ddba7d3 --- /dev/null +++ b/.github/FUNDING.yml @@ -0,0 +1,18 @@ +github: HarmonyHoney +ko_fi: hhoney +custom: + - https://harmonymonroe.itch.io/ + - https://store.steampowered.com/developer/HarmonyMonroe + - https://www.youtube.com/@hhoney7 + +# Unused by keeping here as a reminder +patreon: # Replace with a single Patreon username +open_collective: # Replace with a single Open Collective username +tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel +community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry +liberapay: # Replace with a single Liberapay username +issuehunt: # Replace with a single IssueHunt username +lfx_crowdfunding: # Replace with a single LFX Crowdfunding project-name e.g., cloud-foundry +polar: # Replace with a single Polar username +buy_me_a_coffee: # Replace with a single Buy Me a Coffee username +thanks_dev: # Replace with a single thanks.dev username From db7aa7786a29d50ddfd4cb95a339ffab7b172906 Mon Sep 17 00:00:00 2001 From: Harmony Honey Monroe <36719038+HarmonyHoney@users.noreply.github.com> Date: Thu, 17 Jul 2025 02:42:31 -0400 Subject: [PATCH 38/39] Update readme.md --- readme.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/readme.md b/readme.md index 58408d1..b41a442 100644 --- a/readme.md +++ b/readme.md @@ -3,7 +3,7 @@ Made with Godot 3.6 Precision Puzzle Platformer Game -Full Game at [hhoneysoftware.itch.io/tinycrate](https://hhoneysoftware.itch.io/tinycrate) ! (: +Full Game at [harmonymonroe.itch.io/tinycrate](https://harmonymonroe.itch.io/tinycrate) ! (: ## License This is free and unencumbered software! See [UNLICENSE](UNLICENSE) for more information. From df06f2286ac3d5f3a71a07056eafef71992f0276 Mon Sep 17 00:00:00 2001 From: Harmony Honey Monroe <36719038+HarmonyHoney@users.noreply.github.com> Date: Thu, 17 Jul 2025 02:42:59 -0400 Subject: [PATCH 39/39] Update readme.md --- readme.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/readme.md b/readme.md index b41a442..e57328d 100644 --- a/readme.md +++ b/readme.md @@ -3,7 +3,7 @@ Made with Godot 3.6 Precision Puzzle Platformer Game -Full Game at [harmonymonroe.itch.io/tinycrate](https://harmonymonroe.itch.io/tinycrate) ! (: +Play on itch.io [harmonymonroe.itch.io/tinycrate](https://harmonymonroe.itch.io/tinycrate) ! (: ## License This is free and unencumbered software! See [UNLICENSE](UNLICENSE) for more information.