From 2b0b639d24b06d0dd674e7fb80ff1ce52f037608 Mon Sep 17 00:00:00 2001 From: attilavs2 Date: Wed, 12 Feb 2025 13:37:26 +0100 Subject: [PATCH] Covert. vers png, affichage blobs, machines actives --- assets/blobbleu1.png | Bin 0 -> 714 bytes assets/blobbleu1.webp | Bin 152 -> 0 bytes assets/blobbleu2.png | Bin 0 -> 719 bytes assets/blobbleu2.webp | Bin 154 -> 0 bytes assets/blobbleu3.png | Bin 0 -> 722 bytes assets/blobbleu3.webp | Bin 160 -> 0 bytes assets/blobrouge1.png | Bin 0 -> 717 bytes assets/blobrouge1.webp | Bin 148 -> 0 bytes assets/blobrouge2.png | Bin 0 -> 719 bytes assets/blobrouge2.webp | Bin 152 -> 0 bytes assets/blobrouge3.png | Bin 0 -> 722 bytes assets/blobrouge3.webp | Bin 158 -> 0 bytes assets/blobvert1.png | Bin 0 -> 719 bytes assets/blobvert1.webp | Bin 154 -> 0 bytes assets/blobvert2.png | Bin 0 -> 719 bytes assets/blobvert2.webp | Bin 156 -> 0 bytes assets/blobvert3.png | Bin 0 -> 722 bytes assets/blobvert3.webp | Bin 162 -> 0 bytes src/draw.c | 54 ++++++++++++++++++++++++++++++++++++----- src/draw.h | 2 ++ src/game.c | 42 +++++++++++++++++++++----------- src/main.c | 31 +++++++++++++---------- src/types.h | 15 ++++++------ 23 files changed, 104 insertions(+), 40 deletions(-) create mode 100644 assets/blobbleu1.png delete mode 100644 assets/blobbleu1.webp create mode 100644 assets/blobbleu2.png delete mode 100644 assets/blobbleu2.webp create mode 100644 assets/blobbleu3.png delete mode 100644 assets/blobbleu3.webp create mode 100644 assets/blobrouge1.png delete mode 100644 assets/blobrouge1.webp create mode 100644 assets/blobrouge2.png delete mode 100644 assets/blobrouge2.webp create mode 100644 assets/blobrouge3.png delete mode 100644 assets/blobrouge3.webp create mode 100644 assets/blobvert1.png delete mode 100644 assets/blobvert1.webp create mode 100644 assets/blobvert2.png delete mode 100644 assets/blobvert2.webp create mode 100644 assets/blobvert3.png delete mode 100644 assets/blobvert3.webp diff --git a/assets/blobbleu1.png b/assets/blobbleu1.png new file mode 100644 index 0000000000000000000000000000000000000000..18194d956ba5a7c15ff2ced915def9a254f2ebff GIT binary patch literal 714 zcmV;*0yX`KP)EX>4Tx04R}tkv&MmKpe$iQ>CIUg6$yUkfA!+MMWHI6^c-y)C#RSm|Xe=O&XFE z7e~Rh;NZt%)xpJCR|i)?5c~jf7n~Gbq{ROvg%&X$9QWhhy~o`^|^F91<&zy4(d0egat9cG(j`N3BtK1|SOnhB=$rCD_!j72b9-y=mNfBC{R<000JJOGiWi(E!l^(J)C+(*OVf32;bRa{vGf z6951U69E94oEQKA00(qQO+^Rk0t*cjE0xtB3IG5A$Vo&&R9M69m%$ByAPhxm;}$xF z4&=eHJUNg~p<9^X#e*RT6lixC{`h)8=6AN%nmGV=T=&yy8t_d9kseTQLJ9z@|9vu`rUO(YaI1hCzu#yDnyuBBpxIg$5O+QRiVI4b w^KnQ)Y$Ea!Ji$^yoRbl%OvOU?jz8q$0>7_NQWCNJ-v9sr07*qoM6N<$f_kqn#Q*>R literal 0 HcmV?d00001 diff --git a/assets/blobbleu1.webp b/assets/blobbleu1.webp deleted file mode 100644 index 8f0fdcc6829ba38f374a87811e775d7e8cd0ac4a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 152 zcmV;J0B8SFNk&GH00012MM6+kP&iD40000lAHW9?A0QA&@^^ba0s+cY;U|GWlE?mL zgUo*b*!KcQwQZ}-4LV2)YQBUrN%(3if=?OdwGcBMQ#cAD`ac0`;%J<;$4T`dOs$}s z+Jlv3030dFS*AkiS-`T->q@HvKvz1YYz5|$!ZC*uVUl;r`D8fe^8yyq_EX>4Tx04R}tkv&MmKpe$iQ>CIU4(%Y~kfA!+MMVUcT7@E1D78YX4knj=L6e3g z#l=x@EjakGSaoo5*44pP5ClI!+yy5^7b)?7NufoI2gm(*ckglc4iK7ErkXu*K-DZG zlT3)Y{Hhpug@6Hs5XP*;Onok$PQi10-NVP%yBN>%KKJJcDFu@OK9M-ibi*RvAfDc| zbk6(45muHI;&bA0gDyz?$aUG}H_j!81)do(vYC0}2(eh|V!4Z1*-(k6h@*e3JS*_Mt`=0!T!GgB3%ypV0NMaF7NJE5-Ix48bLX1|86cZWRPk8u;9eX zDYDGy0}H5WWTa*WBLP`#607veZ@T1~@nb z#!8gE?(y!v?%w`A)9&vFqo#7YDIP@<00006VoOIv0MP)^0MRf>P}2Ya010qNS#tmY z3ljhU3ljkVnw%H_000McNliru=>iK46bI-`fG)l#7y?AbFF`SyIe;3`z(mXVr+ElqODCkJ9Y$OUkQO0; ztxTXx8W`|INQwh!n*Xuo2Bv|`0Rs{R=%K(g5XCRS5MVhcJ@8S$a!#5i4nZ#q7)i+m zlq621N{W$SNl2*JCDtKmH6tTcTE%qgcZ>r10RZaVP$0x-tT+Gw002ovPDHLkV1mL} BE$jdQ literal 0 HcmV?d00001 diff --git a/assets/blobbleu2.webp b/assets/blobbleu2.webp deleted file mode 100644 index a4f51790505fe4d6372a3649dd22edeee9960012..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 154 zcmV;L0A>GDNk&GJ00012MM6+kP&iD60000lAHW9?A0QA&@^^ba0s+cY;U|GWlE?mL zgUo*b*!KcQwQZ}-4LV3k&6iLn313Y`@F~N*7NVo`jwu`k5&fS4)p0mV+uEX>4Tx04R}tkv&MmKpe$iQ>CIU4(%Y~kfA!+MMVUcT7@E1D78YX4knj=L6e3g z#l=x@EjakGSaoo5*44pP5ClI!+yy5^7b)?7NufoI2gm(*ckglc4iK7ErkXu*K-DZG zlT3)Y{Hhpug@6Hs5XP*;Onok$PQi10-NVP%yBN>%KKJJcDFu@OK9M-ibi*RvAfDc| zbk6(45muHI;&bA0gDyz?$aUG}H_j!81)do(vYC0}2(eh|V!4Z1*-(k6h@*e3JS*_Mt`=0!T!GgB3%ypV0NMaF7NJE5-Ix48bLX1|86cZWRPk8u;9eX zDYDGy0}H5WWTa*WBLP`#607veZ@T1~@nb z#!8gE?(y!v?%w`A)9&vFqo#7YDIP@<00006VoOIv0MP)^0MRf>P}2Ya010qNS#tmY z3ljhU3ljkVnw%H_000McNliru=>iK46d^i6VAB8q0MAK8K~z}7V_+BsBONf3sqa6v z%p}JF|Kra-!6~`WScW8X8AfG)l#7y?AbFF`SyIDqAxG*M!NqJfE)@lW$8z?M!(O*@RZ z5+E%?09%>B#4x~M&^dsn`5#+uU>e9AFd$KY9tunYQT!4N0bC^-U88{IoHR`wf?gId zl9CH3Nt{TP6eGcskWjHptV7UhMnEX>4Tx04R}tkv&MmKpe$iQ>CIU4(%Y~kfA!+MMVUcT7@E1D78YX4knj=L6e3g z#l=x@EjakGSaoo5*44pP5ClI!+yy5^7b)?7NufoI2gm(*ckglc4iK7ErkXu*K-DZG zlT3)Y{Hhpug@6Hs5XP*;Onok$PQi10-NVP%yBN>%KKJJcDFu@OK9M-ibi*RvAfDc| zbk6(45muHI;&bA0gDyz?$aUG}H_j!81)do(vYC0}2(eh|V!4Z1*-(k6h@*e3JS*_Mt`=0!T!GgB3%ypV0NMaF7NJE5-Ix48bLX1|86cZWRPk8u;9eX zDYDGy0}H5WWTa*WBLP`#607veZ@T1~@nb z#!8gE?(y!v?%w`A)9&vFqo#7YDIP@<00006VoOIv0MP)^0MRf>P}2Ya010qNS#tmY z3ljhU3ljkVnw%H_000McNliru=>iK46gIh%3K~z}7?U%6;fG`L}1G{)u z7P^cBIF|!>=Pnjjp2Nh(!pp@ZBmoMg)H6KzAjFv8zHX5Dovn3d4uCzz>Gfs1%%pRH z8gZHJOb*ct00000NkvXXu0mjfSDG~I literal 0 HcmV?d00001 diff --git a/assets/blobrouge1.webp b/assets/blobrouge1.webp deleted file mode 100644 index 65afeffe5553044046cc68a37f0df808fee2bd3e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 148 zcmV;F0BiqJNk&GD00012MM6+kP&iD00000lAHW9?A0QA&aWV@m5J(c*d`N*n3RC*| z55QjqZfb3NlP6RK%(3!Ipw3A7EyM&>4I-GBdwquVD2V9)1klChs_18uo9Z}s)in3h z2n5vxvXWD74Ce~bUs(#*3Tg_kTx=k`b0*tTun+5SXr36Iuk^ C);r$- diff --git a/assets/blobrouge2.png b/assets/blobrouge2.png new file mode 100644 index 0000000000000000000000000000000000000000..e672c0239aff698c88287f32c47991c66503a18c GIT binary patch literal 719 zcmV;=0xEX>4Tx04R}tkv&MmKpe$iQ>CIU4(%Y~kfA!+MMVUcT7@E1D78YX4knj=L6e3g z#l=x@EjakGSaoo5*44pP5ClI!+yy5^7b)?7NufoI2gm(*ckglc4iK7ErkXu*K-DZG zlT3)Y{Hhpug@6Hs5XP*;Onok$PQi10-NVP%yBN>%KKJJcDFu@OK9M-ibi*RvAfDc| zbk6(45muHI;&bA0gDyz?$aUG}H_j!81)do(vYC0}2(eh|V!4Z1*-(k6h@*e3JS*_Mt`=0!T!GgB3%ypV0NMaF7NJE5-Ix48bLX1|86cZWRPk8u;9eX zDYDGy0}H5WWTa*WBLP`#607veZ@T1~@nb z#!8gE?(y!v?%w`A)9&vFqo#7YDIP@<00006VoOIv0MP)^0MRf>P}2Ya010qNS#tmY z3ljhU3ljkVnw%H_000McNliru=>iK46%7%BJ#hd40L)25K~z}7V_+BsBONf3sqa6v z%p}JF|8IsTdEL08p~Vhf-l_@7h<(8c!zLx9NmB`8KS2T&s#m}nXQG!Fr6>4em@!-y*Z(jo+~ zl?il70|TB2NpS#8^FOxSz%-CKU_hb(JrtM*qWC2k0+(-}ANVM^eEU329D-gJFp`oB zC`p`1l@uevl8{ibORPiCYDPw?w2JA}?-&L20{~@VL=}|T#~uIx002ovPDHLkV1n7I BEK>jg literal 0 HcmV?d00001 diff --git a/assets/blobrouge2.webp b/assets/blobrouge2.webp deleted file mode 100644 index 4bb6d78522a9c1aad962fc0dac7eb47ced7169e8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 152 zcmV;J0B8SFNk&GH00012MM6+kP&iD30000lAHW9?A0QA&aWV@m5J(c*d`N*n3RC*| z55QjqZerVZl}%Pa{jEF+#2P8j!Z$%QfdxcRQRldepTB~L{!ajHTrBf`b}|zkWv-fJ zej0(G+JUs-lo`RfMD$mbz_rBDe*!PnSVMSc?1X=XQCjpaIOKG~;i9f!x&9jmz+|}` G(;xtd<3GLt diff --git a/assets/blobrouge3.png b/assets/blobrouge3.png new file mode 100644 index 0000000000000000000000000000000000000000..fbe77a9c9148d18093429f295679b2219316a34d GIT binary patch literal 722 zcmV;@0xkWCP)EX>4Tx04R}tkv&MmKpe$iQ>CIU4(%Y~kfA!+MMVUcT7@E1D78YX4knj=L6e3g z#l=x@EjakGSaoo5*44pP5ClI!+yy5^7b)?7NufoI2gm(*ckglc4iK7ErkXu*K-DZG zlT3)Y{Hhpug@6Hs5XP*;Onok$PQi10-NVP%yBN>%KKJJcDFu@OK9M-ibi*RvAfDc| zbk6(45muHI;&bA0gDyz?$aUG}H_j!81)do(vYC0}2(eh|V!4Z1*-(k6h@*e3JS*_Mt`=0!T!GgB3%ypV0NMaF7NJE5-Ix48bLX1|86cZWRPk8u;9eX zDYDGy0}H5WWTa*WBLP`#607veZ@T1~@nb z#!8gE?(y!v?%w`A)9&vFqo#7YDIP@<00006VoOIv0MP)^0MRf>P}2Ya010qNS#tmY z3ljhU3ljkVnw%H_000McNliru=>iK46(8a|OgR7m0MAK8K~z}7V_+BsBONf3sqa6v z%p}JF|8IsTdEL08p~Vhf-l_@7h<(8c!zLx9NmB`8J{2VA~=o+vRw(ZEE@_@{XkU`r>YrX5CH z36K^cfUQhmVi;gB=o~=P{Esa+Fb!l57?3DH4+W-yD1Hfs0Im{^u2FFL_Ia8(1idU^ zBqbM6k~onnDMo@NA)#WIScjn1jEq!i71OETF$(Ah068g154gSKJ^%m!07*qoM6N<$ Eg1G7|Hvj+t literal 0 HcmV?d00001 diff --git a/assets/blobrouge3.webp b/assets/blobrouge3.webp deleted file mode 100644 index 82853834723d60c6e40c32f366eb00b0a1830b5b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 158 zcmV;P0Ac@9Nk&GN00012MM6+kP&iD90000lAHW9?A0QA&aWV@m5J(c*d`N*n3RC*| z55QjqZfb3NlQ&%f^Ka#sK%J3*gx^9;(3^x?~+Y{XEzsMDoy5p MTqLPKne@~m0QRpyvj6}9 diff --git a/assets/blobvert1.png b/assets/blobvert1.png new file mode 100644 index 0000000000000000000000000000000000000000..7b2fdf30a2d43f9e8ba9a6f5e629b6f19e42f336 GIT binary patch literal 719 zcmV;=0xEX>4Tx04R}tkv&MmKpe$iQ>CIU4(%Y~kfA!+MMVUcT7@E1D78YX4knj=L6e3g z#l=x@EjakGSaoo5*44pP5ClI!+yy5^7b)?7NufoI2gm(*ckglc4iK7ErkXu*K-DZG zlT3)Y{Hhpug@6Hs5XP*;Onok$PQi10-NVP%yBN>%KKJJcDFu@OK9M-ibi*RvAfDc| zbk6(45muHI;&bA0gDyz?$aUG}H_j!81)do(vYC0}2(eh|V!4Z1*-(k6h@*e3JS*_Mt`=0!T!GgB3%ypV0NMaF7NJE5-Ix48bLX1|86cZWRPk8u;9eX zDYDGy0}H5WWTa*WBLP`#607veZ@T1~@nb z#!8gE?(y!v?%w`A)9&vFqo#7YDIP@<00006VoOIv0MP)^0MRf>P}2Ya010qNS#tmY z3ljhU3ljkVnw%H_000McNliru=>iK46)`^TLG}Ou0L)25K~z}7V_+BsBONf3sqa6v z%p}JF|7Si8z$uw7y@4ci8AdEL0?^gVhf-l_@7h<(8c!zLx9NmB`8KS2T&s#m}nXQG!Fr6S(Mal%S5jPh$|ZC zk_HAm5t8Bnn&y9O(ZDp2IbcAd06i3#2BP>S7y=h>J{b5YxOnpcO&o&WK42sz7f_No zkt!)hLMGDNk&GJ00012MM6+kP&iD50000lAHW9?A0QA&@;4k{CxJkczrk1=i3O7( z=6{7U{{eXE!BK77YIB1Ql7gBqp-d9Knu_34hIuW-OveEX>4Tx04R}tkv&MmKpe$iQ>CIU4(%Y~kfA!+MMVUcT7@E1D78YX4knj=L6e3g z#l=x@EjakGSaoo5*44pP5ClI!+yy5^7b)?7NufoI2gm(*ckglc4iK7ErkXu*K-DZG zlT3)Y{Hhpug@6Hs5XP*;Onok$PQi10-NVP%yBN>%KKJJcDFu@OK9M-ibi*RvAfDc| zbk6(45muHI;&bA0gDyz?$aUG}H_j!81)do(vYC0}2(eh|V!4Z1*-(k6h@*e3JS*_Mt`=0!T!GgB3%ypV0NMaF7NJE5-Ix48bLX1|86cZWRPk8u;9eX zDYDGy0}H5WWTa*WBLP`#607veZ@T1~@nb z#!8gE?(y!v?%w`A)9&vFqo#7YDIP@<00006VoOIv0MP)^0MRf>P}2Ya010qNS#tmY z3ljhU3ljkVnw%H_000McNliru=>iK477nAPKL`K-0L)25K~z}7V_+BsBONf3sqa6v z%p}JF|7Si8z$uw7y@4ci8AdEL0?^gVhf-l_@7h<(8c!zLx9NmB`8KS2T&s#m}nXQG!Fr6>4em@!-y*Z(jo+~ zl?il70|TB2NpS#8^FOxSz%-CKU_hb(JrtM*qWC2k0vB&S82Bi-c=G{G9D-gJFp`oB zC`p`1l@uevl8{ibORPiCYDPw?w2JA}?-&L20{{x#MgX$%47~sV002ovPDHLkV1gV1 BDun<5 literal 0 HcmV?d00001 diff --git a/assets/blobvert2.webp b/assets/blobvert2.webp deleted file mode 100644 index 1919e26abaa5d12c31b99bf52f5af1927d54494e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 156 zcmV;N0Av4BNk&GL00012MM6+kP&iD80000lAHW9?A0QA&@;4k{CxJkczrk1=i3O7( z=6{7U{{eXE!BK77YIB1QQd09Jlu5!@QxSa1Ft3H^=)7YJM?pmYCqQ)^j?#8Gi7teR zC3F%yu#yabBgGkuL?}ISSaw+*X_@22z9St0YzgL^z%ly*VVrf&_@p@I^91J7=)K1V KlDeZ&qzVDNBtUim diff --git a/assets/blobvert3.png b/assets/blobvert3.png new file mode 100644 index 0000000000000000000000000000000000000000..5debb066298309dc9308d456abc9929be52a5ea7 GIT binary patch literal 722 zcmV;@0xkWCP)EX>4Tx04R}tkv&MmKpe$iQ>CIU4(%Y~kfA!+MMVUcT7@E1D78YX4knj=L6e3g z#l=x@EjakGSaoo5*44pP5ClI!+yy5^7b)?7NufoI2gm(*ckglc4iK7ErkXu*K-DZG zlT3)Y{Hhpug@6Hs5XP*;Onok$PQi10-NVP%yBN>%KKJJcDFu@OK9M-ibi*RvAfDc| zbk6(45muHI;&bA0gDyz?$aUG}H_j!81)do(vYC0}2(eh|V!4Z1*-(k6h@*e3JS*_Mt`=0!T!GgB3%ypV0NMaF7NJE5-Ix48bLX1|86cZWRPk8u;9eX zDYDGy0}H5WWTa*WBLP`#607veZ@T1~@nb z#!8gE?(y!v?%w`A)9&vFqo#7YDIP@<00006VoOIv0MP)^0MRf>P}2Ya010qNS#tmY z3ljhU3ljkVnw%H_000McNliru=>iK479A%Te%1g00MAK8K~z}7V_+BsBONf3sqa6v z%p}JF|7Si8z$uw7y@4ci8AdEL0?^gVhf-l_@7h<(8c!zLx9NmB`8J{2VA`QfG9CS(ZEE@_@{XkU`r>YrX5CH z36K^cfUQhmVi;gB=o~=P{Esa+Fb!l57?3DH4+W-yD1Hfs0Im{^u2FFD<^!5I1idU^ zBqbM6k~onnDMo@NA)#WIScjn1jEq!i71OETF$(Ah0K;la6useTasU7T07*qoM6N<$ Ef&-Z=k^lez literal 0 HcmV?d00001 diff --git a/assets/blobvert3.webp b/assets/blobvert3.webp deleted file mode 100644 index 3fb8a4b95b07ebbf97c0fca6dea200bfe4d05b04..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 162 zcmV;T0A2r5Nk&GR00012MM6+kP&iDE0000lAHW9?A0QA&@;4k{CxJkczrk1=i3O7( z=6{7U{{eXE!BuTrZgNu{P}PhCdXq2`P=Sa#cj)ksh3LpXy^|gV5&fS4workers; for(int i = 0; i < workers->worker_n; i++){ - DrawRectangleV(workers->worker_stack[i].pos, (V2d){.x=32,.y=32}, WHITE); + Worker *worker = &workers->worker_stack[i]; + if(worker->pos.x + 32 < 0 || worker->pos.x >= 1280 || + worker->pos.y + 32 < 0 || worker->pos.y >= 720) + continue; + V2d pos = worker->pos; + if(worker->ai.status == S_Operating){ + Machine *machine = get_machine_from_id(&game->machines, + worker->ai.assigned_machine); + pos = Vector2Add(pos, + machine_dict[machine->type].offsets[worker->assign_n]); + } + + //DrawRectangleV(pos, (V2d){.x=32,.y=32}, WHITE); + DrawTextureV(tex_index[0], pos, WHITE); } } void draw_machines(Machines *machines){ for(int i = 0; i < machines->machine_n; i++){ - DrawRectangleV(machines->machine_stack[i].pos, (V2d){.x=64,.y=64}, BLUE); + Machine *machine = &machines->machine_stack[i]; + float active_per = Remap((float)machine->active,0,255,0.2,1); + DrawRectangleV(machine->pos, (V2d){.x=64,.y=64}, Fade(BLUE,active_per)); } } void draw(Game *game){ draw_machines(&game->machines); - draw_workers(&game->workers); + draw_workers(game); } - - diff --git a/src/draw.h b/src/draw.h index ea00af4..d14ba63 100644 --- a/src/draw.h +++ b/src/draw.h @@ -12,4 +12,6 @@ #pragma once +int init_draw(); + void draw(Game *game); diff --git a/src/game.c b/src/game.c index aafe410..6c21ff2 100644 --- a/src/game.c +++ b/src/game.c @@ -11,9 +11,9 @@ #include "game.h" MachineDef machine_dict[] = { - {{}, 0, R_Coal, 4}, // MT_CoalMine - {{}, 0, R_Iron, 4}, // MT_IronMine - {{R_Coal, R_Iron}, 2, R_Steel, 0}, // MT_Furnace + {{{0,0},{32,0},{0,32},{32,32}}, {}, 0, R_Coal, 4}, // MT_CoalMine + {{{0,0},{32,0},{0,32},{32,32}}, {}, 0, R_Iron, 4}, // MT_IronMine + {{{0,0},{32,0},{0,32},{32,32}}, {R_Coal, R_Iron}, 2, R_Steel, 0}, // MT_Furnace }; int init_machines(Machines *machines){ @@ -38,6 +38,11 @@ int init_workers(Workers *workers){ } int init_game(Game *game){ + int rand_seed = GetTime(); + rand_seed &= 0xFFFFFFFF; + + srand(rand_seed); + int err = init_machines(&game->machines); err |= init_workers(&game->workers); if(err){ @@ -92,9 +97,8 @@ Machine *add_machine(Machines *machines, V2d pos){ } Machine *mach = &machines->machine_stack[machines->machine_n++]; + *mach = (Machine){.pos=pos}; mach->id = machines->machine_id++; - mach->pos = pos; - mach->assign_workers = 0; return mach; } @@ -121,6 +125,10 @@ int get_machine_localres(Machine *machine, int globalres){ return -1; } +double V2d_dotp(V2d a, V2d b){ + return a.x*b.x + a.y*b.y; +} + void update_worker(Game *game, Worker *worker){ AiInternal *ai = &worker->ai; if(ai->assigned_machine < 0 && ai->assigned_machine1 < 0) @@ -154,7 +162,6 @@ void update_worker(Game *game, Worker *worker){ case S_Loading: if(!Vector2Equals(worker->pos,mach[0]->pos)){ ai->status = S_Transporting; - ai->going_to = 0; ai->dest = mach[0]->pos; break; } @@ -165,7 +172,6 @@ void update_worker(Game *game, Worker *worker){ else { ai->status = S_Transporting; ai->dest = mach[1]->pos; - ai->going_to = 1; } break; case S_Unloading: @@ -177,7 +183,6 @@ void update_worker(Game *game, Worker *worker){ if(!Vector2Equals(worker->pos, mach[1]->pos)){ ai->status = S_Transporting; ai->dest = mach[1]->pos; - ai->going_to = 1; break; } if(ai->carrying && mach[1]->storage[localres] <= 200){ @@ -187,7 +192,6 @@ void update_worker(Game *game, Worker *worker){ else{ ai->status = S_Transporting; ai->dest = mach[0]->pos; - ai->going_to = 0; } break; case S_Operating: @@ -195,11 +199,17 @@ void update_worker(Game *game, Worker *worker){ break; case S_Transporting: case S_Walking: - worker->pos = ai->dest; - if(Vector2Equals(worker->pos, mach[0]->pos)) + Vector2 mov = Vector2Normalize(Vector2Subtract(ai->dest, worker->pos)); + worker->pos = Vector2Add(worker->pos, mov); + if(Vector2LengthSqr(Vector2Subtract(mach[0]->pos, worker->pos)) < 0.3){ + worker->pos = mach[0]->pos; ai->status = S_Loading; - else if(Vector2Equals(worker->pos, mach[1]->pos)) + } + else if(Vector2LengthSqr(Vector2Subtract(mach[1]->pos, worker->pos)) + < 0.3){ + worker->pos = mach[1]->pos; ai->status = S_Unloading; + } break; } } @@ -218,12 +228,16 @@ void update_machine(Game *game, Machine *machine){ if(!machine->storage[i]) can_output = false; } - if(can_output){ + if(can_output){ for(int i = 0; i < def->input_n; i++){ machine->storage[i]--; } machine->storage[4]++; + if(machine->active < 254) + machine->active+=2; } + else if(machine->active) + machine->active--; } void update_machines(Game *game){ @@ -238,7 +252,7 @@ void update(Game *game){ } int assign_worker_machine(Machine *machine, Worker *worker){ - machine->assign_workers++; + worker->assign_n = machine->assign_workers++; AiInternal *ai = &worker->ai; ai->assigned_machine = machine->id; ai->assigned_machine1 = -1; diff --git a/src/main.c b/src/main.c index a33488f..2dc7b9d 100644 --- a/src/main.c +++ b/src/main.c @@ -18,20 +18,27 @@ int try_interface(Game *game){ return 0; } +int init(Game *game){ + int err = init_draw(); + err |= init_game(game); + return err; +} + +void clean(Game *game){ + clean_game(game); + + CloseWindow(); +} + int main(){ - int rand_seed = GetTime(); - rand_seed &= 0xFFFFFFFF; - - srand(rand_seed); - - InitWindow(1280, 720, "Mineur Tycoon"); - - SetTargetFPS(60); - Game game; - init_game(&game); + if(init(&game)){ + printf("Failed to init game ! Exiting...\n"); + clean(&game); + return 1; + } Machine *coal_mine = add_machine(&game.machines, (V2d){40,40}); coal_mine->type = MT_CoalMine; @@ -61,9 +68,7 @@ int main(){ EndDrawing(); } - clean_game(&game); - - CloseWindow(); + clean(&game); return 0; } diff --git a/src/types.h b/src/types.h index 52f2f12..fed228b 100644 --- a/src/types.h +++ b/src/types.h @@ -27,7 +27,8 @@ enum WorkerTraits { enum MachineTypes { MT_CoalMine = 0, MT_IronMine = 1, - MT_Furnace = 2 + MT_Furnace = 2, + MT_Sell = 3 }; enum Ressources { @@ -41,7 +42,7 @@ typedef struct { uint8_t status; uint8_t carrying; //Quantity uint8_t carry_type; //Global type - uint8_t going_to; + uint8_t __padding; int16_t assigned_machine; // Machine if working int16_t assigned_machine1; // 2nd machine if carrying V2d dest; @@ -55,7 +56,8 @@ typedef struct { uint8_t fatigue; uint8_t satisf; AiInternal ai; - uint8_t __padding[4]; + uint8_t assign_n; // To offset on machines + uint8_t __padding[3]; } Worker; @@ -71,14 +73,15 @@ typedef struct { V2d pos; uint8_t type; uint8_t assign_workers; - uint8_t rot; // Rotation - uint8_t storage[5]; // <=> inputs ; 4 is out storage + uint8_t active; + uint8_t storage[5]; // <=> inputs ; 4 is output storage int16_t id; } Machine; typedef struct { + V2d offsets[4]; // Worker pos offsets uint8_t inputs[4]; uint8_t input_n; uint8_t output; @@ -102,5 +105,3 @@ typedef struct { int64_t cash; } Game; - -