1 #include "team.h"
2 #include	"cap.h"
3 #include "actormanager.h"
4 #include "humanmanager.h"
5 #include "game.h"
6 #include "soccergame.h"
7 
8 Game* Team::g=NULL;
9 
Team()10 Team::Team()
11 {
12 }
13 
~Team()14 Team::~Team()
15 {
16 }
17 
init(Game::team_t t,const Theme * theme)18 void Team::init(Game::team_t t,const Theme *theme)
19 {
20 	team=t;
21 
22 	Cap::setGraze(1.0-theme->graze);
23 	//numero de chapas
24 	num_caps=theme->caps;
25 	Cap *c;
26 
27 	//Le creamos un turno del tipo que sea
28 	m=new HumanManager;
29 	m->setGame(g);
30 	m->init(t);
31 
32 	for(int i=0;i<num_caps;i++)
33 	{
34 		c=new Cap(zero);
35 		c->setID(i);
36 		c->setTeam(t);
37 		c->setMass(theme->cap_mass);
38 		if(t==SG::LEFT)
39 		{
40 			if(i==0)
41 				c->setInitialPos(Vector(theme->stadium_x+theme->stadium_w*theme->cap_left_1_x,\
42 							theme->stadium_y+theme->stadium_h*theme->cap_left_1_y));
43 			else if(i==1)
44 				c->setInitialPos(Vector(theme->stadium_x+theme->stadium_w*theme->cap_left_2_x,\
45 							theme->stadium_y+theme->stadium_h*theme->cap_left_2_y));
46 			else if(i==2)
47 				c->setInitialPos(Vector(theme->stadium_x+theme->stadium_w*theme->cap_left_3_x,\
48 							theme->stadium_y+theme->stadium_h*theme->cap_left_3_y));
49 			else if(i==3)
50 				c->setInitialPos(Vector(theme->stadium_x+theme->stadium_w*theme->cap_left_4_x,\
51 							theme->stadium_y+theme->stadium_h*theme->cap_left_4_y));
52 			else if(i==4)
53 				c->setInitialPos(Vector(theme->stadium_x+theme->stadium_w*theme->cap_left_5_x,\
54 							theme->stadium_y+theme->stadium_h*theme->cap_left_5_y));
55 			else if(i==5)
56 				c->setInitialPos(Vector(theme->stadium_x+theme->stadium_w*theme->cap_left_6_x,\
57 							theme->stadium_y+theme->stadium_h*theme->cap_left_6_y));
58 			else if(i==6)
59 				c->setInitialPos(Vector(theme->stadium_x+theme->stadium_w*theme->cap_left_7_x,\
60 							theme->stadium_y+theme->stadium_h*theme->cap_left_7_y));
61 			else if(i==7)
62 				c->setInitialPos(Vector(theme->stadium_x+theme->stadium_w*theme->cap_left_8_x,\
63 							theme->stadium_y+theme->stadium_h*theme->cap_left_8_y));
64 			else if(i==8)
65 				c->setInitialPos(Vector(theme->stadium_x+theme->stadium_w*theme->cap_left_9_x,\
66 							theme->stadium_y+theme->stadium_h*theme->cap_left_9_y));
67 			else if(i==9)
68 				c->setInitialPos(Vector(theme->stadium_x+theme->stadium_w*theme->cap_left_10_x,\
69 							theme->stadium_y+theme->stadium_h*theme->cap_left_10_y));
70 		}
71 		else
72 		{
73 			if(i==0)
74 				c->setInitialPos(Vector(theme->stadium_x+theme->stadium_w*theme->cap_right_1_x,\
75 							theme->stadium_y+theme->stadium_h*theme->cap_right_1_y));
76 			else if(i==1)
77 				c->setInitialPos(Vector(theme->stadium_x+theme->stadium_w*theme->cap_right_2_x,\
78 							theme->stadium_y+theme->stadium_h*theme->cap_right_2_y));
79 			else if(i==2)
80 				c->setInitialPos(Vector(theme->stadium_x+theme->stadium_w*theme->cap_right_3_x,\
81 							theme->stadium_y+theme->stadium_h*theme->cap_right_3_y));
82 			else if(i==3)
83 				c->setInitialPos(Vector(theme->stadium_x+theme->stadium_w*theme->cap_right_4_x,\
84 							theme->stadium_y+theme->stadium_h*theme->cap_right_4_y));
85 			else if(i==4)
86 				c->setInitialPos(Vector(theme->stadium_x+theme->stadium_w*theme->cap_right_5_x,\
87 							theme->stadium_y+theme->stadium_h*theme->cap_right_5_y));
88 			else if(i==5)
89 				c->setInitialPos(Vector(theme->stadium_x+theme->stadium_w*theme->cap_right_6_x,\
90 							theme->stadium_y+theme->stadium_h*theme->cap_right_6_y));
91 			else if(i==6)
92 				c->setInitialPos(Vector(theme->stadium_x+theme->stadium_w*theme->cap_right_7_x,\
93 							theme->stadium_y+theme->stadium_h*theme->cap_right_7_y));
94 			else if(i==7)
95 				c->setInitialPos(Vector(theme->stadium_x+theme->stadium_w*theme->cap_right_8_x,\
96 							theme->stadium_y+theme->stadium_h*theme->cap_right_8_y));
97 			else if(i==8)
98 				c->setInitialPos(Vector(theme->stadium_x+theme->stadium_w*theme->cap_right_9_x,\
99 							theme->stadium_y+theme->stadium_h*theme->cap_right_9_y));
100 			else if(i==9)
101 				c->setInitialPos(Vector(theme->stadium_x+theme->stadium_w*theme->cap_right_10_x,\
102 							theme->stadium_y+theme->stadium_h*theme->cap_right_10_y));
103 		}
104 		c->init();
105 		g->actormanager->activate(c);
106 		caps.push_back(c);
107 	}
108 	collocateCaps();
109 }
110 
collocateCaps()111 void Team::collocateCaps()
112 {
113 	for(int i=0;i<num_caps;i++)
114 		caps[i]->returnInitialPos();
115 }
116 
update()117 void Team::update()
118 {
119 	m->update();
120 }
121 
shutdown()122 void Team::shutdown()
123 {
124 	m->shutdown();
125 }
126 
isOver()127 bool Team::isOver()
128 {
129 	if(m->isOver())
130 	{
131 		caps[m->getCap()]->setVel(m->getVel());
132 		caps[m->getCap()]->setAccel(m->getAccel());
133 		return true;
134 	}
135 	return false;
136 }
137 
delCap(Cap * c)138 void Team::delCap(Cap *c)
139 {
140 	for(int i=0;i<num_caps;i++)
141 	{
142 		if(caps[i]==c)
143 		{
144 			for(;i<num_caps-1;i++)
145 			{
146 				caps[i]=caps[i+1];
147 				caps[i]->setID(i);
148 			}
149 
150 			caps[num_caps]=NULL;
151 			num_caps--;
152 			g->actormanager->erase(c);
153 			break;
154 		}
155 	}
156 }
157 
getCap(const int i)158 Cap* Team::getCap(const int i)
159 {
160 	if(i<num_caps)
161 		return caps[i];
162 	return NULL;
163 }
164