From 07b364f11db841268baccf3ca2fa900177ac24d8 Mon Sep 17 00:00:00 2001 From: AleaJactaEst Date: Tue, 29 Jun 2021 00:33:56 +0200 Subject: [PATCH] adding panel to create creature, adding model arche & isodor --- assets/creatures/arche/MatArcheBleue.material | Bin 0 -> 756 bytes assets/creatures/arche/MatArcheCyan.material | Bin 0 -> 750 bytes assets/creatures/arche/MatArcheJaune.material | Bin 0 -> 757 bytes assets/creatures/arche/MatArcheRose.material | Bin 0 -> 753 bytes assets/creatures/arche/MatArcheRouge.material | Bin 0 -> 756 bytes assets/creatures/arche/MatArcheVert.material | Bin 0 -> 754 bytes assets/creatures/arche/arche.glb | Bin 0 -> 164280 bytes assets/creatures/arche/arche.gltf | 1933 +++++++++++++++++ assets/creatures/arche/arche.tscn | 5 + .../creatures/isidor/IsidorMatCorps.material | Bin 0 -> 773 bytes .../creatures/isidor/IsidorMatHalo.material | Bin 0 -> 1832 bytes .../isidor/IsidorMatPropulsion.material | Bin 0 -> 1676 bytes .../creatures/isidor/IsidorMatRoue.material | Bin 0 -> 1652 bytes assets/creatures/isidor/isidor.gltf | 1159 ++++++++++ assets/creatures/isidor/isidor.tscn | 8 + .../Login-Khanat-sound-button-empty.png | Bin 0 -> 1838 bytes assets/interfaces/creature_creation.png | Bin 0 -> 50705 bytes .../creatures_creation/Material.material | Bin 0 -> 754 bytes .../creatures_creation/creature_creation.png | Bin 0 -> 28177 bytes .../interfaces/creatures_creation/root.gltf | 147 ++ assets/interfaces/next.png | Bin 0 -> 1092 bytes assets/interfaces/previous.png | Bin 0 -> 1088 bytes assets/interfaces/rollback.png | Bin 0 -> 1046 bytes .../themes/khanat_create_creature.theme | Bin 0 -> 2755 bytes locale/en.po | 18 + locale/fr.po | 18 + locale/messages.mo | Bin 2903 -> 3190 bytes locale/messages.pot | 16 + project.godot | 60 +- ressources/scripts/config/config.gd | 5 +- ressources/scripts/creatures/creature.gd | 28 + ressources/scripts/creatures/creature_old.gd | 4 +- ressources/scripts/creatures/ra.gd | 17 +- ressources/scripts/datas/cloth.gd | 34 + ressources/scripts/datas/creature.gd | 41 + ressources/scripts/datas/data.gd | 333 +-- ressources/scripts/datas/equipment.gd | 36 + ressources/scripts/datas/human.gd | 58 + ressources/scripts/datas/item.gd | 33 + ressources/scripts/datas/pickup_item.gd | 19 + ressources/scripts/datas/proxy_data.gd | 52 + ressources/scripts/global.gd | 9 +- .../json_beautifier/json_beautifier.gd | 174 +- ressources/themes/creature_creation.tres | 520 +++++ ressources/themes/khanat_theme.theme | Bin 2751 -> 0 bytes scenes/creature_creation/arche.tscn | 8 + scenes/creature_creation/creature.gd | 35 + scenes/creature_creation/creature.tscn | 7 + scenes/creature_creation/creature_creation.gd | 125 ++ .../creature_creation/creature_creation.tscn | 26 + .../creature_creation_menu.gd | 166 ++ .../creature_creation_menu.tscn | 286 +++ scenes/creature_creation/isidor.tscn | 8 + scenes/creature_creation/property_box.gd | 9 + scenes/creature_creation/property_box.tscn | 31 + scenes/creature_creation/property_label.tscn | 22 + scenes/creatures/creature.gd | 47 +- scenes/creatures/creature_creation_menu.gd | 1 + scenes/creatures/creature_creation_menu.tscn | 625 +++--- scenes/creatures/creatures_creation.gd | 13 +- scenes/creatures/creatures_creation.tscn | 1 + scenes/creatures/human/human_male.tscn | 2 +- scenes/creatures/human/mh_human_female.tscn | 36 +- scenes/creatures/human/mh_human_male.gd | 2 +- scenes/decors/vegets/grass/grass_01.res | Bin 369 -> 368 bytes scenes/game/game.tscn | 5 +- scenes/game/generate_map.gd | 142 ++ .../creatures_menu/creatures_menu_ui.gd | 28 +- scenes/main/main.gd | 5 +- 69 files changed, 5581 insertions(+), 776 deletions(-) create mode 100644 assets/creatures/arche/MatArcheBleue.material create mode 100644 assets/creatures/arche/MatArcheCyan.material create mode 100644 assets/creatures/arche/MatArcheJaune.material create mode 100644 assets/creatures/arche/MatArcheRose.material create mode 100644 assets/creatures/arche/MatArcheRouge.material create mode 100644 assets/creatures/arche/MatArcheVert.material create mode 100644 assets/creatures/arche/arche.glb create mode 100644 assets/creatures/arche/arche.gltf create mode 100644 assets/creatures/arche/arche.tscn create mode 100644 assets/creatures/isidor/IsidorMatCorps.material create mode 100644 assets/creatures/isidor/IsidorMatHalo.material create mode 100644 assets/creatures/isidor/IsidorMatPropulsion.material create mode 100644 assets/creatures/isidor/IsidorMatRoue.material create mode 100644 assets/creatures/isidor/isidor.gltf create mode 100644 assets/creatures/isidor/isidor.tscn create mode 100644 assets/interfaces/Login-Khanat-sound-button-empty.png create mode 100644 assets/interfaces/creature_creation.png create mode 100644 assets/interfaces/creatures_creation/Material.material create mode 100644 assets/interfaces/creatures_creation/creature_creation.png create mode 100644 assets/interfaces/creatures_creation/root.gltf create mode 100644 assets/interfaces/next.png create mode 100644 assets/interfaces/previous.png create mode 100644 assets/interfaces/rollback.png create mode 100644 assets/interfaces/themes/khanat_create_creature.theme create mode 100644 ressources/scripts/creatures/creature.gd create mode 100644 ressources/scripts/datas/cloth.gd create mode 100644 ressources/scripts/datas/creature.gd create mode 100644 ressources/scripts/datas/equipment.gd create mode 100644 ressources/scripts/datas/human.gd create mode 100644 ressources/scripts/datas/item.gd create mode 100644 ressources/scripts/datas/pickup_item.gd create mode 100644 ressources/scripts/datas/proxy_data.gd create mode 100644 ressources/themes/creature_creation.tres delete mode 100644 ressources/themes/khanat_theme.theme create mode 100644 scenes/creature_creation/arche.tscn create mode 100644 scenes/creature_creation/creature.gd create mode 100644 scenes/creature_creation/creature.tscn create mode 100644 scenes/creature_creation/creature_creation.gd create mode 100644 scenes/creature_creation/creature_creation.tscn create mode 100644 scenes/creature_creation/creature_creation_menu.gd create mode 100644 scenes/creature_creation/creature_creation_menu.tscn create mode 100644 scenes/creature_creation/isidor.tscn create mode 100644 scenes/creature_creation/property_box.gd create mode 100644 scenes/creature_creation/property_box.tscn create mode 100644 scenes/creature_creation/property_label.tscn create mode 100644 scenes/game/generate_map.gd diff --git a/assets/creatures/arche/MatArcheBleue.material b/assets/creatures/arche/MatArcheBleue.material new file mode 100644 index 0000000000000000000000000000000000000000..6565e41872de1fb2952bd919a318266c93841df8 GIT binary patch literal 756 zcmVbH2s%wUgxYb z)CqSrA>4-a8WBmswP}vmUTfBY@`a6br%XJxk!AE-Dxr!lTn#}27gd=O1M|UA(*Cb?-a;dtf`ReE ze*oQb6aO!OiCuFlRJWjxPA4b2EfR@D+Ez63vM4SK98X@O>U6u{E_N^bu=21X2!MsC zfh{7+%#4gk(xfnq0Z;-VXv(?)5}*`4ND?h0lDN|TzX2vDR>}FaG4*UDFkdyUad7iX zJ+iQuS80GQp>sOsj0b-X$3)&*2yVK)md18RHm(N3gkZ4q?-}9|Ve9wRScDuop(G+g z&x3<%IS=3#UQ8*3-(Ik4*dUrG5`Po z01#l*TC+rwW6RA*NkWL+TY9W=`*k^lU#T&pA2dc=`u5w>|G(pS{3%rcRsdN5-7vY3 z1bcA6%7VUBd|Zal9GsHD4}8+On%mH#Vz}rWTX1BU z7-^$*Nf*Mjk23E6ivJqEE*JYS)@5JQ_}@UlAE^*Kx7Rptb!qxP;k?dSWvCPGYC^aV zGi-*bIEQd4$EkQDG2xr;`%h27y2zZ7UjiSrpfWjVG^Bb-G<}7rU2zSb10xOqy;hCkudwsG%()G$SJ; zk~Ap{V^9JiXUeJr5}*`4M3uFiaysUa2S;YdB5y4KJ6#_~tGYuXt+C-l5T7H_8Gb}^3Vk&p=ZO5!HZpHdhC?JP zbD#-_pDGJaVB1I><6!6p@-!sdqCHdo%BN@h3#R@Y786Wh4Lt-$=+r|9ftcc--`Uym zo&dOa9gzutsd%pmYIvdC11HAJrGLv17XgBp92*EzJyZDh1DUxpm_4GN?_(q)ckl|u zf6eA24e-(Sf$~wo(BWB!onnuDJdr20KR-{N_{Px`@rJjhq;wtl_6CWt}x5Gpb0ioh03~z!bvU@-($C0ZX>l;B?uxJ zHA`&|-i(c!Zm5tl2WJA?%E=n^Y1+e;oLt2aF-_)lP{NTl%%i)Iv1<~tNV(QEI{ytE z_v!x%zRH}5(KT(I#U;8-g5$cxs3CrM?5VO=Dov}DAY{2Dw<^L~Pnu8+mqM|(o`j82 z1syUpGB$(=A>#jl{}nDeE;{}I|0M{Fa4aBu&I5-&3AKgI8 z3&)K9j({hGQv~XWKqyiX+e%vlE=nKRJ4To8QHHn(y2SL@Ll`?bjki=8$j?Fc5!HTx zB1ybEu>o5fD(jxg#WoOBHwu7`?mBZMBzD~s5>YSbeDOqd90L%iF569#K1qV8j-=$m nrt_j>U5EB`qY(B!WFFVn8C7bPcog$yq$<2|5+^qdQd2`i$;4Ey literal 0 HcmV?d00001 diff --git a/assets/creatures/arche/MatArcheRose.material b/assets/creatures/arche/MatArcheRose.material new file mode 100644 index 0000000000000000000000000000000000000000..ee7a2381ce0c4d0b866cd256a006cbc05bbf5264 GIT binary patch literal 753 zcmVIk4*dUrG5`Po z05Heewq}VW$CjIsl7tYsxAa)`^6L+zy)a@%KWL1$^#5(?|KD*u{uEXKR{&Z7*$tBm zO|Ta;B3vP3kglmj)isQeAIF>FUSoFKh?!f<|A{kSLp?$E|G+gmS92R$R16oLV+)Q9 z6C-W3F6ly;_EEzq}FI^nJ+ zg!?eVW|)d|2$yo4iZc=uE^1{+RfQ|evMy+XjZ~qs&Y^IUi^TWXt(MzJtyKwvNJh<4 z8-zDwqox}wr0l^N7M#pMpQb%r$;nj=5z}N&2PYg^!#uhR8M`K-ij-?zqx0Xuai9LL z;H%7;7+urWRa~OWBsi{1j2hwx$DS%{rP8!Y2||`ja;qe)^&|q*!cl{x_) zA{Y@4Awr1wKj6Owi;Y`s`~e7za4sNgq(k4u1Dmw>;KNN1Ze+g4Ljz-m{{Xt>CjMUl z6T9YAsBS?TolZ`48w3J@w54d|Wl>xhGM>Cf)#-M@UF=@=VdY^(pwV<&1AvF9p)Ddb zBO@b{G${;YPy!)m%Blkrz!W`45-qEdxYGW=0h=a}rXrmXje#=`KM*Bcz;PpN@&FH5 z>*Z1!o=cFN#~kXx@!7G+TO(kn>(9|jcSx=^Hhc);b0j*$k7!MyuO{Rjkssnl=IzOF z$Yfp)G~v`!W#I|79f@-s4BbGNhGbi`hst06^lZPtl%KO=q6wlQhoA_ZdI%*DQVjDK zJDc7SXzo=!+6Ka^{r#hAbJdl~K`v>+y817Z5l6y0XURo zyh8C`v-wB^e6$Uqd{l6B*w$g7*kd10Q& jw+?O4n^jowm_H6)jaeyHVvgq(R8@H6WNL00Qd2`i^^I7^ literal 0 HcmV?d00001 diff --git a/assets/creatures/arche/MatArcheRouge.material b/assets/creatures/arche/MatArcheRouge.material new file mode 100644 index 0000000000000000000000000000000000000000..65d27452e88d2925cbe816510ecac88e90054d30 GIT binary patch literal 756 zcmVl_6CWt}x5Gpb0ioh03~z!bvU?-($C0ZX>l;CHNs3 zHA`&|-i(c!Zm5tl2WJA?%E=n^Y1+e;oLt2aF-_)lP{NTl%%i)Iv1<~lNV(QEI{ytE z_v!x%zRH}5(KT&d#U;8-g5$cxs3CfI?5VO=Dov}DAY{2Dw<^L~Pm)j!mol-po`j82 z1syOlFgA2_fcQV)e+3H;3ywd){|Evh91F-iiov1p0)kE2gYe-d2sbhx1d@Rf!+!wX zaufeAfQemmDpa?ijZP;gx-AlkMA}j`^0Fwd3mQ*eqv~|K;4XGA`>^t`BG_mefQG1% zEh1%PMn)uQQW(Zi0wHM1x&acP6g@~1EhCb+(*C~zE#?(uR;lJ=W8ztQV6@7vadz7m zd5B~$pV9zbLg#eM84v!NrI|~r060| m=SAPT8tv~!5LP~99;dA@s+24774rtFD!g$LH8%`WQ$s_j3s^z` literal 0 HcmV?d00001 diff --git a/assets/creatures/arche/MatArcheVert.material b/assets/creatures/arche/MatArcheVert.material new file mode 100644 index 0000000000000000000000000000000000000000..67108d836be1570b95b99fb98ad3233ffdf96d4d GIT binary patch literal 754 zcmV2>1ibk_xeNdyVr}m!|&{&g-02hC1P{ zCWQMi!)BO@a|oAmoQgLR6E13HNEL-E%(5&Ml%Op6iON<)ghsT~OYo*e(N(n-iOLD6sto0-b#c(MTd+SNq7?nB! z9WpdBHiQTv;{SmE6)rk1Iw%4V7~xpxMGqYMFd*2ZJqRCef^Z}AK_D3zG5iP6EjRK1 z0+`q}r$TiL;^=g8qT3>oNTh8=BQJ~My0G!&HL6ax3+`g~vJWc{D*}$D+Zup}sG%() zG$SJ;k~Ap{V^9JiXUeJr5}*`4M`GMWck%;SZUzFCg5=w)238 z+j=>c-sch|r(+IzaAbBY^40>d)Aez*syigo8XGr#fBlGrT zI7G5C2bysBsj~0{wvEIw4u)m5g>@kv4JqvGlg$IkeMrk*(2)tK1L#P z2d_~4*K9u003U51C?6FJ9iDaADfZaM6M0hm^Yi41ZyZe#Z+KfuO6MVgRZenn3#KDc k$E`yf^=1^-Job-=S7TPHm3ZNK1yvQ^IGLIo22xW)L;31W&Hw-a literal 0 HcmV?d00001 diff --git a/assets/creatures/arche/arche.glb b/assets/creatures/arche/arche.glb new file mode 100644 index 0000000000000000000000000000000000000000..a728cc55d879c60f5227888303a011eaa3db2ac7 GIT binary patch literal 164280 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 literal 0 HcmV?d00001 diff --git a/assets/creatures/arche/arche.gltf b/assets/creatures/arche/arche.gltf new file mode 100644 index 0000000..c2ce4d2 --- /dev/null +++ b/assets/creatures/arche/arche.gltf @@ -0,0 +1,1933 @@ +{ + "asset" : { + "generator" : "Khronos glTF Blender I/O v1.6.16", + "version" : "2.0" + }, + "scene" : 0, + "scenes" : [ + { + "name" : "Scene", + "nodes" : [ + 13 + ] + } + ], + "nodes" : [ + { + "mesh" : 0, + "name" : "ArcheBleue", + "rotation" : [ + 0.7071068286895752, + 0, + 0, + 0.7071068286895752 + ], + "translation" : [ + -1.1920928955078125e-07, + 0.30000001192092896, + -2.0529736133312326e-08 + ] + }, + { + "children" : [ + 0 + ], + "name" : "BoneArcheBleue", + "rotation" : [ + -0.653281569480896, + -0.27059808373451233, + -0.27059802412986755, + 0.6532814502716064 + ], + "scale" : [ + 0.9999999403953552, + 1, + 1 + ], + "translation" : [ + 0.6999999284744263, + 0.4000000059604645, + -1.7484556025237907e-08 + ] + }, + { + "mesh" : 1, + "name" : "ArcheRose", + "rotation" : [ + 0.7071068286895752, + 0, + 0, + 0.7071068286895752 + ], + "translation" : [ + -7.450580596923828e-09, + 0.30000001192092896, + -1.2007875582753513e-08 + ] + }, + { + "children" : [ + 2 + ], + "name" : "BoneArcheRose", + "rotation" : [ + -0.1978076547384262, + 0.6788756251335144, + 0.6788756847381592, + 0.1978076696395874 + ], + "translation" : [ + -0.09762568026781082, + 0.8990569710731506, + 0.02166159823536873 + ] + }, + { + "mesh" : 2, + "name" : "ArcheRouge", + "rotation" : [ + 0.7071068286895752, + 0, + 0, + 0.7071068286895752 + ], + "translation" : [ + -1.4901161193847656e-08, + 0.3, + -1.0321843291194455e-07 + ] + }, + { + "children" : [ + 4 + ], + "name" : "BoneArcheRouge", + "rotation" : [ + -0.6903178691864014, + 0.15317073464393616, + 0.15317071974277496, + 0.6903178095817566 + ], + "scale" : [ + 0.9999999403953552, + 0.9999999403953552, + 1 + ], + "translation" : [ + 0.03416798263788223, + 1.264934778213501, + -0.09398169070482254 + ] + }, + { + "mesh" : 3, + "name" : "ArcheJaune", + "rotation" : [ + 0.7071068286895752, + 0, + 0, + 0.7071068286895752 + ], + "translation" : [ + 0, + 0.2999999701976776, + -5.170989414438054e-09 + ] + }, + { + "children" : [ + 6 + ], + "name" : "BoneArcheJaune", + "rotation" : [ + -0.4663723409175873, + -0.5315043330192566, + -0.5315043330192566, + 0.4663723111152649 + ], + "translation" : [ + 0.060919225215911865, + 1.3999946117401123, + 0.07930219918489456 + ] + }, + { + "mesh" : 4, + "name" : "ArcheVert", + "rotation" : [ + 0.7071068286895752, + 0, + 0, + 0.7071068286895752 + ], + "translation" : [ + 0, + 0.2999999225139618, + -3.824358429938002e-08 + ] + }, + { + "children" : [ + 8 + ], + "name" : "BoneArcheVert", + "rotation" : [ + -0.06787494570016861, + -0.7038415670394897, + -0.7038416266441345, + 0.06787494570016861 + ], + "translation" : [ + -0.39126691222190857, + 1.268194317817688, + 0.5804396271705627 + ] + }, + { + "mesh" : 5, + "name" : "ArcheCyan", + "rotation" : [ + 0.7071068286895752, + 0, + 0, + 0.7071068286895752 + ], + "translation" : [ + 8.940696716308594e-08, + 0.3000000238418707, + -2.739755800007515e-08 + ] + }, + { + "children" : [ + 10 + ], + "name" : "BoneArcheCyan", + "rotation" : [ + -0.5791545510292053, + 0.4056846499443054, + 0.40568456053733826, + 0.5791545510292053 + ], + "scale" : [ + 1.0000003576278687, + 1.0000003576278687, + 1 + ], + "translation" : [ + -0.2960624694824219, + 0.9047061800956726, + -0.6343083381652832 + ] + }, + { + "children" : [ + 1, + 3, + 5, + 7, + 9, + 11 + ], + "name" : "Bone" + }, + { + "children" : [ + 12 + ], + "name" : "Arche" + } + ], + "animations" : [ + { + "channels" : [ + { + "sampler" : 0, + "target" : { + "node" : 12, + "path" : "translation" + } + }, + { + "sampler" : 1, + "target" : { + "node" : 12, + "path" : "rotation" + } + }, + { + "sampler" : 2, + "target" : { + "node" : 12, + "path" : "scale" + } + }, + { + "sampler" : 3, + "target" : { + "node" : 1, + "path" : "translation" + } + }, + { + "sampler" : 4, + "target" : { + "node" : 1, + "path" : "rotation" + } + }, + { + "sampler" : 5, + "target" : { + "node" : 1, + "path" : "scale" + } + }, + { + "sampler" : 6, + "target" : { + "node" : 3, + "path" : "translation" + } + }, + { + "sampler" : 7, + "target" : { + "node" : 3, + "path" : "rotation" + } + }, + { + "sampler" : 8, + "target" : { + "node" : 3, + "path" : "scale" + } + }, + { + "sampler" : 9, + "target" : { + "node" : 5, + "path" : "translation" + } + }, + { + "sampler" : 10, + "target" : { + "node" : 5, + "path" : "rotation" + } + }, + { + "sampler" : 11, + "target" : { + "node" : 5, + "path" : "scale" + } + }, + { + "sampler" : 12, + "target" : { + "node" : 7, + "path" : "translation" + } + }, + { + "sampler" : 13, + "target" : { + "node" : 7, + "path" : "rotation" + } + }, + { + "sampler" : 14, + "target" : { + "node" : 7, + "path" : "scale" + } + }, + { + "sampler" : 15, + "target" : { + "node" : 9, + "path" : "translation" + } + }, + { + "sampler" : 16, + "target" : { + "node" : 9, + "path" : "rotation" + } + }, + { + "sampler" : 17, + "target" : { + "node" : 9, + "path" : "scale" + } + }, + { + "sampler" : 18, + "target" : { + "node" : 11, + "path" : "translation" + } + }, + { + "sampler" : 19, + "target" : { + "node" : 11, + "path" : "rotation" + } + }, + { + "sampler" : 20, + "target" : { + "node" : 11, + "path" : "scale" + } + } + ], + "name" : "idle", + "samplers" : [ + { + "input" : 55, + "interpolation" : "LINEAR", + "output" : 56 + }, + { + "input" : 55, + "interpolation" : "LINEAR", + "output" : 57 + }, + { + "input" : 55, + "interpolation" : "LINEAR", + "output" : 58 + }, + { + "input" : 55, + "interpolation" : "LINEAR", + "output" : 59 + }, + { + "input" : 55, + "interpolation" : "LINEAR", + "output" : 60 + }, + { + "input" : 55, + "interpolation" : "LINEAR", + "output" : 61 + }, + { + "input" : 55, + "interpolation" : "LINEAR", + "output" : 62 + }, + { + "input" : 55, + "interpolation" : "LINEAR", + "output" : 63 + }, + { + "input" : 55, + "interpolation" : "LINEAR", + "output" : 64 + }, + { + "input" : 55, + "interpolation" : "LINEAR", + "output" : 65 + }, + { + "input" : 55, + "interpolation" : "LINEAR", + "output" : 66 + }, + { + "input" : 55, + "interpolation" : "LINEAR", + "output" : 67 + }, + { + "input" : 55, + "interpolation" : "LINEAR", + "output" : 68 + }, + { + "input" : 55, + "interpolation" : "LINEAR", + "output" : 69 + }, + { + "input" : 55, + "interpolation" : "LINEAR", + "output" : 70 + }, + { + "input" : 55, + "interpolation" : "LINEAR", + "output" : 71 + }, + { + "input" : 55, + "interpolation" : "LINEAR", + "output" : 72 + }, + { + "input" : 55, + "interpolation" : "LINEAR", + "output" : 73 + }, + { + "input" : 55, + "interpolation" : "LINEAR", + "output" : 74 + }, + { + "input" : 55, + "interpolation" : "LINEAR", + "output" : 75 + }, + { + "input" : 55, + "interpolation" : "LINEAR", + "output" : 76 + } + ] + } + ], + "materials" : [ + { + "doubleSided" : true, + "name" : "MatArcheBleue", + "pbrMetallicRoughness" : { + "baseColorFactor" : [ + 0, + 0, + 1, + 1 + ], + "metallicFactor" : 0, + "roughnessFactor" : 0.4000000059604645 + } + }, + { + "doubleSided" : true, + "name" : "MatArcheRose", + "pbrMetallicRoughness" : { + "baseColorFactor" : [ + 1, + 0, + 1, + 1 + ], + "metallicFactor" : 0, + "roughnessFactor" : 0.4000000059604645 + } + }, + { + "doubleSided" : true, + "name" : "MatArcheRouge", + "pbrMetallicRoughness" : { + "baseColorFactor" : [ + 1, + 0, + 0, + 1 + ], + "metallicFactor" : 0, + "roughnessFactor" : 0.4000000059604645 + } + }, + { + "doubleSided" : true, + "name" : "MatArcheJaune", + "pbrMetallicRoughness" : { + "baseColorFactor" : [ + 1, + 1, + 0, + 1 + ], + "metallicFactor" : 0, + "roughnessFactor" : 0.4000000059604645 + } + }, + { + "doubleSided" : true, + "name" : "MatArcheVert", + "pbrMetallicRoughness" : { + "baseColorFactor" : [ + 0, + 1, + 0, + 1 + ], + "metallicFactor" : 0, + "roughnessFactor" : 0.4000000059604645 + } + }, + { + "doubleSided" : true, + "name" : "MatArcheCyan", + "pbrMetallicRoughness" : { + "baseColorFactor" : [ + 0, + 1, + 1, + 1 + ], + "metallicFactor" : 0, + "roughnessFactor" : 0.4000000059604645 + } + } + ], + "meshes" : [ + { + "extras" : { + "targetNames" : [ + "Blue/Alpha", + "Blue/Beta", + "Size" + ] + }, + "name" : "Icosphere.030", + "primitives" : [ + { + "attributes" : { + "POSITION" : 0, + "NORMAL" : 1, + "TEXCOORD_0" : 2 + }, + "indices" : 3, + "material" : 0, + "targets" : [ + { + "POSITION" : 4, + "NORMAL" : 5 + }, + { + "POSITION" : 6, + "NORMAL" : 7 + }, + { + "POSITION" : 8, + "NORMAL" : 9 + } + ] + } + ], + "weights" : [ + 0, + 0, + 0 + ] + }, + { + "extras" : { + "targetNames" : [ + "Pink/Alpha", + "Pink/Beta", + "Size" + ] + }, + "name" : "Icosphere.031", + "primitives" : [ + { + "attributes" : { + "POSITION" : 10, + "NORMAL" : 11, + "TEXCOORD_0" : 12 + }, + "indices" : 3, + "material" : 1, + "targets" : [ + { + "POSITION" : 13, + "NORMAL" : 14 + }, + { + "POSITION" : 15, + "NORMAL" : 16 + }, + { + "POSITION" : 17, + "NORMAL" : 18 + } + ] + } + ], + "weights" : [ + 0, + 0, + 0 + ] + }, + { + "extras" : { + "targetNames" : [ + "Red/Alpha", + "Red/Beta", + "Size" + ] + }, + "name" : "Icosphere.032", + "primitives" : [ + { + "attributes" : { + "POSITION" : 19, + "NORMAL" : 20, + "TEXCOORD_0" : 21 + }, + "indices" : 3, + "material" : 2, + "targets" : [ + { + "POSITION" : 22, + "NORMAL" : 23 + }, + { + "POSITION" : 24, + "NORMAL" : 25 + }, + { + "POSITION" : 26, + "NORMAL" : 27 + } + ] + } + ], + "weights" : [ + 0, + 0, + 0 + ] + }, + { + "extras" : { + "targetNames" : [ + "Yellow/Alpha", + "Yellow/Beta", + "Size" + ] + }, + "name" : "Icosphere.033", + "primitives" : [ + { + "attributes" : { + "POSITION" : 28, + "NORMAL" : 29, + "TEXCOORD_0" : 30 + }, + "indices" : 3, + "material" : 3, + "targets" : [ + { + "POSITION" : 31, + "NORMAL" : 32 + }, + { + "POSITION" : 33, + "NORMAL" : 34 + }, + { + "POSITION" : 35, + "NORMAL" : 36 + } + ] + } + ], + "weights" : [ + 0, + 0, + 0 + ] + }, + { + "extras" : { + "targetNames" : [ + "Green/Alpha", + "Green/Beta", + "Size" + ] + }, + "name" : "Icosphere.034", + "primitives" : [ + { + "attributes" : { + "POSITION" : 37, + "NORMAL" : 38, + "TEXCOORD_0" : 39 + }, + "indices" : 3, + "material" : 4, + "targets" : [ + { + "POSITION" : 40, + "NORMAL" : 41 + }, + { + "POSITION" : 42, + "NORMAL" : 43 + }, + { + "POSITION" : 44, + "NORMAL" : 45 + } + ] + } + ], + "weights" : [ + 0, + 0, + 0 + ] + }, + { + "extras" : { + "targetNames" : [ + "Cyan/Alpha", + "Cyan/Beta", + "Size" + ] + }, + "name" : "Icosphere.035", + "primitives" : [ + { + "attributes" : { + "POSITION" : 46, + "NORMAL" : 47, + "TEXCOORD_0" : 48 + }, + "indices" : 3, + "material" : 5, + "targets" : [ + { + "POSITION" : 49, + "NORMAL" : 50 + }, + { + "POSITION" : 51, + "NORMAL" : 52 + }, + { + "POSITION" : 53, + "NORMAL" : 54 + } + ] + } + ], + "weights" : [ + 0, + 0, + 0 + ] + } + ], + "accessors" : [ + { + "bufferView" : 0, + "componentType" : 5126, + "count" : 60, + "max" : [ + 0.17888499796390533, + 0.20000000298023224, + 0.1701280176639557 + ], + "min" : [ + -0.17888499796390533, + -0.20000000298023224, + -0.1701280176639557 + ], + "type" : "VEC3" + }, + { + "bufferView" : 1, + "componentType" : 5126, + "count" : 60, + "type" : "VEC3" + }, + { + "bufferView" : 2, + "componentType" : 5126, + "count" : 60, + "type" : "VEC2" + }, + { + "bufferView" : 3, + "componentType" : 5123, + "count" : 60, + "type" : "SCALAR" + }, + { + "bufferView" : 4, + "componentType" : 5126, + "count" : 60, + "max" : [ + 0.0009467191994190216, + 0, + 0.1452498733997345 + ], + "min" : [ + -0.0009467191994190216, + 0, + -0.14524981379508972 + ], + "type" : "VEC3" + }, + { + "bufferView" : 5, + "componentType" : 5126, + "count" : 60, + "type" : "VEC3" + }, + { + "bufferView" : 6, + "componentType" : 5126, + "count" : 60, + "max" : [ + 0.1387292593717575, + 0, + 0.0009042230085469782 + ], + "min" : [ + -0.1387292593717575, + 0, + -0.0009042230085469782 + ], + "type" : "VEC3" + }, + { + "bufferView" : 7, + "componentType" : 5126, + "count" : 60, + "type" : "VEC3" + }, + { + "bufferView" : 8, + "componentType" : 5126, + "count" : 60, + "max" : [ + 3.108279605923414e-11, + 0.10910065472126007, + 4.768839545477022e-09 + ], + "min" : [ + -3.108278912034024e-11, + -0.10910062491893768, + -4.768837769120182e-09 + ], + "type" : "VEC3" + }, + { + "bufferView" : 9, + "componentType" : 5126, + "count" : 60, + "type" : "VEC3" + }, + { + "bufferView" : 10, + "componentType" : 5126, + "count" : 60, + "max" : [ + 0.17888499796390533, + 0.20000000298023224, + 0.1701280176639557 + ], + "min" : [ + -0.17888499796390533, + -0.20000000298023224, + -0.1701280176639557 + ], + "type" : "VEC3" + }, + { + "bufferView" : 11, + "componentType" : 5126, + "count" : 60, + "type" : "VEC3" + }, + { + "bufferView" : 12, + "componentType" : 5126, + "count" : 60, + "type" : "VEC2" + }, + { + "bufferView" : 13, + "componentType" : 5126, + "count" : 60, + "max" : [ + 0.002617470920085907, + 7.450580596923828e-09, + 0.13384470343589783 + ], + "min" : [ + -0.002617470920085907, + -7.450580596923828e-09, + -0.13384461402893066 + ], + "type" : "VEC3" + }, + { + "bufferView" : 14, + "componentType" : 5126, + "count" : 60, + "type" : "VEC3" + }, + { + "bufferView" : 15, + "componentType" : 5126, + "count" : 60, + "max" : [ + 0.15491043031215668, + 0, + 0.0030294344760477543 + ], + "min" : [ + -0.15491048991680145, + 0, + -0.0030294349417090416 + ], + "type" : "VEC3" + }, + { + "bufferView" : 16, + "componentType" : 5126, + "count" : 60, + "type" : "VEC3" + }, + { + "bufferView" : 17, + "componentType" : 5126, + "count" : 60, + "max" : [ + 1.6294077198608647e-10, + 0.19064976274967194, + 8.331973333497444e-09 + ], + "min" : [ + -1.4901161193847656e-08, + -0.19064997136592865, + -8.33198399163848e-09 + ], + "type" : "VEC3" + }, + { + "bufferView" : 18, + "componentType" : 5126, + "count" : 60, + "type" : "VEC3" + }, + { + "bufferView" : 19, + "componentType" : 5126, + "count" : 60, + "max" : [ + 0.17888499796390533, + 0.20000000298023224, + 0.1701280176639557 + ], + "min" : [ + -0.17888499796390533, + -0.20000000298023224, + -0.1701280176639557 + ], + "type" : "VEC3" + }, + { + "bufferView" : 20, + "componentType" : 5126, + "count" : 60, + "type" : "VEC3" + }, + { + "bufferView" : 21, + "componentType" : 5126, + "count" : 60, + "type" : "VEC2" + }, + { + "bufferView" : 22, + "componentType" : 5126, + "count" : 60, + "max" : [ + 0.004510108381509781, + 7.450580596923828e-09, + 0.13834413886070251 + ], + "min" : [ + -0.004510108381509781, + -7.450580596923828e-09, + -0.13834410905838013 + ], + "type" : "VEC3" + }, + { + "bufferView" : 23, + "componentType" : 5126, + "count" : 60, + "type" : "VEC3" + }, + { + "bufferView" : 24, + "componentType" : 5126, + "count" : 60, + "max" : [ + 0.19909720122814178, + 0, + 0.006490699015557766 + ], + "min" : [ + -0.19909726083278656, + 0, + -0.006490698084235191 + ], + "type" : "VEC3" + }, + { + "bufferView" : 25, + "componentType" : 5126, + "count" : 60, + "type" : "VEC3" + }, + { + "bufferView" : 26, + "componentType" : 5126, + "count" : 60, + "max" : [ + 2.7244917433222327e-10, + 0.19129149615764618, + 8.357176284334855e-09 + ], + "min" : [ + -1.4901161193847656e-08, + -0.19129173457622528, + -8.357186942475892e-09 + ], + "type" : "VEC3" + }, + { + "bufferView" : 27, + "componentType" : 5126, + "count" : 60, + "type" : "VEC3" + }, + { + "bufferView" : 28, + "componentType" : 5126, + "count" : 60, + "max" : [ + 0.17888499796390533, + 0.20000000298023224, + 0.1701280176639557 + ], + "min" : [ + -0.17888499796390533, + -0.20000000298023224, + -0.1701280176639557 + ], + "type" : "VEC3" + }, + { + "bufferView" : 29, + "componentType" : 5126, + "count" : 60, + "type" : "VEC3" + }, + { + "bufferView" : 30, + "componentType" : 5126, + "count" : 60, + "type" : "VEC2" + }, + { + "bufferView" : 31, + "componentType" : 5126, + "count" : 60, + "max" : [ + 0.0008370541036128998, + 7.450580596923828e-09, + 0.12842467427253723 + ], + "min" : [ + -0.0008370541036128998, + -7.450580596923828e-09, + -0.12842461466789246 + ], + "type" : "VEC3" + }, + { + "bufferView" : 32, + "componentType" : 5126, + "count" : 60, + "type" : "VEC3" + }, + { + "bufferView" : 33, + "componentType" : 5126, + "count" : 60, + "max" : [ + 0.13875077664852142, + 0, + 0.000904363114386797 + ], + "min" : [ + -0.13875077664852142, + 0, + -0.000904363114386797 + ], + "type" : "VEC3" + }, + { + "bufferView" : 34, + "componentType" : 5126, + "count" : 60, + "type" : "VEC3" + }, + { + "bufferView" : 35, + "componentType" : 5126, + "count" : 60, + "max" : [ + 4.184521132377661e-11, + 0.14687670767307281, + 6.420048492827846e-09 + ], + "min" : [ + -4.1845200915435754e-11, + -0.14687667787075043, + -6.420046716471006e-09 + ], + "type" : "VEC3" + }, + { + "bufferView" : 36, + "componentType" : 5126, + "count" : 60, + "type" : "VEC3" + }, + { + "bufferView" : 37, + "componentType" : 5126, + "count" : 60, + "max" : [ + 0.17888499796390533, + 0.20000000298023224, + 0.1701280176639557 + ], + "min" : [ + -0.17888499796390533, + -0.20000000298023224, + -0.1701280176639557 + ], + "type" : "VEC3" + }, + { + "bufferView" : 38, + "componentType" : 5126, + "count" : 60, + "type" : "VEC3" + }, + { + "bufferView" : 39, + "componentType" : 5126, + "count" : 60, + "type" : "VEC2" + }, + { + "bufferView" : 40, + "componentType" : 5126, + "count" : 60, + "max" : [ + 0.0038765370845794678, + 7.450580596923828e-09, + 0.19822728633880615 + ], + "min" : [ + -0.0038765408098697662, + -7.450580596923828e-09, + -0.1982271373271942 + ], + "type" : "VEC3" + }, + { + "bufferView" : 41, + "componentType" : 5126, + "count" : 60, + "type" : "VEC3" + }, + { + "bufferView" : 42, + "componentType" : 5126, + "count" : 60, + "max" : [ + 0.150435671210289, + 0, + 0.0029419257771223783 + ], + "min" : [ + -0.1504357010126114, + 0, + -0.0029419262427836657 + ], + "type" : "VEC3" + }, + { + "bufferView" : 43, + "componentType" : 5126, + "count" : 60, + "type" : "VEC3" + }, + { + "bufferView" : 44, + "componentType" : 5126, + "count" : 60, + "max" : [ + 1.521001102844366e-10, + 0.17796586453914642, + 7.77765052362156e-09 + ], + "min" : [ + -1.4901161193847656e-08, + -0.17796607315540314, + -7.777657629048917e-09 + ], + "type" : "VEC3" + }, + { + "bufferView" : 45, + "componentType" : 5126, + "count" : 60, + "type" : "VEC3" + }, + { + "bufferView" : 46, + "componentType" : 5126, + "count" : 60, + "max" : [ + 0.17888499796390533, + 0.20000000298023224, + 0.1701280176639557 + ], + "min" : [ + -0.17888499796390533, + -0.20000000298023224, + -0.1701280176639557 + ], + "type" : "VEC3" + }, + { + "bufferView" : 47, + "componentType" : 5126, + "count" : 60, + "type" : "VEC3" + }, + { + "bufferView" : 48, + "componentType" : 5126, + "count" : 60, + "type" : "VEC2" + }, + { + "bufferView" : 49, + "componentType" : 5126, + "count" : 60, + "max" : [ + 0.0009285882115364075, + 7.450580596923828e-09, + 0.14246737957000732 + ], + "min" : [ + -0.0009285882115364075, + -7.450580596923828e-09, + -0.14246731996536255 + ], + "type" : "VEC3" + }, + { + "bufferView" : 50, + "componentType" : 5126, + "count" : 60, + "type" : "VEC3" + }, + { + "bufferView" : 51, + "componentType" : 5126, + "count" : 60, + "max" : [ + 0.1231757253408432, + 0, + 0.0008028466254472733 + ], + "min" : [ + -0.1231757253408432, + 0, + -0.0008028466254472733 + ], + "type" : "VEC3" + }, + { + "bufferView" : 52, + "componentType" : 5126, + "count" : 60, + "type" : "VEC3" + }, + { + "bufferView" : 53, + "componentType" : 5126, + "count" : 60, + "max" : [ + 3.00657450325037e-11, + 0.10553078353404999, + 4.612797255276746e-09 + ], + "min" : [ + -3.006573462416284e-11, + -0.1055307537317276, + -4.612797255276746e-09 + ], + "type" : "VEC3" + }, + { + "bufferView" : 54, + "componentType" : 5126, + "count" : 60, + "type" : "VEC3" + }, + { + "bufferView" : 55, + "componentType" : 5126, + "count" : 482, + "max" : [ + 20.041666666666668 + ], + "min" : [ + 0 + ], + "type" : "SCALAR" + }, + { + "bufferView" : 56, + "componentType" : 5126, + "count" : 482, + "type" : "VEC3" + }, + { + "bufferView" : 57, + "componentType" : 5126, + "count" : 482, + "type" : "VEC4" + }, + { + "bufferView" : 58, + "componentType" : 5126, + "count" : 482, + "type" : "VEC3" + }, + { + "bufferView" : 59, + "componentType" : 5126, + "count" : 482, + "type" : "VEC3" + }, + { + "bufferView" : 60, + "componentType" : 5126, + "count" : 482, + "type" : "VEC4" + }, + { + "bufferView" : 61, + "componentType" : 5126, + "count" : 482, + "type" : "VEC3" + }, + { + "bufferView" : 62, + "componentType" : 5126, + "count" : 482, + "type" : "VEC3" + }, + { + "bufferView" : 63, + "componentType" : 5126, + "count" : 482, + "type" : "VEC4" + }, + { + "bufferView" : 64, + "componentType" : 5126, + "count" : 482, + "type" : "VEC3" + }, + { + "bufferView" : 65, + "componentType" : 5126, + "count" : 482, + "type" : "VEC3" + }, + { + "bufferView" : 66, + "componentType" : 5126, + "count" : 482, + "type" : "VEC4" + }, + { + "bufferView" : 67, + "componentType" : 5126, + "count" : 482, + "type" : "VEC3" + }, + { + "bufferView" : 68, + "componentType" : 5126, + "count" : 482, + "type" : "VEC3" + }, + { + "bufferView" : 69, + "componentType" : 5126, + "count" : 482, + "type" : "VEC4" + }, + { + "bufferView" : 70, + "componentType" : 5126, + "count" : 482, + "type" : "VEC3" + }, + { + "bufferView" : 71, + "componentType" : 5126, + "count" : 482, + "type" : "VEC3" + }, + { + "bufferView" : 72, + "componentType" : 5126, + "count" : 482, + "type" : "VEC4" + }, + { + "bufferView" : 73, + "componentType" : 5126, + "count" : 482, + "type" : "VEC3" + }, + { + "bufferView" : 74, + "componentType" : 5126, + "count" : 482, + "type" : "VEC3" + }, + { + "bufferView" : 75, + "componentType" : 5126, + "count" : 482, + "type" : "VEC4" + }, + { + "bufferView" : 76, + "componentType" : 5126, + "count" : 482, + "type" : "VEC3" + } + ], + "bufferViews" : [ + { + "buffer" : 0, + "byteLength" : 720, + "byteOffset" : 0 + }, + { + "buffer" : 0, + "byteLength" : 720, + "byteOffset" : 720 + }, + { + "buffer" : 0, + "byteLength" : 480, + "byteOffset" : 1440 + }, + { + "buffer" : 0, + "byteLength" : 120, + "byteOffset" : 1920 + }, + { + "buffer" : 0, + "byteLength" : 720, + "byteOffset" : 2040 + }, + { + "buffer" : 0, + "byteLength" : 720, + "byteOffset" : 2760 + }, + { + "buffer" : 0, + "byteLength" : 720, + "byteOffset" : 3480 + }, + { + "buffer" : 0, + "byteLength" : 720, + "byteOffset" : 4200 + }, + { + "buffer" : 0, + "byteLength" : 720, + "byteOffset" : 4920 + }, + { + "buffer" : 0, + "byteLength" : 720, + "byteOffset" : 5640 + }, + { + "buffer" : 0, + "byteLength" : 720, + "byteOffset" : 6360 + }, + { + "buffer" : 0, + "byteLength" : 720, + "byteOffset" : 7080 + }, + { + "buffer" : 0, + "byteLength" : 480, + "byteOffset" : 7800 + }, + { + "buffer" : 0, + "byteLength" : 720, + "byteOffset" : 8280 + }, + { + "buffer" : 0, + "byteLength" : 720, + "byteOffset" : 9000 + }, + { + "buffer" : 0, + "byteLength" : 720, + "byteOffset" : 9720 + }, + { + "buffer" : 0, + "byteLength" : 720, + "byteOffset" : 10440 + }, + { + "buffer" : 0, + "byteLength" : 720, + "byteOffset" : 11160 + }, + { + "buffer" : 0, + "byteLength" : 720, + "byteOffset" : 11880 + }, + { + "buffer" : 0, + "byteLength" : 720, + "byteOffset" : 12600 + }, + { + "buffer" : 0, + "byteLength" : 720, + "byteOffset" : 13320 + }, + { + "buffer" : 0, + "byteLength" : 480, + "byteOffset" : 14040 + }, + { + "buffer" : 0, + "byteLength" : 720, + "byteOffset" : 14520 + }, + { + "buffer" : 0, + "byteLength" : 720, + "byteOffset" : 15240 + }, + { + "buffer" : 0, + "byteLength" : 720, + "byteOffset" : 15960 + }, + { + "buffer" : 0, + "byteLength" : 720, + "byteOffset" : 16680 + }, + { + "buffer" : 0, + "byteLength" : 720, + "byteOffset" : 17400 + }, + { + "buffer" : 0, + "byteLength" : 720, + "byteOffset" : 18120 + }, + { + "buffer" : 0, + "byteLength" : 720, + "byteOffset" : 18840 + }, + { + "buffer" : 0, + "byteLength" : 720, + "byteOffset" : 19560 + }, + { + "buffer" : 0, + "byteLength" : 480, + "byteOffset" : 20280 + }, + { + "buffer" : 0, + "byteLength" : 720, + "byteOffset" : 20760 + }, + { + "buffer" : 0, + "byteLength" : 720, + "byteOffset" : 21480 + }, + { + "buffer" : 0, + "byteLength" : 720, + "byteOffset" : 22200 + }, + { + "buffer" : 0, + "byteLength" : 720, + "byteOffset" : 22920 + }, + { + "buffer" : 0, + "byteLength" : 720, + "byteOffset" : 23640 + }, + { + "buffer" : 0, + "byteLength" : 720, + "byteOffset" : 24360 + }, + { + "buffer" : 0, + "byteLength" : 720, + "byteOffset" : 25080 + }, + { + "buffer" : 0, + "byteLength" : 720, + "byteOffset" : 25800 + }, + { + "buffer" : 0, + "byteLength" : 480, + "byteOffset" : 26520 + }, + { + "buffer" : 0, + "byteLength" : 720, + "byteOffset" : 27000 + }, + { + "buffer" : 0, + "byteLength" : 720, + "byteOffset" : 27720 + }, + { + "buffer" : 0, + "byteLength" : 720, + "byteOffset" : 28440 + }, + { + "buffer" : 0, + "byteLength" : 720, + "byteOffset" : 29160 + }, + { + "buffer" : 0, + "byteLength" : 720, + "byteOffset" : 29880 + }, + { + "buffer" : 0, + "byteLength" : 720, + "byteOffset" : 30600 + }, + { + "buffer" : 0, + "byteLength" : 720, + "byteOffset" : 31320 + }, + { + "buffer" : 0, + "byteLength" : 720, + "byteOffset" : 32040 + }, + { + "buffer" : 0, + "byteLength" : 480, + "byteOffset" : 32760 + }, + { + "buffer" : 0, + "byteLength" : 720, + "byteOffset" : 33240 + }, + { + "buffer" : 0, + "byteLength" : 720, + "byteOffset" : 33960 + }, + { + "buffer" : 0, + "byteLength" : 720, + "byteOffset" : 34680 + }, + { + "buffer" : 0, + "byteLength" : 720, + "byteOffset" : 35400 + }, + { + "buffer" : 0, + "byteLength" : 720, + "byteOffset" : 36120 + }, + { + "buffer" : 0, + "byteLength" : 720, + "byteOffset" : 36840 + }, + { + "buffer" : 0, + "byteLength" : 1928, + "byteOffset" : 37560 + }, + { + "buffer" : 0, + "byteLength" : 5784, + "byteOffset" : 39488 + }, + { + "buffer" : 0, + "byteLength" : 7712, + "byteOffset" : 45272 + }, + { + "buffer" : 0, + "byteLength" : 5784, + "byteOffset" : 52984 + }, + { + "buffer" : 0, + "byteLength" : 5784, + "byteOffset" : 58768 + }, + { + "buffer" : 0, + "byteLength" : 7712, + "byteOffset" : 64552 + }, + { + "buffer" : 0, + "byteLength" : 5784, + "byteOffset" : 72264 + }, + { + "buffer" : 0, + "byteLength" : 5784, + "byteOffset" : 78048 + }, + { + "buffer" : 0, + "byteLength" : 7712, + "byteOffset" : 83832 + }, + { + "buffer" : 0, + "byteLength" : 5784, + "byteOffset" : 91544 + }, + { + "buffer" : 0, + "byteLength" : 5784, + "byteOffset" : 97328 + }, + { + "buffer" : 0, + "byteLength" : 7712, + "byteOffset" : 103112 + }, + { + "buffer" : 0, + "byteLength" : 5784, + "byteOffset" : 110824 + }, + { + "buffer" : 0, + "byteLength" : 5784, + "byteOffset" : 116608 + }, + { + "buffer" : 0, + "byteLength" : 7712, + "byteOffset" : 122392 + }, + { + "buffer" : 0, + "byteLength" : 5784, + "byteOffset" : 130104 + }, + { + "buffer" : 0, + "byteLength" : 5784, + "byteOffset" : 135888 + }, + { + "buffer" : 0, + "byteLength" : 7712, + "byteOffset" : 141672 + }, + { + "buffer" : 0, + "byteLength" : 5784, + "byteOffset" : 149384 + }, + { + "buffer" : 0, + "byteLength" : 5784, + "byteOffset" : 155168 + }, + { + "buffer" : 0, + "byteLength" : 7712, + "byteOffset" : 160952 + }, + { + "buffer" : 0, + "byteLength" : 5784, + "byteOffset" : 168664 + } + ], + "buffers" : [ + { + "byteLength" : 174448, + "uri" : "arche.bin" + } + ] +} diff --git a/assets/creatures/arche/arche.tscn b/assets/creatures/arche/arche.tscn new file mode 100644 index 0000000..5cdf4ce --- /dev/null +++ b/assets/creatures/arche/arche.tscn @@ -0,0 +1,5 @@ +[gd_scene load_steps=2 format=2] + +[ext_resource path="res://assets/creatures/arche/arche.gltf" type="PackedScene" id=1] + +[node name="arche" instance=ExtResource( 1 )] diff --git a/assets/creatures/isidor/IsidorMatCorps.material b/assets/creatures/isidor/IsidorMatCorps.material new file mode 100644 index 0000000000000000000000000000000000000000..003c0d417a778e52a1253970731f391759810f1b GIT binary patch literal 773 zcmV+g1N!_@Q$s@n000005C8yv1^@u<0ssIgwJ-f(egz#D0G4HLIZ$nq4lpw_jkKz& zs*LI)ITix?-7Jyh*>Y1q*&301%N>k8*zuM<1JTH@A&n2)z!N_B2{17*MhaR0S^!=E z?7=B4yF$r@F4&795w4IiNY~V&>MD$oAB{J|y~gae5mRn8|1Zvb4fO@t{{t84T+MB0 zQ88R}jx9JcOpLVAx}*zX+D94pKgNF!Uzdx09_zBNf&6bE;1BCb*cg>MO_K_-b9;^R zR+py#6wd3MRfam@t|o;0FvDh;jB^MVbDWAp5)&?JWk^+pGn8d*&;=W*LS~(Y!b>(5 z-($C0ZX>l;Ef^vhHA`&}-i(bZ-B2M7%|6ULtO!J!ZYw8q(5Gn+S8{R{L&P+h)4>Tx zR-rt)3mLmgLK!L7x<==}f#W{?U%^+IGcmeKTbFT*E+xTnU1HP_L1^qLvsN;dR%t=V za#?PbgteYzp%^aaVlN#ZARiq6FKmpAl=wg3zXc8vKSu`=Cpan;! literal 0 HcmV?d00001 diff --git a/assets/creatures/isidor/IsidorMatHalo.material b/assets/creatures/isidor/IsidorMatHalo.material new file mode 100644 index 0000000000000000000000000000000000000000..c8ee916fa907ed0cb8dc55f32144e4f8ff7de5c1 GIT binary patch literal 1832 zcmbVNOOMnr3=VJcel2e}fq07%D}fM)86hqpv6tNg$H>#VGZAT0IhmbVP8|6QNcpDpBmC{h1^(Y@AR4e+5Rv%XoBj9q4bQyJ zgE06R6{xK*!0PCADA1ugx2khcqY^I&U5TU{GM-G_Q>PenxQM!e5Y#1>DhrdKBY_JI zuz6IsGdc^X!xTzCmvwvtg>al->YZq@R97>!ixhF8t(i=taTB$XHO}i2n>f`GLsVBX zE{inYxTu5qj4M=gPqt*wOk=?Tsf&3^WfoYr=1XV6j&;W)H=SRp_cW`w%%#2k^ys0JIXciEgOQMTYu6< z*VHDoo=Idl;!p=&nyQjnwJ$ME=&5Dr}j~$Wd1(*`~$_)|w)D+Y7o6QmT)Pav7v~vhaRT7gKN!Z8{C)XOpSJ z?lfdc>L?N1WP$@|W{~J(&D${EX>?LQW%9KL(<$r)wm_QfCI2(#8zhJv205=w)alvo zX4+H6dY9w?w$+!Hlz5Y=vn;hzSOh9O#Ef2M6r2e@l5h4hd|F_iMd>7M)$|*Zz7u9+ zF8@mM8@Z)rYdOfNd+d*bEJj!n6mc~;;(W=8G&WO6Q=08Q?@C9!5y@9oz?k})h|4}8 z-mD?gqo_$aY^gTas5aNBHV;s(AS+bT(;D&%Q*+bP75BN$VI@1`W)Z=0mr06ra8EEC z3T{`Cf0R1J;{^|H*slizZnqf2pdbV(t1vLZl%59f(}!<~cVPXqy1y;P$Av~5Y_#Ri;>nF7j-Z{ zaE)r=$(HPyX)QP)bthk`%o5A~_{v$ZGb}x`FLmW5K!N5n^*mo7HCe#cZIdr zmL|Z=qK0N>I1c?A)(Fsrj!+k#m?JV7HDH5!$`*!K7v6f(@*oJh_a{AcLv2FunM8&o z4o%RdsVceE_!85F0S_$}odxO@lC43(Zo0BZB`O2TXKfEYT!DSeOM=A?i!~1Q!j!R2 zl`ybuiSAQC%;gSS8@uEZEN78CInCF1}lf`r3j`9 zTctB{)YTO}(_jQ^O_97E1w95S)kj9T4AMO@ybbE22ItVGZXn;yYllNOWJ&5M5j!iu1X+s>C9Xk#;l42|ye?T}jWMkHTV0b`mw zBCh&WyxBlxhESVg+*2KHP#tbk9qv%AA!}4Jb6WCC)9_Hz70;o;VI?o)W{%)^3M55p ztV;}sg2zeZ52eoW`oN0^>ifxr$05crDF{K*9wsK3($nNi+IWh8<&<<*^8BV5XZq!R zAyR45ZqIvBiHSX4((3;pO83qW=Oj<^{~@vrExGe;ub%Gzd^bJ%{pyoazosu3yU6R{ Q&+F;S;hVSVG5-(!1?9Nv=l}o! literal 0 HcmV?d00001 diff --git a/assets/creatures/isidor/IsidorMatRoue.material b/assets/creatures/isidor/IsidorMatRoue.material new file mode 100644 index 0000000000000000000000000000000000000000..40e133c5132fa53ead536dbed4eb585a716662f9 GIT binary patch literal 1652 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 literal 0 HcmV?d00001 diff --git a/assets/interfaces/creature_creation.png b/assets/interfaces/creature_creation.png new file mode 100644 index 0000000000000000000000000000000000000000..5ea22b427f13bb688c363a2e85cda835c1f42f59 GIT binary patch literal 50705 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 literal 0 HcmV?d00001 diff --git a/assets/interfaces/creatures_creation/Material.material b/assets/interfaces/creatures_creation/Material.material new file mode 100644 index 0000000000000000000000000000000000000000..48372e312766a4f84d5d42791f1d3b47bd721ecf GIT binary patch literal 754 zcmVuHOQ$I-vk$cM>jJ?L*rV}>uYuM2l8+gJ8KLHpU7$XH%09XK804%#p9L2>Efm8SXV^w~d&&wfwI*^EK2HWd99(qjNR4p+&`T(K)8z$S^U| zM(dI;glQjT-2WE;Gkjex_H|g7eNE#(0|9^PEK4fH&h0hMTV0y|PdKl0RvGGqyP6R0 z!wj2YD$XHX%5f@=Bqm(c%8)7wSD0m8&;%Q)LS>yp;UpJ|@3C7gw~<<_5(JTqnx(b} zZ^lMVH&jTOgEIl!%E=n^Y1+e;oLt2aF-_)lP{NTl%%i)Iv1<~#NV(QEI{ynC_v!x$ zzRH}5(KT(|#U;87g5$cxs3CrE?5VO=Dov}DAY{2Dw<^L~Pohu^mr}8}o`j821spOo zGB$`1G2;J#{}nJo{1}adhX4{26OM%k(?oo@>A{$8S!|XMZe+g40|TRm{{Xt>CjL(V z6T9YAsBS?UolZ`48w3J@w6$pDWl>xgB2QkU>U6u{E_N^bu=21T*k~Gnhp3^gA~hl- zBT14JhA~hAA%)6{2NGZ;J;)L*qmj7M{=WfpG6-K;4yI!w8VA6E`~j3Ol1)J&SA98E zoSisBm*Sn7{m>7N5yzI?Vhsn~Hb;BhAz0Sd@F9rLk#q(eu~mh(nwH*1ig8tBGMaI)ww z$|e-20U0Nkdq+SO kW20$DZZUxt!|Wm4Do2%}67^&LB~^ttPNwEE0a8;#Lz}lzYXATM literal 0 HcmV?d00001 diff --git a/assets/interfaces/creatures_creation/creature_creation.png b/assets/interfaces/creatures_creation/creature_creation.png new file mode 100644 index 0000000000000000000000000000000000000000..35ae3d24cba346de19dc4c29d62e6b823ca85b45 GIT binary patch literal 28177 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ℑovs4NSA$pP92Te6XubU`5Iy=e2t7(EP1{b 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 RF=rsG3GON`>?x=S{RLBg{67Ey literal 0 HcmV?d00001 diff --git a/assets/interfaces/previous.png b/assets/interfaces/previous.png new file mode 100644 index 0000000000000000000000000000000000000000..bb026b604c9c607581dcba6c9ffcc7ef46c78205 GIT binary patch literal 1088 zcmZvaT}YKd5QfKNhFV%le@JA?(uH7DLPb=d9H~*$lrD@&120N)q7tDZNTb3O3kH-5 z?U$e{L&(X>K(Q1FtSciXv%(+)i9jl_+UA@fJf1$--PwWiU>0k5h6P06hHtNfB+D{Syt39 zRS*GYAOb{i|2w3h0>Z!qgn-U&ib{*ddl6+8B1R-Br2MmrP z%MHB|_Cm@i);R>SIwM~LLS%nTBq)Or*l`b{zyiefY{dhsNdN!SlNPsp#a z>71D4ZmK;}*VE7u_bTvkeBkqnpNHQy6t=**fNtS{BaGwL>uCLYgN zcp&Y4_Mz+XPha0VTTv7P3kI8mnQu=&Y#nJEKJ_jCa?9E^OZ&P?Cx*wq=LHTHyOi{) z(X0EK?|yG=UEJ{TM?3UxPT1Q$*i}PWSGJWOyLYqTN&EEAm4jtzz0FM0M(`+c2jCvUxZ@bpsZzRr<^EqktQ+&NG%zoWWy Pb;u9QD++ex?mzPfN%{LN literal 0 HcmV?d00001 diff --git a/assets/interfaces/rollback.png b/assets/interfaces/rollback.png new file mode 100644 index 0000000000000000000000000000000000000000..e9d9ea569d657ceb86848aff64af1ffc255e4e3f GIT binary patch literal 1046 zcmZuwO-R&H5T9JrF!i*AsD#OjzQnYGI%prZQUj}*iHLbn=n&PADP&j&EeksZbJ?Wu zV0G)0WU517q!4JBLV1`@B6~3pQP!>3{8x}&w+HXNd4Fc!?_=KoW<&jvyqv-u0La6m zkw)7~g1Iis*6!ZkUjQL!h&I*Q(I=))Y~D^j7^*5F%uGax=$umk0bl?EKmcb|X`fU< z1ek#c5W)Q~NkIjKfe8o!o!yjHmJaVllv#)vk(~3)N+gJEF_9vQ1&C^^QS~Y+EKE#D z=+KE5Rwf~2bmZ7GDWRZaN1jkE!=Xo)s8?Nuh9b#;#JqxO{w%{9mjK!D)6MfqZ$k)YVO<#%g}+Y9?HHkLo=?^<~HYH5D7CHm+^>BQup*PX=& z;{NuT-pMBmOXI`wE}5ws>ib&O`kwE1Jj))0*`=bnec#vKd9&Vr%;;H&Erd2t)s|0h QZ7vN|Vr_loaZUTxe`?a?cK`qY literal 0 HcmV?d00001 diff --git a/assets/interfaces/themes/khanat_create_creature.theme b/assets/interfaces/themes/khanat_create_creature.theme new file mode 100644 index 0000000000000000000000000000000000000000..eb030267c78dd8c28d88cb6af0dc7b97a6bbbc9d GIT binary patch literal 2755 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 vU6Y<)KPt&Z2-`lj;}0H9J)B*xjW2B# String: - var error_message: String = validate_json(json) - if not error_message.empty(): - return error_message + var error_message: String = validate_json(json) + if not error_message.empty(): + return error_message - var indentation := "" - if spaces > 0: - for i in spaces: - indentation += " " - else: - indentation = "\t" + var indentation := "" + if spaces > 0: + for i in spaces: + indentation += " " + else: + indentation = "\t" - var quotation_start := -1 - var char_position := 0 - for i in json: - # Avoid formating inside strings. - if i == "\"": - if quotation_start == -1: - quotation_start = char_position - elif json[char_position - 1] != "\\": - quotation_start = -1 + var quotation_start := -1 + var char_position := 0 + for i in json: + # Avoid formating inside strings. + if i == "\"": + if quotation_start == -1: + quotation_start = char_position + elif json[char_position - 1] != "\\": + quotation_start = -1 - char_position += 1 + char_position += 1 - continue - elif quotation_start != -1: - char_position += 1 + continue + elif quotation_start != -1: + char_position += 1 - continue + continue - match i: - # Remove pre-existing formatting. - " ", "\n", "\t": - json[char_position] = "" - char_position -= 1 + match i: + # Remove pre-existing formatting. + " ", "\n", "\t": + json[char_position] = "" + char_position -= 1 - "{", "[", ",": - if json[char_position + 1] != "}" and\ - json[char_position + 1] != "]": - json = json.insert(char_position + 1, "\n") - char_position += 1 - "}", "]": - if json[char_position - 1] != "{" and\ - json[char_position - 1] != "[": - json = json.insert(char_position, "\n") - char_position += 1 - ":": - json = json.insert(char_position + 1, " ") - char_position += 1 - - char_position += 1 + "{", "[", ",": + if json[char_position + 1] != "}" and\ + json[char_position + 1] != "]": + json = json.insert(char_position + 1, "\n") + char_position += 1 + "}", "]": + if json[char_position - 1] != "{" and\ + json[char_position - 1] != "[": + json = json.insert(char_position, "\n") + char_position += 1 + ":": + json = json.insert(char_position + 1, " ") + char_position += 1 + + char_position += 1 - for i in [["{", "}"], ["[", "]"]]: - var bracket_start: int = json.find(i[0]) - while bracket_start != -1: - var bracket_end: int = json.find("\n", bracket_start) - var bracket_count := 0 - while bracket_end != - 1: - if json[bracket_end - 1] == i[0]: - bracket_count += 1 - elif json[bracket_end + 1] == i[1]: - bracket_count -= 1 + for i in [["{", "}"], ["[", "]"]]: + var bracket_start: int = json.find(i[0]) + while bracket_start != -1: + var bracket_end: int = json.find("\n", bracket_start) + var bracket_count := 0 + while bracket_end != - 1: + if json[bracket_end - 1] == i[0]: + bracket_count += 1 + elif json[bracket_end + 1] == i[1]: + bracket_count -= 1 - # Move through the indentation to see if there is a match. - while json[bracket_end + 1] == indentation: - bracket_end += 1 + # Move through the indentation to see if there is a match. + while json[bracket_end + 1] == indentation: + bracket_end += 1 - if json[bracket_end + 1] == i[1]: - bracket_count -= 1 + if json[bracket_end + 1] == i[1]: + bracket_count -= 1 - if bracket_count <= 0: - break + if bracket_count <= 0: + break - bracket_end = json.find("\n", bracket_end + 1) + bracket_end = json.find("\n", bracket_end + 1) - # Skip one newline so the end bracket doesn't get indented. - bracket_end = json.rfind("\n", json.rfind("\n", bracket_end) - 1) - while bracket_end > bracket_start: - json = json.insert(bracket_end + 1, indentation) - bracket_end = json.rfind("\n", bracket_end - 1) + # Skip one newline so the end bracket doesn't get indented. + bracket_end = json.rfind("\n", json.rfind("\n", bracket_end) - 1) + while bracket_end > bracket_start: + json = json.insert(bracket_end + 1, indentation) + bracket_end = json.rfind("\n", bracket_end - 1) - bracket_start = json.find(i[0], bracket_start + 1) + bracket_start = json.find(i[0], bracket_start + 1) - return json + return json # Takes valid JSON (if invalid, it will return a error according with Godot's # 'validade_json()' method), returning JSON in a single line. static func uglify_json(json: String) -> String: - var quotation_start := -1 - var char_position := 0 - for i in json: - # Avoid formating inside strings. - if i == "\"": - if quotation_start == -1: - quotation_start = char_position - elif json[char_position - 1] != "\\": - quotation_start = -1 + var quotation_start := -1 + var char_position := 0 + for i in json: + # Avoid formating inside strings. + if i == "\"": + if quotation_start == -1: + quotation_start = char_position + elif json[char_position - 1] != "\\": + quotation_start = -1 - char_position += 1 + char_position += 1 - continue - elif quotation_start != -1: - char_position += 1 + continue + elif quotation_start != -1: + char_position += 1 - continue + continue - if i == " " or i == "\n" or i == "\t": - json[char_position] = "" - char_position -= 1 + if i == " " or i == "\n" or i == "\t": + json[char_position] = "" + char_position -= 1 - char_position += 1 + char_position += 1 - return json + return json diff --git a/ressources/themes/creature_creation.tres b/ressources/themes/creature_creation.tres new file mode 100644 index 0000000..1907c44 --- /dev/null +++ b/ressources/themes/creature_creation.tres @@ -0,0 +1,520 @@ +[gd_resource type="Theme" load_steps=17 format=2] + +[ext_resource path="res://assets/interfaces/creatures_creation/creature_creation.png" type="Texture" id=1] + +[sub_resource type="StyleBoxFlat" id=1] +bg_color = Color( 0.0823529, 0.0666667, 0.258824, 1 ) + +[sub_resource type="StyleBoxFlat" id=2] +bg_color = Color( 0.27451, 0.239216, 0.862745, 1 ) +border_width_left = 5 +border_width_top = 5 +border_width_right = 5 +border_width_bottom = 5 +border_color = Color( 0.0235294, 0.054902, 0.313726, 1 ) +border_blend = true +corner_radius_top_left = 5 +corner_radius_top_right = 5 +corner_radius_bottom_right = 5 +corner_radius_bottom_left = 5 + +[sub_resource type="StyleBoxFlat" id=3] +bg_color = Color( 0.164706, 0.121569, 0.87451, 1 ) +border_width_left = 5 +border_width_top = 5 +border_width_right = 5 +border_width_bottom = 5 +border_color = Color( 0.141176, 0.109804, 0.513726, 1 ) +border_blend = true +corner_radius_top_left = 5 +corner_radius_top_right = 5 +corner_radius_bottom_right = 5 +corner_radius_bottom_left = 5 + +[sub_resource type="StyleBoxFlat" id=4] +bg_color = Color( 0.129412, 0.0980392, 0.690196, 1 ) +border_width_left = 5 +border_width_top = 5 +border_width_right = 5 +border_width_bottom = 5 +border_color = Color( 0.0509804, 0.0352941, 0.266667, 1 ) +border_blend = true +corner_radius_top_left = 5 +corner_radius_top_right = 5 +corner_radius_bottom_right = 5 +corner_radius_bottom_left = 5 +shadow_color = Color( 0.101961, 0.0862745, 0.411765, 0.717647 ) +shadow_size = 2 + +[sub_resource type="StyleBoxFlat" id=5] +bg_color = Color( 0.0823529, 0.0392157, 0.784314, 1 ) +corner_detail = 1 + +[sub_resource type="StyleBoxFlat" id=6] +bg_color = Color( 0.109804, 0.0784314, 0.619608, 1 ) + +[sub_resource type="StyleBoxFlat" id=7] +bg_color = Color( 0.0941176, 0.0666667, 0.501961, 1 ) + +[sub_resource type="StyleBoxTexture" id=8] +texture = ExtResource( 1 ) +region_rect = Rect2( 0, 0, 451, 450 ) +margin_left = 41.9886 +margin_right = 42.0 +margin_top = 42.0 +margin_bottom = 42.0 + +[sub_resource type="StyleBoxFlat" id=9] +bg_color = Color( 0.0823529, 0.0392157, 0.784314, 1 ) +border_width_top = 1 +border_color = Color( 0.0431373, 0.0588235, 0.266667, 1 ) +border_blend = true +corner_radius_top_left = 1 +corner_radius_top_right = 1 + +[sub_resource type="StyleBoxFlat" id=10] +bg_color = Color( 0.109804, 0.0784314, 0.619608, 1 ) + +[sub_resource type="StyleBoxFlat" id=11] +bg_color = Color( 0.0941176, 0.0666667, 0.501961, 1 ) + +[sub_resource type="StyleBoxFlat" id=12] +bg_color = Color( 0.164706, 0.121569, 0.87451, 1 ) + +[sub_resource type="StyleBoxFlat" id=13] +bg_color = Color( 0.0823529, 0.0392157, 0.784314, 1 ) + +[sub_resource type="StyleBoxTexture" id=14] +texture = ExtResource( 1 ) +region_rect = Rect2( 0, 0, 451, 450 ) + +[sub_resource type="StyleBoxFlat" id=15] +bg_color = Color( 0.0941176, 0.0666667, 0.501961, 1 ) + +[resource] +Button/colors/font_color = Color( 0.878431, 0.529412, 0.0784314, 1 ) +Button/colors/font_color_disabled = Color( 0.384314, 0.231373, 0.0392157, 1 ) +Button/colors/font_color_hover = Color( 0.878431, 0.529412, 0.0784314, 1 ) +Button/colors/font_color_pressed = Color( 0.878431, 0.529412, 0.0784314, 1 ) +Button/constants/hseparation = 2 +Button/fonts/font = null +Button/styles/disabled = SubResource( 1 ) +Button/styles/focus = null +Button/styles/hover = SubResource( 2 ) +Button/styles/normal = SubResource( 3 ) +Button/styles/pressed = SubResource( 4 ) +CheckBox/colors/font_color = Color( 0.878431, 0.529412, 0.0784314, 1 ) +CheckBox/colors/font_color_disabled = Color( 0.384314, 0.231373, 0.0392157, 1 ) +CheckBox/colors/font_color_hover = Color( 0.878431, 0.529412, 0.0784314, 1 ) +CheckBox/colors/font_color_hover_pressed = Color( 0.878431, 0.529412, 0.0784314, 1 ) +CheckBox/colors/font_color_pressed = Color( 0.878431, 0.529412, 0.0784314, 1 ) +CheckBox/constants/check_vadjust = 0 +CheckBox/constants/hseparation = 4 +CheckBox/fonts/font = null +CheckBox/icons/checked = null +CheckBox/icons/radio_checked = null +CheckBox/icons/radio_unchecked = null +CheckBox/icons/unchecked = null +CheckBox/styles/disabled = null +CheckBox/styles/focus = null +CheckBox/styles/hover = null +CheckBox/styles/hover_pressed = null +CheckBox/styles/normal = null +CheckBox/styles/pressed = null +CheckButton/colors/font_color = Color( 0.878431, 0.529412, 0.0784314, 1 ) +CheckButton/colors/font_color_disabled = Color( 0.384314, 0.231373, 0.0392157, 1 ) +CheckButton/colors/font_color_hover = Color( 0.878431, 0.529412, 0.0784314, 1 ) +CheckButton/colors/font_color_hover_pressed = Color( 0.878431, 0.529412, 0.0784314, 1 ) +CheckButton/colors/font_color_pressed = Color( 0.878431, 0.529412, 0.0784314, 1 ) +CheckButton/constants/check_vadjust = 0 +CheckButton/constants/hseparation = 4 +CheckButton/fonts/font = null +CheckButton/icons/off = null +CheckButton/icons/off_disabled = null +CheckButton/icons/on = null +CheckButton/icons/on_disabled = null +CheckButton/styles/disabled = null +CheckButton/styles/focus = null +CheckButton/styles/hover = null +CheckButton/styles/hover_pressed = null +CheckButton/styles/normal = null +CheckButton/styles/pressed = null +ColorPicker/constants/h_width = 30 +ColorPicker/constants/label_width = 10 +ColorPicker/constants/margin = 4 +ColorPicker/constants/sv_height = 256 +ColorPicker/constants/sv_width = 256 +ColorPicker/icons/add_preset = null +ColorPicker/icons/color_hue = null +ColorPicker/icons/color_sample = null +ColorPicker/icons/overbright_indicator = null +ColorPicker/icons/preset_bg = null +ColorPicker/icons/screen_picker = null +ColorPickerButton/colors/font_color = Color( 0, 0, 0, 1 ) +ColorPickerButton/colors/font_color_disabled = Color( 0, 0, 0, 1 ) +ColorPickerButton/colors/font_color_hover = Color( 0, 0, 0, 1 ) +ColorPickerButton/colors/font_color_pressed = Color( 0, 0, 0, 1 ) +ColorPickerButton/constants/hseparation = 2 +ColorPickerButton/fonts/font = null +ColorPickerButton/icons/bg = null +ColorPickerButton/styles/disabled = null +ColorPickerButton/styles/focus = null +ColorPickerButton/styles/hover = null +ColorPickerButton/styles/normal = null +ColorPickerButton/styles/pressed = null +Dialogs/constants/button_margin = 32 +Dialogs/constants/margin = 8 +FileDialog/colors/file_icon_modulate = Color( 0, 0, 0, 1 ) +FileDialog/colors/files_disabled = Color( 0, 0, 0, 1 ) +FileDialog/colors/folder_icon_modulate = Color( 0, 0, 0, 1 ) +FileDialog/icons/file = null +FileDialog/icons/folder = null +FileDialog/icons/parent_folder = null +FileDialog/icons/reload = null +FileDialog/icons/toggle_hidden = null +Fonts/fonts/large = null +Fonts/fonts/normal = null +GraphEdit/colors/activity = Color( 0, 0, 0, 1 ) +GraphEdit/colors/grid_major = Color( 0, 0, 0, 1 ) +GraphEdit/colors/grid_minor = Color( 0, 0, 0, 1 ) +GraphEdit/colors/selection_fill = Color( 0, 0, 0, 1 ) +GraphEdit/colors/selection_stroke = Color( 0, 0, 0, 1 ) +GraphEdit/constants/bezier_len_neg = 160 +GraphEdit/constants/bezier_len_pos = 80 +GraphEdit/constants/port_grab_distance_horizontal = 48 +GraphEdit/constants/port_grab_distance_vertical = 6 +GraphEdit/icons/minimap = null +GraphEdit/icons/minus = null +GraphEdit/icons/more = null +GraphEdit/icons/reset = null +GraphEdit/icons/snap = null +GraphEdit/styles/bg = null +GraphEditMinimap/colors/resizer_color = Color( 0, 0, 0, 1 ) +GraphEditMinimap/icons/resizer = null +GraphEditMinimap/styles/bg = null +GraphEditMinimap/styles/camera = null +GraphEditMinimap/styles/node = null +GraphNode/colors/close_color = Color( 0, 0, 0, 1 ) +GraphNode/colors/resizer_color = Color( 0, 0, 0, 1 ) +GraphNode/colors/title_color = Color( 0, 0, 0, 1 ) +GraphNode/constants/close_offset = 18 +GraphNode/constants/port_offset = 3 +GraphNode/constants/separation = 1 +GraphNode/constants/title_offset = 20 +GraphNode/fonts/title_font = null +GraphNode/icons/close = null +GraphNode/icons/port = null +GraphNode/icons/resizer = null +GraphNode/styles/breakpoint = null +GraphNode/styles/comment = null +GraphNode/styles/commentfocus = null +GraphNode/styles/defaultfocus = null +GraphNode/styles/defaultframe = null +GraphNode/styles/frame = null +GraphNode/styles/position = null +GraphNode/styles/selectedframe = null +GridContainer/constants/hseparation = 4 +GridContainer/constants/vseparation = 4 +HBoxContainer/constants/separation = 4 +HScrollBar/icons/decrement = null +HScrollBar/icons/decrement_highlight = null +HScrollBar/icons/increment = null +HScrollBar/icons/increment_highlight = null +HScrollBar/styles/grabber = null +HScrollBar/styles/grabber_highlight = null +HScrollBar/styles/grabber_pressed = null +HScrollBar/styles/scroll = null +HScrollBar/styles/scroll_focus = null +HSeparator/constants/separation = 4 +HSeparator/styles/separator = null +HSlider/icons/grabber = null +HSlider/icons/grabber_disabled = null +HSlider/icons/grabber_highlight = null +HSlider/icons/tick = null +HSlider/styles/grabber_area = null +HSlider/styles/grabber_area_highlight = null +HSlider/styles/slider = null +HSplitContainer/constants/autohide = 1 +HSplitContainer/constants/separation = 12 +HSplitContainer/icons/grabber = null +HSplitContainer/styles/bg = null +Icons/icons/close = null +ItemList/colors/font_color = Color( 0, 0, 0, 1 ) +ItemList/colors/font_color_selected = Color( 0, 0, 0, 1 ) +ItemList/colors/guide_color = Color( 0, 0, 0, 1 ) +ItemList/constants/hseparation = 4 +ItemList/constants/icon_margin = 4 +ItemList/constants/line_separation = 2 +ItemList/constants/vseparation = 2 +ItemList/fonts/font = null +ItemList/styles/bg = null +ItemList/styles/bg_focus = null +ItemList/styles/cursor = null +ItemList/styles/cursor_unfocused = null +ItemList/styles/selected = null +ItemList/styles/selected_focus = null +Label/colors/font_color = Color( 0.87451, 0.611765, 0.219608, 1 ) +Label/colors/font_color_shadow = Color( 0.305882, 0.215686, 0.105882, 1 ) +Label/colors/font_outline_modulate = Color( 0, 0, 0, 1 ) +Label/constants/line_spacing = 3 +Label/constants/shadow_as_outline = 0 +Label/constants/shadow_offset_x = 1 +Label/constants/shadow_offset_y = 1 +Label/fonts/font = null +Label/styles/normal = null +LineEdit/colors/clear_button_color = Color( 0.878431, 0.529412, 0.0784314, 1 ) +LineEdit/colors/clear_button_color_pressed = Color( 0.878431, 0.529412, 0.0784314, 1 ) +LineEdit/colors/cursor_color = Color( 0.878431, 0.529412, 0.0784314, 1 ) +LineEdit/colors/font_color = Color( 0.878431, 0.529412, 0.0784314, 1 ) +LineEdit/colors/font_color_selected = Color( 0.878431, 0.529412, 0.0784314, 1 ) +LineEdit/colors/font_color_uneditable = Color( 0.878431, 0.529412, 0.0784314, 1 ) +LineEdit/colors/selection_color = Color( 0.878431, 0.529412, 0.0784314, 1 ) +LineEdit/constants/minimum_spaces = 12 +LineEdit/fonts/font = null +LineEdit/icons/clear = null +LineEdit/styles/focus = SubResource( 5 ) +LineEdit/styles/normal = SubResource( 6 ) +LineEdit/styles/read_only = SubResource( 7 ) +LinkButton/colors/font_color = Color( 0, 0, 0, 1 ) +LinkButton/colors/font_color_hover = Color( 0, 0, 0, 1 ) +LinkButton/colors/font_color_pressed = Color( 0, 0, 0, 1 ) +LinkButton/constants/underline_spacing = 2 +LinkButton/fonts/font = null +LinkButton/styles/focus = null +MarginContainer/constants/margin_bottom = 0 +MarginContainer/constants/margin_left = 0 +MarginContainer/constants/margin_right = 0 +MarginContainer/constants/margin_top = 0 +MenuButton/colors/font_color = Color( 0.878431, 0.529412, 0.0784314, 1 ) +MenuButton/colors/font_color_disabled = Color( 0.384314, 0.231373, 0.0392157, 1 ) +MenuButton/colors/font_color_hover = Color( 0.878431, 0.529412, 0.0784314, 1 ) +MenuButton/colors/font_color_pressed = Color( 0.878431, 0.529412, 0.0784314, 1 ) +MenuButton/constants/hseparation = 3 +MenuButton/fonts/font = null +MenuButton/styles/disabled = null +MenuButton/styles/focus = null +MenuButton/styles/hover = null +MenuButton/styles/normal = null +MenuButton/styles/pressed = null +OptionButton/colors/font_color = Color( 0.878431, 0.529412, 0.0784314, 1 ) +OptionButton/colors/font_color_disabled = Color( 0.384314, 0.231373, 0.0392157, 1 ) +OptionButton/colors/font_color_hover = Color( 0.878431, 0.529412, 0.0784314, 1 ) +OptionButton/colors/font_color_pressed = Color( 0.878431, 0.529412, 0.0784314, 1 ) +OptionButton/constants/arrow_margin = 2 +OptionButton/constants/hseparation = 2 +OptionButton/fonts/font = null +OptionButton/icons/arrow = null +OptionButton/styles/disabled = null +OptionButton/styles/focus = null +OptionButton/styles/hover = null +OptionButton/styles/normal = null +OptionButton/styles/pressed = null +Panel/styles/panel = SubResource( 8 ) +PanelContainer/styles/panel = null +PopupDialog/styles/panel = null +PopupMenu/colors/font_color = Color( 0, 0, 0, 1 ) +PopupMenu/colors/font_color_accel = Color( 0, 0, 0, 1 ) +PopupMenu/colors/font_color_disabled = Color( 0, 0, 0, 1 ) +PopupMenu/colors/font_color_hover = Color( 0, 0, 0, 1 ) +PopupMenu/colors/font_color_separator = Color( 0, 0, 0, 1 ) +PopupMenu/constants/hseparation = 4 +PopupMenu/constants/vseparation = 4 +PopupMenu/fonts/font = null +PopupMenu/icons/checked = null +PopupMenu/icons/radio_checked = null +PopupMenu/icons/radio_unchecked = null +PopupMenu/icons/submenu = null +PopupMenu/icons/unchecked = null +PopupMenu/styles/hover = null +PopupMenu/styles/labeled_separator_left = null +PopupMenu/styles/labeled_separator_right = null +PopupMenu/styles/panel = null +PopupMenu/styles/panel_disabled = null +PopupMenu/styles/separator = null +PopupPanel/styles/panel = null +ProgressBar/colors/font_color = Color( 0, 0, 0, 1 ) +ProgressBar/colors/font_color_shadow = Color( 0, 0, 0, 1 ) +ProgressBar/fonts/font = null +ProgressBar/styles/bg = null +ProgressBar/styles/fg = null +RichTextLabel/colors/default_color = Color( 0, 0, 0, 1 ) +RichTextLabel/colors/font_color_selected = Color( 0, 0, 0, 1 ) +RichTextLabel/colors/font_color_shadow = Color( 0, 0, 0, 1 ) +RichTextLabel/colors/selection_color = Color( 0, 0, 0, 1 ) +RichTextLabel/constants/line_separation = 1 +RichTextLabel/constants/shadow_as_outline = 0 +RichTextLabel/constants/shadow_offset_x = 1 +RichTextLabel/constants/shadow_offset_y = 1 +RichTextLabel/constants/table_hseparation = 3 +RichTextLabel/constants/table_vseparation = 3 +RichTextLabel/fonts/bold_font = null +RichTextLabel/fonts/bold_italics_font = null +RichTextLabel/fonts/italics_font = null +RichTextLabel/fonts/mono_font = null +RichTextLabel/fonts/normal_font = null +RichTextLabel/styles/focus = null +RichTextLabel/styles/normal = null +ScrollContainer/styles/bg = null +SpinBox/icons/updown = null +TabContainer/colors/font_color_bg = Color( 0.878431, 0.529412, 0.0784314, 1 ) +TabContainer/colors/font_color_disabled = Color( 0.384314, 0.231373, 0.0392157, 1 ) +TabContainer/colors/font_color_fg = Color( 0.878431, 0.529412, 0.0784314, 1 ) +TabContainer/constants/hseparation = 4 +TabContainer/constants/label_valign_bg = 2 +TabContainer/constants/label_valign_fg = 0 +TabContainer/constants/side_margin = 8 +TabContainer/constants/top_margin = 24 +TabContainer/fonts/font = null +TabContainer/icons/decrement = null +TabContainer/icons/decrement_highlight = null +TabContainer/icons/increment = null +TabContainer/icons/increment_highlight = null +TabContainer/icons/menu = null +TabContainer/icons/menu_highlight = null +TabContainer/styles/panel = SubResource( 9 ) +TabContainer/styles/tab_bg = SubResource( 10 ) +TabContainer/styles/tab_disabled = SubResource( 11 ) +TabContainer/styles/tab_fg = SubResource( 12 ) +Tabs/colors/font_color_bg = Color( 0.878431, 0.529412, 0.0784314, 1 ) +Tabs/colors/font_color_disabled = Color( 0.878431, 0.529412, 0.0784314, 1 ) +Tabs/colors/font_color_fg = Color( 0.878431, 0.529412, 0.0784314, 1 ) +Tabs/constants/hseparation = 4 +Tabs/constants/label_valign_bg = 2 +Tabs/constants/label_valign_fg = 0 +Tabs/constants/top_margin = 24 +Tabs/fonts/font = null +Tabs/icons/close = null +Tabs/icons/decrement = null +Tabs/icons/decrement_highlight = null +Tabs/icons/increment = null +Tabs/icons/increment_highlight = null +Tabs/styles/button = null +Tabs/styles/button_pressed = null +Tabs/styles/panel = null +Tabs/styles/tab_bg = null +Tabs/styles/tab_disabled = null +Tabs/styles/tab_fg = null +TextEdit/colors/background_color = Color( 0.878431, 0.529412, 0.0784314, 1 ) +TextEdit/colors/bookmark_color = Color( 0.878431, 0.529412, 0.0784314, 1 ) +TextEdit/colors/brace_mismatch_color = Color( 0.878431, 0.529412, 0.0784314, 1 ) +TextEdit/colors/breakpoint_color = Color( 0.878431, 0.529412, 0.0784314, 1 ) +TextEdit/colors/caret_background_color = Color( 0.878431, 0.529412, 0.0784314, 1 ) +TextEdit/colors/caret_color = Color( 0.878431, 0.529412, 0.0784314, 1 ) +TextEdit/colors/code_folding_color = Color( 0.878431, 0.529412, 0.0784314, 1 ) +TextEdit/colors/completion_background_color = Color( 0.878431, 0.529412, 0.0784314, 1 ) +TextEdit/colors/completion_existing_color = Color( 0.878431, 0.529412, 0.0784314, 1 ) +TextEdit/colors/completion_font_color = Color( 0.878431, 0.529412, 0.0784314, 1 ) +TextEdit/colors/completion_scroll_color = Color( 0.878431, 0.529412, 0.0784314, 1 ) +TextEdit/colors/completion_selected_color = Color( 0.878431, 0.529412, 0.0784314, 1 ) +TextEdit/colors/current_line_color = Color( 0.878431, 0.529412, 0.0784314, 1 ) +TextEdit/colors/executing_line_color = Color( 0.878431, 0.529412, 0.0784314, 1 ) +TextEdit/colors/font_color = Color( 0.878431, 0.529412, 0.0784314, 1 ) +TextEdit/colors/font_color_readonly = Color( 0.878431, 0.529412, 0.0784314, 1 ) +TextEdit/colors/font_color_selected = Color( 0.878431, 0.529412, 0.0784314, 1 ) +TextEdit/colors/function_color = Color( 0.878431, 0.529412, 0.0784314, 1 ) +TextEdit/colors/line_number_color = Color( 0.878431, 0.529412, 0.0784314, 1 ) +TextEdit/colors/mark_color = Color( 0.878431, 0.529412, 0.0784314, 1 ) +TextEdit/colors/member_variable_color = Color( 0.878431, 0.529412, 0.0784314, 1 ) +TextEdit/colors/number_color = Color( 0.878431, 0.529412, 0.0784314, 1 ) +TextEdit/colors/safe_line_number_color = Color( 0.878431, 0.529412, 0.0784314, 1 ) +TextEdit/colors/selection_color = Color( 0.878431, 0.529412, 0.0784314, 1 ) +TextEdit/colors/symbol_color = Color( 0.878431, 0.529412, 0.0784314, 1 ) +TextEdit/colors/word_highlighted_color = Color( 0.878431, 0.529412, 0.0784314, 1 ) +TextEdit/constants/completion_lines = 7 +TextEdit/constants/completion_max_width = 50 +TextEdit/constants/completion_scroll_width = 3 +TextEdit/constants/line_spacing = 4 +TextEdit/fonts/font = null +TextEdit/icons/fold = null +TextEdit/icons/folded = null +TextEdit/icons/space = null +TextEdit/icons/tab = null +TextEdit/styles/completion = null +TextEdit/styles/focus = null +TextEdit/styles/normal = SubResource( 13 ) +TextEdit/styles/read_only = null +ToolButton/colors/font_color = Color( 0.878431, 0.529412, 0.0784314, 1 ) +ToolButton/colors/font_color_disabled = Color( 0.384314, 0.231373, 0.0392157, 1 ) +ToolButton/colors/font_color_hover = Color( 0.878431, 0.529412, 0.0784314, 1 ) +ToolButton/colors/font_color_pressed = Color( 0.878431, 0.529412, 0.0784314, 1 ) +ToolButton/constants/hseparation = 3 +ToolButton/fonts/font = null +ToolButton/styles/disabled = null +ToolButton/styles/focus = null +ToolButton/styles/hover = null +ToolButton/styles/normal = null +ToolButton/styles/pressed = null +TooltipLabel/colors/font_color = Color( 0, 0, 0, 1 ) +TooltipLabel/colors/font_color_shadow = Color( 0, 0, 0, 1 ) +TooltipLabel/constants/shadow_offset_x = 1 +TooltipLabel/constants/shadow_offset_y = 1 +TooltipLabel/fonts/font = null +TooltipPanel/styles/panel = SubResource( 14 ) +Tree/colors/custom_button_font_highlight = Color( 0.878431, 0.529412, 0.0784314, 1 ) +Tree/colors/drop_position_color = Color( 0.878431, 0.529412, 0.0784314, 1 ) +Tree/colors/font_color = Color( 0.878431, 0.529412, 0.0784314, 1 ) +Tree/colors/font_color_selected = Color( 0.878431, 0.529412, 0.0784314, 1 ) +Tree/colors/guide_color = Color( 0.878431, 0.529412, 0.0784314, 1 ) +Tree/colors/relationship_line_color = Color( 0.878431, 0.529412, 0.0784314, 1 ) +Tree/colors/title_button_color = Color( 0.878431, 0.529412, 0.0784314, 1 ) +Tree/constants/button_margin = 4 +Tree/constants/draw_guides = 1 +Tree/constants/draw_relationship_lines = 0 +Tree/constants/hseparation = 4 +Tree/constants/item_margin = 12 +Tree/constants/scroll_border = 4 +Tree/constants/scroll_speed = 12 +Tree/constants/vseparation = 4 +Tree/fonts/font = null +Tree/fonts/title_button_font = null +Tree/icons/arrow = null +Tree/icons/arrow_collapsed = null +Tree/icons/checked = null +Tree/icons/select_arrow = null +Tree/icons/unchecked = null +Tree/icons/updown = null +Tree/styles/bg = SubResource( 15 ) +Tree/styles/bg_focus = null +Tree/styles/button_pressed = null +Tree/styles/cursor = null +Tree/styles/cursor_unfocused = null +Tree/styles/custom_button = null +Tree/styles/custom_button_hover = null +Tree/styles/custom_button_pressed = null +Tree/styles/selected = null +Tree/styles/selected_focus = null +Tree/styles/title_button_hover = null +Tree/styles/title_button_normal = null +Tree/styles/title_button_pressed = null +VBoxContainer/constants/separation = 4 +VScrollBar/icons/decrement = null +VScrollBar/icons/decrement_highlight = null +VScrollBar/icons/increment = null +VScrollBar/icons/increment_highlight = null +VScrollBar/styles/grabber = null +VScrollBar/styles/grabber_highlight = null +VScrollBar/styles/grabber_pressed = null +VScrollBar/styles/scroll = null +VScrollBar/styles/scroll_focus = null +VSeparator/constants/separation = 4 +VSeparator/styles/separator = null +VSlider/icons/grabber = null +VSlider/icons/grabber_disabled = null +VSlider/icons/grabber_highlight = null +VSlider/icons/tick = null +VSlider/styles/grabber_area = null +VSlider/styles/grabber_area_highlight = null +VSlider/styles/slider = null +VSplitContainer/constants/autohide = 1 +VSplitContainer/constants/separation = 12 +VSplitContainer/icons/grabber = null +VSplitContainer/styles/bg = null +WindowDialog/colors/title_color = Color( 0, 0, 0, 1 ) +WindowDialog/constants/close_h_ofs = 18 +WindowDialog/constants/close_v_ofs = 18 +WindowDialog/constants/scaleborder_size = 4 +WindowDialog/constants/title_height = 20 +WindowDialog/fonts/title_font = null +WindowDialog/icons/close = null +WindowDialog/icons/close_highlight = null +WindowDialog/styles/panel = null diff --git a/ressources/themes/khanat_theme.theme b/ressources/themes/khanat_theme.theme deleted file mode 100644 index 44c16ca54c758a7ec6a3c9721e581c7f8db11fbb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2751 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 FLqmjUIF 1.0: +# move_direction = move_direction.normalized() +# move_direction.y = 0 + + #Config.msg_debug("delta:" + str(delta)) + # Rotation. +# if (self.has_node( "creature" ) and $creature.can_turn()) or self.is_readying_weapon or self.is_weapon_ready: +# self.rotate_y( rotation_speed_factor * orientation ) + + # Animation. + #if self.has_node( "creature" ): +# Config.msg_debug("delta:" + str(delta)) + for i in self.get_children(): +# print("> " + i.get_name()) + for ii in i.get_children(): +# print(">> " + ii.get_name()) + if ii.get_name() == "AnimationPlayer": + ii.play( "idle" ) +# for iii in ii.get_children(): +# print(">>> " + iii.get_name()) + #$creature.AnimationPlayer.play( "idle" ) + #$creature.play( "idle" ) diff --git a/scenes/creature_creation/creature.tscn b/scenes/creature_creation/creature.tscn new file mode 100644 index 0000000..25e781f --- /dev/null +++ b/scenes/creature_creation/creature.tscn @@ -0,0 +1,7 @@ +[gd_scene load_steps=2 format=2] + +[ext_resource path="res://assets/creatures/arche/arche.tscn" type="PackedScene" id=1] + +[node name="spatial" type="Spatial"] + +[node name="arche" parent="." instance=ExtResource( 1 )] diff --git a/scenes/creature_creation/creature_creation.gd b/scenes/creature_creation/creature_creation.gd new file mode 100644 index 0000000..72a4398 --- /dev/null +++ b/scenes/creature_creation/creature_creation.gd @@ -0,0 +1,125 @@ +extends Spatial + + +var animation_object = null +var orientation = 0.0 +var blend_shapes = {} + + +func search_animation( obj ) -> bool: + var ret:bool = false + for i in obj.get_children(): + if i.get_name() == "AnimationPlayer": + animation_object = i + return true + else: + ret = search_animation(i) + if ret == true: + return ret + return false + + +func list_child( obj, father = "" ): + for i in obj.get_children(): + var root = father + "." + str(i.name) + Config.msg_debug(root) + if i is MeshInstance: + Config.msg_debug(root + " -> MeshInstance") + for key in i.get_property_list(): + Config.msg_debug( "property:" + str(key)) + list_child( i, root) + + + +func list_blend_shapes( obj, father = "" ) -> Array: + var ret:Array + for i in obj.get_children(): + var root = father + "." + str(i.name) + if i is MeshInstance: + for key in i.get_property_list(): + if key.name.substr(0, 13) == "blend_shapes/": + # Config.msg_debug( father + "." + i.name + " - " + key.name.substr(13) ) + ret.append(key.name.substr(13)) + list_blend_shapes( i, root) + return ret + +func update_blend_shapes_step( obj, father = "" ): + for i in obj.get_children(): + var root = father + str(i.name) + "." + if i is MeshInstance: + for key in i.get_property_list(): + if key.name.substr(0, 13) == "blend_shapes/": + var blend = key.name.substr(13) + # Config.msg_debug( father + i.name + " - " + key.name.substr(13) ) + if not blend_shapes.has(blend): + blend_shapes[blend] = [] + blend_shapes[blend].append(i) + update_blend_shapes_step( i, root) + + +func update_blend_shapes( obj ): + blend_shapes = {} + update_blend_shapes_step(obj, "") +# for key in blend_shapes: +# Config.msg_debug("key:" + key + " = " + str(blend_shapes[key])) + $control.update_property(blend_shapes) + + +func _ready(): + $control.connect("update_blend" , self, "_on_update_property") + $control.connect( "select_race", self, "_on_select_race" ) + self.change_creature( "res://scenes/creature_creation/arche.tscn" ) + search_animation(self) + update_blend_shapes($creature) + + +func _process( delta ): + animation_object.play( "idle" ) + + +func _input( event ): + # Config.msg_debug(str(event)) + if event is InputEventMouseMotion and Input.is_mouse_button_pressed( 2 ): + if $creature: + $creature.rotate_y( event.relative.x *0.01 ) + + +func change_creature( new_model_path ): + if $creature: + var old_model = $creature + self.remove_child( old_model ) + old_model.queue_free() + var new_model = load( new_model_path ) + if new_model: + new_model = new_model.instance() + new_model.name = "creature" + self.add_child( new_model ) + #new_model.connect( "animation_finished", self, "_on_creature_animation_finished" ) + #new_model.duplicate_meshes() + + +func _on_select_race( race ): + Config.msg_debug(race) + match race: + "arche": + self.change_creature( "res://scenes/creature_creation/arche.tscn" ) + "isidor": + self.change_creature( "res://scenes/creature_creation/isidor.tscn" ) + _: + self.change_creature( "res://scenes/creature_creation/arche.tscn" ) + search_animation(self) + update_blend_shapes($creature) +# for child in $creature.get_children(): +# Config.msg_debug("Child / name:" + child.name) +# list_child($creature) +# var skeleton = child.get_node( "skeleton" ) +# for node in skeleton.get_children(): +# if node is MeshInstance: +# Config.msg_debug("Node / name:" + node.name) +# #node.set( "blend_shapes/"+p_blend_shape_name, p_value ) + + +func _on_update_property(name_property, value): + Config.msg_debug( name_property + ": " + str(value) ) + for i in blend_shapes[name_property]: + i.set( "blend_shapes/"+name_property, value ) diff --git a/scenes/creature_creation/creature_creation.tscn b/scenes/creature_creation/creature_creation.tscn new file mode 100644 index 0000000..a9d27ce --- /dev/null +++ b/scenes/creature_creation/creature_creation.tscn @@ -0,0 +1,26 @@ +[gd_scene load_steps=5 format=2] + +[ext_resource path="res://scenes/creature_creation/creature_creation_menu.tscn" type="PackedScene" id=1] +[ext_resource path="res://scenes/creature_creation/creature.tscn" type="PackedScene" id=2] +[ext_resource path="res://scenes/creature_creation/creature.gd" type="Script" id=3] +[ext_resource path="res://scenes/creature_creation/creature_creation.gd" type="Script" id=4] + +[node name="creature_creation" type="Spatial"] +script = ExtResource( 4 ) + +[node name="control" parent="." instance=ExtResource( 1 )] +size_flags_horizontal = 1 +size_flags_vertical = 1 + +[node name="camera" type="Camera" parent="."] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -1.57491, 1.49725, 3 ) +projection = 1 +current = true +size = 4.0 + +[node name="directional_light" type="DirectionalLight" parent="."] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.20866, 2.21448 ) +light_energy = 2.0 + +[node name="creature" parent="." instance=ExtResource( 2 )] +script = ExtResource( 3 ) diff --git a/scenes/creature_creation/creature_creation_menu.gd b/scenes/creature_creation/creature_creation_menu.gd new file mode 100644 index 0000000..14850d7 --- /dev/null +++ b/scenes/creature_creation/creature_creation_menu.gd @@ -0,0 +1,166 @@ +extends Control + + +signal select_race(race) +signal update_blend(name_property, value) + +var rng = RandomNumberGenerator.new() +var current_race = "arche" + +const syllabe = ["ba", "be", "bi", "bo", "bu", "bou", + "ca", "ce", "ci", "co", "cu", "cou", + "da", "de", "di", "do", "du", "dou", + "fa", "fe", "fi", "fo", "fu", "fou", + "ga", "ge", "gi", "go", "gu", "gou", + "ha", "he", "hi", "ho", "hu", "hou", + "ja", "je", "ji", "jo", "ju", "jou", + "ka", "ke", "ki", "ko", "ku", "kou", + "la", "le", "li", "lo", "lu", "lou", + "ma", "me", "mi", "mo", "mu", "mou", + "na", "ne", "ni", "no", "nu", "nou", + "ma", "me", "mi", "mo", "mu", "mou", + "pa", "pe", "pi", "po", "pu", "pou", + "ra", "re", "ri", "ro", "ru", "rou", + "sa", "se", "si", "so", "su", "sou", + "ta", "te", "ti", "to", "tu", "tou", + "va", "ve", "vi", "vo", "vu", "vou" + ] + +func _ready(): + rng.randomize() + $create/diplay/panel_left/margin/property.hide() + $create/diplay/panel_left/margin/name.hide() + $create/diplay/panel_left/margin/race.show() + + +func _on_arche_pressed(): + current_race = "arche" + emit_signal("select_race", current_race) + + +func _on_isidor_pressed(): + current_race = "isidor" + emit_signal("select_race", current_race) + + +func _on_quit_pressed(): + Config.msg_debug("Quit") + # emit_signal( "quit_pressed" ) + Globals.goto_scene( "res://scenes/interfaces/creatures_menu/creatures_menu_ui.tscn" ) + + +func _on_race_next_pressed(): + $create/diplay/panel_left/margin/race.hide() + $create/diplay/panel_left/margin/property.hide() + $create/diplay/panel_left/margin/name.show() + + +func _on_name_previous_pressed(): + $create/diplay/panel_left/margin/property.hide() + $create/diplay/panel_left/margin/name.hide() + $create/diplay/panel_left/margin/race.show() + + +func _on_name_next_pressed(): + $create/diplay/panel_left/margin/race.hide() + $create/diplay/panel_left/margin/name.hide() + $create/diplay/panel_left/margin/property.show() + + +func _on_property_previous_pressed(): + $create/diplay/panel_left/margin/property.hide() + $create/diplay/panel_left/margin/race.hide() + $create/diplay/panel_left/margin/name.show() + + +func _on_property_next_pressed(): + Config.msg_debug("First name: " + $create/diplay/panel_left/margin/name/v_box_container/FirstName/line_edit.text) + Config.msg_debug("Last name: " + $create/diplay/panel_left/margin/name/v_box_container/LastName/line_edit.text) + for key in $create/diplay/panel_left/margin/property/panel/blend_shape/list.get_children(): + for pop in key.get_children(): + if pop is HBoxContainer: + Config.msg_debug( str(pop.name_property) + ": " + str(pop.get_node("property").value) ) + + +func generate_name_key(minsyllabe:int, maxsyllabe:int, start:Array = [], end:Array = []) -> String: + var nbsyllabe = rng.randi_range(minsyllabe, maxsyllabe) + var last = rng.randi_range(0, end.size()-1) + var ret = "" + for _i in range(0, nbsyllabe): + var x = rng.randi_range(0, syllabe.size()-1) + ret += syllabe[x] + if end.size() > 0: + ret += end[last] + return ret + + +func generate_name(): + var first_name: String = "" + var last_name: String = "" + match current_race: + "arche": + first_name = generate_name_key(1, 3, [], ["par", "tar", "lar", "nar", "var", "xar", "rar", "sar"]) + last_name = generate_name_key(2, 5) + "isidor": + first_name = generate_name_key(1, 3, [], ["por", "tor", "lor", "nor"]) + last_name = generate_name_key(2, 5) + _: + first_name = "paf" + last_name = "pouf" + $create/diplay/panel_left/margin/name/v_box_container/FirstName/line_edit.text = first_name + $create/diplay/panel_left/margin/name/v_box_container/LastName/line_edit.text = last_name + +func update_property( blend_shapes ): + #Config.msg_debug("") + for child in $create/diplay/panel_left/margin/property/panel/blend_shape/list.get_children(): + $create/diplay/panel_left/margin/property/panel/blend_shape/list.remove_child(child) + # var list_group:Array = [] + var list:Dictionary = {} + var tab:PoolStringArray + var global_box = preload( "res://scenes/creature_creation/property_label.tscn" ).instance() + global_box.get_node("label" ).text = "General" + $create/diplay/panel_left/margin/property/panel/blend_shape/list.add_child(global_box) + list["General"] = global_box + for key in blend_shapes: + tab = key.split("/", true, 1) + #Config.msg_debug(key + " : " + str(tab.size()) ) + if tab.size() == 2: + if not list.has(tab[0]): + var property_label_box = preload( "res://scenes/creature_creation/property_label.tscn" ).instance() + property_label_box.get_node("label" ).text = tab[0] + $create/diplay/panel_left/margin/property/panel/blend_shape/list.add_child(property_label_box) + list[tab[0]] = property_label_box + for key in blend_shapes: + var blend_shapes_box = preload( "res://scenes/creature_creation/property_box.tscn" ).instance() + var name_prop = key + tab = key.split("/", true, 1) + if tab.size() == 2: + name_prop = tab[1] + blend_shapes_box.name_property = key + blend_shapes_box.get_node( "label" ).text = name_prop + blend_shapes_box.get_node( "property" ).min_value = 0.0 + blend_shapes_box.get_node( "property" ).max_value = 1.0 + blend_shapes_box.get_node( "property" ).step = 0.01 + blend_shapes_box.get_node( "property" ).value = 0.0 + blend_shapes_box.connect( "changed", self, "_on_creature_update_property" ) + tab = key.split("/", true, 1) + if tab.size() == 2: + list[tab[0]].add_child(blend_shapes_box) + else: + list["General"].add_child(blend_shapes_box) + for key in list: + for i in list[key].get_children(): + if i.has_node("property"): + var vf = rng.randf_range(0.0, 100.0) / 100.0 + Config.msg_debug("de:" + str(vf)) + i.get_node( "property" ).value = vf + generate_name() + + +func _on_creature_update_property(key, name_property): + Config.msg_debug( name_property + ": " + str(key)) + emit_signal( "update_blend", name_property, key ) + + +func _on_generate_name_pressed(): + generate_name() diff --git a/scenes/creature_creation/creature_creation_menu.tscn b/scenes/creature_creation/creature_creation_menu.tscn new file mode 100644 index 0000000..e7b54af --- /dev/null +++ b/scenes/creature_creation/creature_creation_menu.tscn @@ -0,0 +1,286 @@ +[gd_scene load_steps=6 format=2] + +[ext_resource path="res://scenes/creature_creation/creature_creation_menu.gd" type="Script" id=1] +[ext_resource path="res://ressources/themes/creature_creation.tres" type="Theme" id=2] +[ext_resource path="res://assets/interfaces/next.png" type="Texture" id=3] +[ext_resource path="res://assets/interfaces/rollback.png" type="Texture" id=4] +[ext_resource path="res://assets/interfaces/previous.png" type="Texture" id=5] + +[node name="control" type="Control"] +anchor_right = 1.0 +anchor_bottom = 1.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 +theme = ExtResource( 2 ) +script = ExtResource( 1 ) +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="create" type="MarginContainer" parent="."] +anchor_right = 1.0 +anchor_bottom = 1.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 +custom_constants/margin_right = 50 +custom_constants/margin_top = 50 +custom_constants/margin_left = 50 +custom_constants/margin_bottom = 50 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="diplay" type="HBoxContainer" parent="create"] +margin_left = 50.0 +margin_top = 50.0 +margin_right = 1230.0 +margin_bottom = 670.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 + +[node name="panel_left" type="Panel" parent="create/diplay"] +margin_right = 588.0 +margin_bottom = 620.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="margin" type="MarginContainer" parent="create/diplay/panel_left"] +anchor_right = 1.0 +anchor_bottom = 1.0 +margin_top = 1.49829 +margin_bottom = 1.49829 +size_flags_horizontal = 3 +size_flags_vertical = 3 +custom_constants/margin_right = 50 +custom_constants/margin_top = 50 +custom_constants/margin_left = 50 +custom_constants/margin_bottom = 50 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="race" type="VBoxContainer" parent="create/diplay/panel_left/margin"] +visible = false +margin_left = 50.0 +margin_top = 50.0 +margin_right = 538.0 +margin_bottom = 570.0 + +[node name="creature_creation" type="VBoxContainer" parent="create/diplay/panel_left/margin/race"] +margin_right = 488.0 +margin_bottom = 106.0 + +[node name="label" type="Label" parent="create/diplay/panel_left/margin/race/creature_creation"] +margin_right = 488.0 +margin_bottom = 14.0 +size_flags_horizontal = 5 +text = "CREATURE_CREATION_CHOICE_RACE" +align = 1 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="label_2" type="Label" parent="create/diplay/panel_left/margin/race/creature_creation"] +margin_top = 18.0 +margin_right = 488.0 +margin_bottom = 32.0 +text = " " +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="arche" type="Button" parent="create/diplay/panel_left/margin/race/creature_creation"] +margin_top = 36.0 +margin_right = 488.0 +margin_bottom = 60.0 +text = "Arche" + +[node name="label_3" type="Label" parent="create/diplay/panel_left/margin/race/creature_creation"] +margin_top = 64.0 +margin_right = 488.0 +margin_bottom = 78.0 + +[node name="isidor" type="Button" parent="create/diplay/panel_left/margin/race/creature_creation"] +margin_top = 82.0 +margin_right = 488.0 +margin_bottom = 106.0 +text = "Isidor" + +[node name="h_box_container" type="HBoxContainer" parent="create/diplay/panel_left/margin/race"] +margin_top = 488.0 +margin_right = 488.0 +margin_bottom = 520.0 +size_flags_horizontal = 3 +size_flags_vertical = 10 + +[node name="quit" type="TextureButton" parent="create/diplay/panel_left/margin/race/h_box_container"] +margin_right = 32.0 +margin_bottom = 32.0 +texture_normal = ExtResource( 4 ) + +[node name="next" type="TextureButton" parent="create/diplay/panel_left/margin/race/h_box_container"] +margin_left = 456.0 +margin_right = 488.0 +margin_bottom = 32.0 +size_flags_horizontal = 10 +texture_normal = ExtResource( 3 ) + +[node name="name" type="VBoxContainer" parent="create/diplay/panel_left/margin"] +margin_left = 50.0 +margin_top = 50.0 +margin_right = 538.0 +margin_bottom = 570.0 + +[node name="v_box_container" type="VBoxContainer" parent="create/diplay/panel_left/margin/name"] +margin_top = 203.0 +margin_right = 488.0 +margin_bottom = 281.0 +size_flags_horizontal = 3 +size_flags_vertical = 6 + +[node name="generate_name" type="Button" parent="create/diplay/panel_left/margin/name/v_box_container"] +margin_left = 114.0 +margin_right = 374.0 +margin_bottom = 24.0 +size_flags_horizontal = 4 +text = "CREATURE_CREATION_GENERATE_NAME" + +[node name="label" type="Label" parent="create/diplay/panel_left/margin/name/v_box_container"] +margin_top = 28.0 +margin_right = 488.0 +margin_bottom = 42.0 + +[node name="FirstName" type="HBoxContainer" parent="create/diplay/panel_left/margin/name/v_box_container"] +margin_top = 46.0 +margin_right = 488.0 +margin_bottom = 60.0 + +[node name="label" type="Label" parent="create/diplay/panel_left/margin/name/v_box_container/FirstName"] +margin_left = 23.0 +margin_right = 242.0 +margin_bottom = 14.0 +size_flags_horizontal = 10 +text = "CREATURE_CREATION_FIRST_NAME" + +[node name="line_edit" type="LineEdit" parent="create/diplay/panel_left/margin/name/v_box_container/FirstName"] +margin_left = 246.0 +margin_right = 488.0 +margin_bottom = 14.0 +size_flags_horizontal = 3 +placeholder_text = "FIRST_NAME" + +[node name="LastName" type="HBoxContainer" parent="create/diplay/panel_left/margin/name/v_box_container"] +margin_top = 64.0 +margin_right = 488.0 +margin_bottom = 78.0 + +[node name="label" type="Label" parent="create/diplay/panel_left/margin/name/v_box_container/LastName"] +margin_left = 27.0 +margin_right = 242.0 +margin_bottom = 14.0 +size_flags_horizontal = 10 +text = "CREATURE_CREATION_LAST_NAME" + +[node name="line_edit" type="LineEdit" parent="create/diplay/panel_left/margin/name/v_box_container/LastName"] +margin_left = 246.0 +margin_right = 488.0 +margin_bottom = 14.0 +size_flags_horizontal = 3 +placeholder_text = "LAST_NAME" + +[node name="h_box_container" type="HBoxContainer" parent="create/diplay/panel_left/margin/name"] +margin_top = 488.0 +margin_right = 488.0 +margin_bottom = 520.0 +size_flags_horizontal = 3 + +[node name="previous" type="TextureButton" parent="create/diplay/panel_left/margin/name/h_box_container"] +margin_right = 32.0 +margin_bottom = 32.0 +texture_normal = ExtResource( 5 ) + +[node name="next" type="TextureButton" parent="create/diplay/panel_left/margin/name/h_box_container"] +margin_left = 456.0 +margin_right = 488.0 +margin_bottom = 32.0 +size_flags_horizontal = 10 +texture_normal = ExtResource( 3 ) + +[node name="property" type="VBoxContainer" parent="create/diplay/panel_left/margin"] +margin_left = 50.0 +margin_top = 50.0 +margin_right = 538.0 +margin_bottom = 570.0 + +[node name="panel" type="VBoxContainer" parent="create/diplay/panel_left/margin/property"] +margin_right = 488.0 +margin_bottom = 484.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 + +[node name="label" type="Label" parent="create/diplay/panel_left/margin/property/panel"] +margin_left = 135.0 +margin_right = 352.0 +margin_bottom = 14.0 +size_flags_horizontal = 6 +text = "CREATURE_CREATION_PROPERTIES" + +[node name="blend_shape" type="ScrollContainer" parent="create/diplay/panel_left/margin/property/panel"] +margin_top = 18.0 +margin_right = 488.0 +margin_bottom = 484.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 + +[node name="list" type="VBoxContainer" parent="create/diplay/panel_left/margin/property/panel/blend_shape"] +margin_right = 488.0 +margin_bottom = 466.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 + +[node name="h_box_container" type="HBoxContainer" parent="create/diplay/panel_left/margin/property"] +margin_top = 488.0 +margin_right = 488.0 +margin_bottom = 520.0 +size_flags_vertical = 8 + +[node name="previous" type="TextureButton" parent="create/diplay/panel_left/margin/property/h_box_container"] +margin_right = 32.0 +margin_bottom = 32.0 +texture_normal = ExtResource( 5 ) + +[node name="next" type="TextureButton" parent="create/diplay/panel_left/margin/property/h_box_container"] +margin_left = 456.0 +margin_right = 488.0 +margin_bottom = 32.0 +size_flags_horizontal = 10 +texture_normal = ExtResource( 3 ) + +[node name="panel_right" type="HBoxContainer" parent="create/diplay"] +margin_left = 592.0 +margin_right = 1180.0 +margin_bottom = 620.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 + +[node name="displayo" type="VBoxContainer" parent="create"] +visible = false +margin_left = 50.0 +margin_top = 50.0 +margin_right = 1230.0 +margin_bottom = 670.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 + +[connection signal="pressed" from="create/diplay/panel_left/margin/race/creature_creation/arche" to="." method="_on_arche_pressed"] +[connection signal="pressed" from="create/diplay/panel_left/margin/race/creature_creation/isidor" to="." method="_on_isidor_pressed"] +[connection signal="pressed" from="create/diplay/panel_left/margin/race/h_box_container/quit" to="." method="_on_quit_pressed"] +[connection signal="pressed" from="create/diplay/panel_left/margin/race/h_box_container/next" to="." method="_on_race_next_pressed"] +[connection signal="pressed" from="create/diplay/panel_left/margin/name/v_box_container/generate_name" to="." method="_on_generate_name_pressed"] +[connection signal="pressed" from="create/diplay/panel_left/margin/name/h_box_container/previous" to="." method="_on_name_previous_pressed"] +[connection signal="pressed" from="create/diplay/panel_left/margin/name/h_box_container/next" to="." method="_on_name_next_pressed"] +[connection signal="pressed" from="create/diplay/panel_left/margin/property/h_box_container/previous" to="." method="_on_property_previous_pressed"] +[connection signal="pressed" from="create/diplay/panel_left/margin/property/h_box_container/next" to="." method="_on_property_next_pressed"] diff --git a/scenes/creature_creation/isidor.tscn b/scenes/creature_creation/isidor.tscn new file mode 100644 index 0000000..966bb20 --- /dev/null +++ b/scenes/creature_creation/isidor.tscn @@ -0,0 +1,8 @@ +[gd_scene load_steps=2 format=2] + +[ext_resource path="res://assets/creatures/isidor/isidor.tscn" type="PackedScene" id=1] + +[node name="spatial" type="Spatial"] + +[node name="isidor" parent="." instance=ExtResource( 1 )] +transform = Transform( -4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, 0, 0, 0 ) diff --git a/scenes/creature_creation/property_box.gd b/scenes/creature_creation/property_box.gd new file mode 100644 index 0000000..aae9ef6 --- /dev/null +++ b/scenes/creature_creation/property_box.gd @@ -0,0 +1,9 @@ +extends HBoxContainer + +signal changed(value, name) + +var name_property: String = "" + +func _on_property_value_changed(value): + Config.msg_debug("") + emit_signal( "changed" , value, name_property) diff --git a/scenes/creature_creation/property_box.tscn b/scenes/creature_creation/property_box.tscn new file mode 100644 index 0000000..633d4b3 --- /dev/null +++ b/scenes/creature_creation/property_box.tscn @@ -0,0 +1,31 @@ +[gd_scene load_steps=3 format=2] + +[ext_resource path="res://scenes/creature_creation/property_box.gd" type="Script" id=1] +[ext_resource path="res://ressources/themes/creature_creation.tres" type="Theme" id=2] + +[node name="control" type="HBoxContainer"] +anchor_right = 1.0 +anchor_bottom = 1.0 +size_flags_horizontal = 3 +size_flags_vertical = 0 +theme = ExtResource( 2 ) +script = ExtResource( 1 ) +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="label" type="Label" parent="."] +margin_right = 54.0 +margin_bottom = 14.0 +size_flags_horizontal = 9 +size_flags_vertical = 0 +text = "Property" + +[node name="property" type="HSlider" parent="."] +margin_left = 58.0 +margin_right = 1280.0 +margin_bottom = 16.0 +size_flags_horizontal = 3 + +[connection signal="changed" from="property" to="." method="_on_property_changed"] +[connection signal="value_changed" from="property" to="." method="_on_property_value_changed"] diff --git a/scenes/creature_creation/property_label.tscn b/scenes/creature_creation/property_label.tscn new file mode 100644 index 0000000..f5b4f51 --- /dev/null +++ b/scenes/creature_creation/property_label.tscn @@ -0,0 +1,22 @@ +[gd_scene format=2] + +[node name="property" type="VBoxContainer"] +anchor_right = 1.0 +anchor_bottom = 1.0 +size_flags_horizontal = 7 +size_flags_vertical = 3 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="empty" type="Label" parent="."] +margin_right = 1280.0 +margin_bottom = 14.0 + +[node name="label" type="Label" parent="."] +margin_top = 18.0 +margin_right = 1280.0 +margin_bottom = 32.0 +size_flags_horizontal = 7 +text = "Label" +align = 1 diff --git a/scenes/creatures/creature.gd b/scenes/creatures/creature.gd index 500b53b..cfe291c 100644 --- a/scenes/creatures/creature.gd +++ b/scenes/creatures/creature.gd @@ -5,7 +5,12 @@ signal equip( p_slot, p_item ) signal unequip( p_slot ) signal is_dead -var creature = Datas.Human.new() +var Human = load("res://ressources/scripts/datas/human.gd") +var Equipment = load("res://ressources/scripts/datas/equipment.gd") +var PickupItem = load("res://ressources/scripts/datas/pickup_item.gd") +var Cloth = load("res://ressources/scripts/datas/cloth.gd") + +var creature = Human.new() var eye_color_list = [ "blue_eye", "bluegreen_eye","brown_eye","deepblue_eye","green_eye","grey_eye","ice_eye","lightblue_eye" ] @@ -16,22 +21,22 @@ class Slot: func _init( p_attachment = null ): self.attachment = p_attachment -var slots = { Datas.Equipment.SLOT.cloth_hand: Slot.new( "cloths" )\ - , Datas.Equipment.SLOT.cloth_face: Slot.new( "cloths" )\ - , Datas.Equipment.SLOT.cloth_head: Slot.new( "cloths" )\ - , Datas.Equipment.SLOT.cloth_torso: Slot.new( "cloths" )\ - , Datas.Equipment.SLOT.cloth_legs: Slot.new( "cloths" )\ - , Datas.Equipment.SLOT.cloth_feet: Slot.new( "cloths" )\ - , Datas.Equipment.SLOT.cloth_back: Slot.new( "cloths" )\ - , Datas.Equipment.SLOT.weapon_hand_right: Slot.new( "attachment_hand_R" )\ - , Datas.Equipment.SLOT.weapon_hand_left: Slot.new( "attachment_hand_L" )\ - , Datas.Equipment.SLOT.weapon_hands: Slot.new( "attachment_hand_R" )\ - , Datas.Equipment.SLOT.weapon_hip_right: Slot.new( "attachment_hips_R" )\ - , Datas.Equipment.SLOT.weapon_hip_left: Slot.new( "attachment_hips_L" )\ - , Datas.Equipment.SLOT.weapon_back_right: Slot.new()\ - , Datas.Equipment.SLOT.weapon_back_left: Slot.new()\ - , Datas.Equipment.SLOT.weapon_holster_right: Slot.new()\ - , Datas.Equipment.SLOT.weapon_holster_left: Slot.new() } +var slots = { Equipment.SLOT.cloth_hand: Slot.new( "cloths" )\ + , Equipment.SLOT.cloth_face: Slot.new( "cloths" )\ + , Equipment.SLOT.cloth_head: Slot.new( "cloths" )\ + , Equipment.SLOT.cloth_torso: Slot.new( "cloths" )\ + , Equipment.SLOT.cloth_legs: Slot.new( "cloths" )\ + , Equipment.SLOT.cloth_feet: Slot.new( "cloths" )\ + , Equipment.SLOT.cloth_back: Slot.new( "cloths" )\ + , Equipment.SLOT.weapon_hand_right: Slot.new( "attachment_hand_R" )\ + , Equipment.SLOT.weapon_hand_left: Slot.new( "attachment_hand_L" )\ + , Equipment.SLOT.weapon_hands: Slot.new( "attachment_hand_R" )\ + , Equipment.SLOT.weapon_hip_right: Slot.new( "attachment_hips_R" )\ + , Equipment.SLOT.weapon_hip_left: Slot.new( "attachment_hips_L" )\ + , Equipment.SLOT.weapon_back_right: Slot.new()\ + , Equipment.SLOT.weapon_back_left: Slot.new()\ + , Equipment.SLOT.weapon_holster_right: Slot.new()\ + , Equipment.SLOT.weapon_holster_left: Slot.new() } func _ready(): @@ -64,9 +69,11 @@ func duplicate_meshes(): func set_blend_shape( p_blend_shape_name, p_value ): for child in $body_parts.get_children(): + Config.msg_debug("Child / name:" + child.name) var skeleton = child.get_node( "skeleton" ) for node in skeleton.get_children(): if node is MeshInstance: + Config.msg_debug("Node / name:" + node.name) node.set( "blend_shapes/"+p_blend_shape_name, p_value ) for child in $hair_parts.get_children(): var skeleton = child.get_node( "skeleton" ) @@ -80,7 +87,7 @@ func set_blend_shape( p_blend_shape_name, p_value ): node.set( "blend_shapes/"+p_blend_shape_name, p_value ) func load_from_name( p_name, p_emplacement = "usr" ): - var new_creature = Datas.Human.new() + var new_creature = Human.new() var name_split = p_name.split( "_" ) new_creature.set_data( "first_name", name_split[0] ) new_creature.set_data( "last_name", name_split[1] ) @@ -398,7 +405,7 @@ func drop_item( p_item ): pickup_item_node.item_filename = p_item.get_filename() pickup_item_node.global_transform = $drop_point.global_transform - var pickup_item = Datas.PickupItem.new( p_item.get_filename(), $drop_point.global_transform, p_item ) + var pickup_item = PickupItem.new( p_item.get_filename(), $drop_point.global_transform, p_item ) pickup_item_node.item = pickup_item if self.get_tree().get_root().has_node( "main/scene/game" ): @@ -410,7 +417,7 @@ func _on_body_animation_finished( anim_name ): func _on_body_limb_body_entered(limb, body): if body.is_in_group( "bullet" ): - if limb == Datas.Cloth.LIMB.head: + if limb == Cloth.LIMB.head: var blood_particle = preload( "res://scenes/fx/blood_particles.tscn" ).instance() $body_parts/body/skeleton/limb_head.add_child( blood_particle ) blood_particle.emit() diff --git a/scenes/creatures/creature_creation_menu.gd b/scenes/creatures/creature_creation_menu.gd index 4985b74..fd104f4 100644 --- a/scenes/creatures/creature_creation_menu.gd +++ b/scenes/creatures/creature_creation_menu.gd @@ -18,6 +18,7 @@ var max_caracteristiques_points = 5*5 + 5 func _ready(): # Race. + race_popup.add_item( Globals.race_label[ Globals.RACE.arche ] ) race_popup.add_item( Globals.race_label[ Globals.RACE.human ] ) race_popup.connect("id_pressed", self, "_on_race_id_pressed") diff --git a/scenes/creatures/creature_creation_menu.tscn b/scenes/creatures/creature_creation_menu.tscn index 99ffaf0..996a6c9 100644 --- a/scenes/creatures/creature_creation_menu.tscn +++ b/scenes/creatures/creature_creation_menu.tscn @@ -2,7 +2,7 @@ [ext_resource path="res://assets/interfaces/underwear_on_icon.png" type="Texture" id=1] [ext_resource path="res://scenes/creatures/creature_creation_menu.gd" type="Script" id=2] -[ext_resource path="res://ressources/themes/khanat_theme.theme" type="Theme" id=3] +[ext_resource path="res://assets/interfaces/themes/khanat_create_creature.theme" type="Theme" id=3] [ext_resource path="res://assets/fonts/ryzom.ttf" type="DynamicFontData" id=4] [ext_resource path="res://assets/interfaces/cloth_on_icon.png" type="Texture" id=5] [ext_resource path="res://assets/interfaces/zoom_head_icon.png" type="Texture" id=6] @@ -171,29 +171,29 @@ size_flags_horizontal = 6 size_flags_vertical = 6 [node name="general_label" type="Label" parent="margin_box/window_box/content_box/tabs_box/Corps/aspect"] -margin_right = 251.0 -margin_bottom = 21.0 +margin_right = 249.0 +margin_bottom = 17.0 text = "Général" align = 1 [node name="size" type="HBoxContainer" parent="margin_box/window_box/content_box/tabs_box/Corps/aspect"] -margin_top = 25.0 -margin_right = 251.0 -margin_bottom = 46.0 +margin_top = 21.0 +margin_right = 249.0 +margin_bottom = 38.0 size_flags_horizontal = 7 alignment = 1 [node name="label" type="Label" parent="margin_box/window_box/content_box/tabs_box/Corps/aspect/size"] -margin_right = 83.0 -margin_bottom = 21.0 +margin_right = 81.0 +margin_bottom = 17.0 size_flags_horizontal = 3 text = "Taille" align = 2 [node name="value" type="HSlider" parent="margin_box/window_box/content_box/tabs_box/Corps/aspect/size"] -margin_left = 87.0 -margin_right = 251.0 -margin_bottom = 21.0 +margin_left = 85.0 +margin_right = 249.0 +margin_bottom = 17.0 rect_min_size = Vector2( 164, 0 ) size_flags_horizontal = 3 size_flags_vertical = 1 @@ -203,30 +203,30 @@ step = 0.01 value = 1.0 [node name="ethnic_label" type="Label" parent="margin_box/window_box/content_box/tabs_box/Corps/aspect"] -margin_top = 50.0 -margin_right = 251.0 -margin_bottom = 71.0 +margin_top = 42.0 +margin_right = 249.0 +margin_bottom = 59.0 text = "Ethnie" align = 1 [node name="caucasian" type="HBoxContainer" parent="margin_box/window_box/content_box/tabs_box/Corps/aspect"] -margin_top = 75.0 -margin_right = 251.0 -margin_bottom = 96.0 +margin_top = 63.0 +margin_right = 249.0 +margin_bottom = 80.0 size_flags_horizontal = 7 alignment = 1 [node name="label" type="Label" parent="margin_box/window_box/content_box/tabs_box/Corps/aspect/caucasian"] -margin_right = 83.0 -margin_bottom = 21.0 +margin_right = 81.0 +margin_bottom = 17.0 size_flags_horizontal = 3 text = "Caucasian" align = 2 [node name="value" type="HSlider" parent="margin_box/window_box/content_box/tabs_box/Corps/aspect/caucasian"] -margin_left = 87.0 -margin_right = 251.0 -margin_bottom = 21.0 +margin_left = 85.0 +margin_right = 249.0 +margin_bottom = 17.0 rect_min_size = Vector2( 164, 0 ) size_flags_horizontal = 3 size_flags_vertical = 1 @@ -234,23 +234,23 @@ max_value = 1.0 step = 0.1 [node name="african" type="HBoxContainer" parent="margin_box/window_box/content_box/tabs_box/Corps/aspect"] -margin_top = 100.0 -margin_right = 251.0 -margin_bottom = 121.0 +margin_top = 84.0 +margin_right = 249.0 +margin_bottom = 101.0 size_flags_horizontal = 7 alignment = 1 [node name="label" type="Label" parent="margin_box/window_box/content_box/tabs_box/Corps/aspect/african"] -margin_right = 83.0 -margin_bottom = 21.0 +margin_right = 81.0 +margin_bottom = 17.0 size_flags_horizontal = 3 text = "African" align = 2 [node name="value" type="HSlider" parent="margin_box/window_box/content_box/tabs_box/Corps/aspect/african"] -margin_left = 87.0 -margin_right = 251.0 -margin_bottom = 21.0 +margin_left = 85.0 +margin_right = 249.0 +margin_bottom = 17.0 rect_min_size = Vector2( 164, 0 ) size_flags_horizontal = 3 size_flags_vertical = 1 @@ -258,23 +258,23 @@ max_value = 1.0 step = 0.1 [node name="asian" type="HBoxContainer" parent="margin_box/window_box/content_box/tabs_box/Corps/aspect"] -margin_top = 125.0 -margin_right = 251.0 -margin_bottom = 146.0 +margin_top = 105.0 +margin_right = 249.0 +margin_bottom = 122.0 size_flags_horizontal = 7 alignment = 1 [node name="label" type="Label" parent="margin_box/window_box/content_box/tabs_box/Corps/aspect/asian"] -margin_right = 83.0 -margin_bottom = 21.0 +margin_right = 81.0 +margin_bottom = 17.0 size_flags_horizontal = 3 text = "Asian" align = 2 [node name="value" type="HSlider" parent="margin_box/window_box/content_box/tabs_box/Corps/aspect/asian"] -margin_left = 87.0 -margin_right = 251.0 -margin_bottom = 21.0 +margin_left = 85.0 +margin_right = 249.0 +margin_bottom = 17.0 rect_min_size = Vector2( 164, 0 ) size_flags_horizontal = 3 size_flags_vertical = 1 @@ -282,53 +282,53 @@ max_value = 1.0 step = 0.1 [node name="skin_label" type="Label" parent="margin_box/window_box/content_box/tabs_box/Corps/aspect"] -margin_top = 150.0 -margin_right = 251.0 -margin_bottom = 171.0 +margin_top = 126.0 +margin_right = 249.0 +margin_bottom = 143.0 text = "Peau" align = 1 [node name="skin" type="HBoxContainer" parent="margin_box/window_box/content_box/tabs_box/Corps/aspect"] -margin_top = 175.0 -margin_right = 251.0 -margin_bottom = 196.0 +margin_top = 147.0 +margin_right = 249.0 +margin_bottom = 164.0 size_flags_horizontal = 7 alignment = 1 [node name="label" type="Label" parent="margin_box/window_box/content_box/tabs_box/Corps/aspect/skin"] -margin_right = 83.0 -margin_bottom = 21.0 +margin_right = 81.0 +margin_bottom = 17.0 size_flags_horizontal = 3 text = "Peau" align = 2 [node name="value" type="HSlider" parent="margin_box/window_box/content_box/tabs_box/Corps/aspect/skin"] -margin_left = 87.0 -margin_right = 251.0 -margin_bottom = 21.0 +margin_left = 85.0 +margin_right = 249.0 +margin_bottom = 17.0 rect_min_size = Vector2( 164, 0 ) size_flags_horizontal = 3 size_flags_vertical = 1 max_value = 2.0 [node name="skin_tone" type="HBoxContainer" parent="margin_box/window_box/content_box/tabs_box/Corps/aspect"] -margin_top = 200.0 -margin_right = 251.0 -margin_bottom = 221.0 +margin_top = 168.0 +margin_right = 249.0 +margin_bottom = 185.0 size_flags_horizontal = 7 alignment = 1 [node name="label" type="Label" parent="margin_box/window_box/content_box/tabs_box/Corps/aspect/skin_tone"] -margin_right = 83.0 -margin_bottom = 21.0 +margin_right = 81.0 +margin_bottom = 17.0 size_flags_horizontal = 3 text = "Teint" align = 2 [node name="value" type="HSlider" parent="margin_box/window_box/content_box/tabs_box/Corps/aspect/skin_tone"] -margin_left = 87.0 -margin_right = 251.0 -margin_bottom = 21.0 +margin_left = 85.0 +margin_right = 249.0 +margin_bottom = 17.0 rect_min_size = Vector2( 164, 0 ) size_flags_horizontal = 3 size_flags_vertical = 1 @@ -336,30 +336,30 @@ max_value = 0.5 step = 0.1 [node name="corpulence_label" type="Label" parent="margin_box/window_box/content_box/tabs_box/Corps/aspect"] -margin_top = 225.0 -margin_right = 251.0 -margin_bottom = 246.0 +margin_top = 189.0 +margin_right = 249.0 +margin_bottom = 206.0 text = "Corpulence" align = 1 [node name="fat" type="HBoxContainer" parent="margin_box/window_box/content_box/tabs_box/Corps/aspect"] -margin_top = 250.0 -margin_right = 251.0 -margin_bottom = 271.0 +margin_top = 210.0 +margin_right = 249.0 +margin_bottom = 227.0 size_flags_horizontal = 7 alignment = 1 [node name="label" type="Label" parent="margin_box/window_box/content_box/tabs_box/Corps/aspect/fat"] -margin_right = 83.0 -margin_bottom = 21.0 +margin_right = 81.0 +margin_bottom = 17.0 size_flags_horizontal = 3 text = "Graisse" align = 2 [node name="value" type="HSlider" parent="margin_box/window_box/content_box/tabs_box/Corps/aspect/fat"] -margin_left = 87.0 -margin_right = 251.0 -margin_bottom = 21.0 +margin_left = 85.0 +margin_right = 249.0 +margin_bottom = 17.0 rect_min_size = Vector2( 164, 0 ) size_flags_horizontal = 3 size_flags_vertical = 1 @@ -368,23 +368,23 @@ max_value = 1.0 step = 0.1 [node name="muscle" type="HBoxContainer" parent="margin_box/window_box/content_box/tabs_box/Corps/aspect"] -margin_top = 275.0 -margin_right = 251.0 -margin_bottom = 296.0 +margin_top = 231.0 +margin_right = 249.0 +margin_bottom = 248.0 size_flags_horizontal = 7 alignment = 1 [node name="label" type="Label" parent="margin_box/window_box/content_box/tabs_box/Corps/aspect/muscle"] -margin_right = 83.0 -margin_bottom = 21.0 +margin_right = 81.0 +margin_bottom = 17.0 size_flags_horizontal = 3 text = "Muscles" align = 2 [node name="value" type="HSlider" parent="margin_box/window_box/content_box/tabs_box/Corps/aspect/muscle"] -margin_left = 87.0 -margin_right = 251.0 -margin_bottom = 21.0 +margin_left = 85.0 +margin_right = 249.0 +margin_bottom = 17.0 rect_min_size = Vector2( 164, 0 ) size_flags_horizontal = 3 size_flags_vertical = 1 @@ -393,23 +393,23 @@ max_value = 1.0 step = 0.1 [node name="proportion" type="HBoxContainer" parent="margin_box/window_box/content_box/tabs_box/Corps/aspect"] -margin_top = 300.0 -margin_right = 251.0 -margin_bottom = 321.0 +margin_top = 252.0 +margin_right = 249.0 +margin_bottom = 269.0 size_flags_horizontal = 7 alignment = 1 [node name="label" type="Label" parent="margin_box/window_box/content_box/tabs_box/Corps/aspect/proportion"] -margin_right = 83.0 -margin_bottom = 21.0 +margin_right = 81.0 +margin_bottom = 17.0 size_flags_horizontal = 3 text = "Proportions" align = 2 [node name="value" type="HSlider" parent="margin_box/window_box/content_box/tabs_box/Corps/aspect/proportion"] -margin_left = 87.0 -margin_right = 251.0 -margin_bottom = 21.0 +margin_left = 85.0 +margin_right = 249.0 +margin_bottom = 17.0 rect_min_size = Vector2( 164, 0 ) size_flags_horizontal = 3 size_flags_vertical = 1 @@ -418,30 +418,30 @@ max_value = 1.0 step = 0.1 [node name="female_label" type="Label" parent="margin_box/window_box/content_box/tabs_box/Corps/aspect"] -margin_top = 325.0 -margin_right = 251.0 -margin_bottom = 346.0 +margin_top = 273.0 +margin_right = 249.0 +margin_bottom = 290.0 text = "Femme" align = 1 [node name="breast" type="HBoxContainer" parent="margin_box/window_box/content_box/tabs_box/Corps/aspect"] -margin_top = 350.0 -margin_right = 251.0 -margin_bottom = 371.0 +margin_top = 294.0 +margin_right = 249.0 +margin_bottom = 311.0 size_flags_horizontal = 7 alignment = 1 [node name="label" type="Label" parent="margin_box/window_box/content_box/tabs_box/Corps/aspect/breast"] -margin_right = 83.0 -margin_bottom = 21.0 +margin_right = 81.0 +margin_bottom = 17.0 size_flags_horizontal = 3 text = "Poitrine" align = 2 [node name="value" type="HSlider" parent="margin_box/window_box/content_box/tabs_box/Corps/aspect/breast"] -margin_left = 87.0 -margin_right = 251.0 -margin_bottom = 21.0 +margin_left = 85.0 +margin_right = 249.0 +margin_bottom = 17.0 rect_min_size = Vector2( 164, 0 ) size_flags_horizontal = 3 size_flags_vertical = 1 @@ -450,23 +450,23 @@ max_value = 1.0 step = 0.1 [node name="pregnancy" type="HBoxContainer" parent="margin_box/window_box/content_box/tabs_box/Corps/aspect"] -margin_top = 375.0 -margin_right = 251.0 -margin_bottom = 396.0 +margin_top = 315.0 +margin_right = 249.0 +margin_bottom = 332.0 size_flags_horizontal = 7 alignment = 1 [node name="label" type="Label" parent="margin_box/window_box/content_box/tabs_box/Corps/aspect/pregnancy"] -margin_right = 83.0 -margin_bottom = 21.0 +margin_right = 81.0 +margin_bottom = 17.0 size_flags_horizontal = 3 text = "Grossesse" align = 2 [node name="value" type="HSlider" parent="margin_box/window_box/content_box/tabs_box/Corps/aspect/pregnancy"] -margin_left = 87.0 -margin_right = 251.0 -margin_bottom = 21.0 +margin_left = 85.0 +margin_right = 249.0 +margin_bottom = 17.0 rect_min_size = Vector2( 164, 0 ) size_flags_horizontal = 3 size_flags_vertical = 1 @@ -488,53 +488,52 @@ size_flags_horizontal = 6 size_flags_vertical = 6 [node name="hair_label" type="Label" parent="margin_box/window_box/content_box/tabs_box/Tête/aspect"] -margin_right = 302.0 -margin_bottom = 21.0 +margin_right = 306.0 +margin_bottom = 17.0 text = "Cheveux" align = 1 [node name="hair" type="HBoxContainer" parent="margin_box/window_box/content_box/tabs_box/Tête/aspect"] -margin_top = 25.0 -margin_right = 302.0 -margin_bottom = 46.0 +margin_top = 21.0 +margin_right = 306.0 +margin_bottom = 38.0 size_flags_horizontal = 7 alignment = 1 [node name="label" type="Label" parent="margin_box/window_box/content_box/tabs_box/Tête/aspect/hair"] -margin_right = 134.0 -margin_bottom = 21.0 +margin_right = 138.0 +margin_bottom = 17.0 size_flags_horizontal = 3 text = "Coupe" align = 2 [node name="value" type="HSlider" parent="margin_box/window_box/content_box/tabs_box/Tête/aspect/hair"] -margin_left = 138.0 -margin_right = 302.0 -margin_bottom = 21.0 +margin_left = 142.0 +margin_right = 306.0 +margin_bottom = 17.0 rect_min_size = Vector2( 164, 0 ) size_flags_horizontal = 3 size_flags_vertical = 1 max_value = 2.0 [node name="hair_color" type="HBoxContainer" parent="margin_box/window_box/content_box/tabs_box/Tête/aspect"] -margin_top = 50.0 -margin_right = 302.0 -margin_bottom = 77.0 +margin_top = 42.0 +margin_right = 306.0 +margin_bottom = 59.0 size_flags_horizontal = 7 alignment = 1 [node name="label" type="Label" parent="margin_box/window_box/content_box/tabs_box/Tête/aspect/hair_color"] -margin_top = 3.0 -margin_right = 134.0 -margin_bottom = 24.0 +margin_right = 138.0 +margin_bottom = 17.0 size_flags_horizontal = 3 text = "Couleur" align = 2 [node name="value" type="ColorPickerButton" parent="margin_box/window_box/content_box/tabs_box/Tête/aspect/hair_color"] -margin_left = 138.0 -margin_right = 302.0 -margin_bottom = 27.0 +margin_left = 142.0 +margin_right = 306.0 +margin_bottom = 17.0 rect_min_size = Vector2( 164, 0 ) size_flags_horizontal = 3 flat = true @@ -542,30 +541,30 @@ color = Color( 1, 1, 1, 1 ) edit_alpha = false [node name="eyes_label" type="Label" parent="margin_box/window_box/content_box/tabs_box/Tête/aspect"] -margin_top = 81.0 -margin_right = 302.0 -margin_bottom = 102.0 +margin_top = 63.0 +margin_right = 306.0 +margin_bottom = 80.0 text = "Yeux" align = 1 [node name="eyes_vert" type="HBoxContainer" parent="margin_box/window_box/content_box/tabs_box/Tête/aspect"] -margin_top = 106.0 -margin_right = 302.0 -margin_bottom = 127.0 +margin_top = 84.0 +margin_right = 306.0 +margin_bottom = 101.0 size_flags_horizontal = 7 alignment = 1 [node name="label" type="Label" parent="margin_box/window_box/content_box/tabs_box/Tête/aspect/eyes_vert"] -margin_right = 134.0 -margin_bottom = 21.0 +margin_right = 138.0 +margin_bottom = 17.0 size_flags_horizontal = 3 text = "Yeux" align = 2 [node name="value" type="HSlider" parent="margin_box/window_box/content_box/tabs_box/Tête/aspect/eyes_vert"] -margin_left = 138.0 -margin_right = 302.0 -margin_bottom = 21.0 +margin_left = 142.0 +margin_right = 306.0 +margin_bottom = 17.0 rect_min_size = Vector2( 164, 0 ) size_flags_horizontal = 3 size_flags_vertical = 1 @@ -574,46 +573,46 @@ max_value = 1.0 step = 0.1 [node name="eyes_color" type="HBoxContainer" parent="margin_box/window_box/content_box/tabs_box/Tête/aspect"] -margin_top = 106.0 -margin_right = 302.0 -margin_bottom = 127.0 +margin_top = 105.0 +margin_right = 306.0 +margin_bottom = 122.0 size_flags_horizontal = 7 alignment = 1 [node name="label" type="Label" parent="margin_box/window_box/content_box/tabs_box/Tête/aspect/eyes_color"] -margin_right = 134.0 -margin_bottom = 21.0 +margin_right = 138.0 +margin_bottom = 17.0 size_flags_horizontal = 3 text = "Couleur" align = 2 [node name="value" type="HSlider" parent="margin_box/window_box/content_box/tabs_box/Tête/aspect/eyes_color"] -margin_left = 138.0 -margin_right = 302.0 -margin_bottom = 21.0 +margin_left = 142.0 +margin_right = 306.0 +margin_bottom = 17.0 rect_min_size = Vector2( 164, 0 ) size_flags_horizontal = 3 size_flags_vertical = 1 max_value = 7.0 [node name="eyes_gap" type="HBoxContainer" parent="margin_box/window_box/content_box/tabs_box/Tête/aspect"] -margin_top = 131.0 -margin_right = 302.0 -margin_bottom = 152.0 +margin_top = 126.0 +margin_right = 306.0 +margin_bottom = 143.0 size_flags_horizontal = 7 alignment = 1 [node name="label" type="Label" parent="margin_box/window_box/content_box/tabs_box/Tête/aspect/eyes_gap"] -margin_right = 134.0 -margin_bottom = 21.0 +margin_right = 138.0 +margin_bottom = 17.0 size_flags_horizontal = 3 text = "Yeux espace" align = 2 [node name="value" type="HSlider" parent="margin_box/window_box/content_box/tabs_box/Tête/aspect/eyes_gap"] -margin_left = 138.0 -margin_right = 302.0 -margin_bottom = 21.0 +margin_left = 142.0 +margin_right = 306.0 +margin_bottom = 17.0 rect_min_size = Vector2( 164, 0 ) size_flags_horizontal = 3 size_flags_vertical = 1 @@ -622,30 +621,30 @@ max_value = 1.0 step = 0.1 [node name="ears_label" type="Label" parent="margin_box/window_box/content_box/tabs_box/Tête/aspect"] -margin_top = 156.0 -margin_right = 302.0 -margin_bottom = 177.0 +margin_top = 147.0 +margin_right = 306.0 +margin_bottom = 164.0 text = "Oreilles" align = 1 [node name="earlobes" type="HBoxContainer" parent="margin_box/window_box/content_box/tabs_box/Tête/aspect"] -margin_top = 181.0 -margin_right = 302.0 -margin_bottom = 202.0 +margin_top = 168.0 +margin_right = 306.0 +margin_bottom = 185.0 size_flags_horizontal = 7 alignment = 1 [node name="label" type="Label" parent="margin_box/window_box/content_box/tabs_box/Tête/aspect/earlobes"] -margin_right = 134.0 -margin_bottom = 21.0 +margin_right = 138.0 +margin_bottom = 17.0 size_flags_horizontal = 3 text = "Lobes d'oreille" align = 2 [node name="value" type="HSlider" parent="margin_box/window_box/content_box/tabs_box/Tête/aspect/earlobes"] -margin_left = 138.0 -margin_right = 302.0 -margin_bottom = 21.0 +margin_left = 142.0 +margin_right = 306.0 +margin_bottom = 17.0 rect_min_size = Vector2( 164, 0 ) size_flags_horizontal = 3 size_flags_vertical = 1 @@ -653,23 +652,23 @@ max_value = 1.0 step = 0.1 [node name="ears_wing" type="HBoxContainer" parent="margin_box/window_box/content_box/tabs_box/Tête/aspect"] -margin_top = 206.0 -margin_right = 302.0 -margin_bottom = 227.0 +margin_top = 189.0 +margin_right = 306.0 +margin_bottom = 206.0 size_flags_horizontal = 7 alignment = 1 [node name="label" type="Label" parent="margin_box/window_box/content_box/tabs_box/Tête/aspect/ears_wing"] -margin_right = 134.0 -margin_bottom = 21.0 +margin_right = 138.0 +margin_bottom = 17.0 size_flags_horizontal = 3 text = "Décolement oreille" align = 2 [node name="value" type="HSlider" parent="margin_box/window_box/content_box/tabs_box/Tête/aspect/ears_wing"] -margin_left = 138.0 -margin_right = 302.0 -margin_bottom = 21.0 +margin_left = 142.0 +margin_right = 306.0 +margin_bottom = 17.0 rect_min_size = Vector2( 164, 0 ) size_flags_horizontal = 3 size_flags_vertical = 1 @@ -677,30 +676,30 @@ max_value = 1.0 step = 0.1 [node name="nose_label" type="Label" parent="margin_box/window_box/content_box/tabs_box/Tête/aspect"] -margin_top = 231.0 -margin_right = 302.0 -margin_bottom = 252.0 +margin_top = 210.0 +margin_right = 306.0 +margin_bottom = 227.0 text = "Nez" align = 1 [node name="nose_galbe" type="HBoxContainer" parent="margin_box/window_box/content_box/tabs_box/Tête/aspect"] -margin_top = 256.0 -margin_right = 302.0 -margin_bottom = 277.0 +margin_top = 231.0 +margin_right = 306.0 +margin_bottom = 248.0 size_flags_horizontal = 7 alignment = 1 [node name="label" type="Label" parent="margin_box/window_box/content_box/tabs_box/Tête/aspect/nose_galbe"] -margin_right = 134.0 -margin_bottom = 21.0 +margin_right = 138.0 +margin_bottom = 17.0 size_flags_horizontal = 3 text = "Galbe du nez" align = 2 [node name="value" type="HSlider" parent="margin_box/window_box/content_box/tabs_box/Tête/aspect/nose_galbe"] -margin_left = 138.0 -margin_right = 302.0 -margin_bottom = 21.0 +margin_left = 142.0 +margin_right = 306.0 +margin_bottom = 17.0 rect_min_size = Vector2( 164, 0 ) size_flags_horizontal = 3 size_flags_vertical = 1 @@ -709,23 +708,23 @@ max_value = 1.0 step = 0.1 [node name="nose_grec" type="HBoxContainer" parent="margin_box/window_box/content_box/tabs_box/Tête/aspect"] -margin_top = 281.0 -margin_right = 302.0 -margin_bottom = 302.0 +margin_top = 252.0 +margin_right = 306.0 +margin_bottom = 269.0 size_flags_horizontal = 7 alignment = 1 [node name="label" type="Label" parent="margin_box/window_box/content_box/tabs_box/Tête/aspect/nose_grec"] -margin_right = 134.0 -margin_bottom = 21.0 +margin_right = 138.0 +margin_bottom = 17.0 size_flags_horizontal = 3 text = "Nez grec" align = 2 [node name="value" type="HSlider" parent="margin_box/window_box/content_box/tabs_box/Tête/aspect/nose_grec"] -margin_left = 138.0 -margin_right = 302.0 -margin_bottom = 21.0 +margin_left = 142.0 +margin_right = 306.0 +margin_bottom = 17.0 rect_min_size = Vector2( 164, 0 ) size_flags_horizontal = 3 size_flags_vertical = 1 @@ -734,23 +733,23 @@ max_value = 1.0 step = 0.1 [node name="nose_horiz" type="HBoxContainer" parent="margin_box/window_box/content_box/tabs_box/Tête/aspect"] -margin_top = 306.0 -margin_right = 302.0 -margin_bottom = 327.0 +margin_top = 273.0 +margin_right = 306.0 +margin_bottom = 290.0 size_flags_horizontal = 7 alignment = 1 [node name="label" type="Label" parent="margin_box/window_box/content_box/tabs_box/Tête/aspect/nose_horiz"] -margin_right = 134.0 -margin_bottom = 21.0 +margin_right = 138.0 +margin_bottom = 17.0 size_flags_horizontal = 3 text = "Nez horizontal" align = 2 [node name="value" type="HSlider" parent="margin_box/window_box/content_box/tabs_box/Tête/aspect/nose_horiz"] -margin_left = 138.0 -margin_right = 302.0 -margin_bottom = 21.0 +margin_left = 142.0 +margin_right = 306.0 +margin_bottom = 17.0 rect_min_size = Vector2( 164, 0 ) size_flags_horizontal = 3 size_flags_vertical = 1 @@ -759,23 +758,23 @@ max_value = 1.0 step = 0.1 [node name="nose_depth" type="HBoxContainer" parent="margin_box/window_box/content_box/tabs_box/Tête/aspect"] -margin_top = 331.0 -margin_right = 302.0 -margin_bottom = 352.0 +margin_top = 294.0 +margin_right = 306.0 +margin_bottom = 311.0 size_flags_horizontal = 7 alignment = 1 [node name="label" type="Label" parent="margin_box/window_box/content_box/tabs_box/Tête/aspect/nose_depth"] -margin_right = 134.0 -margin_bottom = 21.0 +margin_right = 138.0 +margin_bottom = 17.0 size_flags_horizontal = 3 text = "Nez profondeur" align = 2 [node name="value" type="HSlider" parent="margin_box/window_box/content_box/tabs_box/Tête/aspect/nose_depth"] -margin_left = 138.0 -margin_right = 302.0 -margin_bottom = 21.0 +margin_left = 142.0 +margin_right = 306.0 +margin_bottom = 17.0 rect_min_size = Vector2( 164, 0 ) size_flags_horizontal = 3 size_flags_vertical = 1 @@ -784,30 +783,30 @@ max_value = 1.0 step = 0.1 [node name="mouth_label" type="Label" parent="margin_box/window_box/content_box/tabs_box/Tête/aspect"] -margin_top = 356.0 -margin_right = 302.0 -margin_bottom = 377.0 +margin_top = 315.0 +margin_right = 306.0 +margin_bottom = 332.0 text = "Bouche" align = 1 [node name="mouth_horiz" type="HBoxContainer" parent="margin_box/window_box/content_box/tabs_box/Tête/aspect"] -margin_top = 381.0 -margin_right = 302.0 -margin_bottom = 402.0 +margin_top = 336.0 +margin_right = 306.0 +margin_bottom = 353.0 size_flags_horizontal = 7 alignment = 1 [node name="label" type="Label" parent="margin_box/window_box/content_box/tabs_box/Tête/aspect/mouth_horiz"] -margin_right = 134.0 -margin_bottom = 21.0 +margin_right = 138.0 +margin_bottom = 17.0 size_flags_horizontal = 3 text = "Bouche horizontale" align = 2 [node name="value" type="HSlider" parent="margin_box/window_box/content_box/tabs_box/Tête/aspect/mouth_horiz"] -margin_left = 138.0 -margin_right = 302.0 -margin_bottom = 21.0 +margin_left = 142.0 +margin_right = 306.0 +margin_bottom = 17.0 rect_min_size = Vector2( 164, 0 ) size_flags_horizontal = 3 size_flags_vertical = 1 @@ -816,23 +815,23 @@ max_value = 1.0 step = 0.1 [node name="mouth_vert" type="HBoxContainer" parent="margin_box/window_box/content_box/tabs_box/Tête/aspect"] -margin_top = 406.0 -margin_right = 302.0 -margin_bottom = 427.0 +margin_top = 357.0 +margin_right = 306.0 +margin_bottom = 374.0 size_flags_horizontal = 7 alignment = 1 [node name="label" type="Label" parent="margin_box/window_box/content_box/tabs_box/Tête/aspect/mouth_vert"] -margin_right = 134.0 -margin_bottom = 21.0 +margin_right = 138.0 +margin_bottom = 17.0 size_flags_horizontal = 3 text = "Bouche verticale" align = 2 [node name="value" type="HSlider" parent="margin_box/window_box/content_box/tabs_box/Tête/aspect/mouth_vert"] -margin_left = 138.0 -margin_right = 302.0 -margin_bottom = 21.0 +margin_left = 142.0 +margin_right = 306.0 +margin_bottom = 17.0 rect_min_size = Vector2( 164, 0 ) size_flags_horizontal = 3 size_flags_vertical = 1 @@ -841,23 +840,23 @@ max_value = 1.0 step = 0.1 [node name="lips_up_shape" type="HBoxContainer" parent="margin_box/window_box/content_box/tabs_box/Tête/aspect"] -margin_top = 431.0 -margin_right = 302.0 -margin_bottom = 452.0 +margin_top = 378.0 +margin_right = 306.0 +margin_bottom = 395.0 size_flags_horizontal = 7 alignment = 1 [node name="label" type="Label" parent="margin_box/window_box/content_box/tabs_box/Tête/aspect/lips_up_shape"] -margin_right = 134.0 -margin_bottom = 21.0 +margin_right = 138.0 +margin_bottom = 17.0 size_flags_horizontal = 3 text = "Forme bouche 1" align = 2 [node name="value" type="HSlider" parent="margin_box/window_box/content_box/tabs_box/Tête/aspect/lips_up_shape"] -margin_left = 138.0 -margin_right = 302.0 -margin_bottom = 21.0 +margin_left = 142.0 +margin_right = 306.0 +margin_bottom = 17.0 rect_min_size = Vector2( 164, 0 ) size_flags_horizontal = 3 size_flags_vertical = 1 @@ -866,23 +865,23 @@ max_value = 1.0 step = 0.1 [node name="lips_up_shape_2" type="HBoxContainer" parent="margin_box/window_box/content_box/tabs_box/Tête/aspect"] -margin_top = 456.0 -margin_right = 302.0 -margin_bottom = 477.0 +margin_top = 399.0 +margin_right = 306.0 +margin_bottom = 416.0 size_flags_horizontal = 7 alignment = 1 [node name="label" type="Label" parent="margin_box/window_box/content_box/tabs_box/Tête/aspect/lips_up_shape_2"] -margin_right = 134.0 -margin_bottom = 21.0 +margin_right = 138.0 +margin_bottom = 17.0 size_flags_horizontal = 3 text = "Forme bouche 2" align = 2 [node name="value" type="HSlider" parent="margin_box/window_box/content_box/tabs_box/Tête/aspect/lips_up_shape_2"] -margin_left = 138.0 -margin_right = 302.0 -margin_bottom = 21.0 +margin_left = 142.0 +margin_right = 306.0 +margin_bottom = 17.0 rect_min_size = Vector2( 164, 0 ) size_flags_horizontal = 3 size_flags_vertical = 1 @@ -891,30 +890,30 @@ max_value = 1.0 step = 0.1 [node name="chin_label" type="Label" parent="margin_box/window_box/content_box/tabs_box/Tête/aspect"] -margin_top = 481.0 -margin_right = 302.0 -margin_bottom = 502.0 +margin_top = 420.0 +margin_right = 306.0 +margin_bottom = 437.0 text = "Menton" align = 1 [node name="cleft_chin" type="HBoxContainer" parent="margin_box/window_box/content_box/tabs_box/Tête/aspect"] -margin_top = 506.0 -margin_right = 302.0 -margin_bottom = 527.0 +margin_top = 441.0 +margin_right = 306.0 +margin_bottom = 458.0 size_flags_horizontal = 7 alignment = 1 [node name="label" type="Label" parent="margin_box/window_box/content_box/tabs_box/Tête/aspect/cleft_chin"] -margin_right = 134.0 -margin_bottom = 21.0 +margin_right = 138.0 +margin_bottom = 17.0 size_flags_horizontal = 3 text = "double menton" align = 2 [node name="value" type="HSlider" parent="margin_box/window_box/content_box/tabs_box/Tête/aspect/cleft_chin"] -margin_left = 138.0 -margin_right = 302.0 -margin_bottom = 21.0 +margin_left = 142.0 +margin_right = 306.0 +margin_bottom = 17.0 rect_min_size = Vector2( 164, 0 ) size_flags_horizontal = 3 size_flags_vertical = 1 @@ -922,23 +921,23 @@ max_value = 1.0 step = 0.1 [node name="chin_angle" type="HBoxContainer" parent="margin_box/window_box/content_box/tabs_box/Tête/aspect"] -margin_top = 531.0 -margin_right = 302.0 -margin_bottom = 552.0 +margin_top = 462.0 +margin_right = 306.0 +margin_bottom = 479.0 size_flags_horizontal = 7 alignment = 1 [node name="label" type="Label" parent="margin_box/window_box/content_box/tabs_box/Tête/aspect/chin_angle"] -margin_right = 134.0 -margin_bottom = 21.0 +margin_right = 138.0 +margin_bottom = 17.0 size_flags_horizontal = 3 text = "Menton" align = 2 [node name="value" type="HSlider" parent="margin_box/window_box/content_box/tabs_box/Tête/aspect/chin_angle"] -margin_left = 138.0 -margin_right = 302.0 -margin_bottom = 21.0 +margin_left = 142.0 +margin_right = 306.0 +margin_bottom = 17.0 rect_min_size = Vector2( 164, 0 ) size_flags_horizontal = 3 size_flags_vertical = 1 @@ -954,40 +953,40 @@ size_flags_horizontal = 6 size_flags_vertical = 6 [node name="lasting_points" type="HBoxContainer" parent="margin_box/window_box/content_box/tabs_box/caracteristiques"] -margin_right = 502.0 -margin_bottom = 21.0 +margin_right = 638.0 +margin_bottom = 17.0 [node name="label" type="Label" parent="margin_box/window_box/content_box/tabs_box/caracteristiques/lasting_points"] -margin_left = 145.0 -margin_right = 249.0 -margin_bottom = 21.0 +margin_left = 214.0 +margin_right = 317.0 +margin_bottom = 17.0 size_flags_horizontal = 10 text = "Points restants" [node name="value" type="Label" parent="margin_box/window_box/content_box/tabs_box/caracteristiques/lasting_points"] -margin_left = 253.0 -margin_right = 261.0 -margin_bottom = 21.0 +margin_left = 321.0 +margin_right = 330.0 +margin_bottom = 17.0 size_flags_horizontal = 2 text = "5" [node name="strength" type="HBoxContainer" parent="margin_box/window_box/content_box/tabs_box/caracteristiques"] -margin_top = 25.0 -margin_right = 502.0 -margin_bottom = 56.0 +margin_top = 21.0 +margin_right = 638.0 +margin_bottom = 54.0 [node name="label" type="Label" parent="margin_box/window_box/content_box/tabs_box/caracteristiques/strength"] -margin_left = 211.0 -margin_top = 5.0 -margin_right = 249.0 -margin_bottom = 26.0 +margin_left = 277.0 +margin_top = 8.0 +margin_right = 317.0 +margin_bottom = 25.0 size_flags_horizontal = 10 text = "Force" [node name="value" type="SpinBox" parent="margin_box/window_box/content_box/tabs_box/caracteristiques/strength"] -margin_left = 253.0 -margin_right = 315.0 -margin_bottom = 31.0 +margin_left = 321.0 +margin_right = 401.0 +margin_bottom = 33.0 size_flags_horizontal = 2 min_value = 1.0 max_value = 10.0 @@ -995,22 +994,22 @@ value = 5.0 align = 1 [node name="perception" type="HBoxContainer" parent="margin_box/window_box/content_box/tabs_box/caracteristiques"] -margin_top = 60.0 -margin_right = 502.0 +margin_top = 58.0 +margin_right = 638.0 margin_bottom = 91.0 [node name="label" type="Label" parent="margin_box/window_box/content_box/tabs_box/caracteristiques/perception"] -margin_left = 174.0 -margin_top = 5.0 -margin_right = 249.0 -margin_bottom = 26.0 +margin_left = 241.0 +margin_top = 8.0 +margin_right = 317.0 +margin_bottom = 25.0 size_flags_horizontal = 10 text = "Perception" [node name="value" type="SpinBox" parent="margin_box/window_box/content_box/tabs_box/caracteristiques/perception"] -margin_left = 253.0 -margin_right = 315.0 -margin_bottom = 31.0 +margin_left = 321.0 +margin_right = 401.0 +margin_bottom = 33.0 size_flags_horizontal = 2 min_value = 1.0 max_value = 10.0 @@ -1019,21 +1018,21 @@ align = 1 [node name="endurance" type="HBoxContainer" parent="margin_box/window_box/content_box/tabs_box/caracteristiques"] margin_top = 95.0 -margin_right = 502.0 -margin_bottom = 126.0 +margin_right = 638.0 +margin_bottom = 128.0 [node name="label" type="Label" parent="margin_box/window_box/content_box/tabs_box/caracteristiques/endurance"] -margin_left = 175.0 -margin_top = 5.0 -margin_right = 249.0 -margin_bottom = 26.0 +margin_left = 240.0 +margin_top = 8.0 +margin_right = 317.0 +margin_bottom = 25.0 size_flags_horizontal = 10 text = "Endurance" [node name="value" type="SpinBox" parent="margin_box/window_box/content_box/tabs_box/caracteristiques/endurance"] -margin_left = 253.0 -margin_right = 315.0 -margin_bottom = 31.0 +margin_left = 321.0 +margin_right = 401.0 +margin_bottom = 33.0 size_flags_horizontal = 2 min_value = 1.0 max_value = 10.0 @@ -1041,22 +1040,22 @@ value = 5.0 align = 1 [node name="constitution" type="HBoxContainer" parent="margin_box/window_box/content_box/tabs_box/caracteristiques"] -margin_top = 130.0 -margin_right = 502.0 -margin_bottom = 161.0 +margin_top = 132.0 +margin_right = 638.0 +margin_bottom = 165.0 [node name="label" type="Label" parent="margin_box/window_box/content_box/tabs_box/caracteristiques/constitution"] -margin_left = 162.0 -margin_top = 5.0 -margin_right = 249.0 -margin_bottom = 26.0 +margin_left = 232.0 +margin_top = 8.0 +margin_right = 317.0 +margin_bottom = 25.0 size_flags_horizontal = 10 text = "Constitution" [node name="value" type="SpinBox" parent="margin_box/window_box/content_box/tabs_box/caracteristiques/constitution"] -margin_left = 253.0 -margin_right = 315.0 -margin_bottom = 31.0 +margin_left = 321.0 +margin_right = 401.0 +margin_bottom = 33.0 size_flags_horizontal = 2 min_value = 1.0 max_value = 10.0 @@ -1064,22 +1063,22 @@ value = 5.0 align = 1 [node name="agility" type="HBoxContainer" parent="margin_box/window_box/content_box/tabs_box/caracteristiques"] -margin_top = 165.0 -margin_right = 502.0 -margin_bottom = 196.0 +margin_top = 169.0 +margin_right = 638.0 +margin_bottom = 202.0 [node name="label" type="Label" parent="margin_box/window_box/content_box/tabs_box/caracteristiques/agility"] -margin_left = 198.0 -margin_top = 5.0 -margin_right = 249.0 -margin_bottom = 26.0 +margin_left = 263.0 +margin_top = 8.0 +margin_right = 317.0 +margin_bottom = 25.0 size_flags_horizontal = 10 text = "Agilitée" [node name="value" type="SpinBox" parent="margin_box/window_box/content_box/tabs_box/caracteristiques/agility"] -margin_left = 253.0 -margin_right = 315.0 -margin_bottom = 31.0 +margin_left = 321.0 +margin_right = 401.0 +margin_bottom = 33.0 size_flags_horizontal = 2 min_value = 1.0 max_value = 10.0 diff --git a/scenes/creatures/creatures_creation.gd b/scenes/creatures/creatures_creation.gd index fb477cb..182d72d 100644 --- a/scenes/creatures/creatures_creation.gd +++ b/scenes/creatures/creatures_creation.gd @@ -3,15 +3,18 @@ extends Spatial onready var character = $character var is_over_ui = false +var Creature = load("res://ressources/scripts/datas/creature.gd") +var Human = load("res://ressources/scripts/datas/human.gd") func _ready(): $creature_creation_menu._on_race_id_pressed( 0 ) $creature_creation_menu._on_sex_id_pressed( 0 ) - if Globals.creatures_editor_mode == Globals.CREATURES_EDITOR_MODE.player: - $creature_creation_menu/margin_box/window_box/content_box/tabs_box/definition/race.hide() - elif Globals.creatures_editor_mode == Globals.CREATURES_EDITOR_MODE.npc: + #if Globals.creatures_editor_mode == Globals.CREATURES_EDITOR_MODE.player: + # $creature_creation_menu/margin_box/window_box/content_box/tabs_box/definition/race.hide() + #elif Globals.creatures_editor_mode == Globals.CREATURES_EDITOR_MODE.npc: + if Globals.creatures_editor_mode == Globals.CREATURES_EDITOR_MODE.npc: $creature_creation_menu.max_caracteristiques_points = 999 $creature_creation_menu/margin_box/window_box/tools_box/buttons_box/choose.hide() @@ -92,9 +95,9 @@ func load_creature( p_name = null ): var race = Globals.get_race_id( $creature_creation_menu/margin_box/window_box/content_box/tabs_box/definition/race/value.text ) if race == Globals.RACE.human: - creature = Datas.Human.new() + creature = Human.new() else: - creature = Datas.Creature.new() + creature = Creature.new() var filename = $creature_creation_menu/margin_box/window_box/content_box/tabs_box/definition/name/value/first_name.text + "_" + $creature_creation_menu/margin_box/window_box/content_box/tabs_box/definition/name/value/last_name.text+".creature" if p_name: filename = p_name + ".creature" diff --git a/scenes/creatures/creatures_creation.tscn b/scenes/creatures/creatures_creation.tscn index 2033817..d18ee07 100644 --- a/scenes/creatures/creatures_creation.tscn +++ b/scenes/creatures/creatures_creation.tscn @@ -47,6 +47,7 @@ transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.98872, 2.59328 ) light_specular = 0.1 [node name="root" type="Spatial" parent="."] +visible = false [node name="Cube" type="MeshInstance" parent="root"] mesh = SubResource( 1 ) diff --git a/scenes/creatures/human/human_male.tscn b/scenes/creatures/human/human_male.tscn index 72385ee..28a1b5c 100644 --- a/scenes/creatures/human/human_male.tscn +++ b/scenes/creatures/human/human_male.tscn @@ -4,7 +4,6 @@ [ext_resource path="res://scenes/creatures/creature.gd" type="Script" id=2] [ext_resource path="res://scenes/creatures/human/mh_human_male_hair.tscn" type="PackedScene" id=6] - [sub_resource type="CapsuleShape" id=1] radius = 0.448335 height = 0.810096 @@ -26,4 +25,5 @@ transform = Transform( 1, 0, 0, 0, -1.62921e-07, 1, 0, -1, -1.62921e-07, 0, 0, 0 [node name="cloths" type="Spatial" parent="."] transform = Transform( 1, 0, 0, 0, -1.62921e-07, 1, 0, -1, -1.62921e-07, 0, 0, 0.852 ) + [connection signal="animation_finished" from="body_parts/body" to="." method="_on_body_animation_finished"] diff --git a/scenes/creatures/human/mh_human_female.tscn b/scenes/creatures/human/mh_human_female.tscn index 5982533..c1edc1c 100644 --- a/scenes/creatures/human/mh_human_female.tscn +++ b/scenes/creatures/human/mh_human_female.tscn @@ -14,32 +14,34 @@ script/source = "extends Spatial signal animation_finished( anim_name ) signal limb_body_entered( limb, body ) +var Cloth = load(\"res://ressources/scripts/datas/cloth.gd\") + func _on_AnimationPlayer_animation_finished(anim_name): emit_signal( \"animation_finished\", anim_name ) func _on_limb_head_area_body_entered(body): - emit_signal( \"limb_body_entered\", Datas.Cloth.LIMB.head, body ) + emit_signal( \"limb_body_entered\", Cloth.LIMB.head, body ) func _on_limb_tosro_1_body_entered(body): - emit_signal( \"limb_body_entered\", Datas.Cloth.LIMB.torso, body ) + emit_signal( \"limb_body_entered\", Cloth.LIMB.torso, body ) func _on_limb_torso_2_body_entered(body): - emit_signal( \"limb_body_entered\", Datas.Cloth.LIMB.torso, body ) + emit_signal( \"limb_body_entered\", Cloth.LIMB.torso, body ) func _on_limb_torso_3_body_entered(body): - emit_signal( \"limb_body_entered\", Datas.Cloth.LIMB.torso, body ) + emit_signal( \"limb_body_entered\", Cloth.LIMB.torso, body ) func _on_limb_torso_4_body_entered(body): - emit_signal( \"limb_body_entered\", Datas.Cloth.LIMB.torso, body ) + emit_signal( \"limb_body_entered\", Cloth.LIMB.torso, body ) func _on_limb_torso_5_body_entered(body): - emit_signal( \"limb_body_entered\", Datas.Cloth.LIMB.torso, body ) + emit_signal( \"limb_body_entered\", Cloth.LIMB.torso, body ) func _on_limb_upper_arm_left_body_entered(body): - emit_signal( \"limb_body_entered\", Datas.Cloth.LIMB.left_upper_arm, body ) + emit_signal( \"limb_body_entered\", Cloth.LIMB.left_upper_arm, body ) " @@ -86,7 +88,7 @@ material/0 = ExtResource( 6 ) material/0 = ExtResource( 2 ) [node name="limb_head" type="BoneAttachment" parent="skeleton" index="7"] -transform = Transform( 1, 0, 0, 0, 0.0523112, -0.998451, 0, 0.99863, 0.0523236, 0, 0.631645, 0.0409583 ) +transform = Transform( 1, 0, 0, 0, 0.0523111, -0.998451, 0, 0.99863, 0.0523234, 0, 0.629455, 0.0158642 ) bone_name = "head" [node name="area" type="Area" parent="skeleton/limb_head" index="0"] @@ -96,7 +98,7 @@ transform = Transform( 1, 0, 0, 0, 0.999999, -7.45058e-09, 0, 7.45058e-09, 1, 0, shape = SubResource( 2 ) [node name="limb_torso_1" type="BoneAttachment" parent="skeleton" index="8"] -transform = Transform( 1, 0, 0, 0, 0.0981498, -0.994991, 0, 0.99517, 0.0981703, 0, 0.383938, 0.01275 ) +transform = Transform( 1, 0, 0, 0, 0.182603, -0.983004, 0, 0.98318, 0.182639, 0, 0.383466, -0.000238065 ) bone_name = "spine01" [node name="area" type="Area" parent="skeleton/limb_torso_1" index="0"] @@ -107,7 +109,7 @@ transform = Transform( -1.62921e-07, 0, 0.999999, 0, 0.999999, 0, -0.999999, 0, shape = SubResource( 3 ) [node name="limb_torso_2" type="BoneAttachment" parent="skeleton" index="9"] -transform = Transform( 1, 0, 0, 0, -0.00632599, -0.999801, 0, 0.99998, -0.00632417, 0, 0.231632, 0.0117867 ) +transform = Transform( 1, 0, 0, 0, 0.0789178, -0.996701, 0, 0.99688, 0.0789349, 0, 0.231632, 0.0117867 ) bone_name = "spine02" [node name="area" type="Area" parent="skeleton/limb_torso_2" index="0"] @@ -117,7 +119,7 @@ transform = Transform( -1.62921e-07, 0, 0.999999, 0, 0.999999, 0, -0.999999, 0, shape = SubResource( 4 ) [node name="limb_torso_3" type="BoneAttachment" parent="skeleton" index="10"] -transform = Transform( 1, 0, 0, 0, -0.13324, -0.990902, 0, 0.991081, -0.133261, 0, 0.141423, -0.000345033 ) +transform = Transform( 1, 0, 0, 0, -0.13324, -0.990903, 0, 0.991081, -0.133261, 0, 0.141423, -0.000345025 ) bone_name = "spine03" [node name="area" type="Area" parent="skeleton/limb_torso_3" index="0"] @@ -127,7 +129,7 @@ transform = Transform( -1.62921e-07, 0, 0.999999, 0, 0.999999, 0, -0.999999, 0, shape = SubResource( 4 ) [node name="limb_torso_4" type="BoneAttachment" parent="skeleton" index="11"] -transform = Transform( 1, 0, 0, 0, -0.32935, -0.944017, 0, 0.944188, -0.329407, 0, 0.0787433, -0.0222167 ) +transform = Transform( 1, 0, 0, 0, -0.329351, -0.944018, 0, 0.944188, -0.329407, 0, 0.0787433, -0.0222167 ) bone_name = "spine04" [node name="area" type="Area" parent="skeleton/limb_torso_4" index="0"] @@ -138,7 +140,7 @@ transform = Transform( -1.62921e-07, 0, 0.999999, 0, 0.999999, 0, -0.999999, 0, shape = SubResource( 5 ) [node name="limb_torso_5" type="BoneAttachment" parent="skeleton" index="12"] -transform = Transform( 1, 0, 0, 0, 0.534014, -0.845263, 0, 0.845413, 0.534112, 0, 0.0066183, 0.0233583 ) +transform = Transform( 1, 0, 0, 0, 0.534014, -0.845263, 0, 0.845413, 0.534112, 0, 0.00661829, 0.0233583 ) bone_name = "spine05" [node name="area" type="Area" parent="skeleton/limb_torso_5" index="0"] @@ -149,7 +151,7 @@ transform = Transform( -1.62921e-07, 0, 0.999999, 0, 0.999999, 0, -0.999999, 0, shape = SubResource( 5 ) [node name="limb_upper_arm_left" type="BoneAttachment" parent="skeleton" index="13"] -transform = Transform( -0.745066, -0.0134922, -0.666855, -0.666773, 0.03218, 0.744323, 0.0114208, 0.999391, -0.0329804, 0.208593, 0.385909, 0.019574 ) +transform = Transform( -0.970824, 0.133984, -0.198431, -0.20868, -0.0676765, 0.975425, 0.117262, 0.988696, 0.0936781, 0.170717, 0.366623, -0.00909948 ) bone_name = "upperarm02.L" [node name="area" type="Area" parent="skeleton/limb_upper_arm_left" index="0"] @@ -160,21 +162,21 @@ transform = Transform( -1.62921e-07, 0, 0.999999, 0, 0.999999, 0, -0.999999, 0, shape = SubResource( 6 ) [node name="attachment_hand_R" type="BoneAttachment" parent="skeleton" index="14"] -transform = Transform( 0.587628, 0.647439, 0.485299, 0.412693, -0.755596, 0.508329, 0.695927, -0.0984435, -0.711334, -0.440104, 0.124054, 0.17144 ) +transform = Transform( 0.439623, 0.845161, 0.303632, 0.0253603, -0.349546, 0.936193, 0.897875, -0.404187, -0.175111, -0.243995, -0.0185078, 0.0149495 ) bone_name = "metacarpal3.R" [node name="handle" type="Spatial" parent="skeleton/attachment_hand_R" index="0"] transform = Transform( -0.0511686, 0.991695, -0.116549, 0.320607, -0.0942135, -0.942455, -0.946104, -0.0855632, -0.313081, 0.0258782, 0.0285175, -0.0395434 ) [node name="attachment_hand_L" type="BoneAttachment" parent="skeleton" index="15"] -transform = Transform( 0.587628, -0.647439, -0.485299, -0.412693, -0.755596, 0.508329, -0.695927, -0.0984435, -0.711334, 0.440104, 0.124054, 0.17144 ) +transform = Transform( 0.439623, -0.845161, -0.303633, -0.0253602, -0.349546, 0.936193, -0.897875, -0.404187, -0.175111, 0.243995, -0.0185078, 0.0149495 ) bone_name = "metacarpal3.L" [node name="handle" type="Spatial" parent="skeleton/attachment_hand_L" index="0"] transform = Transform( 0.248711, -0.966789, 0.0577959, -0.32067, -0.138623, -0.937039, 0.914105, 0.214413, -0.344196, -0.0963456, 0.0583696, -0.12191 ) [node name="attachment_hips_R" type="BoneAttachment" parent="skeleton" index="16"] -transform = Transform( -0.0959694, 0.091845, 0.991138, 0.312981, -0.942256, 0.11762, 0.944878, 0.321558, 0.0616928, 0, 0.0066183, 0.0233583 ) +transform = Transform( -0.0959694, 0.091845, 0.991138, 0.312981, -0.942256, 0.11762, 0.944878, 0.321558, 0.0616928, -1.00505e-09, 0.0066183, 0.0233583 ) bone_name = "pelvis.R" [node name="handle" type="Spatial" parent="skeleton/attachment_hips_R" index="0"] diff --git a/scenes/creatures/human/mh_human_male.gd b/scenes/creatures/human/mh_human_male.gd index 6286038..515f57f 100644 --- a/scenes/creatures/human/mh_human_male.gd +++ b/scenes/creatures/human/mh_human_male.gd @@ -3,4 +3,4 @@ extends Spatial signal animation_finished( anim_name ) func _on_AnimationPlayer_animation_finished(anim_name): - emit_signal( "animation_finished", anim_name ) + emit_signal( "animation_finished", anim_name ) diff --git a/scenes/decors/vegets/grass/grass_01.res b/scenes/decors/vegets/grass/grass_01.res index 4030bfedf4ac237d80075e8f9abeb507b99a090c..56ae27361db30f99c4388bb6bf45fcaf72ad5dbe 100644 GIT binary patch literal 368 zcmV-$0gwJtQ$s@n000005C8!70ssJ50RR9fwJ-f(_5pPY0Mbt}Er2;`3^OnTGcW@) zfIYTtE9`EIzHN|u%XhRMF-!n}W<>x|;}5B8+2(LA8ItOWSf9C;gBW zlg?n%i>al0EvbT0%MrL_4`%57&q1s3WR_tB?VxC zhLYU}uwg2>K$?IDJOOO(hG@4V1R3d01tuT}Pylq{qD>vmSKZKo%%1_i0YT%$2*F4y zp@wyT#5;h9(gbn@fVUj!v0P8a#Z0vVR0K{oW;vJN2}}S`n9XEPgo^{PYsiVed>^?T ON=a~y7#tQ-Q$s_wv7LGV literal 369 zcmV-%0gnDsQ$s@n000005C8!70ssJ60RR9fwJ-f(_5png0OHRuEPy#A0MGM0&+|Ob zHM?b!N@fyrDWOlPcML=&02h9xY^Z^hg{2v{WU@-&geH)PVNmTa@Y1$i#!3HUy`($X z^kQnMUQ4QA=B>hC;cu)?Rb^>~%8B0q;Aea~AV30Qlu7mbRlN{5W(b8wK$Mb#wLoLZ z-UC=Ll~N#2-~;{uXD)_l*%^XtbjJe|5Ckv)TH&It4i?Z}p@W;BESv^}#fcGu@l?VM z>wn~Tpomfgas@!Q9Oa6<@>nW Pp_Bxh{07hlQd2`i&D5c1 diff --git a/scenes/game/game.tscn b/scenes/game/game.tscn index d34f90e..77f12aa 100644 --- a/scenes/game/game.tscn +++ b/scenes/game/game.tscn @@ -24,8 +24,8 @@ noise = SubResource( 1 ) [sub_resource type="ShaderMaterial" id=3] resource_local_to_scene = true shader = ExtResource( 5 ) -shader_param/iTime = 4.27346 -shader_param/iFrame = 402 +shader_param/iTime = 101.769 +shader_param/iFrame = 5732 shader_param/COVERAGE = 0.5 shader_param/THICKNESS = 25.0 shader_param/ABSORPTION = 1.031 @@ -173,6 +173,7 @@ margin_left = 908.654 margin_top = 51.8173 margin_right = -115.346 margin_bottom = -412.183 + [connection signal="douleur_minus_pressed" from="debug_window" to="." method="_on_debug_window_douleur_minus_pressed"] [connection signal="douleur_plus_pressed" from="debug_window" to="." method="_on_debug_window_douleur_plus_pressed"] [connection signal="mist_level_changed" from="debug_window" to="." method="_on_debug_window_mist_level_changed"] diff --git a/scenes/game/generate_map.gd b/scenes/game/generate_map.gd new file mode 100644 index 0000000..2b30d02 --- /dev/null +++ b/scenes/game/generate_map.gd @@ -0,0 +1,142 @@ +extends Node + +# Cache : ~/.cache/godot/ + + +func GenerateMap(filemap:String, longitude:int, latitude:int): + Config.msg_debug("GenerateMap => Start") + Config.msg_debug(" [" + filemap + "] longitude:" + str(longitude) + " latitude:" + str(latitude)) + var image = Image.new() + var arr = [] + var mesh = ArrayMesh.new() + + arr.resize(Mesh.ARRAY_MAX) + # Set up the PoolVectorXArrays. + var verts = PoolVector3Array() + var uvs = PoolVector2Array() + var normals = PoolVector3Array() + var indices = PoolIntArray() + + # Vertex indices. + var thisrow = 0 + var prevrow = 0 + var point = 0 + image.load(filemap) + var width = image.get_width() + var height = image.get_height() + image.lock() + Config.msg_debug("width:" + str(width) + " , height:" + str(height)) + var lvl = image.get_pixel(0,0).v + Config.msg_debug("level:" + str(lvl)) + Config.msg_debug("a:" + str(image.get_pixel(0,0).a)) + Config.msg_debug("r:" + str(image.get_pixel(0,0).r)) + Config.msg_debug("v:" + str(image.get_pixel(0,0).v)) + Config.msg_debug("b:" + str(image.get_pixel(0,0).b)) + var txt + # y => height, x => width + for y in range(height): + for x in range(width): + var z = int(image.get_pixel(x,y).v * 500) + var vert = Vector3(x, z, y) + Config.msg_debug("x:" + str(x) + " , y:" + str(y) + " , z:" + str(z)) + verts.append(vert) + normals.append(vert.normalized()) + uvs.append(Vector2(x, y)) + point += 1 + if x > 0 and y > 0: + indices.append(prevrow + x - 1) + indices.append(prevrow + x) + indices.append(thisrow + x - 1) + indices.append(prevrow + x) + indices.append(thisrow + x) + indices.append(thisrow + x - 1) + if y > 0: + indices.append(prevrow + width - 1) + indices.append(prevrow) + indices.append(thisrow + width - 1) + indices.append(prevrow) + indices.append(prevrow + width) + indices.append(thisrow + width - 1) + prevrow = thisrow + thisrow = point + + arr[Mesh.ARRAY_VERTEX] = verts + arr[Mesh.ARRAY_TEX_UV] = uvs + arr[Mesh.ARRAY_NORMAL] = normals + arr[Mesh.ARRAY_INDEX] = indices + image.unlock() + # Create mesh surface from mesh array. + mesh.add_surface_from_arrays(Mesh.PRIMITIVE_TRIANGLES, arr) # No blendshapes or compression used. + # Commit to the ArrayMesh. + ResourceSaver.save("res://map" + str(longitude) + "-" + str(latitude) + ".tres", mesh, 32) + Config.msg_debug("GenerateMap => End") + + +func GenerateSphere(rings:int = 50, radial_segments:int = 50, height:int = 1, radius:int = 1): + Config.msg_debug("GenerateSphere => Start") + var arr = [] + var mesh = ArrayMesh.new() + + arr.resize(Mesh.ARRAY_MAX) + # Set up the PoolVectorXArrays. + var verts = PoolVector3Array() + var uvs = PoolVector2Array() + var normals = PoolVector3Array() + var indices = PoolIntArray() + + # Vertex indices. + var thisrow = 0 + var prevrow = 0 + var point = 0 + + # Loop over rings. + for i in range(rings + 1): + var v = float(i) / rings + var w = sin(PI * v) + var y = cos(PI * v) + + # Loop over segments in ring. + for j in range(radial_segments): + var u = float(j) / radial_segments + var x = sin(u * PI * 2.0) + var z = cos(u * PI * 2.0) + var vert = Vector3(x * radius * w, y, z * radius * w) + verts.append(vert) + normals.append(vert.normalized()) + uvs.append(Vector2(u, v)) + point += 1 + + # Create triangles in ring using indices. + if i > 0 and j > 0: + indices.append(prevrow + j - 1) + indices.append(prevrow + j) + indices.append(thisrow + j - 1) + + indices.append(prevrow + j) + indices.append(thisrow + j) + indices.append(thisrow + j - 1) + + if i > 0: + indices.append(prevrow + radial_segments - 1) + indices.append(prevrow) + indices.append(thisrow + radial_segments - 1) + + indices.append(prevrow) + indices.append(prevrow + radial_segments) + indices.append(thisrow + radial_segments - 1) + + prevrow = thisrow + thisrow = point + + # Assign arrays to mesh array. + arr[Mesh.ARRAY_VERTEX] = verts + arr[Mesh.ARRAY_TEX_UV] = uvs + arr[Mesh.ARRAY_NORMAL] = normals + arr[Mesh.ARRAY_INDEX] = indices + + # Create mesh surface from mesh array. + mesh.add_surface_from_arrays(Mesh.PRIMITIVE_TRIANGLES, arr) # No blendshapes or compression used. + + # Commit to the ArrayMesh. + ResourceSaver.save("user://sphere.tres", mesh, 32) + Config.msg_debug("GenerateSphere => End") diff --git a/scenes/interfaces/creatures_menu/creatures_menu_ui.gd b/scenes/interfaces/creatures_menu/creatures_menu_ui.gd index 59ddaab..29193b4 100644 --- a/scenes/interfaces/creatures_menu/creatures_menu_ui.gd +++ b/scenes/interfaces/creatures_menu/creatures_menu_ui.gd @@ -25,30 +25,32 @@ func _ready(): for file in files: var creature_box = preload( "res://scenes/interfaces/creatures_menu/creature_box.tscn" ).instance() creature_box.get_node( "label" ).text = file - creature_box.slot = self.slots_number + creature_box.slot = slots_number creature_box.creature_filename = file creature_box.connect( "select_pressed", self, "_on_creature_box_select_pressed" ) creature_box.connect( "delete_pressed", self, "_on_creature_box_delete_pressed" ) $screen_box/scroll_container/v_box_container/creatures_box.add_child( creature_box ) - self.slots[ self.slots_number ] = creature_box - self.slots_number += 1 - - var creature = Creatures.Ra_old2.new() - creature.from_file( file ) - creature_box.get_node( "label" ).text = creature.pseudonym + slots[ slots_number ] = creature_box + slots_number += 1 + #var creature = Creatures.Ra_old2.new() + var creature = Data.new() + Config.msg_debug( "File:" + file ) + creature.load( file ) + creature_box.get_node( "label" ).text = creature.get_data("pseudonym", "No name") + func _on_new_pressed(): - emit_signal( "new_pressed", self.slots_number ) + emit_signal( "new_pressed", slots_number ) func _on_cancel_pressed(): emit_signal( "cancel_pressed" ) func _on_creature_box_select_pressed( slot ): - emit_signal( "select_pressed", self.slots[ slot ].creature_filename ) - + emit_signal( "select_pressed", slots[ slot ].creature_filename ) + func _on_creature_box_delete_pressed( slot ): - if self.slots[ slot ].creature_filename: + if slots[ slot ].creature_filename: var dir = Directory.new() - dir.remove( "user://creatures/" + self.slots[ slot ].creature_filename ) - self.slots[ slot ].queue_free() + dir.remove( "user://creatures/" + slots[ slot ].creature_filename ) + slots[ slot ].queue_free() diff --git a/scenes/main/main.gd b/scenes/main/main.gd index b7751b4..7c73a48 100644 --- a/scenes/main/main.gd +++ b/scenes/main/main.gd @@ -143,8 +143,9 @@ func _on_main_menu_play_pressed(): func _on_creatures_menu_ui_new_pressed( slot ): self.creature_selected_slot = slot -# Globals.goto_scene( "res://scenes/interfaces/creatures_editor/creatures_editor_ui.tscn" ) - Globals.goto_scene( "res://scenes/creatures/creatures_creation.tscn" ) +# Globals.goto_scene( "res://scenes/interfaces/creatures_editor/creatures_editor_ui.tscn" ) + #Globals.goto_scene( "res://scenes/creatures/creatures_creation.tscn" ) + Globals.goto_scene( "res://scenes/creature_creation/creature_creation.tscn" ) func _on_creatures_menu_ui_cancel_pressed():