Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Przekazywanie efektu naboju do przeciwnika

Ostatnio zmodyfikowano 2015-11-30 18:49
Autor Wiadomość
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?
P-141112
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:
C/C++
Player::update
void Player::update( sf::Time dt, Cursor & cursor )
{
    //...
   
    for( /*dla każdego efektu*/ )
    {
        efekt.update( time //..);
       
        int dmg = efekt.getDamage();
        int slowdown = efekt.detSlowndown();
        //itd.
       
        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.
P-141117
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.
P-141122
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.

P-141130
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 :)
P-141184
1 « 2 »
Poprzednia strona Strona 2 z 2