/* orxonox - the future of 3D-vertical-scrollers Copyright (C) 2007 orx This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version. ### File Specific: main-programmer: Fabian 'x3n' Landau co-programmer: */ #include "mover_trigger_list.h" #include "debug.h" MoverTriggerList::MoverTriggerList() { PRINTF(0)("10_1 MoverTriggerList %p created\n", this); this->first = 0; PRINTF(0)("10_2 first element: %p\n", this->first); } MoverTriggerList::~MoverTriggerList() { PRINTF(0)("13_1 MoverTriggerList %p destroyed\n", this); MoverTriggerListElement *temp1 = this->first; MoverTriggerListElement *temp2; while (temp1 != 0) { temp2 = temp1->next; delete temp1; temp1 = temp2; } } void MoverTriggerList::addTrigger(MoverTrigger *trigger) { PRINTF(0)("11_1 added trigger %p to list %p\n", trigger, this); if (trigger) { if (this->first == 0) { PRINTF(0)("11_2\n"); this->first = new MoverTriggerListElement(trigger); } else { PRINTF(0)("11_3\n"); MoverTriggerListElement *temp = this->first; while (temp->next != 0) temp = temp->next; temp->next = new MoverTriggerListElement(trigger); PRINTF(0)("11_4\n"); } } PRINTF(0)("11_5\n"); } bool MoverTriggerList::isTriggered() { // PRINTF(0)("16_1\n"); if (this->first == 0) { // PRINTF(0)("16_2\n"); return true; } else { // PRINTF(0)("16_3\n"); bool isTriggered = false; MoverTriggerListElement *temp = this->first; while (temp != 0) { if (temp->trigger->isTriggered()) { isTriggered = true; } else { if (temp->trigger->isObligatory()) return false; } temp = temp->next; } // PRINTF(0)("16_4\n"); return isTriggered; } } void MoverTriggerList::setBaseCoor(Vector baseCoor) { // PRINTF(0)("12_1 set base coor in %p\n", this); // PRINTF(0)("12_2 first element: %p\n", this->first); MoverTriggerListElement *temp = this->first; while (temp != 0) { // PRINTF(0)("12_3\n"); temp->trigger->setBaseCoor(baseCoor); temp = temp->next; } // PRINTF(0)("12_4\n"); } //////////////////////////////////////////////////////// MoverTriggerListElement::MoverTriggerListElement(MoverTrigger *trigger) { this->trigger = trigger; this->next = 0; } MoverTriggerListElement::~MoverTriggerListElement() { if (this->trigger) delete this->trigger; }