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