[Bastion-cvs] bastion/src/army AIDefender.cpp,1.10,1.11 SiegePoint.cpp,1.5,1.6 SiegePoint.h,1.6,1.7
Brought to you by:
jacek_kolodziej
|
From: Michał Sła. <sw...@us...> - 2004-08-06 13:15:06
|
Update of /cvsroot/bastion/bastion/src/army In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv22342/army Modified Files: AIDefender.cpp SiegePoint.cpp SiegePoint.h Log Message: Witam! To juz chyba w miare ostateczna wersja AiDefender'a- wszystko zdaje sie dzialac. Ludziki wchodza na mur, jak widza wroga to prosza kolegow o pomoc itd.itd. Zeby mozna bylo rzeczywiscie zdobywac zamek, trzeba bedzie poprawic jeszcze sporo rzeczy- oto co mi sie nazucilo przy rozgrywaniu moich "partii":) - Gdy oddzial wejdzie na mur miejsce w ktorym sie znajduje jest z reguly prze suwane gdzies w drugi kat zamku, wiec oddzialy go atakujace biegna prosto... na jakas inna baszte, by z calej sily uderzyc glowa w jej mury. - Odkrylem chyba jak to jest z tymi trobkami. W KAZDYM oddziale przy starcie, lub po prostu przy powstaniu tego oddzialu pada jeden zolnierz, lub tworzy sie jakis nadprogramowy Unit, ktory od razu jest usuwany. Moze wy tego nie macie? W kazdym razie u mnie pod kazdym oddzialem na poczatku mozna sie dopatrzec jednego trupka. To bylo tez przyczyna tych zgonow na zawal serca przy szturmowaniu muru- oddzial byl dzielony na mniejsz (odlaczala sie konnica) i w tym mniejszym oddziale tez ktos umieral. To samo jest u mnie- jezeli oddzial rozlacza sie na dwa mniejsze, to z nowego oddzialu ktos umiera! Zastanowcie sie czy to nie jest jakis banalny blad... - Oddzial ktory dostanie rozkaz wejscia na mury juz sie nie zbiera i nie slucha kolejnych rozkazow (moge sie mylic, ale raczej nie). Walczy z przeciwnikami, ale nie probuje juz wrcac do jakiegos szyku itp. Ok... To chyba tyle jak na razie. Sorki, ze tak pozno. Pozdrawiam, zycze udanego odpoczynku Michal ---------------------------------------------------------------------- Index: AIDefender.cpp =================================================================== RCS file: /cvsroot/bastion/bastion/src/army/AIDefender.cpp,v retrieving revision 1.10 retrieving revision 1.11 diff -C2 -d -r1.10 -r1.11 *** AIDefender.cpp 23 Jul 2004 15:58:16 -0000 1.10 --- AIDefender.cpp 6 Aug 2004 13:14:56 -0000 1.11 *************** *** 14,18 **** AiPlayer(_army,aSpotted,aAttack,aDied,aCompleted,aDefeated,aVictory) , nrDefPoints(0) , nrSupPoints(0) , nrRmpPoints(0) { ! this->addAction(1,new AiDefenderLookUpAction(this)); }; --- 14,18 ---- AiPlayer(_army,aSpotted,aAttack,aDied,aCompleted,aDefeated,aVictory) , nrDefPoints(0) , nrSupPoints(0) , nrRmpPoints(0) { ! //this->addAction(1,new AiDefenderLookUpAction(this)); }; *************** *** 143,147 **** // Uwaga, tu bardzo mocne za³o¿enie, ¿e najpierw dodajemy pocz±tkowe // oddzia³y typu posi³okowego (tzn. gdy dodajemy tych na murze to ci na dole ju¿ s±) ! void AiDefender::addTeamInitial(Team* team,const int category) { SiegePoint* point; switch (category) { --- 143,147 ---- // Uwaga, tu bardzo mocne za³o¿enie, ¿e najpierw dodajemy pocz±tkowe // oddzia³y typu posi³okowego (tzn. gdy dodajemy tych na murze to ci na dole ju¿ s±) ! void AiDefender::addTeamInitial(Team* _team,const int category) { SiegePoint* point; switch (category) { *************** *** 149,154 **** break; case TEAMS_WALLS: ! point = new DefenderPoint(team,15,(double) 0.5); ! inSiege[team] = point; defendPoints[nrDefPoints] = (DefenderPoint*) point; nrDefPoints++; --- 149,154 ---- break; case TEAMS_WALLS: ! point = new DefenderPoint(_team,15,(double) 0.5); ! inSiege[_team] = point; defendPoints[nrDefPoints] = (DefenderPoint*) point; nrDefPoints++; *************** *** 156,168 **** break; case TEAMS_COURTYARD: ! team->getPosX(); ! point = new ReinforcementPoint(team); ! inSiege[team] = point; supportPoints[nrSupPoints] = (ReinforcementPoint*) point; nrSupPoints++; break; case TEAMS_RAMPAGE: ! point = new RampagePoint(team); ! inSiege[team] = point; rampagePoints[nrRmpPoints] = (RampagePoint*) point; nrRmpPoints++; --- 156,167 ---- break; case TEAMS_COURTYARD: ! point = new ReinforcementPoint(_team); ! inSiege[_team] = point; supportPoints[nrSupPoints] = (ReinforcementPoint*) point; nrSupPoints++; break; case TEAMS_RAMPAGE: ! point = new RampagePoint(_team); ! inSiege[_team] = point; rampagePoints[nrRmpPoints] = (RampagePoint*) point; nrRmpPoints++; *************** *** 180,183 **** --- 179,183 ---- defendPoints[nrDefPoints] = (DefenderPoint*) point; nrDefPoints++; + addAction(3,new SiegePointLookUpAction(this,(DefenderPoint*) point)); } else if (category == SiegePoint::TYPE_REI) { point = new ReinforcementPoint(_x,_y); *************** *** 215,218 **** --- 215,219 ---- }; + //UWAGA!!! POPRAWIAÆ inSiege!!!!!!! void AiDefender::support(DefenderPoint* point,int strenght) { int doWyslania = strenght; *************** *** 230,235 **** supportT->transferTo(&doWyslania,newTeam,-1); army->addTeam(newTeam); ! point->team = newTeam; ! point->state = SiegePoint::POINT_GUARDED; }; while (doWyslania>0) { --- 231,236 ---- supportT->transferTo(&doWyslania,newTeam,-1); army->addTeam(newTeam); ! point->teamProtect(newTeam); ! inSiege[newTeam] = point; }; while (doWyslania>0) { *************** *** 269,272 **** --- 270,282 ---- actT->transferTo(&doWyslania,newTeam,-1); army->addTeam(newTeam); + // Powiadamiamy siebie i punkt + inSiege[newTeam] = supportP; + supportP->teamProtect(newTeam); + // Teraz ich wysy³amy + Order* newOrder = + new Order(new OrderMove(supportP->x,supportP->y)); + SiegePoint::ordersToSend.setOrder(newOrder,ORDER_CURRENT); + delete newOrder; + newTeam->getTeamBrain()->newOrders(&SiegePoint::ordersToSend); }; }; Index: SiegePoint.cpp =================================================================== RCS file: /cvsroot/bastion/bastion/src/army/SiegePoint.cpp,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** SiegePoint.cpp 23 Jul 2004 15:58:16 -0000 1.5 --- SiegePoint.cpp 6 Aug 2004 13:14:56 -0000 1.6 *************** *** 1,8 **** #include "SiegePoint.h" - #include "../map/SeenSet.h" #include "../unit/Unit.h" order::OrderPack SiegePoint::ordersToSend; --- 1,8 ---- #include "SiegePoint.h" #include "../map/SeenSet.h" #include "../unit/Unit.h" + #include <iostream> order::OrderPack SiegePoint::ordersToSend; *************** *** 31,34 **** --- 31,35 ---- void SiegePoint::teamProtect(Team* _team) { + if (team=NULL) exit(1); // To inaczej nale¿y obs³u¿yæ... ale niech na razie bêdzie tak team = _team; state = POINT_GUARDED; *************** *** 124,128 **** bool zasloniety = true; for(int i = 0;i<protectorsNr;i++) { ! if (protectors[i]->getState() != POINT_LOST) zasloniety = false; }; --- 125,129 ---- bool zasloniety = true; for(int i = 0;i<protectorsNr;i++) { ! if (protectors[i]->getState() == POINT_LOST) zasloniety = false; }; Index: SiegePoint.h =================================================================== RCS file: /cvsroot/bastion/bastion/src/army/SiegePoint.h,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** SiegePoint.h 23 Jul 2004 15:58:16 -0000 1.6 --- SiegePoint.h 6 Aug 2004 13:14:56 -0000 1.7 *************** *** 65,69 **** int priority; double protection; - Team* team; public: int pointType() {return TYPE_DEF;}; --- 65,68 ---- *************** *** 91,95 **** class ReinforcementPoint : public SiegePoint { protected: - Team* team; public: int pointType() {return TYPE_REI;}; --- 90,93 ---- |