This project is read-only.

Animazioni "bloccanti"

Developer
Jul 15, 2010 at 2:59 PM

Ti espongo un problema che si è già presentato e che sicuramente si ripresenterà man mano che arricchiamo il gioco di grafica e animazioni.
Parto da un esempio concreto. Quando il giocatore clicca sul mazzo vogliamo fare un'animazione di una carta che dal mazzo si posiziona sul tavolo. Mentre viene disegnata quest'animazione vogliamo però evitare che la carta stessa venga già disegnata sul tavolo, e disegnarla soltanto ad animazione ultimata. Questo può essere fatto alzando/abbassando un flag, che va memorizzato dentro il BoardRenderer. L'accesso a questo flag quindi deve essere garantito anche a chi intercetta il click sul mazzo, che è PlayerLayer.
Potremmo aggiungere alla interfaccia IBoardRenderer il flag stesso oppure una funzione StartCardAnimation() che mette quel flag a true. Abbiamo provato nel primo modo, ma abbiamo riscontrato errori di accesso al flag (come settare la get in IBoardRenderer e le get/set in BoardRenderer?).

Coordinator
Jul 15, 2010 at 3:18 PM
Io userei un metodo StartCardAnimation(Card card, AnimationDesc anim) in cui la struct AnimationDesc contiene la descrizione dell'animazione, ossia durata, destinazione, etc. La carta viene "bloccata" in modo da evitare ulteriori interazioni con una flag che peró deve essere *interna* al BoardRenderer e del tutto ignota alla Logica. Addirittura si potrebbe impostare la logica e l'input ad Enabled = false finché il BoardRenderer non sta facendo una animazione, in modo da congelare la logica e l'input evitando interferenze indesiderate.