3 * Daniel Nelson - 8/24/0
5 * Copyright (C) 2000 Daniel Nelson
7 * This program is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU General Public License
9 * as published by the Free Software Foundation; either version 2
10 * of the License, or (at your option) any later version.
12 * This program is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
17 * You should have received a copy of the GNU General Public License
18 * along with this program; if not, write to the Free Software
19 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
21 * Daniel Nelson - aluminumangel.org
37 #define GF_GRAY (1) // hard to destroy
38 #define GF_BLACK (2) // very hard to destroy
39 #define GF_WHITE (3) // crazy lights
40 #define GF_COLOR_1 (4) // sprinkling of 1x1's
41 #define GF_COLOR_2 (5) // shatters to normal garbage
42 #define GF_COLOR_3 (6) // invisible swapper
43 #define GF_COLOR_4 (7) // reverse controls
44 #define GF_COLOR_5 (8) // tall garbage
48 #define GF_SHATTER_TO_NORMAL_GARBAGE (GF_COLOR_2)
49 #define GF_REVERSE_CONTROLS (GF_COLOR_4)
50 #define GF_INVISIBLE_SWAPPER (GF_COLOR_3)
51 #define GF_CRAZY_LIGHTS (GF_WHITE)
54 #define GS_STATIC (1 << 0)
55 #define GS_FALLING (1 << 1)
56 #define GS_AWAKING (1 << 2)
57 #define GS_SHATTERING (1 << 3)
63 void initializeStatic ( int _x
, int _y
, int _height
, int _width
,
65 void initializeFalling ( int _x
, int _y
, int _height
, int _width
,
67 void initializeAwaking ( int _x
, int _y
, int _height
, int pop_delay
,
68 int awake_delay
, ComboTabulator
*combo
, int _pop_color
);
69 void timeStep ( int &l_x
, int &l_y
);
70 void startFalling ( ComboTabulator
*combo
= NULL
, bool no_hang
= false,
71 bool self_call
= false );
72 void startShattering ( int &s_x
, int s_y
, int &pop_delay
, int awake_delay
,
73 ComboTabulator
*combo
);
75 bool considerShattering ( Garbage
*due_to
)
77 * The grid is asking us if we should shatter due to the fact that our
78 * neighbor - due_to - is shattering. If due_to is null, we are shattering
79 * because of a neighboring elimination. Parts of the black garbage
80 * algorithm are handled in Grid.cxx
83 if (!due_to
) return true;
84 if (flavor
== GF_GRAY
)
85 if (due_to
->flavor
== GF_GRAY
)
89 if (flavor
== GF_BLACK
)
90 if (due_to
->flavor
== GF_BLACK
)
94 if (due_to
->flavor
== GF_GRAY
)
109 // garbage dimensions
112 // find position control; GC_STEPS_PER_GRID number of increments per grid
118 // time until awakening
121 // number of sections popped in awaking garbage
124 // true if we're in an initial fall
127 // next direction of rotation upon popping
133 // the block color before popping
137 // combo to pass on upon awakening
138 ComboTabulator
*awaking_combo
;