167 |
|
|
168 |
public: |
public: |
169 |
Umbrella() : Item ("it-umbrella") {} |
Umbrella() : Item ("it-umbrella") {} |
170 |
}; |
}; |
171 |
|
|
172 |
class Key : public Item { |
class Key : public Item { |
173 |
CLONEOBJ(Key); |
CLONEOBJ(Key); |
857 |
class Trigger : public Item { |
class Trigger : public Item { |
858 |
CLONEOBJ(Trigger); |
CLONEOBJ(Trigger); |
859 |
public: |
public: |
860 |
Trigger() : Item("it-trigger"), objectcnt(0), have_stone(false) { |
Trigger() : Item("it-trigger"), objectcnt(0), have_pressure(false) { |
861 |
set_attrib("invisible", 0.0); |
set_attrib("invisible", 0.0); |
862 |
} |
} |
863 |
private: |
private: |
864 |
int objectcnt; // number of objects on the trigger |
int objectcnt; // number of objects on the trigger |
865 |
bool have_stone; |
bool have_pressure; |
866 |
|
|
867 |
bool actor_hit(Actor */*a*/) { return false; } |
bool actor_hit(Actor */*a*/) { return false; } |
868 |
|
|
904 |
void |
void |
905 |
Trigger::stone_change(Stone *st) |
Trigger::stone_change(Stone *st) |
906 |
{ |
{ |
907 |
if (st == 0 && have_stone){ |
bool get_pressure = st && !st->is_floating(); |
|
have_stone=false; |
|
|
remove_object(); |
|
|
} |
|
908 |
|
|
909 |
if (st != 0 && !st->is_floating() && !have_stone){ |
if (get_pressure != have_pressure) { |
910 |
have_stone=true; |
if (get_pressure) add_object(); |
911 |
add_object(); |
else remove_object(); |
912 |
|
have_pressure = get_pressure; |
913 |
} |
} |
914 |
} |
} |
915 |
|
|