From 96418442f0f2f7fbada2b130a2174a76c0ac4838 Mon Sep 17 00:00:00 2001 From: Benedikt Galbavy Date: Fri, 26 Jan 2024 23:28:55 +0100 Subject: [PATCH 1/3] implemented actual flipping of textures --- assets/chicken_knight_spritesheet.png | Bin 3194 -> 1818 bytes assets/chicken_spritesheet.png | Bin 2778 -> 1433 bytes include/AnimationHandler.h | 3 +-- include/SpriteComponent.h | 10 +++++++++- include/TextureManager.h | 3 ++- src/KeyboardController.cpp | 13 ++++++++----- src/SpriteComponent.cpp | 22 +++++++++++++++------- src/TextureManager.cpp | 8 +++++++- 8 files changed, 42 insertions(+), 17 deletions(-) diff --git a/assets/chicken_knight_spritesheet.png b/assets/chicken_knight_spritesheet.png index e9bd50597a227a7c45043590180cb58e9d4758df..9e6939d3985a3a8dbb10cd323a7b6702c72dd8c0 100644 GIT binary patch delta 1816 zcmV+z2j}?u7@7`{7k@wq1^@s6s%dfF00001b5ch_0Itp)=>Px*x=BPqRCt{2nr~BR_#G2YBO-!4d&Fw|J>wo3n<&wKJcH|2s&E50d z_xJmKpXa&DeIKZzijv{$?361VgIU;2_4fNKQUrz53hpIlI-fk+p$2g9+Y_d)RV;ja z_N2JIUe+BsQZjc*9etgha<7m8V9Ta9CPQH!k54Xm5v&lPq$$uVB-pa4jpo%G7@w)3 zb=4YLo0q2rRDVwRIy+^BYs;oKQ`|)t;N;N`xq0;l9#769%{)h%dCut52(7Eu(7bxX zf)v3@0SphDi``wa6!PO(S`UEeTn@na)N{3s!xl$$E@yn|Igw`p_J3pjlu!haX6AW? zrORkrAu{?j!uY=rikc2Z1=#)LDVcbfNHmsqTx@V;9e=Yr`Em(RRFJ`;KG`NLMR0qw z&LtD60?f_6K=O~W^1V+iSHBzr7!J}m&?7t7ZbWEo)NPkc#F(27Ax#7=FG4v4FuVwg zo~DAyE2wF75lcu$FKr0Efgahm%#$;D0Gr)`&F-M4z81ml;mP&Oh89G_1+WQAjkU8o zfK>|2PAHXY2N?wzv9?sgeuj62No;rk~s=K6rxJ zn4Q_l7)%9-^dBcU)R)%oVt1E3GBR8e$FsY?MlYbMzVlNFq*zeCf_l*jm!~vicqBbp& zmi0)HC`u7LTemM!{{Q9b005%PO(Zk{z!zWcP9qRny*Ll=B|J8gM%uPQWMpKRgGW#6 zuFP6q<(O}vM|OI1C$Glc-a#D@*nJ3qmJ2@+4?N6DzHNmF!0iX~LZlTS9(YJy%X;F` zaer(L%^A0y8;CA9bGJ_8ba@H4Y|9G7d3Y}*qBy-?us7fv=#g*S^Dz>_kovg<5Is#K zr5Tcmm^#1nL1^{jKK3=z^mN(?>^^lwmO_4RKL}=tkUat>{M5CqPaO~&0FcJ+sL2a1 zFH*=4E%W`9dvHyCE!4ZP*&RsJ(>Uw`bAQAANFhH5FaA^TzN{y}`JXSOLed$5O7fW^ zT)%cEZwzT`Ks@je!R=Ltk2H2CRoS&~5D85nxaNnV=yK0rBp$o}SE{N&xPN6E zQpiuuI|o!1@*)uhNR1YQ&=VkQ1ZF0ZM}*#=4)gihTX_Y@x(zBtkS0y|#-;Xd-L)X`%E5XJ(rA*1F0vru-{*D@(OYZpe%%tS^)D2Qj7?Og3R?qr3bUg=i}81Fc(j%p9)G5 zp{PI~o!cn`tlIZ$RzJOSW>KsFU|fXaUWoMWmS^K4Oa-8+g;gKVKUCGWNJ{&mP&VJ#C5`Oxxq8UW)dvanma# z7R(jaVqI6)5-a!@<^BLG`4{E>fQs1T3aqxLE6u-X_6NKY_IM@t2b7Dyws4bqeAK=H zqxSUvVlG@ke#47kx$Nmm^M5az{Q(uX$E~oZ|Cjc-(ft97!X7ULM(pWDV~^*ur=jp$ z*-U$S`FCHb?(Cwn$F1HUV1+%Na)j>c@@n~uwa2sF;g^=U)}B_pIz4w5()R~A*KP!0 zZn&S>!Se;x&&O|sS3#yd?p(VO-$0M77em?i2S91|xWX^G?&amxqJPvF%Dz9qtUaEK zH*is#%(kKhl3(ZR6Z=EN4uX+2h6R4vY)*EbSh z6;)JGg%TF0000!#$ literal 3194 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 diff --git a/assets/chicken_spritesheet.png b/assets/chicken_spritesheet.png index 0e69278b3ab98a54f31fdf879bb1b8ac2a38001c..ba003eb5716620ee79854126a2bbaf1045f3ff8b 100644 GIT binary patch delta 1428 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 diff --git a/include/AnimationHandler.h b/include/AnimationHandler.h index ea6bf71..3d1534c 100644 --- a/include/AnimationHandler.h +++ b/include/AnimationHandler.h @@ -19,8 +19,7 @@ struct Animation enum AnimationType { IDLE = 0, - WALK_R = 1, - WALK_L = 2 + WALK = 1 }; diff --git a/include/SpriteComponent.h b/include/SpriteComponent.h index 5a51c59..959e87d 100644 --- a/include/SpriteComponent.h +++ b/include/SpriteComponent.h @@ -8,6 +8,12 @@ class TransformComponent; +enum SpriteDirection +{ + LEFT, + RIGHT +}; + class SpriteComponent : public Component { public: @@ -23,6 +29,7 @@ private: bool animated = false; int frames = 0; int speed = 100; + bool flipped; public: SpriteComponent() = default; @@ -35,5 +42,6 @@ public: void init() override; void update() override; void draw() override; - void play(AnimationType type); + void playAnimation(AnimationType type); + void setDirection(SpriteDirection direction); }; diff --git a/include/TextureManager.h b/include/TextureManager.h index 4b6e0c1..5721f67 100644 --- a/include/TextureManager.h +++ b/include/TextureManager.h @@ -36,5 +36,6 @@ class TextureManager SDL_Texture* loadTexture(const char* fileName); static std::vector splitSpriteSheet(SDL_Texture* spriteSheet, int width, int height, int spritesOnSheet); - static void draw(SDL_Texture* texture, SDL_Rect src, SDL_Rect dest); + static void draw(SDL_Texture* texture, SDL_Rect src, SDL_Rect dest); // defaults to flipped false -> legacy + static void draw(SDL_Texture* texture, SDL_Rect src, SDL_Rect dest, bool flipped); }; \ No newline at end of file diff --git a/src/KeyboardController.cpp b/src/KeyboardController.cpp index 6c7fc5a..9050784 100644 --- a/src/KeyboardController.cpp +++ b/src/KeyboardController.cpp @@ -3,6 +3,7 @@ #include "Game.h" #include "Components.h" #include "AssetManager.h" +#include "SpriteComponent.h" KeyboardController::KeyboardController(SDL_Scancode up, SDL_Scancode down, SDL_Scancode left, SDL_Scancode right, SDL_Scancode fire, Vector2D fireVelocity) { @@ -24,23 +25,25 @@ void KeyboardController::update() { transform->velocity.x = 0; transform->velocity.y = 0; - sprite->play(IDLE); + sprite->playAnimation(IDLE); if (keystates[this->up]) { transform->velocity.y = -1; - sprite->play(WALK_R); + sprite->playAnimation(WALK); } if (keystates[this->left]) { transform->velocity.x = -1; - sprite->play(WALK_L); + sprite->playAnimation(WALK); + sprite->setDirection(LEFT); } if (keystates[this->down]) { transform->velocity.y = 1; - sprite->play(WALK_R); + sprite->playAnimation(WALK); } if (keystates[this->right]) { transform->velocity.x = 1; - sprite->play(WALK_R); + sprite->playAnimation(WALK); + sprite->setDirection(RIGHT); } if (keystates[this->fire]) { diff --git a/src/SpriteComponent.cpp b/src/SpriteComponent.cpp index 1d64ffa..bf50752 100644 --- a/src/SpriteComponent.cpp +++ b/src/SpriteComponent.cpp @@ -16,14 +16,12 @@ SpriteComponent::SpriteComponent(const char* path, bool isAnimated) animated = isAnimated; Animation* idle = new Animation((int)AnimationType::IDLE, 2, 200); - Animation* walkR = new Animation((int)AnimationType::WALK_R, 2, 200); - Animation* walkL = new Animation((int)AnimationType::WALK_L, 2, 200); + Animation* walk = new Animation((int)AnimationType::WALK, 2, 200); animations.emplace(IDLE, idle); - animations.emplace(WALK_R, walkR); - animations.emplace(WALK_L, walkL); + animations.emplace(WALK, walk); - play(IDLE); + playAnimation(IDLE); setTexture(path); } @@ -63,12 +61,22 @@ void SpriteComponent::update() void SpriteComponent::draw() { - TextureManager::get().draw(this->texture, this->srcRect, this->destRect); + TextureManager::get().draw(this->texture, this->srcRect, this->destRect, this->animated && this->flipped); } -void SpriteComponent::play(AnimationType type) +void SpriteComponent::playAnimation(AnimationType type) { animationIndex = animations.at(type)->index; frames = animations.at(type)->frames; speed = animations.at(type)->speed; } + +void SpriteComponent::setDirection(SpriteDirection direction) +{ + if (direction == RIGHT) { + this->flipped = true; + return; + } + + this->flipped = false; +} \ No newline at end of file diff --git a/src/TextureManager.cpp b/src/TextureManager.cpp index b364214..13814bf 100644 --- a/src/TextureManager.cpp +++ b/src/TextureManager.cpp @@ -20,5 +20,11 @@ SDL_Texture* TextureManager::loadTexture(const char* fileName) void TextureManager::draw(SDL_Texture* texture, SDL_Rect src, SDL_Rect dest) { - SDL_RenderCopy(Game::renderer, texture, &src, &dest); + draw(texture, src, dest, false); +} + +void TextureManager::draw(SDL_Texture* texture, SDL_Rect src, SDL_Rect dest, bool flipped) +{ + SDL_RendererFlip flip = flipped ? SDL_FLIP_HORIZONTAL : SDL_FLIP_NONE; + SDL_RenderCopyEx(Game::renderer, texture, &src, &dest, 0, NULL, flip); } \ No newline at end of file From d9f3b5cebad5db082a45cef1aa9ed00ee5a5b45e Mon Sep 17 00:00:00 2001 From: Benedikt Galbavy Date: Fri, 26 Jan 2024 23:36:53 +0100 Subject: [PATCH 2/3] player sprites look direction they shoot --- src/KeyboardController.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/KeyboardController.cpp b/src/KeyboardController.cpp index 9050784..2880fe0 100644 --- a/src/KeyboardController.cpp +++ b/src/KeyboardController.cpp @@ -57,10 +57,12 @@ void KeyboardController::update() //checks player source via the firing velocity //TODO: adding actual projectile textures if (fireVelocity.x > 0) { + sprite->setDirection(RIGHT); Game::assets->createProjectile(Vector2D(player->position.x, player->position.y), fireVelocity, false, 1, 180, 1, "assets/egg.png"); } else { + sprite->setDirection(LEFT); Game::assets->createProjectile(Vector2D(player->position.x, player->position.y), fireVelocity, true, 1, 180, 1, "assets/egg.png"); } From a51ffe446040191b2d3f93120512ac3fd3df690d Mon Sep 17 00:00:00 2001 From: Nimac0 Date: Sat, 27 Jan 2024 00:03:17 +0100 Subject: [PATCH 3/3] added correct spritesheet --- assets/chicken_knight_spritesheet.png | Bin 1818 -> 1937 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/assets/chicken_knight_spritesheet.png b/assets/chicken_knight_spritesheet.png index 9e6939d3985a3a8dbb10cd323a7b6702c72dd8c0..2304ae60f36f61a8b4a7dfb4969080aad181e26b 100644 GIT binary patch delta 1910 zcmV-+2Z{Ka4v`O#FnOCMVAd8^ zi^a+2Avu+1>&1~RU#z#c{*qYk}+l9J+qJDjN(9o){aJ_xbj) z$K&SX#rpvCOI8kzjyB8@wGKeppMbLXefzt3xM9I};4sIIbTcDtRck}pP;5AMq+9)6 z?I%!{1183XWq;p+!|dDN#r@9{NE?rkHXiZc)lGZ{4(CLrUZ__9N^YTd-yW8oU-0AW zXeSX{C7HIVZN83n01~lP0FoP<2p*BM=U%G$=b!|j`x&Pi00qMCb{_ucUlo52x`W<* zJ2$#chn>WFlKlT+b93&euhn$%jR=5l=amnpWkKx5(toxK0JGIz&_{{{NlP1a_MNJE z^y?jfk^@#gn3e@^Cl;4SbK%*L;&EaR0v!6@i#2sZy#r7(2`0BBEG|!36A3OC&dv^_ z{3W3VplugstG#Ft1h0s>y_2Q8w+tuak`7Q7q!)d4GGVt-{*q`!08|Ie-I*@%UT5Da z0Ahdr9e=6$aZ>Z+0J!!ZHB3|q8W8~10fE3G@7=tf$x8zC!@V`&rH}n~(4p@zZ>3+tU z+)E}UskjgJ61#L2?_0mf8GPf~6aY?-mqauIz>7aP2|#DxDU-5jv%`nrbl}>1v>;1Q zTpX0Y@y%}msJxKb0nW}2Z2lfX1Fr+%pL$1kK~f}0EEvo=jTAeyPKlf(xEcu)2rME+ zgMTdDy(PO3_Tm;r*jmT^#><+7?$BS@o}0w!@d9A;_h1%w6JD5=%?=*`g401NbWd~q z(AcEu_;Wup{q3U(uSHll$~dG_^|nVG{+Qp zG2tye-&NOrNjU5AvI6vD~!6T|pFd6_&2W0O8DN;PEp1&|aA{rt2#WMh$ zIoU_-K>+*Fuc%{D8GF89>jRoDk2j(|;E9&U8&Mz7YD{IvUXkln<(gc%CTpX15cssdyc~n04+K5TvHn(Tw@yMIMDY|GaJCud%@#mZZ zLt~Ss&G{Q_FWvz%g%S0x576SyuT7BR@q*$EJv++fFDj3hD^cgGvqt6VYPd_;Q5$(& z>C~Y505C3(r$YC%Re$1|$m30@4}kLJameHeEjy}~$BjtT3eKGDBe^9RlBcWTRuK94 z@6619s{THIVW4dOq791R31C0*YFSs(TGa=DzC3QW+KJ7)ss468_sfd-H5-?&oR-`6 z?i?GNE9=-#yqfu8+bLG6XMF&amdBItk3)xlr}J6}srz}u{BN2a!ZQN}mxj%i^#X!o zsAa`?u@{~YoiF_7V<#BlFWNER37aeH1^R#XXQH5%H3E9`XRE@M%Hz5N6h{=BJln{6 w6iDdJAD$VIH&agbzcASpjiQAXT6ntgf1+ delta 1790 zcmV3nk6n^W69M`+cA1xyyYYsDGl0lHu#@lq(&BS=dbV z_WLVR1clQI?j>eApFG;325|7(6Q-_JEPQ+Rq`19a)*U%gGIvQGeVv_huaE#>%ceFa zLt!3|PcC>7tPr52DbOn<*s`gO=G7Y*pQ)jB)f!rxm!}0(PWU=IWrb_YrZ!XDMHk@Y z(GIzJ^#&eK&VM4!JV%;&&gjz!t*h41yn4fe6v0XX3=f-&-CeR2^5a-q4}j=g4#4=- zbG41b7Dse0XME~8k!Jz+e`EcWPy~=>=6Qvs%V=96GWs;a_`eT|nhr$;*!|-vnRu8; zG?sQ;Y;a^9vpV^52~bp!!J$6cCM-p8d$Z0Z6R85s&40c?@{h9ey-zGxzZ?P>4$?Q! zBRkh_L}+Z(ZI?{Mn41nEO$043LOBF5ya^UsA+T&OGrj9Z3w=B9@)0clQVe$ zo85uU?x3c=7QyY|$@R;I7DU4Zun9|zwX-{bRKcu7xdbrxC=4{N+zdc`@C5O}6NLXb z1Au4i_J6FlxB88#k_+V$z;pqopWG)tc!JrOo!QA4Oa+MaA164}m)7oLcb7aeGF%eJ zv%A0LEu5YJzJZ>seiysDWUUZs1qcrH$-$w%qE)JE@4)%~A!3)K#IDAufBQ2c!KpOT zwiP0i6TxCH4M5oM&pY>x3ZTRRpcSGvEs>V>NPm$iN)bF;w=Yrt|K;ic0HVuHBs2lQ z7hmp9BM@4>I1le7JT{U>+O|SuWMr6wM^Edn%vxUMm~Ws*c6xIsug2ZpK^+j-eF%V- z3qKGKJj_bIZG{NH?FaKhq!l0@ct~B#dg9S>Yz@sBx1Ae^E;nCV!Gg zgx;SH^ZD6Zc?HP24Jt*DCQ>Ah&2JJO8)4VGTLFl@wu?w;B5U|*q4Wjg>T9`k37|Iu z^CA&t$KLOCo8%2HIMgTGmU&bq1-Dn7>w1`*eE~ptY=m_mep=FRfy`(AiNF7(cknI% zj(eBX5okn&Lcd9L1I&Do5Is%U8h@IpsY?xwv%oWyRU02r3>CIkLR+dq3~PTOnZ9ycVDUQ?4q*At==DCg*~2fgzoC{ zYWa(`$FtqxmzKEJo>sg%J$Dw;_XjxFZUkU%xS!d<^99w<$8UsJL8d+KT)Pq9K#!~! zL)rHSKxy{4!Y{h+<>l3))ELUXKftU#o{Kkge(S|hls#UK{Q+j}@qb*r+WB25hLY^@ zT=ulXE^z6_klMxyYdRk?`L(X_j`r7aZ+WZWHB8&%CGQWI4iUR~R{dV8S(=YO(tliS zexM1$>^LIdxoR$1bNUrvreJr=f75`t0Ol2RP+bL%jz-;nbsP?zQud%<4 z#Fq;tZIIBrxMEFPnRr?ZR}RSab&;IcHxgeJRa8-h7XJa%bboNSqZw@g000hUSV?A0 gO#mtY000O800000007cclK=n!07*qoM6N<$f=_8{IRF3v