Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: orxonox.OLD/trunk/src/world_entities/environments/mover_trigger_event_list.cc

Last change on this file was 10696, checked in by snellen, 17 years ago

added all the new mover classes

File size: 3.6 KB
Line 
1/*
2   orxonox - the future of 3D-vertical-scrollers
3
4   Copyright (C) 2007 orx
5
6   This program is free software; you can redistribute it and/or modify
7   it under the terms of the GNU General Public License as published by
8   the Free Software Foundation; either version 2, or (at your option)
9   any later version.
10
11   ### File Specific:
12   main-programmer: Fabian 'x3n' Landau
13   co-programmer:
14*/
15
16#include "mover_trigger_event_list.h"
17#include "debug.h"
18/*
19MoverTriggerEventList *listPointer = 0;
20
21MoverTriggerEventList::getListPointer()
22{
23    if (!this->listPointer)
24        this->listPointer = new MoverTriggerEventList();
25       
26    return this->listPointer;
27}
28*/
29MoverTriggerEventList::MoverTriggerEventList()
30{
31    this->first = 0;
32}
33
34
35MoverTriggerEventList::~MoverTriggerEventList()
36{
37    while (this->first != 0)
38    {
39        this->removeTrigger(this->first->trigger);
40    }
41}
42
43void MoverTriggerEventList::addTrigger(MoverTrigger *trigger)
44{
45    if (trigger)
46    {
47        if (!this->first)
48            this->first = new MoverTriggerEventListElement(trigger);
49        else
50        {
51            MoverTriggerEventListElement *temp = this->first;
52            while (temp->next != 0)
53                temp = temp->next;
54
55            temp->next = new MoverTriggerEventListElement(trigger);
56        }
57    }
58}
59
60void MoverTriggerEventList::removeTrigger(MoverTrigger *trigger)
61{
62    if (trigger)
63    {
64        if (this->first != 0)
65        {
66            if (this->first->trigger == trigger)
67            {
68                MoverTriggerEventListElement *temp = this->first->next;
69
70                delete this->first;
71                this->first = temp;
72            }
73            else
74            {
75                MoverTriggerEventListElement *temp = this->first;
76
77                while (temp != 0)
78                {
79                    if (temp->next && (temp->next->trigger == trigger))
80                    {
81                        MoverTriggerEventListElement *temp2 = temp->next->next;
82                        delete temp->next;
83                        temp->next = temp2;
84                    }
85
86                    temp = temp->next;
87                }
88            }
89        }
90    }
91}
92
93bool MoverTriggerEventList::isEmpty()
94{
95    return (this->first == 0);
96}
97
98bool MoverTriggerEventList::isTriggered(const std::string& triggerName)
99{
100    MoverTriggerEventListElement *temp = this->first;
101    bool isTriggered = false;
102   
103    while (temp != 0)
104    {
105        if (temp->trigger && (temp->trigger->getName() == triggerName))
106        {
107            if (temp->trigger->isTriggered())
108            {
109                isTriggered = true;
110            }
111            else
112            {
113                if (temp->trigger->isObligatory())
114                    return false;
115            }
116        }
117       
118        temp = temp->next;
119    }
120   
121    return isTriggered;
122}
123
124MoverTriggerPointerList *MoverTriggerEventList::getPointerList(const std::string& triggerName)
125{
126    MoverTriggerPointerList *list = new MoverTriggerPointerList();
127    MoverTriggerEventListElement *temp = this->first;
128
129    while (temp != 0)
130    {
131        if (temp->trigger && (temp->trigger->getName() == triggerName))
132            list->addTrigger(temp->trigger);
133
134        temp = temp->next;
135    }
136   
137    return list;
138}
139
140
141////////////////////////////////////////////////////////
142
143
144MoverTriggerEventListElement::MoverTriggerEventListElement(MoverTrigger *trigger)
145{
146    this->trigger = trigger;
147    this->next = 0;
148}
149
150MoverTriggerEventListElement::~MoverTriggerEventListElement()
151{
152}
Note: See TracBrowser for help on using the repository browser.