From bbe543bc1f0acbd12184450e2b6fd249d4147e03 Mon Sep 17 00:00:00 2001 From: "arthur.jamet" Date: Fri, 11 Jun 2021 10:23:45 +0200 Subject: [PATCH 1/5] add play customization options (to move to lobby --- sources/Runner/Runner.cpp | 74 ++++++++++++++++++++++++++++++++------- 1 file changed, 62 insertions(+), 12 deletions(-) diff --git a/sources/Runner/Runner.cpp b/sources/Runner/Runner.cpp index 1cabcabd..5b5111f8 100644 --- a/sources/Runner/Runner.cpp +++ b/sources/Runner/Runner.cpp @@ -434,11 +434,11 @@ namespace BBM scene->addEntity("background") .addComponent() .addComponent("assets/plain_menu_background.png"); - scene->addEntity("logo") - .addComponent(1920 / 3, 180, 0) - .addComponent("assets/logo_small.png"); + //scene->addEntity("logo") + // .addComponent(180, 180, 0) + // .addComponent("assets/logo_small.png"); auto &music = scene->addEntity("music text") - .addComponent(1920 / 2.5, 1080 - 540, 0) + .addComponent(1920 / 2.5, 180, 0) .addComponent("Music Volume", 70, RAY::Vector2(), BLACK) .addComponent() .addComponent([](WAL::Entity &entity, WAL::Wal &) @@ -451,7 +451,7 @@ namespace BBM }); auto &musicUp = scene->addEntity("music up button") - .addComponent(1920 / 1.5, 1080 - 540, 0) + .addComponent(1920 / 1.5, 180, 0) .addComponent("assets/buttons/button_plus.png") .addComponent("assets/musics/music_title.ogg") .addComponent([](WAL::Entity &entity, WAL::Wal &) @@ -474,7 +474,7 @@ namespace BBM }); auto &musicDown = scene->addEntity("music down button") - .addComponent(1920 / 3, 1080 - 540, 0) + .addComponent(1920 / 3, 180, 0) .addComponent("assets/buttons/button_minus.png") .addComponent("assets/musics/music_title.ogg") .addComponent([](WAL::Entity &entity, WAL::Wal &) @@ -497,7 +497,7 @@ namespace BBM }); auto &sound = scene->addEntity("sound text") - .addComponent(1920 / 2.5, 1080 - 360, 0) + .addComponent(1920 / 2.5, 360, 0) .addComponent("Sound Volume", 70, RAY::Vector2(), BLACK) .addComponent() .addComponent([](WAL::Entity &entity, WAL::Wal &) @@ -510,7 +510,7 @@ namespace BBM }); auto &soundUp = scene->addEntity("sound up button") - .addComponent(1920 / 1.5, 1080 - 360, 0) + .addComponent(1920 / 1.5, 360, 0) .addComponent("assets/buttons/button_plus.png") .addComponent(sounds) .addComponent([](WAL::Entity &entity, WAL::Wal &) @@ -533,7 +533,7 @@ namespace BBM }); auto &soundDown = scene->addEntity("sound down button") - .addComponent(1920 / 3, 1080 - 360, 0) + .addComponent(1920 / 3, 360, 0) .addComponent("assets/buttons/button_minus.png") .addComponent(sounds) .addComponent([](WAL::Entity &entity, WAL::Wal &) @@ -556,7 +556,7 @@ namespace BBM }); auto &debug = scene->addEntity("debug text") - .addComponent(1920 / 2.5, 1080 - 180, 0) + .addComponent(1920 / 2.5, 540, 0) .addComponent("Debug Mode: Off", 70, RAY::Vector2(), BLACK) .addComponent([](WAL::Entity &entity, WAL::Wal &wal) { @@ -578,6 +578,54 @@ namespace BBM { entity.getComponent().drawable->setColor(ORANGE); }); + + auto &lavaOption = scene->addEntity("lava option text") + .addComponent(1920 / 2.5, 720, 0) + .addComponent("Lava: Off", 70, RAY::Vector2(), BLACK) + .addComponent([](WAL::Entity &entity, WAL::Wal &wal) + { + RAY2D::Text *text = dynamic_cast(entity.getComponent().drawable.get()); + + if (text->getString().find("Off") != std::string::npos) { + text->setText("Lava: On"); + //do + } else { + text->setText("Lava: Off"); + //do + } + }) + .addComponent([](WAL::Entity &entity, WAL::Wal &) + { + entity.getComponent().drawable->setColor(BLACK); + }) + .addComponent([](WAL::Entity &entity, WAL::Wal &) + { + entity.getComponent().drawable->setColor(ORANGE); + }); + + auto &heightOption = scene->addEntity("Height option text") + .addComponent(1920 / 2.5, 900, 0) + .addComponent("2nd Level: Off", 70, RAY::Vector2(), BLACK) + .addComponent([](WAL::Entity &entity, WAL::Wal &wal) + { + RAY2D::Text *text = dynamic_cast(entity.getComponent().drawable.get()); + + if (text->getString().find("Off") != std::string::npos) { + text->setText("2nd Level: On"); + //do + } else { + text->setText("2nd Level: Off"); + //do + } + }) + .addComponent([](WAL::Entity &entity, WAL::Wal &) + { + entity.getComponent().drawable->setColor(BLACK); + }) + .addComponent([](WAL::Entity &entity, WAL::Wal &) + { + entity.getComponent().drawable->setColor(ORANGE); + }); auto &back = scene->addEntity("back to menu") .addComponent(10, 1080 - 85, 0) .addComponent("assets/buttons/button_back.png") @@ -607,8 +655,10 @@ namespace BBM sound.getComponent().setButtonLinks(&music, &debug, &soundDown, &soundUp); soundDown.getComponent().setButtonLinks(&music, &debug, nullptr, &sound); soundUp.getComponent().setButtonLinks(&music, &debug, &sound); - debug.getComponent().setButtonLinks(&sound, &back, &back); - back.getComponent().setButtonLinks(&debug, nullptr, nullptr, &debug); + debug.getComponent().setButtonLinks(&sound, &lavaOption); + lavaOption.getComponent().setButtonLinks(&debug, &heightOption); + heightOption.getComponent().setButtonLinks(&lavaOption, &back, &back); + back.getComponent().setButtonLinks(&heightOption, nullptr, nullptr, &debug); return scene; } From a333de99e54d6de791bc8bcaaf850afcf562ce7b Mon Sep 17 00:00:00 2001 From: "arthur.jamet" Date: Fri, 11 Jun 2021 10:39:06 +0200 Subject: [PATCH 2/5] play customization options move to lobby --- sources/Runner/Runner.cpp | 149 +++++++++++++++++++------------------- 1 file changed, 75 insertions(+), 74 deletions(-) diff --git a/sources/Runner/Runner.cpp b/sources/Runner/Runner.cpp index 5b5111f8..ed6d5175 100644 --- a/sources/Runner/Runner.cpp +++ b/sources/Runner/Runner.cpp @@ -254,6 +254,26 @@ namespace BBM scene->addEntity("lobby text") .addComponent(1920 / 2.75, 100, 0) .addComponent("Get Ready", 120, RAY::Vector2(), ORANGE); + auto &play = scene->addEntity("play button") + .addComponent(1920 / 2.5, 1080 - 180, 0) + .addComponent("assets/buttons/button_new_game.png") + .addComponent([](WAL::Entity &entity, WAL::Wal &) + { + RAY::Texture *texture = dynamic_cast(entity.getComponent().drawable.get()); + + texture->use("assets/buttons/button_new_game.png"); + }) + .addComponent([](WAL::Entity &entity, WAL::Wal &) + { + RAY::Texture *texture = dynamic_cast(entity.getComponent().drawable.get()); + + texture->use("assets/buttons/button_new_game_hovered.png"); + }) + .addComponent([](WAL::Entity &entity, WAL::Wal &) + { + gameState.nextScene = BBM::GameState::SceneID::GameScene; + }); + auto &back = scene->addEntity("back to menu") .addComponent(10, 1080 - 85, 0) @@ -274,24 +294,52 @@ namespace BBM texture->use("assets/buttons/button_back_hovered.png"); }); - auto &play = scene->addEntity("play button") - .addComponent(1920 / 2.5, 1080 - 180, 0) - .addComponent("assets/buttons/button_new_game.png") + auto &lavaOption = scene->addEntity("lava option text") + .addComponent(1920 / 6, 2 * 1080 / 3, 0) + .addComponent("Lava: Off", 70, RAY::Vector2(), BLACK) + .addComponent([](WAL::Entity &entity, WAL::Wal &wal) + { + RAY2D::Text *text = dynamic_cast(entity.getComponent().drawable.get()); + + if (text->getString().find("Off") != std::string::npos) { + text->setText("Lava: On"); + //do + } else { + text->setText("Lava: Off"); + //do + } + }) .addComponent([](WAL::Entity &entity, WAL::Wal &) { - RAY::Texture *texture = dynamic_cast(entity.getComponent().drawable.get()); - - texture->use("assets/buttons/button_new_game.png"); + entity.getComponent().drawable->setColor(BLACK); }) .addComponent([](WAL::Entity &entity, WAL::Wal &) { - RAY::Texture *texture = dynamic_cast(entity.getComponent().drawable.get()); + entity.getComponent().drawable->setColor(ORANGE); + }); - texture->use("assets/buttons/button_new_game_hovered.png"); - }) - .addComponent([](WAL::Entity &entity, WAL::Wal &) + auto &heightOption = scene->addEntity("Height option text") + .addComponent(1920 / 1.75, 2 * 1080 / 3, 0) + .addComponent("2nd Level: Off", 70, RAY::Vector2(), BLACK) + .addComponent([](WAL::Entity &entity, WAL::Wal &wal) { - gameState.nextScene = BBM::GameState::SceneID::GameScene; + RAY2D::Text *text = dynamic_cast(entity.getComponent().drawable.get()); + + if (text->getString().find("Off") != std::string::npos) { + text->setText("2nd Level: On"); + //do + } else { + text->setText("2nd Level: Off"); + //do + } + }) + .addComponent([](WAL::Entity &entity, WAL::Wal &) + { + entity.getComponent().drawable->setColor(BLACK); + }) + .addComponent([](WAL::Entity &entity, WAL::Wal &) + { + entity.getComponent().drawable->setColor(ORANGE); }); auto &p1tile = scene->addEntity("player1 tile") @@ -334,8 +382,10 @@ namespace BBM // quand no player is reaydy, the play button should be diasbled //The other non-ready players shoudl be IAs - play.getComponent().setButtonLinks(nullptr, nullptr, &back, nullptr); - back.getComponent().setButtonLinks(nullptr, nullptr, nullptr, &play); + play.getComponent().setButtonLinks(&lavaOption, &back, &back, nullptr); + back.getComponent().setButtonLinks(&play, nullptr, nullptr, &play); + lavaOption.getComponent().setButtonLinks(nullptr, &play, nullptr, &heightOption); + heightOption.getComponent().setButtonLinks(nullptr, &play, &lavaOption, nullptr); return scene; } @@ -434,11 +484,11 @@ namespace BBM scene->addEntity("background") .addComponent() .addComponent("assets/plain_menu_background.png"); - //scene->addEntity("logo") - // .addComponent(180, 180, 0) - // .addComponent("assets/logo_small.png"); + scene->addEntity("logo") + .addComponent(1920 / 3, 180, 0) + .addComponent("assets/logo_small.png"); auto &music = scene->addEntity("music text") - .addComponent(1920 / 2.5, 180, 0) + .addComponent(1920 / 2.5, 1080 - 540, 0) .addComponent("Music Volume", 70, RAY::Vector2(), BLACK) .addComponent() .addComponent([](WAL::Entity &entity, WAL::Wal &) @@ -451,7 +501,7 @@ namespace BBM }); auto &musicUp = scene->addEntity("music up button") - .addComponent(1920 / 1.5, 180, 0) + .addComponent(1920 / 1.5, 1080 - 540, 0) .addComponent("assets/buttons/button_plus.png") .addComponent("assets/musics/music_title.ogg") .addComponent([](WAL::Entity &entity, WAL::Wal &) @@ -474,7 +524,7 @@ namespace BBM }); auto &musicDown = scene->addEntity("music down button") - .addComponent(1920 / 3, 180, 0) + .addComponent(1920 / 3, 1080 - 540, 0) .addComponent("assets/buttons/button_minus.png") .addComponent("assets/musics/music_title.ogg") .addComponent([](WAL::Entity &entity, WAL::Wal &) @@ -497,7 +547,7 @@ namespace BBM }); auto &sound = scene->addEntity("sound text") - .addComponent(1920 / 2.5, 360, 0) + .addComponent(1920 / 2.5, 1080 - 360, 0) .addComponent("Sound Volume", 70, RAY::Vector2(), BLACK) .addComponent() .addComponent([](WAL::Entity &entity, WAL::Wal &) @@ -510,7 +560,7 @@ namespace BBM }); auto &soundUp = scene->addEntity("sound up button") - .addComponent(1920 / 1.5, 360, 0) + .addComponent(1920 / 1.5, 1080 - 360, 0) .addComponent("assets/buttons/button_plus.png") .addComponent(sounds) .addComponent([](WAL::Entity &entity, WAL::Wal &) @@ -533,7 +583,7 @@ namespace BBM }); auto &soundDown = scene->addEntity("sound down button") - .addComponent(1920 / 3, 360, 0) + .addComponent(1920 / 3, 1080 - 360, 0) .addComponent("assets/buttons/button_minus.png") .addComponent(sounds) .addComponent([](WAL::Entity &entity, WAL::Wal &) @@ -556,7 +606,7 @@ namespace BBM }); auto &debug = scene->addEntity("debug text") - .addComponent(1920 / 2.5, 540, 0) + .addComponent(1920 / 2.5, 1080 - 180, 0) .addComponent("Debug Mode: Off", 70, RAY::Vector2(), BLACK) .addComponent([](WAL::Entity &entity, WAL::Wal &wal) { @@ -579,53 +629,6 @@ namespace BBM entity.getComponent().drawable->setColor(ORANGE); }); - auto &lavaOption = scene->addEntity("lava option text") - .addComponent(1920 / 2.5, 720, 0) - .addComponent("Lava: Off", 70, RAY::Vector2(), BLACK) - .addComponent([](WAL::Entity &entity, WAL::Wal &wal) - { - RAY2D::Text *text = dynamic_cast(entity.getComponent().drawable.get()); - - if (text->getString().find("Off") != std::string::npos) { - text->setText("Lava: On"); - //do - } else { - text->setText("Lava: Off"); - //do - } - }) - .addComponent([](WAL::Entity &entity, WAL::Wal &) - { - entity.getComponent().drawable->setColor(BLACK); - }) - .addComponent([](WAL::Entity &entity, WAL::Wal &) - { - entity.getComponent().drawable->setColor(ORANGE); - }); - - auto &heightOption = scene->addEntity("Height option text") - .addComponent(1920 / 2.5, 900, 0) - .addComponent("2nd Level: Off", 70, RAY::Vector2(), BLACK) - .addComponent([](WAL::Entity &entity, WAL::Wal &wal) - { - RAY2D::Text *text = dynamic_cast(entity.getComponent().drawable.get()); - - if (text->getString().find("Off") != std::string::npos) { - text->setText("2nd Level: On"); - //do - } else { - text->setText("2nd Level: Off"); - //do - } - }) - .addComponent([](WAL::Entity &entity, WAL::Wal &) - { - entity.getComponent().drawable->setColor(BLACK); - }) - .addComponent([](WAL::Entity &entity, WAL::Wal &) - { - entity.getComponent().drawable->setColor(ORANGE); - }); auto &back = scene->addEntity("back to menu") .addComponent(10, 1080 - 85, 0) .addComponent("assets/buttons/button_back.png") @@ -655,10 +658,8 @@ namespace BBM sound.getComponent().setButtonLinks(&music, &debug, &soundDown, &soundUp); soundDown.getComponent().setButtonLinks(&music, &debug, nullptr, &sound); soundUp.getComponent().setButtonLinks(&music, &debug, &sound); - debug.getComponent().setButtonLinks(&sound, &lavaOption); - lavaOption.getComponent().setButtonLinks(&debug, &heightOption); - heightOption.getComponent().setButtonLinks(&lavaOption, &back, &back); - back.getComponent().setButtonLinks(&heightOption, nullptr, nullptr, &debug); + debug.getComponent().setButtonLinks(&sound, &back, &back); + back.getComponent().setButtonLinks(&debug, nullptr, nullptr, &debug); return scene; } From dc453362a895d19b9037987296b6a80fe9d9ee06 Mon Sep 17 00:00:00 2001 From: "arthur.jamet" Date: Fri, 11 Jun 2021 10:47:23 +0200 Subject: [PATCH 3/5] lobby system: player connected texture update --- sources/System/Lobby/LobbySystem.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/sources/System/Lobby/LobbySystem.cpp b/sources/System/Lobby/LobbySystem.cpp index 6eb2f87f..387daa1e 100644 --- a/sources/System/Lobby/LobbySystem.cpp +++ b/sources/System/Lobby/LobbySystem.cpp @@ -12,4 +12,10 @@ namespace BBM void LobbySystem::onSelfUpdate() { } + + //void LobbySystem::updateEntityConnectedUser(WAL::Entity &entity) + //{ + // RAY::Texture *texture = dynamic_cast(entity.getComponent().drawable.get()); + // texture->use("assets/player/blue.png"); + //} } \ No newline at end of file From a2e637d66826b6684c82b54853a1761e4aea5c69 Mon Sep 17 00:00:00 2001 From: "arthur.jamet" Date: Fri, 11 Jun 2021 11:03:19 +0200 Subject: [PATCH 4/5] icons for lobby --- assets/player/{ai_icon.png => icons/ai.png} | Bin assets/player/icons/blue.png | Bin 0 -> 16133 bytes assets/player/icons/green.png | Bin 0 -> 19280 bytes assets/player/{none_icon.png => icons/none.png} | Bin assets/player/icons/red.png | Bin 0 -> 20610 bytes assets/player/icons/yellow.png | Bin 0 -> 18910 bytes assets/player/{ => textures}/blue.png | Bin assets/player/{ => textures}/cyan.png | Bin assets/player/{ => textures}/green.png | Bin assets/player/{ => textures}/purple.png | Bin assets/player/{ => textures}/red.png | Bin assets/player/{ => textures}/yellow.png | Bin assets/player/valid_selection_icon.png | Bin 6162 -> 0 bytes sources/Runner/Runner.cpp | 12 ++++++------ sources/System/Lobby/LobbySystem.cpp | 2 +- 15 files changed, 7 insertions(+), 7 deletions(-) rename assets/player/{ai_icon.png => icons/ai.png} (100%) create mode 100644 assets/player/icons/blue.png create mode 100644 assets/player/icons/green.png rename assets/player/{none_icon.png => icons/none.png} (100%) create mode 100644 assets/player/icons/red.png create mode 100644 assets/player/icons/yellow.png rename assets/player/{ => textures}/blue.png (100%) rename assets/player/{ => textures}/cyan.png (100%) rename assets/player/{ => textures}/green.png (100%) rename assets/player/{ => textures}/purple.png (100%) rename assets/player/{ => textures}/red.png (100%) rename assets/player/{ => textures}/yellow.png (100%) delete mode 100644 assets/player/valid_selection_icon.png diff --git a/assets/player/ai_icon.png b/assets/player/icons/ai.png similarity index 100% rename from assets/player/ai_icon.png rename to assets/player/icons/ai.png diff --git a/assets/player/icons/blue.png b/assets/player/icons/blue.png new file mode 100644 index 0000000000000000000000000000000000000000..eb9ce70c38015841324448be4a1b1de527b273cc GIT binary patch literal 16133 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 literal 0 HcmV?d00001 diff --git a/assets/player/none_icon.png b/assets/player/icons/none.png similarity index 100% rename from assets/player/none_icon.png rename to assets/player/icons/none.png diff --git a/assets/player/icons/red.png b/assets/player/icons/red.png new file mode 100644 index 0000000000000000000000000000000000000000..7fc80d1155bf7ec1cb35cab6320e51f08272b9d1 GIT binary patch literal 20610 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 literal 0 HcmV?d00001 diff --git a/assets/player/icons/yellow.png b/assets/player/icons/yellow.png new file mode 100644 index 0000000000000000000000000000000000000000..f6a83fd0fc4807f7429c29d604628e35c5d8355e GIT binary patch literal 18910 zcmeIabx>VFus(>py9Rf6cXxLP?(XjH?(P;K1a}SYZb5=O1P!_;@AqooZtd#o? zt$MeBd+wb%eP()QdcN-dhG=C)DMUCtI1msJL>XyuRp5Q_-!BXl@E3oNkOg=P_fgk& zQ#JM^c5-pFu(mTNcJp>JCpP!8wg3U~+Hg;pgav0o5WlV`r8qfG)=*^bN<(o|_+9MbFXZWqDZlXTRTv~qTYHRes3;t*5oL9z!>iSWlE+<52b3l6f?#9OvD0MN z!&Pc@IIVfIyhfi*!o1vvEWykn`s4HoTSzXN-mB%;f+7eA9F#TCAZ-PCUQC!;4Dqoa!@ z6AKRy4-+#h6DunNP=mqM+riD)i^0K_?4OALB}3fY)zrn>$<5l)f%uXEx|_Ad|3meECI40Z-_5+r)?Vgz+Tzys z<_@kv69h+ zTb2K3cK!cLU2y*e?#vwkMCS=Wx78ab902w~xQfcC!vHTo7_%r45MmG+aS?T|jmvyb zZ452!kwCEqQsN>vRB_No(`(668Tku}#;0wL5v zq(wnR_pM!b?~R@9V6sdW+sC)wTjm}|Gd)i|m0PZ}ps;A<(n-W3ArSvBFT%r!-9=zM z>WQOra&pEFU0SX=I5?8W%~U_-#Jws>WKBs>MRML2vZTe6q>1C>#UY|WI!eeC+l?ZS z@XShfdr?MlS=8}}qG7H%VFiDNeq9;?hqq&qM6SdBMPJj&mrq|JO&L^4K$eBLB_1q_ zM-~l(SqQ;qJ%Yktt&k4pc}9lDGv$8-Qz?UXxWFwVUgbq@6--EXB8~nnb}M_2{0E%l zii-vw9dKJDjH%TanyzVrNTYyoLdZ`0sO1|;e5QEVAEl5}c5{}xd8sb(FCHn%oi}n0 z8KLYJ6d;Jz@NkMDBuj^My6HHuAiOI1LMLPo-M}r;8+cfL3VH~0G`E)iQEWT&B!(lM z5YaH@w1}ECysC($stbCMBg%ypYqF)psKswZTn=u-jp~Iuum(qqs%L)DFo)3l)=`?c zZaR7wRSeqFXUXDWKeS@=Akn+4G%4emg(F!^z^&QINz()*V-V$*Cz3bBm$z7Mx_nsZG@-`{WB7VktdBlG#zvP^s^twKGsq<}ym? z$VuN;lcV#bQ_2&nio{V2|7sN{2Y-_pd?xS@4x261zY>raPJaH72sIty(hVe|X>fPohJ1AeklD)K!!1m7^< z=h#L^AI%QkhcDCx&hb>uBlSy#J%z&76&V>PO!Tl@knk0;3f7?l30XzSvw9Y!qlJ|O zlu_Y%bT+TDc%;HaTk8sKs`0{zdpsQ4Ow|&HK`os7OcRL1rv1) zxG-jFu~xn8;=G@T#;bZ;VYyH`rF=T8k&5DO0=F2^DzuX$m2$Pj$b*4M$v6k${heFc%Ngr`p95G{L=W9Q>YzPkJM$m}kNKP^IfI zjzTVI3S}uxTq;iVh&_O?ue5x8IGMRvZ@_mdtVn}SvWg@m%@pxlr-b(hzQ%L>6}KuQ z_!LBtz%xrI8^w=tO0Yn*;mEg)o@cvt(Zvb{>xDAdk&zKJT-kZavH5kr=d56_G~FRa zG!ePhOxyhqd=4EMsXP{jjNA$`Q?|D3epn6}X7dS*=H@h{UQYXso9n($Sz1*Z=`aHF zEIB!-UCkOq+hB&;Q}uf6q@k@*g|&Xgs}ymIWNr6cD=25}c!-_A&mKHjkQ`3?nCj|k za!gqf(kgcsgMk>f-$5n{wpoVcNg~i5&SL&rZTxi+HN7^{8Wr&D)fS8Bz8VVGtmcC#;2#8Pf%u=zFKZ(B=vH>uz

qDisSC7n2kIcHpPKVjee% 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 literal 0 HcmV?d00001 diff --git a/assets/player/blue.png b/assets/player/textures/blue.png similarity index 100% rename from assets/player/blue.png rename to assets/player/textures/blue.png diff --git a/assets/player/cyan.png b/assets/player/textures/cyan.png similarity index 100% rename from assets/player/cyan.png rename to assets/player/textures/cyan.png diff --git a/assets/player/green.png b/assets/player/textures/green.png similarity index 100% rename from assets/player/green.png rename to assets/player/textures/green.png diff --git a/assets/player/purple.png b/assets/player/textures/purple.png similarity index 100% rename from assets/player/purple.png rename to assets/player/textures/purple.png diff --git a/assets/player/red.png b/assets/player/textures/red.png similarity index 100% rename from assets/player/red.png rename to assets/player/textures/red.png diff --git a/assets/player/yellow.png b/assets/player/textures/yellow.png similarity index 100% rename from assets/player/yellow.png rename to assets/player/textures/yellow.png diff --git a/assets/player/valid_selection_icon.png b/assets/player/valid_selection_icon.png deleted file mode 100644 index 1c2f6327803767b2dce2a2e8b3c05a8da2105a8b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6162 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::Vector2(), RAY::Vector2(200, 200), WHITE); auto &p1 = scene->addEntity("player1") .addComponent(224, 1080 / 3, 0) - .addComponent("assets/player/none_icon.png"); + .addComponent("assets/player/icons/none.png"); auto &p2tile = scene->addEntity("player2 tile") .addComponent(2 * 224 + 200, 1080 / 3, 0) .addComponent(RAY::Vector2(), RAY::Vector2(200, 200), WHITE); auto &p2 = scene->addEntity("player2") .addComponent(2 * 224 + 200, 1080 / 3, 0) - .addComponent("assets/player/none_icon.png"); + .addComponent("assets/player/icons/none.png"); auto &p3tile = scene->addEntity("player3 tile") .addComponent(3 * 224 + 2 * 200, 1080 / 3, 0) .addComponent(RAY::Vector2(), RAY::Vector2(200, 200), WHITE); auto &p3 = scene->addEntity("player3") .addComponent(3 * 224 + 2 * 200, 1080 / 3, 0) - .addComponent("assets/player/none_icon.png"); + .addComponent("assets/player/icons/none.png"); auto &p4tile = scene->addEntity("player4 tile") .addComponent(4 * 224 + 3 * 200, 1080 / 3, 0) .addComponent(RAY::Vector2(), RAY::Vector2(200, 200), WHITE); auto &p4 = scene->addEntity("player4") .addComponent(4 * 224 + 3 * 200, 1080 / 3, 0) - .addComponent("assets/player/none_icon.png"); + .addComponent("assets/player/icons/none.png"); scene->addEntity("camera") .addComponent(8, 20, 7) .addComponent(Vector3f(8, 0, 8)); @@ -376,7 +376,7 @@ namespace BBM //p4tile.getComponent().drawable.get()->setColor(YELLOW); //pX - p1.getComponent().drawable = std::make_shared("assets/player/valid_selection_icon.png"); + //p1.getComponent().drawable = std::make_shared("assets/player/icvalid_selection_icon.png"); //to do // quand no player is reaydy, the play button should be diasbled @@ -674,7 +674,7 @@ namespace BBM }; scene->addEntity("player") .addComponent() - .addComponent("assets/player/player.iqm", true, std::make_pair(MAP_DIFFUSE, "assets/player/blue.png")) + .addComponent("assets/player/player.iqm", true, std::make_pair(MAP_DIFFUSE, "assets/player/textures/blue.png")) .addComponent() .addComponent() .addComponent() diff --git a/sources/System/Lobby/LobbySystem.cpp b/sources/System/Lobby/LobbySystem.cpp index 387daa1e..5498cfa2 100644 --- a/sources/System/Lobby/LobbySystem.cpp +++ b/sources/System/Lobby/LobbySystem.cpp @@ -16,6 +16,6 @@ namespace BBM //void LobbySystem::updateEntityConnectedUser(WAL::Entity &entity) //{ // RAY::Texture *texture = dynamic_cast(entity.getComponent().drawable.get()); - // texture->use("assets/player/blue.png"); + // texture->use("assets/player/icons/blue.png"); //} } \ No newline at end of file From cf1a64bb7c63d49489c98f52d17e79708776c5f6 Mon Sep 17 00:00:00 2001 From: "arthur.jamet" Date: Fri, 11 Jun 2021 11:18:06 +0200 Subject: [PATCH 5/5] when the game is exited via pause, scene is unloaded --- sources/Runner/Runner.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sources/Runner/Runner.cpp b/sources/Runner/Runner.cpp index 177c02b7..7bec4177 100644 --- a/sources/Runner/Runner.cpp +++ b/sources/Runner/Runner.cpp @@ -271,6 +271,7 @@ namespace BBM }) .addComponent([](WAL::Entity &entity, WAL::Wal &) { + gameState._loadedScenes[GameState::SceneID::GameScene] = loadGameScene(); gameState.nextScene = BBM::GameState::SceneID::GameScene; }); @@ -461,7 +462,7 @@ namespace BBM }) .addComponent([](WAL::Entity &entity, WAL::Wal &wal) { - //empty scene + gameState._loadedScenes[GameState::SceneID::GameScene].reset(); gameState.nextScene = BBM::GameState::SceneID::MainMenuScene; }); play.getComponent().setButtonLinks(nullptr, nullptr, nullptr, &settings); @@ -769,7 +770,6 @@ namespace BBM void Runner::loadScenes() { gameState._loadedScenes[GameState::SceneID::MainMenuScene] = loadMainMenuScene(); - gameState._loadedScenes[GameState::SceneID::GameScene] = loadGameScene(); gameState._loadedScenes[GameState::SceneID::SettingsScene] = loadSettingsMenuScene(); gameState._loadedScenes[GameState::SceneID::PauseMenuScene] = loadPauseMenuScene(); gameState._loadedScenes[GameState::SceneID::TitleScreenScene] = loadTitleScreenScene();