From 44fb24193499078f0e35079d433ea73c997af691 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matt=C3=A9o=20Delabre?= Date: Wed, 20 Apr 2016 18:00:45 +0200 Subject: [PATCH] =?UTF-8?q?Nettoyage=20de=20l'impl=C3=A9mentation=20des=20?= =?UTF-8?q?blocs?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- include/block.hpp | 30 +++++++---------- include/finish_block.hpp | 22 +++++++------ res/textures/objects/block_select.tga | Bin 1549 -> 0 bytes res/textures/objects/finish_block.tga | Bin 2302 -> 922 bytes res/textures/objects/selected_block.tga | Bin 0 -> 1792 bytes .../objects/selected_movable_block.tga | Bin 0 -> 3171 bytes src/block.cpp | 31 +++++++----------- src/finish_block.cpp | 20 ++++++++--- 8 files changed, 50 insertions(+), 53 deletions(-) delete mode 100644 res/textures/objects/block_select.tga create mode 100644 res/textures/objects/selected_block.tga create mode 100644 res/textures/objects/selected_movable_block.tga diff --git a/include/block.hpp b/include/block.hpp index 020539f..33ac020 100644 --- a/include/block.hpp +++ b/include/block.hpp @@ -18,20 +18,6 @@ class Block : public Object { public: typedef std::shared_ptr Ptr; -private: - sf::Sprite select_sprite; - -protected: - mutable sf::Sprite sprite; - sf::FloatRect aabb; - - /** - * Initialisation des propriétés du bloc donné - * depuis le fichier donné - */ - static void init(std::ifstream& file, Object::Ptr object); - -public: /** * Identifiant unique du type "bloc" */ @@ -55,11 +41,6 @@ public: */ virtual float getRadius() const; - /** - * Prépare les textures avant le dessin du bloc - */ - virtual void prepareDraw(); - /** * Dessin du bloc dans la fenêtre donnée */ @@ -89,6 +70,17 @@ public: * Sauvegarde le bloc dans le fichier donné */ virtual void save(std::ofstream& file) const; + +protected: + /** + * Initialisation des propriétés du bloc donné + * depuis le fichier donné + */ + static void init(std::ifstream& file, Object::Ptr object); + +private: + sf::Sprite sprite; + sf::FloatRect aabb; }; #endif diff --git a/include/finish_block.hpp b/include/finish_block.hpp index 62a9a09..b4d2f3e 100644 --- a/include/finish_block.hpp +++ b/include/finish_block.hpp @@ -16,14 +16,6 @@ class FinishBlock : public Block { public: typedef std::shared_ptr Ptr; -protected: - /** - * Initialisation des propriétés du bloc d'arrivée donné - * depuis le fichier donné - */ - static void init(std::ifstream& file, Object::Ptr object); - -public: /** * Identifiant unique du type "bloc d'arrivée" */ @@ -38,9 +30,9 @@ public: virtual Object::Ptr clone() const; /** - * Prépare les textures avant le dessin du bloc + * Dessine le bloc */ - virtual void prepareDraw(); + virtual void draw(Level& level); /** * Appelé lorsque le bloc d'arrivée est activé par un objet @@ -61,6 +53,16 @@ public: * Sauvegarde le bloc d'arrivée dans le fichier donné */ virtual void save(std::ofstream& file) const; + +private: + sf::Sprite icon_sprite; + +protected: + /** + * Initialisation des propriétés du bloc d'arrivée donné + * depuis le fichier donné + */ + static void init(std::ifstream& file, Object::Ptr object); }; #endif diff --git a/res/textures/objects/block_select.tga b/res/textures/objects/block_select.tga deleted file mode 100644 index 234a0df1d498f0541018c11ca66807134a149857..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1549 zcmZ{jyDvjg9LG>)hY{Gt{!*Nm%VzhpzC0XNqQOVq!ZUMys1Pjm7x+AwOEFlv#5nK)VxJe1kqyM z^pBqO99rq@{U8DEpW)HEdYP_^5z@#Kr^#LOgUbR*kk)5e>x34O3m zWDpBYmEAUNJo@H3GaW9Rt@>@+c=g?NsOkibNy?Z_8_#~YPL*vSvuMDSP1F04u>5o# zn`%Wr@Fl7lo2J?{{YCYn%JU}dPOy?TO?}h!H}w)dPc`D)BShAOZ~`09L=X`(ARU1E zLxTdJuEXvCYaM(A@reHCn&{laAg1 diff --git a/res/textures/objects/finish_block.tga b/res/textures/objects/finish_block.tga index 18a4c65e6b022bb677fa5c7d307901d5d56a8d69..8970abc0068c6e2b20d7c0b5129b80c86241beef 100644 GIT binary patch literal 922 zcmZQz;9`IQJqCLQ1&*~K?vN#>f?UrC#4bQQ4a@@*Oh9fU5I+TC#wkF80j|;u$k~ce z3DQiQkS9>(HdKvd3wZ#|+Ky@#*+T9>vv#1GMOX+FK<>=ULVJ{?-#9m_NxgAlQjvM> zpd|B3RYm1Ldp}Sb5oB(>oc?E8RAk=%X8{twRAknRj}aYFj~S8Gyv=W*~7F#Jbw3BJ=JHQ2*N#K)eHJ z&JtDWcP+}Y?;=zrK8u196C^;`fef&PKxKbbq~GoW;sTJnH057QIxzfaL4+MBkX<<0 jtWT&&y*2`;LXasS5E2yX8s-`7>F=i-;pXY%s>c8TIfAe| literal 2302 zcmb`IO-vI}5XX17AC#7lVpI@X#C8!LZ36!w4wB2f^n1GeecchKht?{XDSF< zA$e5^HA0yNXUtzvP_QoHNTbm_hqvU#b-b8=adD9;aAY={H?p&{U%*)Mpbf8tU5TU7 z(a|)9#0037b-K6MWoh5Y>dHLf8qFE4yJ zLvC&^U-37?IyZ(+r{f#6TJ3>`4X!K5{E!AH6#iZvXvoUSig1G;Xi%%wd<7V`60YXv z<`|6<2c=S}wnU{;xe2=&aq9K@%|0mYhzA~9BE*Tcw6w(Ozy(Alg+g%$c5Bn;^RZ{M zv$ISZ8yjPA+|lOd<~V&i0=SD}{R;p$;MNWf4su}n7!ls4ZyLKv4eUkO?RIl$`o@W- zT0y!R4&irudwV?dhfwWc{B5d1q|X2yY-?-V&7`R&k&aPqBV7T%WVyAqHP(koiZe4a zY;tmv^=70@l`lw=v_l;PwWSd0huv3Tui`2uz!>ppBf(_zKu~!W| zqkj%msvz%|7K>$le0-dBPfScO(cy4l7h;cbCb?WLmXnjSjjA4a2qN4P{Mx532>MF| z{VME4>`8JKg1n->Bv}oE4>U_HU4*5N|7qz0_?l1m_0LOINjmbWLpFx)E6s+`J+mR$ zEEk8a%cVgJDO; zC+XM3C6o>hAgBZ{OW{RLJ-^D20}gZmYz{pH5sLwGlxE?zrIy@SH3!6CT; zQM}v`oPqm6xpDQfTogVwkcx&CdQPpfESO3|wjo?jUQIV{)!OTC);Bhsy?wR*T5Xl^ E2T#^9#Q*>R diff --git a/res/textures/objects/selected_block.tga b/res/textures/objects/selected_block.tga new file mode 100644 index 0000000000000000000000000000000000000000..4a805133409fa67bac4661cd6b012475ceddd164 GIT binary patch literal 1792 zcmaLYOH30{6b9gVwDds>L00bAx{!r?7noo|LL~7)+_=yMQIrKMLShMR>4TO>(*h-> z6e<-F750R>Q!z0iQ9_IhsWB=lK9H7nrZc_XbK0hbayzR@=KIf`nLFnU#~Hce(abe- zP5L>GBZL>l+@T<-x4ngngv{>jB#5}N@tM@t%9;B5bW*ET?|Dks6Nv=Tz;%;JN_)M_ z1PrZlclfB$7EL4)As$c3xsN)&=&S&RGTH57NE=GG`zgJL4BUUW^8{%&%V|4Gm#ZWl z3^{aM-Wg&@M}@RAq_bS6L{YwFV@Owpv@)a{r08_w6JbpT9LADm@FsyD}=-I6y(@T%*-HAm`j90^F$DG)j*U2HOs6p zJsl5r$V9Eg~Y%>X$kC4eryaAf3P=cf^-;-N-_|5b1Y%EuM+Hiespw+==Is( z*!KeMstbC(a^Uf7o{+$~!jFtRhQu$NDUdj?(#sR9e zI^#HKy%nc@^eZ^yo8zMoegb`RIyxOGg(QT~<^He3IXx6grg=HG!rfAQxDf$lfWtKhu!lK%jA*1~668vt!&%jfd_KjSmP)j%aeuD=U>9Lo1 zt;~^E*n<82Efnd!YBN3sLw$&*;UjtvygQdulb2Z8Bi3qalyK-d4PhQBNR!! zYO}7JDD`%RJ$v?@QxWyhuwu=btWiYNMqsf`8Ca3tO)=x8=Vwo*XQ5LEm@YId+YHI8|wFPJ9X*gnsJ4ltajZa`rmu7LL5K>eB zB<-wk;~Z6b6)|@Q?JSv>mm)}=Y*GIlTIMMBk>!c8_LLeaaK?XYl{j- z`_HNf+t(|&38@D=&yy~eS2p1+X>1gPg)>X(#F-_6N-rG$Zpje78bV$@-bv!`iufbS^73q19Tdx)EoOwtN0d5#Anwxs&G349qM$CZbZsp zVuWhc8!Re}`z3&OeWU5q$}P@rPAF$jHYATwZM1J4y6A-ZBONr?vu~2L`e>&q8vB$o zG#EE)T<*joI)*k`(ECe{Ox6ZtG}qF-k2HT{{4pppRimI>mNF+4WvR7+i%#Hny#yz> zCb)}c5tPdUh7yMqENyOCE|-AW!U3$(8)gA9&;YQ~8+jC&Tv~Q)b&JSs(csip`I@P! zu8B}_21;~wPk6T#SqYde8Nl43PC}L}Am>nGt7wBP8JR5sv?XH!;pT*zk}-R0#)4*f z%jSsa8@WK$ZogwhV3hJZTRM%Y6Dr!ox^$d)UXC00V{o2Tdf(`a)U{`VzT#Qdz4t6Z zLPJO2FlU*)Km-e@d1lJUxj@hX*F`SJk@Ha1F=i7($LJ=*p?ZJBg!6kF4ry1b!kLn? z;DOGAJd&{kUF36Y4pMsT5@Wx`j|xm=#y$;VPc|9T;nYUDIYVY->{`Y^@eGQ&PwaAyz*y$`+P8hTf(5 zcpH1wL5ew+UoG&wS0yM;2$@@oB;KR>wt*8Q!kzDvkPiy> zCZt<+91wWtda*Fefos~rs4nj3Ys2r*e5iehgfBW}Z{N%?H^B7{uj|ECzVV>!86j5| zqFpy1ZcZF~3P=*`X?n59w=H;eDX)7C@gLVVdvT3KjcOXW{b~AIk#BqOiVIQrC)oDW zDtnbVi-Z;GJNA;lbr?QteB*>qRLJb#mG0YX^YzUsa(P2n)G_$4h@4JaE))f zs*eALgk1d76Zp9hA3jI7;=_|WZ&Yeq>=rt#{c_r*Z!-ftrFS|RinjKMI!#s0P3%hM(&r}c!c`kbLQ09vB~k% Q>Hq)$ literal 0 HcmV?d00001 diff --git a/src/block.cpp b/src/block.cpp index 3a4fa6b..e689e6c 100644 --- a/src/block.cpp +++ b/src/block.cpp @@ -9,8 +9,6 @@ const unsigned int Block::TYPE_ID = 2; Block::Block() : Object() { sprite.setOrigin(sf::Vector2f(23, 23)); - select_sprite.setOrigin(sf::Vector2f(23, 23)); - aabb = sf::FloatRect( -Manager::GRID / 2, -Manager::GRID / 2, @@ -41,21 +39,21 @@ void Block::save(std::ofstream& file) const { Object::save(file); } -void Block::prepareDraw() { - std::string texture_name = "movable_block.tga"; +void Block::draw(Level& level) { + // récupération de la texture correspondant au type de bloc + std::string texture_name = "block.tga"; - if (getMass() == 0) { - texture_name = "block.tga"; + if (getMass() > 0) { + texture_name = "movable_" + texture_name; } - sprite.setTexture(*ResourceManager::get().getTexture("objects/" + texture_name)); - select_sprite.setTexture(*ResourceManager::get().getTexture("objects/block_select.tga")); -} + if (isSelected()) { + texture_name = "selected_" + texture_name; + } -void Block::draw(Level& level) { - // utilisation de la texture - sf::RenderWindow& window = level.getManager().getWindow(); - prepareDraw(); + sprite.setTexture(*ResourceManager::get().getTexture( + "objects/" + texture_name + )); // coloration du bloc selon sa charge if (getCharge() > 0) { @@ -67,12 +65,7 @@ void Block::draw(Level& level) { } sprite.setPosition(getPosition()); - window.draw(sprite); - - if (isSelected()) { - select_sprite.setPosition(getPosition()); - window.draw(select_sprite); - } + level.getManager().getWindow().draw(sprite); } void Block::activate(Game& game, Object::Ptr object) { diff --git a/src/finish_block.cpp b/src/finish_block.cpp index e5f8d43..11f27a7 100644 --- a/src/finish_block.cpp +++ b/src/finish_block.cpp @@ -1,20 +1,30 @@ +#include "manager.hpp" #include "resource_manager.hpp" #include "finish_block.hpp" #include "game.hpp" const unsigned int FinishBlock::TYPE_ID = 4; -FinishBlock::FinishBlock() : Block() {} +FinishBlock::FinishBlock() : Block() { + icon_sprite.setOrigin(sf::Vector2f(23, 41)); + icon_sprite.setTexture(*ResourceManager::get().getTexture( + "objects/finish_block.tga" + )); +} + FinishBlock::~FinishBlock() {} Object::Ptr FinishBlock::clone() const { return Object::Ptr(new FinishBlock(*this)); } -void FinishBlock::prepareDraw() { - Block::prepareDraw(); - sprite.setOrigin(sf::Vector2f(23, 41)); - sprite.setTexture(*ResourceManager::get().getTexture("objects/finish_block.tga"), true); +void FinishBlock::draw(Level& level) { + // on dessine le bloc normal + Block::draw(level); + + // on dessine l'icône + icon_sprite.setPosition(getPosition()); + level.getManager().getWindow().draw(icon_sprite); } void FinishBlock::activate(Game& game, Object::Ptr object) {