From 735ce9f8b16dfcf816e63acd0aac7b5c5ecb35ad Mon Sep 17 00:00:00 2001 From: Kayne Ruse Date: Sun, 7 Jul 2024 12:33:46 +1000 Subject: [PATCH] Initial isometric testing --- Scenes/node_2d.tscn | 50 +++++++++++++++++++++++++++++++++ Scripts/Ground.gd | 42 +++++++++++++++++++++++++++ Sprites/iso_tileset.png | Bin 0 -> 9740 bytes Sprites/iso_tileset.png.import | 34 ++++++++++++++++++++++ project.godot | 1 + 5 files changed, 127 insertions(+) create mode 100644 Scenes/node_2d.tscn create mode 100644 Scripts/Ground.gd create mode 100644 Sprites/iso_tileset.png create mode 100644 Sprites/iso_tileset.png.import diff --git a/Scenes/node_2d.tscn b/Scenes/node_2d.tscn new file mode 100644 index 0000000..098b828 --- /dev/null +++ b/Scenes/node_2d.tscn @@ -0,0 +1,50 @@ +[gd_scene load_steps=5 format=3 uid="uid://m70jvfin8k5p"] + +[ext_resource type="Texture2D" uid="uid://coywpm8aqsltx" path="res://Sprites/iso_tileset.png" id="1_glwto"] +[ext_resource type="Script" path="res://Scripts/Ground.gd" id="2_s3ob6"] + +[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_pt4t4"] +texture = ExtResource("1_glwto") +texture_region_size = Vector2i(32, 32) +0:0/0 = 0 +0:0/0/texture_origin = Vector2i(0, -8) +1:0/0 = 0 +1:0/0/texture_origin = Vector2i(0, -8) +2:0/0 = 0 +2:0/0/texture_origin = Vector2i(0, -8) +3:0/0 = 0 +3:0/0/texture_origin = Vector2i(0, -8) +4:0/0 = 0 +4:0/0/texture_origin = Vector2i(0, -8) +5:0/0 = 0 +5:0/0/texture_origin = Vector2i(0, -8) +6:0/0 = 0 +6:0/0/texture_origin = Vector2i(0, -8) + +[sub_resource type="TileSet" id="TileSet_08ndw"] +tile_shape = 1 +tile_layout = 5 +tile_offset_axis = 1 +tile_size = Vector2i(32, 16) +sources/0 = SubResource("TileSetAtlasSource_pt4t4") + +[node name="Node2D" type="Node2D"] + +[node name="TileMap" type="TileMap" parent="."] +y_sort_enabled = true +tile_set = SubResource("TileSet_08ndw") +format = 2 +layer_0/name = "layer0" +layer_0/y_sort_enabled = true +layer_0/tile_data = PackedInt32Array(5, 131072, 0, 6, 131072, 0, 65542, 131072, 0, 65543, 131072, 0, 131080, 131072, 0, 65544, 131072, 0, 65545, 131072, 0, 65546, 131072, 0, 65547, 131072, 0, 65548, 131072, 0, 65549, 131072, 0, 65550, 131072, 0, 131086, 131072, 0, 14, 131072, 0, 13, 131072, 0, -65523, 131072, 0, -65524, 0, 0, -65525, 0, 0, 11, 0, 0, 10, 0, 0, 7, 131072, 0, 8, 131072, 0, 9, 131072, 0, 12, 0, 0, -65527, 131072, 0, -65528, 131072, 0, -65530, 131072, 0, -65529, 131072, 0, -131062, 0, 0, -131061, 131072, 0, -131060, 131072, 0, -131063, 0, 0, -131064, 131072, 0, -131065, 131072, 0, -131066, 131072, 0, -196601, 131072, 0, -262137, 131072, 0, -262136, 131072, 0, -196600, 131072, 0, -196599, 131072, 0, -196598, 131072, 0, -262133, 131072, 0, -196597, 131072, 0, -262135, 131072, 0, -262132, 131072, 0, -196596, 131072, 0, -262134, 131072, 0, -65526, 0, 0, 393227, 131072, 0, 458763, 131072, 0, 458764, 131072, 0, 524300, 131072, 0, 524301, 131072, 0, 524302, 131072, 0, 589839, 131072, 0, 589840, 131072, 0, 524303, 131072, 0, 458766, 131072, 0, 458765, 131072, 0, 393228, 131072, 0, 393226, 131072, 0, 458762, 131072, 0, 524298, 131072, 0, 589834, 131072, 0, 655371, 131072, 0, 655372, 131072, 0, 655373, 131072, 0, 655374, 131072, 0, 655375, 131072, 0, 589838, 131072, 0, 589835, 131072, 0, 720908, 131072, 0, 720909, 131072, 0, 589837, 131072, 0, 589836, 131072, 0, 524299, 131072, 0, 327691, 327680, 0, 262155, 327680, 0, 196619, 327680, 0, 131083, 327680, 0) +layer_1/name = "layer1" +layer_1/y_sort_enabled = true +layer_1/y_sort_origin = 1 +layer_1/z_index = 1 +layer_1/tile_data = PackedInt32Array(-131065, 65536, 0) +layer_2/name = "layer2" +layer_2/y_sort_enabled = true +layer_2/y_sort_origin = 2 +layer_2/z_index = 2 +layer_2/tile_data = PackedInt32Array(-196602, 393216, 0) +script = ExtResource("2_s3ob6") diff --git a/Scripts/Ground.gd b/Scripts/Ground.gd new file mode 100644 index 0000000..7336837 --- /dev/null +++ b/Scripts/Ground.gd @@ -0,0 +1,42 @@ +# https://youtu.be/dclc8w6JW7Y?si=QSu2dwSILyatO_oa + +extends TileMap + +const source_atlas_blue_pos = Vector2i(0, 0) +const source_atlas_red_pos = Vector2i(1, 0) +const source_atlas_green_pos = Vector2i(2, 0) +const source_atlas_orange_pos = Vector2i(6, 0) + +const source_atlas = 0 + +#used by the "procgen" +const source_atlas_array = [ + source_atlas_blue_pos, + source_atlas_green_pos, + source_atlas_green_pos, # duplicate entry to tweak the generator +] + +enum Layers { + layer0 = 0, + layer1 = 1, + layer2 = 2, +} + +func _ready() -> void: + #for "procgen" + var rng: RandomNumberGenerator = RandomNumberGenerator.new() + rng.randomize() + + for i in range(10): + for j in range(10): + var rand_tile = rng.randf_range(0, source_atlas_array.size()) + set_cell(Layers.layer0, Vector2i(i + 30, j + 0), source_atlas, source_atlas_array[rand_tile], 0) + +func _input(event) -> void: + if event is InputEventMouseButton: + if event.button_index == MOUSE_BUTTON_LEFT && event.is_pressed(): + var clicked_pos = local_to_map(to_local(event.position)) + + #place a "house" prefab + set_cell(Layers.layer1, Vector2i(clicked_pos.x - 1, clicked_pos.y - 1), source_atlas, source_atlas_red_pos, 0) + set_cell(Layers.layer2, Vector2i(clicked_pos.x - 2, clicked_pos.y - 2), source_atlas, source_atlas_orange_pos, 0) diff --git a/Sprites/iso_tileset.png b/Sprites/iso_tileset.png new file mode 100644 index 0000000000000000000000000000000000000000..9901cf009a2d97067bf4205b2bd34ec7f3d9d99d GIT binary patch literal 9740 zcmeHrc|6qJ`}f$T>`O^9jV0R{#t4(KWXX~>3facYU@SAt3)#B zDwHhQi4uv(uJ{f4-go!&+|T#-d|%J=`|loxbFTBg-sgPY*L9uG=W`;B49+t%9cKan z0L(ht8YTb$6{QJKWu&M4U9~Q31OV8&d`-~eot;x*(E9UX2!{eGc~=MX}T8>ClKq{)jdA- z#jmDgX)T;@cGKT3V8_lMpVYoir6RGVd_T9F=EHg$(jRZSyxuV`JaqcOd(RgF>gMC$ z7uUb1(l>_e-q$4H5jr0oJB@QC7SG3;y%=5#9ZT*jb6IP6Yr7-hZ_xQbEc2%BwBsr_ z&u%GZ`Rp}+hX8r9?IwB|p)8SSsi-m8urs|X5b*O}a(HH5fZmQ_^46jm{K@s543iy` z?42*`D?ufT1Cyk z@chjan_IYuOVYUI)~MA-?mBn- zsr7>IH|H0b&DkWJBt^Kz+5E)8t6ah}K(T}uYC$4;j*lN2r}SEmNkRuq;Lnjv zz6GCBRKlswF}>Ag)x3WrMW@2qZ6&T(jkWWVrCZ6Wh#SnUGIfEozn*lyS4^`AHVcAk zV8V>G_}x}cp^orhtmI*<5&M2$-E3w$JMpYx>D>(J0*u6^5)1hXq%-kj`OBi>l1B86 zJeP$huN-2%#~-%$BMjkHJ%t5#{HJ5?Ioeo$O}T=v|M`;t^0PZlMQh+M<4<-%i}LV& z%f(5VqD@6@#tE5Mgu)X)$=$QB6=9OH2{Jv`WmBnOQZgtpBNu)9R#b`w`um6ZY3_T$ ztGOe%EwlRZWS8uf-3z1Cp)YnLU(!KFRg7z!N`}XahwjFGepwtJmwj4}CqM2T7}s{m z(xPLIt=VP)dx>lrB>uv zP&p)0!joKVpiNvvtV`Z86*+7Al(Y1PXdXrp%vVD@d;5j3gyU$RBl2c)-mH@2;(hs% z1cUkQ2L#_0Jy2+qjhyw3K~si%ey*kKR^%>2lMrDMxC!J}~}g;A~2mfRI&pfvapcqbjFggQwf9 z4W}~%FI4qR z-)XIZuO06@dQ@kC-7c*SeoYE$o+7_3M&fp@>Edl!ytl#~SV;`On|G?^6N=#jb zEp`Z6d(}4JWWqZ(exash<;DUA&Y}zY&U%)MkDg(}IXHCjU$p!iq=EA*x|)Ppfrgh! z;K?+TP?zlJA?M1M>^MPua9Uh~dc3=DlO(m!7OD0P8z-8o5uK}tI;J)5 zy&_56Ph?TA2EV)8bLlI_x0$^{Z3yk8P!=7S(G!2mjxTiWRAjmdm3D_!N)Mxx@rvV} zQG8BsbnQ+|l-q6PH>(8Tm|EzIxi6ctb9{Z~TVEp^SM*e8eWKrPyBrU?bV+<-SuAIW zP6;${LNegQ$MM7mRVTnq<>Hl*?}Ja==X|4(m%>;K$Pl zeqN=eOH`j0K_?!u30V|XW4p5s6WWs{{(W^92lMN*#cWHzwwZz> zwdMdp)-%ji3JopsX9l?9JqBrZQ1kvzS5qDXgk%dfoPfA+1Kt?%P%e}Mh`FqWCrs9NlG92z=l2bCygwi`KboG_6pf7w;l8PWRz1m}&7 zEgGQ?Lqqzg+9$c%!CEcB4XvwRk1ZLIM>=!o0I=aR1X|d<5~rGk)!gINEAcH@cnR}^LhWR={*s-=Thw8=jyu%guc|PGLx{nZ|crlQ>$wlOO_|~~) zC`-Y!o3E>K*3Hcx6?UDz4!abV4C~_-aW}HN&KRrt?Aue3qZ6KLe%|3`heS+f7}J@{ zuN4?n^E`H3hH<=pp<><|e)o(``H)9>rZxvW>5v)UbFmYH@J5os#pb@~r&4b+gp6wn z5W&%`Z`NuyKHL4c_@o9Leps-B+3IyXbsl_Kr>e59BH#QZ=g7qEMuU;?;7R4FVWRAU z5LeQ`*@dIAD?iaI2JGxH*UE~eQbE@|*e$zi@1%l=d zf?HvsUi?fzl&0|-55!+qwIF9^D2}V_$N`ejA8nt~tgh;j$hGUD4__m@M{4s)fe zir98++!IWXYmcVGc4`kSOw(m=#J0C28JQLK&4d-cO&bOc#>(?MIh+bp^7M?-St_ut zt9LpRmN=P}YLrJz{V)~jr>9e|r>>xRUX>^kK)`oRxx4rb*3ntijl7K?nc||&+$N`V z1Mfs}xDGO>x-1Vk%%y)yp1KktX8_a(t2byMe9L>~H*zaVc=TZ|$`oZ1t9OO{@s&3?7U31sLaO z-}!iP=7+`3xt#jimXE75@am&`y`y3{>+yMvo^P-|G0@Si!(td@l_p z>z!r%=Go8AelG@U^K*;_KJbZ%o@ZWZ=2a()z4@_a=ly$YYfTHvaaO14{WfEToWH6P z6j9-7HUrl=)FrbNsiQtcH1NgJJb=Cozec)gUa(P}a`bMx%u?P5`x~JG)2~UH%pEYl zm$ohWn?NSDT`NAVyn7|sSBj%|&KUz*hy`ha-UZM3Wo%j-5?m@&OVXHhCjgq>uI_O= z_20-eLDt__yJ^j?CL4yz;79bGV7W|)$jEZ;If6k8GqvM=?JAz$!pbI_AP+L^!+77z z7e20B{e?Qp8)IxXhL3W4o~qJ*?aAL3z7jty)wR)k+ioYbT0 zeox?o8ZlwqUB>slf@9!h+x^YzZ{My_bLGjjzjn^%Pw1@l{E^FgeSwOGBiDCkqGo|v zh)4BjvfWkAHzW6NPa15iI>Q+3m1|J8(l(tpE_!$bK!UlGTr!I)yyQcVB@3uW^w6!7 zrH`+9WZ=Vtm*@rt76rw_IAQH1qqHOEin}+3px?ApTsO+*^U|NVJmqVDs&(gIYn64lj*MNoD_np>j&O>|; z>n-)A#$UCG2A*#eKJ`irhd=RYSX33-fUa?NGTxn{;;b91?n-;BKN~*HRK%vl;4u2!^&zGncIi>(|MbS#}D3 za0$6@Pi=&(wV2CJiz-X~{EU*8>~^uecA;UZtTfJAdG1~NtssNaIFCU()n+;y#~<@G z?H6HonHl#k-+A0S2Q6Y+>M1D3(A0g2;(j0KV$X}9fA@s#K10o!M-JE9>7Ea)FdN&| zsnuwMjt^qDk)Kanj)#IQj|#QI!FC@^xRoYu6tK$OjM*x{oLRYE;kTW^b^k#qp>3wW z-uR)5xNpdyDX>_w1><<)_T$0UZzr8g1&kR|&q-f6)sr?NYHoBG6RtuRPX7UwjSX(J z5!NGfh2Kb6ZAlveJ-oHD-aBt`xb5V`Mp8V%U-t!3fkBj}zrfBSIQsRZ?^ell&Fj|O z~PUK8Ss*)f~ zy|WfCp1j3=Ja1G$y&k~jX@PI5d}ntnX8g13%?kN13K9FOM{a-PR) zhwzXerYwltT1eDo@(MNH9MDs6N;NLHppv7>{%CD9@b)FzlT@v@h)FZl5?2d`Yv9Ri zOOqH~X-+(6lvF-ek7=hP={iCk2xYFl8+^$y@qz)$&O~LJd45gBtN{!UpEC#*->e+Pl7oj#l z{0+{-(S6IKcVq5roIb^xrZ+*I!krd&>#pc26LnGE0fgGZ#J1)}`{&`pzMtA*zPujp zoE<_!eD6Nq>>N(d)>sT#Q}lUM{?3+})6Xs}O=vtzH%lxn_!Ej}R`Gk&$&rPsh!eq! z*1|xs4a-sou9v)xe4jb0PPr_ff0NZQnLM|3kLv~BPwFAOA=*Xx0~=|IvKPx8^<1D@ z(raAO0#oZg{b|<~=SD?$Wpyei2rsX8#AoR7vB2@LT{ouC8$~b9^02U6WvqVX@NLwu zd_wnusCb<-E5~#IcleD?XBv_MY<=5=D-hd-1n<^D&}6n zB7dOS;w!0&3*%u6h-B8XbLEW#j0IjNIto>eaAqCLZ!x>@RDOGmr7y&wx)@SgQto)q zu#SJ3`mOwR+nxIsV-F)X#u&z3Eo>X2dqihuM?VFW?WX#NZ{TeeEK*%YS=a{u{i~-;x$_7 zb_FOIJ<&4B70?>tHC<{RNs3%1Kf2pbEK2o?z#OyntYMH|;F>sL&~pv|U^T^34pGeY zFThcFHz_0-x#Ea$G6J;E3#YXA%n%T8A3}0LfXwxc zfa-Vx1_+aaNlAk>$yhHaNSO(!L_j;hO*FI)C@4Jy$caR9heIIV-riE)vQl`0BSc0~ zQ4t~yg+QTT3Ia^@!I6+;Fpem=NAZh814Bd+D8ga!IN%;9(jM@o~)W= zit%8Az5YHuk%WfmP&zQm^-us1sI;^KSQ-k3Dnfqur;O_B|KW`z9;iss6GBG1Lu90+ zA#QGe@gR~kz5blw*WXAkHVti`%R1j8Y*)}#sMrRFCz7tOL=qB*!t7B|$fd9p9wZ6_LpsPQg6$Pi@?e-8R2r;s26+Z7 zDYsD$2=#9bj?_U>KzXR*>H7D#}Zr zfuikE6u>^!p0IE=BOL??Dkc4=#mE&&a=;VZDD{HHq4D0tKZi`QZkUTCGGM0#P+`yrs{_-hE|gv2>wDEs6=k^IY! z{hNH1gFzi+p-6i$T25LT3`5B%fRPIJieLpfjDvzK1}P)wp!ipIBHn@IjU-^y94S>q zi8G~!_Tvl`JxDXLzv8`}Fnc*94TXWFWhlRAypM$@1F`gtF#eHp-2Oa-W0zaicrPlD$IuAN(9--~ZqY z6zYE_`H%GdN3MV5`i~U&kHG(A*FSRoM+*E$;D55~|C?M)f4(YXaFpjhZ_0~sCc-6x z@)AvNuXkPpu)Ft@)liT~u^e*OwjcrkQi6M5DsrBR7sbdx($Uvs_)JB0RGdGb&*?73 z#7ojNC#mDz_Fk3%2T$ujZ!F0Pxc6v(If&&b06^QVqoHO>9{PGm#b890D;(kU=p2_- zAm6;4Q-V_}J(Cbl?KwDJ^rlEvf>UkVSm0r!tO$@nLJX$c0k%8F=a;gWXq3c$D;2YO zZSDP-yn{<={fWEVi$6COuMpkpqKpE@wp9EB(tDfWb( z!gyd3q()Lr)7$FO*0!W_sNuflX~gqg6=Odzou>_@j%V^OWy}rEl%Ou0n2Ayq->3y0 znBo{Y=(4zfn6o?4sa&G9Y>DFzy7UdDd0-M?r}Y=8D=p@@n#m|R)UqDgoWoCPj@X&{ zP3_W+_V=+g8q!vmdVR~&bQi5TbyL^hMG2g)+Np0U^VbJ$rC zYsOg4Ph08*dUQ?=yqb)#aycYjI=KFGjJ>ukVf>ivX5}XeYI|uKqW~JPq<(+9B50Lv z{Nwy&L!oT&-=6Tf2}^m(D~y z*d*w{lqRuJ5(y-;OPkU5=tY>aYeP<%XaXCqYjX#!aDWbslEND$5x^}eRc+d#qwMOS zH;oa;ID*zRTjLq4AfPaftZVEtLcw|T0ka_OM&{2^&HMvx+(BncZ%9ykTcsNT9vwQQ z&3Bo0K_S;8X`9t;V!*I|j+OleP16;8v5E$a<;T(&%xZW<8`b=Fe*tL zq9$$JX^6$7z`)gdm9JeV$HK3WZ@-5>>QZR!1^|RA3Ysa2RjI@@FGcl$HkYPI4nhsk zh-d%t?YOl_xgN7Jbs*$a@QCA%o@V*Vgdjk{iCz2J9K?*agjRs6SuINS%T(hj_9~vM zv;YR-V9U(!-kKA!HT2Yh`I^#~LsQpW2^qh3pbTS{Yb zu0Th(Lub}`L$ARuZ$~s%`BO=(Gh_<~8(lOyTe|n}&E#rk_dBlMSW5Eua`n=i=+WvO z_IG2Kd}RFMB_Hi6_S|Z^R30_wEAEsy|Jjs8Yz%?SeZ#ZNq#194L`RS1n$qU+g-`-a zLdBb~C*h7z0^T1C0S8~Q3@OP8VH2aCEos?{vYdGlV{Q$-9wpZOc7-4(#6}*-srs~C zA!C(119PORAMp((!hbedz#9}4c;ne3^Ki&TmGIgchD^Td(+red>;K`i0slc|ovQy- T_UzA3do((l1{$U3?1KLb