989 |
namespace |
namespace |
990 |
{ |
{ |
991 |
class WoodenStone : public MovableStone { |
class WoodenStone : public MovableStone { |
992 |
CLONEOBJ(WoodenStone); |
CLONEOBJ(WoodenStone); |
993 |
public: |
public: |
994 |
WoodenStone(const char *kind) : MovableStone(kind) {} |
WoodenStone(const char *kind) : MovableStone(kind) {} |
995 |
|
|
996 |
private: |
private: |
|
|
|
|
// When st-wood is created it randomly becomes st-wood1 or st-wood2. |
|
|
void on_creation() { |
|
|
if (is_kind("st-wood")) { |
|
|
ReplaceStone(get_pos(), MakeStone(IntegerRand(0, 1) ? "st-wood1" : "st-wood2")); |
|
|
return; |
|
|
} |
|
|
MovableStone::on_creation(); |
|
|
} |
|
|
|
|
997 |
void fall() { |
void fall() { |
998 |
GridPos p = get_pos(); |
GridPos p = get_pos(); |
999 |
if (!world::IsLevelBorder(p)) { |
if (!world::IsLevelBorder(p)) { |
1018 |
fall(); |
fall(); |
1019 |
} |
} |
1020 |
}; |
}; |
1021 |
|
|
1022 |
|
class RandomWoodenStone : public Stone { |
1023 |
|
public: |
1024 |
|
RandomWoodenStone() : Stone("st-wood") {} |
1025 |
|
private: |
1026 |
|
// When st-wood is created it randomly becomes st-wood1 or st-wood2. |
1027 |
|
Stone *clone() { |
1028 |
|
return new WoodenStone (IntegerRand(0, 1) ? "st-wood1" : "st-wood2"); |
1029 |
|
} |
1030 |
|
void dispose() {delete this;} |
1031 |
|
}; |
1032 |
} |
} |
1033 |
|
|
1034 |
//---------------------------------------- |
//---------------------------------------- |
2407 |
|
|
2408 |
Register(new Window); |
Register(new Window); |
2409 |
|
|
2410 |
Register(new WoodenStone("st-wood")); // random flavor |
Register(new RandomWoodenStone); // random flavor |
2411 |
Register(new WoodenStone("st-wood1")); // horizontal planks |
Register(new WoodenStone("st-wood1")); // horizontal planks |
2412 |
Register(new WoodenStone("st-wood2")); // vertical planks |
Register(new WoodenStone("st-wood2")); // vertical planks |
2413 |
Register(new WoodenStone_Growing); |
Register(new WoodenStone_Growing); |