summaryrefslogtreecommitdiffstats
path: root/libksirtet/DESIGN
blob: f09b8539a52a90c5d63700655355fd98d0bc4c29 (plain)
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
'lo, time to explain how some things are designed in the generic class
of these games (ksirtet, kfouleggs and klickety)

NB: You should read this file with a fixed font editor ...

the following set of functions is implemented in the hierarchy of classes :
GenericTetris -> BaseBoard -> Board -> specific Board class for each game

===============================================================================
action 'Piece Drop Down' activated
 |
pieceDropped()           <-|
 |                         |
oneLineDown() -> by timer -|

===============================================================================
if oneLineDown() make the piece touch the ground
 |
pieceDropped()           
 |                         
_beforeGlue()            <-|
 |                         |
beforeGlue()  -> by timer -|    // here is implemented the bump effect
 | (when done)
gluePiece()
 |
_afterGlue()             <-|
 |                         |
afterGlue()   -> by timer -|    // here kfouleggs remove holes
 | (when done)
needRemoving ? no -> _afterAfterRemove()
 |
_beforeRemove()           <-|
 |                          |
beforeRemove() -> by timer -|   // here blocks to be removed are highlighted
 | (when done)
remove()
 |
_afterRemove()           <-|
 |                         |
afterRemove() -> by timer -|    // here is animated the fall of piece in
 |                              // the holes leaved by removed blocks
 | if needs removing again -> _beforeRemove()
 |
_afterAfterRemove() ? no gift pending -> afterAfterRemove()
 |
putGift()
 |
_afterGift()           <-|
 |                       |
afterGift() -> by timer -|  // here kfouleggs make the gift block to land
 |
_afterAfterRemove()
 |
afterAfterRemove() ? gameOver -> gameOver()
 |
newPiece()