-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathBoardChangeListener.h
81 lines (71 loc) · 2.62 KB
/
BoardChangeListener.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
#ifndef __BOARDCHANGELISTENER_H__
#define __BOARDCHANGELISTENER_H__
/**
* BoardChangeListener.h
*
* $Revision$
* $Id$
*
* Abstrakti luokka / interface
* jonka implementoivalle luokalle voidaan välittää tieto
* muutoksista laudan sisällössä.
*
* Kuuntelijan tulee itse rekisteröityä TetrisBoardilleen
* kuuntelijaksi myBoard->registerChangeListener(this);
* Kuuntelija on myös vastuussa itsensä kuuntelijoista poistamisesta
* myBoard->unregisterChangeListener(this) jos se ei aio
* enään kuunnella syystä tai toisesta.
*
* Kuuntelija reagoi (tai jättää reagoimatta) ilmoituksiin
* haluamallaan tavalla. Luultavasti se haluaa kysyä muuttuneet
* asiat boardin metodeilla: getMatrix() ja getSlot(x, y);
*/
#include "TetrisCommon.h"
class VBoardChangeListener {
public:
/**
* Tätä kutsutaan kun boardissa on tapahtunut suuri muutos,
* ja sen uudelleenpiirtämistä kokonaan suositellaan.
*/
virtual void handleFreshBoard() = 0;
/**
* handleChangeInLines(int *changedLines[], int numLines)
*
* Vastaanottaa tiedon, boardin muuttuneista riveistä.
* Parametrina tuotu taulukko kertoo muuttuneet rivit, jotka tulisi
* hakea ja näyttää uudestaan. Taulukko sisältää y-koordinaatteja.
*
* Ilmoituksen lähettäjä vastaa taulun tuhoamisesta.
*
* @param changedLines[] taulukko muuttuneista riveistä
* @param numLines apumuuttuja joka kertoo muuttuneiden
* rivien määrän
*/
virtual void handleChangeInLines(const int *changedLines[], const int numLines) = 0;
/**
* handleChangeInCoord(int x, int y)
*
* Tehdäänpä nyt muutoksia silmälläpitäen myös yhden solun
* muuttuminen, vaikkei sitä ehkä käytettäisikään. Vaikkapa
* nopeustestien varalle.
* Ei pitäisi olla suuri homma implementoida =)
*
* @param x muuttuneen solun x-koordinaatti
* @param y muuttuneen solun y-koordinaatti
* @param ct muuttuneen solun uusi arvo
*/
virtual void handleChangeInCoord(const int x, const int y, const CELL_TYPE ct) = 0;
/**
* handleChangeInStats(int points, int removedLines, int removedTotal, int level)
*
* Vastaanottaa tiedon muuttuneista statseista. Ilmoitetaan yleensä
* kun pelikenttä on poistanut tyhjät rivit.
*
* @param score pistemäärä yhteensä
* @param reml poistetut rivit yhteensä
* @param remll viimeksi räjähtäneet rivit
* @param level pelitaso
*/
virtual void handleChangeInStats(const int score, const int reml, const int remll, const int level) = 0;
};
#endif // __BOARDCHANGELISTENER_H__