1 #include "menulist.h"
2 #include "actormanager.h"
3 
update()4 void MenuList::update()
5 {
6 }
7 
shutdown()8 void MenuList::shutdown()
9 {
10 	/*
11 	list<MenuElement*>::iterator tmp_iter;
12 	for(tmp_iter=elements.begin();tmp_iter!=elements.end();tmp_iter++)
13 		g->actormanager->erase(*tmp_iter);
14 		*/
15 }
16 
add(MenuElement * e)17 void MenuList::add(MenuElement *e)
18 {
19 	elements.push_back(e);
20 }
21 
next()22 MenuElement* MenuList::next()
23 {
24 	MenuElement* tmp;
25 
26 	//Si es el ultimo devolvemos NULL
27 	if(actual_el==elements.size() || elements.size()==0)
28 		return NULL;
29 
30 	tmp=elements[actual_el];
31 	actual_el++;
32 	return tmp;
33 }
34 
current()35 MenuElement* MenuList::current()
36 {
37 	//Devuelve el elemento actual sin avanzar
38 	if(actual_el==elements.size() || elements.size()==0)
39 		return NULL;
40 	return elements[actual_el];
41 }
42 
addMouse(MenuMouseElement * e)43 void MenuList::addMouse(MenuMouseElement *e)
44 {
45 	mouse.push_back(e);
46 }
47 
nextMouse()48 MenuMouseElement* MenuList::nextMouse()
49 {
50 	MenuMouseElement* tmp;
51 
52 	//Si es el ultimo devolvemos NULL
53 	if(actual_mouse==mouse.size() || mouse.size()==0)
54 		return NULL;
55 
56 	tmp=mouse[actual_mouse];
57 	actual_mouse++;
58 	return tmp;
59 }
60 
currentMouse()61 MenuMouseElement* MenuList::currentMouse()
62 {
63 	//Devuelve el elemento actual sin avanzar
64 	if(actual_mouse==mouse.size() || mouse.size()==0)
65 		return NULL;
66 	return mouse[actual_mouse];
67 }
68 
goDown()69 void MenuList::goDown()
70 {
71 	if(elements.size()==0)
72 		return;
73 
74 	if(!selectedIn())
75 		return;
76 
77 	elements[selected]->getSignal(MenuElement::UNSELECTED);
78 
79 	selected++;
80 	if(selected==(signed)elements.size())
81 		selected=0;
82 
83 	elements[selected]->getSignal(MenuElement::SELECTED);
84 }
85 
goUp()86 void MenuList::goUp()
87 {
88 	if(elements.size()==0)
89 		return;
90 
91 	if(!selectedIn())
92 		return;
93 
94 	elements[selected]->getSignal(MenuElement::UNSELECTED);
95 
96 	if(selected==0)
97 		selected=elements.size();
98 	selected--;
99 
100 	elements[selected]->getSignal(MenuElement::SELECTED);
101 }
102 
goLeft()103 void MenuList::goLeft()
104 {
105 	if(elements.size()==0)
106 		return;
107 
108 	if(!selectedIn())
109 		return;
110 
111 	elements[selected]->getSignal(MenuElement::PRESS_LEFT);
112 }
113 
goRight()114 void MenuList::goRight()
115 {
116 	if(elements.size()==0)
117 		return;
118 
119 	if(!selectedIn())
120 		return;
121 
122 	elements[selected]->getSignal(MenuElement::PRESS_RIGHT);
123 }
124 
pressEnter()125 void MenuList::pressEnter()
126 {
127 	if(elements.size()==0)
128 		return;
129 
130 	if(!selectedIn())
131 		return;
132 
133 	elements[selected]->getSignal(MenuElement::PRESS_ENTER);
134 }
135 
selectedIn()136 bool MenuList::selectedIn()
137 {
138 	if(!is_selected)
139 	{
140 		is_selected=true;
141 		selected=0;
142 		elements[selected]->getSignal(MenuElement::SELECTED);
143 		return false;
144 	}
145 	return true;
146 }
147 
selectedOut()148 bool MenuList::selectedOut()
149 {
150 	if(is_selected)
151 	{
152 		is_selected=false;
153 		elements[selected]->getSignal(MenuElement::UNSELECTED);
154 		return false;
155 	}
156 	return true;
157 }
158