File: GridSpace.h

package info (click to toggle)
primrose 6%2Bdfsg1-3
  • links: PTS, VCS
  • area: main
  • in suites: jessie, jessie-kfreebsd, stretch
  • size: 5,300 kB
  • ctags: 3,383
  • sloc: cpp: 27,318; php: 765; ansic: 636; objc: 272; sh: 136; makefile: 93; perl: 67
file content (167 lines) | stat: -rw-r--r-- 3,501 bytes parent folder | download | duplicates (5)
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
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
#ifndef GRID_SPACE_INCLUDED
#define GRID_SPACE_INCLUDED


#include "minorGems/graphics/Color.h"


class GridSpace {
        
    public:
        
        // constructs w/ center location on screen
        GridSpace( int inX, int inY );
        
        ~GridSpace();
        

        // steps animations
        void step();
        
        
        // true if this space is currently not animating
        char isAnimationDone();
        

        // checks if this space is part of a like-colored group
        // that is surrounded by a single color
        // returns NULL if not surrounded
        // returns color of surrounders if surrounded
        // returns color of this piece if surrounded by edges
        // Recursive
        Color *checkSurrounded();
        
        
        // start clearing animation
        void flipToClear();
        
        

        // draws onto screen
        void drawGrid( float inAlpha=1.0f );
        void drawPieceCenter( float inAlpha=1.0f );
        void drawPieceHalo( float inAlpha=1.0f  );
        

        char isInside( int inX, int inY );
        
        
        char isEmpty() {
            return ( mPieceColor == NULL );
            }
        

        // color destroyed by this class
        void setColor( Color *inColor );



        // saves state to return to upon rewind
        void saveState();
        
        void rewindState();
        

        // returns saved color, or NULL
        // not a copy
        Color *getSavedColor();
        
        
        
            
        // returns a copy of this space's current color, or NULL
        // if empty
        Color *getColor() {
            if( isEmpty() ) {
                return NULL;
                }
            else {
                return mPieceColor->copy();
                }
            }
        
        
        int getColorIndex() {
            return mPieceColorIndex;
            }
        


        char colorMatches( Color *inColor );
        
        
        
        

        int mX, mY;
        
        char mActive;
        // can be used to turn off active marker even when mActive is true
        // (for fast playback mode)
        // defaults to true (visible)
        char mActiveMarkerVisible;
        
        char mVisited;
        char mChecked;
        char mMarkedForClearing;
        
        
        int mScore;
        
        // set to false to block this piece from contributing to 
        // current game score
        char mAddToGlobalScore;
        
        

        enum NeighborDirections { top=0, right, bottom, left 
            };
        
        
        GridSpace *mNeighbors[4];
        

        // current blend of colors displayed
        Color *mDrawColor;


    private:
        
        Color *mPieceColor;
        int mPieceColorIndex;
        
        Color *mLastColor;
        
        // for colorblind mode
        Color *mPieceInvertedColor;
        Color *mLastInvertedColor;
        

        float mColorShiftProgress;
        

        char mBrightHalo;
        
        float mBrightHaloProgress;
        
        // active mark fades in too
        float mActiveProgress;
        

        float mScoreFade;
        char mScoreSent;

        Color *mSavedColor;
        char mSavedActive;
        
        
        // breather steps to let stuff settle visually
        // after animation done
        int mPauseStepsAfterAnimationDone;
        
        
    };


#endif