void Door::trigger()
{
- if (!timeresistant)
- {
- mainScene->addEvent(this, 3);
- }
-
if (speed == 0)
{
if (time == 0)
else
{
speed = -speed;
+
+ if (!timeresistant)
+ {
+ mainScene->addEvent(this, 4);
+ }
}
}
}
else
{
+ //this should never happen
speed = -speed;
}
}
+void Door::reverseSpeed()
+{
+ speed = -speed;
+}
+
void Door::update(float deltaT)
{
time = time + speed * deltaT;
if (time < 0)
{
+ if (!timeresistant && deltaT > 0)
+ {
+ mainScene->addEvent(this, 3);
+ }
+
time = 0;
speed = 0;
}
if (time > duration)
{
+ if (!timeresistant && deltaT > 0)
+ {
+ mainScene->addEvent(this, 3);
+ }
+
time = duration;
speed = 0;
}
void Lever::reverseTrigger()
{
turned = !turned;
-
- if (turned)
- {
- this->startanimation((uint)0, -1.0f);
- }
- else
- {
- this->startanimation((uint)0, 1.0f);
- }
}
\ No newline at end of file
break;
case 3:
- //Door triggered
+ //Door finished
if (Door* l = dynamic_cast<Door*> (e.object))
{
l->reverseTrigger();
}
break;
+
+ case 4:
+ //Door triggered before it was finished
+ if (Door* l = dynamic_cast<Door*> (e.object))
+ {
+ l->reverseSpeed();
+ }
+ break;
}
}
\ No newline at end of file