Przekazywanie efektu naboju do przeciwnika
Ostatnio zmodyfikowano 2015-11-30 18:49
notabigthreat |
» 2015-11-29 18:46:10 @michal11: A co z jakimiś bardziej wymyślnymi efektami? Nie lepiej już zrobić małą klasę podstawową dla wszystkich efektów? |
|
michal11 |
» 2015-11-29 19:44:16 Nie chodzi mi o to żeby nie robić klasy, tylko żeby nie robić oddziaływania efektów na playera w metodzie update efektu tylko w metodzie update playera, przykład: Player::update void Player::update( sf::Time dt, Cursor & cursor ) { for( ) { efekt.update( time int dmg = efekt.getDamage(); int slowdown = efekt.detSlowndown(); this->health -= dmg; } }
Możesz też to zrobić trochę inaczej ale podobnie, skorzystać ze wzorca obserwator, gdzie player będzie obserwował efekty które będą w odpowiednim momencie (np. w funkcji update) wysyłały odpowiednią notyfikację np. odejmij życie, spowolnij itp. Wtedy twój player byłby obserwatorem a efekt subject'em, tutaj tylko pozostaje kwestia tego gdzie przechowujesz vector efektów, jeżeli w klasie player to to rozwiązanie jest de facto poprzednim tylko bardziej skomplikowanym, jeżeli gdzieś indziej to ma to sens. Zarówno w jednym i drugim rozwiązaniu nie masz cyklicznych zależności, przynajmniej teoretycznie. |
|
qest43 Temat założony przez niniejszego użytkownika |
» 2015-11-29 20:32:54 Kontener z efektami przechowuję w klasie Entity.
Jeżeli mam klasę Effects, i zrobię kilka podklas od tego dla różnych efektów, to nie wszystkie będą miały dmg,slowdown itd. Więc dla każdego parametru musiałbym robić w ten sposób jaki piszesz:
int dmg = efekt.getDamage(); int slowdown = efekt.detSlowndown();
Ja bym wysyłał do efektu obiekt i tam zmieniał odpowiednie parametry, byłoby bardziej przejrzyście według mnie. |
|
michal11 |
» 2015-11-29 21:47:43 Ja bym wysyłał do efektu obiekt i tam zmieniał odpowiednie parametry, byłoby bardziej przejrzyście według mnie. |
Przecież napisałeś, że coś takiego się nie kompiluje. Zresztą możesz napisać jak chcesz, ja tylko wyraziłem swoje zdanie i podpowiedziałem inne pomysły jak ja bym to rozwiązał. Nawet nie znam dokładnie struktury twojego kodu. Jeżeli chcesz przesyłać playera do metod efektu to musisz wyrzucić je z playera i zastanowić się nad jakimś innym rozwiązaniem. |
|
qest43 Temat założony przez niniejszego użytkownika |
» 2015-11-30 18:49:58 Napisałem też wcześniej że przepiszę kod od nowa, nie ma sensu kombinować w ten sposób i tworzyć zawiły kod :) |
|
1 « 2 » |