From: <phi...@us...> - 2007-05-01 10:56:15
|
Revision: 7212 http://armagetronad.svn.sourceforge.net/armagetronad/?rev=7212&view=rev Author: philippeqc Date: 2007-05-01 03:56:11 -0700 (Tue, 01 May 2007) Log Message: ----------- Added mechanism to kick old clients when polygon shapes are used Modified Paths: -------------- armagetronad/branches/zone-v2-02-shape/armagetronad/src/network/nConfig.cpp armagetronad/branches/zone-v2-02-shape/armagetronad/src/tron/gParser.cpp armagetronad/branches/zone-v2-02-shape/armagetronad/src/tron/gParser.h armagetronad/branches/zone-v2-02-shape/armagetronad/src/tron/zone/zZone.cpp Modified: armagetronad/branches/zone-v2-02-shape/armagetronad/src/network/nConfig.cpp =================================================================== --- armagetronad/branches/zone-v2-02-shape/armagetronad/src/network/nConfig.cpp 2007-04-28 00:00:57 UTC (rev 7211) +++ armagetronad/branches/zone-v2-02-shape/armagetronad/src/network/nConfig.cpp 2007-05-01 10:56:11 UTC (rev 7212) @@ -447,6 +447,13 @@ "0.2.8_alpha20060414", // 12 "0.2.8.2", // 13 "0.2.8.3_alpha", // 14 + "0.2.8.3", // 15 + "0.2.8.4_alpha", // 16 + "0.2.8.4", // 17 + "0.2.8.5_alpha", // 18 + "0.2.8.5", // 19 + "0.3.1", // 20 + "0.3.2", // 21 0 }; Modified: armagetronad/branches/zone-v2-02-shape/armagetronad/src/tron/gParser.cpp =================================================================== --- armagetronad/branches/zone-v2-02-shape/armagetronad/src/tron/gParser.cpp 2007-04-28 00:00:57 UTC (rev 7211) +++ armagetronad/branches/zone-v2-02-shape/armagetronad/src/tron/gParser.cpp 2007-05-01 10:56:11 UTC (rev 7212) @@ -56,7 +56,12 @@ MapIdToGameId teamAsso; // mapping between map's teamId and in-game team MapIdToGameId playerAsso; // mapping between map's playerId and in-game player +#include "nConfig.h" +#define DEFAULT_POLYGONAL_SHAPE_USED "FALSE" +static tString polygonal_shape_used(DEFAULT_POLYGONAL_SHAPE_USED); +static nSettingItemWatched<tString> safetymecanism_polygonal_shapeused("POLYGONAL_SHAPE_USED",polygonal_shape_used, nConfItemVersionWatcher::Group_Breaking, 21 ); + //! Warn about deprecated map format static void sg_Deprecated() { @@ -505,6 +510,12 @@ zShapePtr gParser::parseShapePolygon(eGrid *grid, xmlNodePtr cur, const xmlChar * keyword) { + // Polygon shapes are not supported by older clients. + std::stringstream ss; + /* Yes it is ackward to generate a string that will be decifered on the other end*/ + ss << "POLYGONAL_SHAPE_USED TRUE"; + tConfItemBase::LoadLine(ss); + zShapePtr shape = zShapePtr( new zShapePolygon() ); parseShape(grid, cur, keyword, shape); @@ -1442,6 +1453,7 @@ else if (isElement(cur->name, (const xmlChar *)"Axes", keyword)) { parseAxes(grid, cur, keyword); } + // Introduced in version 2, but no extra logic is required for it. else if (isElement(cur->name, (const xmlChar *)"Ownership", keyword)) { parseOwnership(grid, cur, keyword); } @@ -1569,18 +1581,6 @@ aa.insert(aPlayerId); (*teamIter).second = aa; } - - /* - * Map from map descriptor to in-game ids - */ - /* - for (int i=0; i<se_PlayerNetIDs.Len(); i++) { - // TODO: change this to a call to Joda's code - if ( se_PlayerNetIDs(i)->GetName() == tString(*iter) ) { - owners.push_back( se_PlayerNetIDs(i) ); - } - } - */ } } } @@ -1592,6 +1592,14 @@ void gParser::parseWorld(eGrid *grid, xmlNodePtr cur, const xmlChar * keyword) { + // Polygon shapes are not supported by older clients. + // This mechanism assume that no polygonal shapes are used until one is found. + // Hopefully someone will come with a better solution. + std::stringstream ss; + /* Yes it is ackward to generate a string that will be decifered on the other end*/ + ss << "POLYGONAL_SHAPE_USED FALSE"; + tConfItemBase::LoadLine(ss); + cur = cur->xmlChildrenNode; while (cur != NULL) { if (!xmlStrcmp(cur->name, (const xmlChar *)"text") || !xmlStrcmp(cur->name, (const xmlChar *)"comment")) {} @@ -1649,6 +1657,8 @@ void gParser::parseMap(eGrid *grid, xmlNodePtr cur, const xmlChar * keyword) { + + cur = cur->xmlChildrenNode; while (cur != NULL) { if (!xmlStrcmp(cur->name, (const xmlChar *)"text") || !xmlStrcmp(cur->name, (const xmlChar *)"comment")) {} Modified: armagetronad/branches/zone-v2-02-shape/armagetronad/src/tron/gParser.h =================================================================== --- armagetronad/branches/zone-v2-02-shape/armagetronad/src/tron/gParser.h 2007-04-28 00:00:57 UTC (rev 7211) +++ armagetronad/branches/zone-v2-02-shape/armagetronad/src/tron/gParser.h 2007-05-01 10:56:11 UTC (rev 7212) @@ -107,6 +107,7 @@ /* This is a hack that will bring shame to my decendants for many generations: */ float sizeMultiplier; + int currentFormat; // Store the format version of the map currently being parsed. Used to support different format. public: tValue::Expr::varmap_t vars; tValue::Expr::funcmap_t functions; Modified: armagetronad/branches/zone-v2-02-shape/armagetronad/src/tron/zone/zZone.cpp =================================================================== --- armagetronad/branches/zone-v2-02-shape/armagetronad/src/tron/zone/zZone.cpp 2007-04-28 00:00:57 UTC (rev 7211) +++ armagetronad/branches/zone-v2-02-shape/armagetronad/src/tron/zone/zZone.cpp 2007-05-01 10:56:11 UTC (rev 7212) @@ -408,14 +408,17 @@ { // If the player is not on the "inside" list, then he was outside std::set<ePlayerNetID *>::iterator iter; - std::set<ePlayerNetID *>::iterator iterEnd; - ePlayerNetID * aaa = prey->Player(); - iter = playersInside.find(aaa) ; - iterEnd = playersInside.end(); if ((iter = playersInside.find(prey->Player()) ) == playersInside.end()) { playersInside.insert(prey->Player()); + + // Should the player not be marked as being outside + // avoid the OnEnter transition. This happens at game + // start-up for example, when players are neither inside nor outside + if( playersOutside.find(prey->Player()) != playersOutside.end() ) + { // Passing from outside to inside triggers the OnEnter event OnEnter( prey, time ); + } // The player is no longer outside playersOutside.erase(prey->Player()); } @@ -427,8 +430,15 @@ std::set<ePlayerNetID *>::iterator iter; if ((iter = playersOutside.find(prey->Player())) == playersOutside.end()) { playersOutside.insert(prey->Player()); + + // Should the player not be marked as being inside + // avoid OnLeave transition. This happens at game + // start-up for example, when players are neither inside nor outside + if( playersInside.find(prey->Player()) != playersInside.end() ) + { // Passing from inside to outside triggers the OnLeave event OnLeave( prey, time ); + } // The player is no longer inside playersInside.erase(prey->Player()); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <phi...@us...> - 2007-05-20 10:20:13
|
Revision: 7226 http://armagetronad.svn.sourceforge.net/armagetronad/?rev=7226&view=rev Author: philippeqc Date: 2007-05-20 03:20:06 -0700 (Sun, 20 May 2007) Log Message: ----------- Zones are now working agains old server, but not agains itself Modified Paths: -------------- armagetronad/branches/zone-v2-02-shape/armagetronad/src/Makefile.am armagetronad/branches/zone-v2-02-shape/armagetronad/src/tron/gGame.cpp armagetronad/branches/zone-v2-02-shape/armagetronad/src/tron/gParser.cpp armagetronad/branches/zone-v2-02-shape/armagetronad/src/tron/gParser.h armagetronad/branches/zone-v2-02-shape/armagetronad/src/tron/zone/zShape.cpp armagetronad/branches/zone-v2-02-shape/armagetronad/src/tron/zone/zShape.hpp armagetronad/branches/zone-v2-02-shape/armagetronad/src/tron/zone/zZone.cpp armagetronad/branches/zone-v2-02-shape/armagetronad/src/tron/zone/zZone.h armagetronad/branches/zone-v2-02-shape/armagetronad/src/tron/zone/zZoneInfluence.cpp armagetronad/branches/zone-v2-02-shape/armagetronad/src/tron/zone/zZoneInfluence.h Modified: armagetronad/branches/zone-v2-02-shape/armagetronad/src/Makefile.am =================================================================== --- armagetronad/branches/zone-v2-02-shape/armagetronad/src/Makefile.am 2007-05-18 21:30:24 UTC (rev 7225) +++ armagetronad/branches/zone-v2-02-shape/armagetronad/src/Makefile.am 2007-05-20 10:20:06 UTC (rev 7226) @@ -95,6 +95,7 @@ engine/sound/sdl_mixer/eChannelSDLMixer.h \ engine/sound/sdl_mixer/eMusicTrackSDLMixer.cpp \ engine/sound/sdl_mixer/eMusicTrackSDLMixer.h \ + engine/eEventNotification.h engine/eEventNotification.cpp \ engine/eLagCompensation.cpp engine/eLagCompensation.h \ engine/eSoundMixer.h engine/eSoundMixer.cpp Modified: armagetronad/branches/zone-v2-02-shape/armagetronad/src/tron/gGame.cpp =================================================================== --- armagetronad/branches/zone-v2-02-shape/armagetronad/src/tron/gGame.cpp 2007-05-18 21:30:24 UTC (rev 7225) +++ armagetronad/branches/zone-v2-02-shape/armagetronad/src/tron/gGame.cpp 2007-05-20 10:20:06 UTC (rev 7226) @@ -26,6 +26,7 @@ */ +#include "eEventNotification.h" #include "gStuff.h" #include "eSoundMixer.h" #include "eGrid.h" @@ -1266,6 +1267,7 @@ // write scores one last time ePlayerNetID::LogScoreDifferences(); se_SaveToLadderLog(tString("GAME_END\n")); + se_sendEventNotification(tString("New Round"), tString("Starting a new round...")); sg_currentGame=NULL; se_KillGameTimer(); Modified: armagetronad/branches/zone-v2-02-shape/armagetronad/src/tron/gParser.cpp =================================================================== --- armagetronad/branches/zone-v2-02-shape/armagetronad/src/tron/gParser.cpp 2007-05-18 21:30:24 UTC (rev 7225) +++ armagetronad/branches/zone-v2-02-shape/armagetronad/src/tron/gParser.cpp 2007-05-20 10:20:06 UTC (rev 7226) @@ -499,16 +499,16 @@ } zShapePtr -gParser::parseShapeCircle(eGrid *grid, xmlNodePtr cur, const xmlChar * keyword) +gParser::parseShapeCircle(eGrid *grid, xmlNodePtr cur, unsigned short idZone, const xmlChar * keyword) { - zShapePtr shape = zShapePtr( new zShapeCircle() ); + zShapePtr shape = zShapePtr( new zShapeCircle(grid, idZone) ); parseShape(grid, cur, keyword, shape); return shape; } zShapePtr -gParser::parseShapePolygon(eGrid *grid, xmlNodePtr cur, const xmlChar * keyword) +gParser::parseShapePolygon(eGrid *grid, xmlNodePtr cur, unsigned short idZone, const xmlChar * keyword) { // Polygon shapes are not supported by older clients. std::stringstream ss; @@ -516,7 +516,7 @@ ss << "POLYGONAL_SHAPE_USED TRUE"; tConfItemBase::LoadLine(ss); - zShapePtr shape = zShapePtr( new zShapePolygon() ); + zShapePtr shape = zShapePtr( new zShapePolygon(grid, idZone) ); parseShape(grid, cur, keyword, shape); return shape; @@ -614,7 +614,7 @@ centerLocationFound = true; } else { - zShapePolygon *tmpShapePolygon = dynamic_cast<zShapePolygon *>( shape.get() ); + zShapePolygon *tmpShapePolygon = dynamic_cast<zShapePolygon *>( (zShape*)shape ); if (tmpShapePolygon) tmpShapePolygon->addPoint( myPoint( tfX, tfY ) ); } @@ -652,7 +652,9 @@ else { // make an empty zone and store under the right label // It should be populated later - refZone = zZonePtr(new zZone(grid)); + + // refZone = zZonePtr(new zZone(grid)); + refZone = tNEW(zZone)(grid); if (!zoneName.empty()) mapZones[zoneName] = refZone; } @@ -750,7 +752,7 @@ /* effectors[tString("event")] = zEffectorEvent::create; - effectors[tString("cleartrace")] = zEffectorClearTrace::create; + effectors[tString("cleartrace")] = zEffectorClearrace::create; effectors[tString("teleport")] = zEffectorTeleport::create; */ effectors[tString("spawnplayer")] = zEffectorSpawnPlayer::create; @@ -1022,7 +1024,6 @@ void gParser::parseZone(eGrid * grid, xmlNodePtr cur, const xmlChar * keyword) { - float x=0.0, y=0.0, scale=0.0, growth=0.0; string zoneName = ""; if(myxmlHasProp(cur, "name")) @@ -1052,10 +1053,10 @@ while(cur != NULL) { if (!xmlStrcmp(cur->name, (const xmlChar *)"text") || !xmlStrcmp(cur->name, (const xmlChar *)"comment")) {} else if (isElement(cur->name, (const xmlChar *)"ShapeCircle", keyword)) { - zone->setShape( parseShapeCircle(grid, cur, keyword) ); + zone->setShape( parseShapeCircle(grid, cur, zone->ID(), keyword) ); } else if (isElement(cur->name, (const xmlChar *)"ShapePolygon", keyword)) { - zone->setShape( parseShapePolygon(grid, cur, keyword) ); + zone->setShape( parseShapePolygon(grid, cur, zone->ID(), keyword) ); } else if (isElement(cur->name, (const xmlChar *)"Enter", keyword)) { xmlNodePtr cur2 = cur->xmlChildrenNode; @@ -1108,11 +1109,6 @@ // leaving zone undeleted is no memory leak here, the grid takes control of it if ( zone ) { - zone->SetColor(color); - zone->SetPosition( eCoord(x, y) ); - zone->SetScale( scale * sizeMultiplier ); - zone->SetExpansionSpeed( growth*sizeMultiplier ); - zone->SetRotationSpeed( .3f ); zone->RequestSync(); } } @@ -1693,7 +1689,6 @@ cur = xmlDocGetRootElement(m_Doc); monitors.clear(); - mapZones.clear(); #ifdef DEBUG_ZONE_SYNC newGameRound = true; #endif //DEBUG_ZONE_SYNC @@ -1747,6 +1742,8 @@ } } + mapZones.clear(); + // fprintf(stderr,"ERROR: Map file is missing root \'Resources\' node"); } Modified: armagetronad/branches/zone-v2-02-shape/armagetronad/src/tron/gParser.h =================================================================== --- armagetronad/branches/zone-v2-02-shape/armagetronad/src/tron/gParser.h 2007-05-18 21:30:24 UTC (rev 7225) +++ armagetronad/branches/zone-v2-02-shape/armagetronad/src/tron/gParser.h 2007-05-20 10:20:06 UTC (rev 7226) @@ -71,8 +71,8 @@ rColor parseColor(eGrid *grid, xmlNodePtr cur, const xmlChar * keyword); - zShapePtr parseShapeCircle(eGrid *grid, xmlNodePtr cur, const xmlChar * keyword); - zShapePtr parseShapePolygon(eGrid *grid, xmlNodePtr cur, const xmlChar * keyword); + zShapePtr parseShapeCircle(eGrid *grid, xmlNodePtr cur, short unsigned int idZone, const xmlChar * keyword); + zShapePtr parseShapePolygon(eGrid *grid, xmlNodePtr cur, short unsigned int idZone, const xmlChar * keyword); void parseShape(eGrid *grid, xmlNodePtr cur, const xmlChar * keyword, zShapePtr &shape); void parseMonitor(eGrid * grid, xmlNodePtr cur, const xmlChar * keyword); Modified: armagetronad/branches/zone-v2-02-shape/armagetronad/src/tron/zone/zShape.cpp =================================================================== --- armagetronad/branches/zone-v2-02-shape/armagetronad/src/tron/zone/zShape.cpp 2007-05-18 21:30:24 UTC (rev 7225) +++ armagetronad/branches/zone-v2-02-shape/armagetronad/src/tron/zone/zShape.cpp 2007-05-20 10:20:06 UTC (rev 7226) @@ -1,7 +1,9 @@ #include "zShape.hpp" #include "gCycle.h" +#include "zZone.h" -zShape::zShape(): +zShape::zShape(eGrid* grid, unsigned short idZone) + :eNetGameObject( grid, eCoord(0,0), eCoord(0,0), NULL, true ), posx_(), posy_(), scale_(), @@ -14,63 +16,45 @@ rotationExpr(), #endif createdtime_(0.0), - lasttime_(0.0) + lasttime_(0.0), + idZone_(idZone) {} -/* - *HACK - * I'm not claiming any intelligence nor elegance on the network part - * ie: change to a smarter solution - */ -zShape* zShape::create(nMessage &m) +zShape::zShape(nMessage &m):eNetGameObject(m) { - zShape* aShape = new zShape(); + tString name; + m >> name; - networkRead(m, aShape); - return aShape; -} - -void zShape::setCreatedtime(REAL time) -{ - createdtime_ = time; - - // Usefull when the nMessage creates the zone in the middle of a round - if(lasttime_ < createdtime_) - lasttime_ < createdtime_; -} - -void zShape::networkRead(nMessage &m, zShape *shape) -{ REAL time; m >> time; - shape->setCreatedtime(time); + setCreatedtime(time); #ifdef DADA tString str; m >> str; - shape->setPosX(BasePtr(new tValue::Expr(str, tValue::Expr::vars, tValue::Expr::functions)) , str); + setPosX(BasePtr(new tValue::Expr(str, tValue::Expr::vars, tValue::Expr::functions)) , str); m >> str; - shape->setPosY(BasePtr(new tValue::Expr(str, tValue::Expr::vars, tValue::Expr::functions)) , str); + setPosY(BasePtr(new tValue::Expr(str, tValue::Expr::vars, tValue::Expr::functions)) , str); m >> str; - shape->setScale(BasePtr(new tValue::Expr(str, tValue::Expr::vars, tValue::Expr::functions)) , str); + setScale(BasePtr(new tValue::Expr(str, tValue::Expr::vars, tValue::Expr::functions)) , str); m >> str; - shape->setRotation(BasePtr(new tValue::Expr(str, tValue::Expr::vars, tValue::Expr::functions)) , str); + setRotation(BasePtr(new tValue::Expr(str, tValue::Expr::vars, tValue::Expr::functions)) , str); #else tFunction tFunc; m >> tFunc; - shape->setPosX( tFunc ); + setPosX( tFunc ); m >> tFunc; - shape->setPosY( tFunc ); + setPosY( tFunc ); m >> tFunc; - shape->setScale( tFunc ); + setScale( tFunc ); m >> tFunc; - shape->setRotation( tFunc ); + setRotation( tFunc ); #endif rColor c; @@ -78,11 +62,31 @@ m >> c.g_; m >> c.b_; m >> c.a_; - shape->setColor(c); + setColor(c); + + m >> idZone_; + + /* + zZone *aZone= static_cast<zZone *>(Object(idZone_)); + aZone->setShape(zShapePtr(this)); + std::cout << "zone for shape in constructor is " << (aZone==0?"found":"not found") << std::endl; + */ } + +void zShape::setCreatedtime(REAL time) +{ + createdtime_ = time; + + // Usefull when the nMessage creates the zone in the middle of a round + if(lasttime_ < createdtime_) + lasttime_ < createdtime_; +} + + void zShape::networkWrite(nMessage &m) { + m << createdtime_; #ifdef DADA m << posxExpr; @@ -99,6 +103,8 @@ m << color_.g_; m << color_.b_; m << color_.a_; + + m << idZone_; } @@ -107,8 +113,10 @@ */ void zShape::WriteCreate( nMessage & m ) { - m << tString("none"); - networkWrite(m); + eNetGameObject::WriteCreate(m); + + m << tString("none"); + networkWrite(m); } #ifdef DADA @@ -165,20 +173,16 @@ {} -// -zShape* zShapeCircle::create(nMessage &m) -{ - zShape* aShape = new zShapeCircle(); +zShapeCircle::zShapeCircle(eGrid *grid, unsigned short idZone): + zShape(grid, idZone), + emulatingOldZone_(false) +{} - networkRead(m, aShape); - return aShape; -} - -zShapeCircle::zShapeCircle(): - zShape() +zShapeCircle::zShapeCircle(nMessage &m): + zShape(m), + emulatingOldZone_(false) {} - /* * to create a shape on the clients */ @@ -308,27 +312,12 @@ } // -zShape* zShapePolygon::create(nMessage &m) -{ - zShape* aShape = new zShapePolygon(); - - networkRead(m, aShape); - return aShape; -} - -zShapePolygon::zShapePolygon(): - zShape(), +zShapePolygon::zShapePolygon(nMessage &m):zShape(m), #ifdef DADA exprs(), #endif points() -{} - -void zShapePolygon::networkRead(nMessage &m, zShape *shape) { - // read the common part to all shapes - zShape::networkRead(m, shape); - int numPoints; m >> numPoints; @@ -343,22 +332,25 @@ tValue::BasePtr xp = tValue::BasePtr( new tValue::Expr (strX, tValue::Expr::vars, tValue::Expr::functions) ); tValue::BasePtr yp = tValue::BasePtr( new tValue::Expr (strY, tValue::Expr::vars, tValue::Expr::functions) ); - zShapePolygon *aPolygon = dynamic_cast<zShapePolygon *>(shape); - if ( aPolygon ) - aPolygon->addPoint( myPoint( xp, yp ), std::pair<tString, tString>(strX, strY) ); - } + addPoint( myPoint( xp, yp ), std::pair<tString, tString>(strX, strY) ); #else tFunction tfX, tfY; m >> tfX; m >> tfY; - zShapePolygon *aPolygon = dynamic_cast<zShapePolygon *>(shape); - if ( aPolygon ) - aPolygon->addPoint( myPoint( tfX, tfY ) ); + addPoint( myPoint( tfX, tfY ) ); +#endif } -#endif } +zShapePolygon::zShapePolygon(eGrid *grid, unsigned short idZone): + zShape(grid, idZone), +#ifdef DADA + exprs(), +#endif + points() +{} + /* * to create a shape on the clients */ @@ -570,3 +562,16 @@ #endif } +// the shapes's network initializator +static nNOInitialisator<zShapeCircle> zoneCircle_init(350,"shapeCircle"); +static nNOInitialisator<zShapePolygon> zonePolygon_init(360,"shapePolygon"); + +nDescriptor & zShapeCircle::CreatorDescriptor( void ) const +{ + return zoneCircle_init; +} + +nDescriptor & zShapePolygon::CreatorDescriptor( void ) const +{ + return zonePolygon_init; +} Modified: armagetronad/branches/zone-v2-02-shape/armagetronad/src/tron/zone/zShape.hpp =================================================================== --- armagetronad/branches/zone-v2-02-shape/armagetronad/src/tron/zone/zShape.hpp 2007-05-18 21:30:24 UTC (rev 7225) +++ armagetronad/branches/zone-v2-02-shape/armagetronad/src/tron/zone/zShape.hpp 2007-05-20 10:20:06 UTC (rev 7226) @@ -13,10 +13,10 @@ #ifndef Z_SHAPE_H #define Z_SHAPE_H -class zShape { +class zShape : public eNetGameObject{ public: - static zShape* create(nMessage &n); - zShape(); + zShape(eGrid* grid, unsigned short idZone); + zShape(nMessage &m); virtual ~zShape() {}; virtual void WriteCreate( nMessage & m ); @@ -36,9 +36,16 @@ void setRotation(const tFunction &r); void setScale(const tFunction &s); void setColor(const rColor &c); + + tFunction getPosX() {return posx_;}; + tFunction getPosY() {return posy_;}; + tFunction getScale() {return scale_;}; + tFunction getRotation() {return rotation_;}; + rColor getColor() {return color_;}; #endif void TimeStep( REAL time ) { lasttime_ = time; }; + virtual bool isEmulatingOldZone() {return false;}; protected: #ifdef DADA @@ -73,6 +80,8 @@ REAL createdtime_; // The in-game time when this shape was first instantiated REAL lasttime_; // What is to be considered as the current time for this shape + + unsigned short idZone_; }; class zShapeCircle : public zShape { @@ -80,13 +89,18 @@ // Circle dont have a radius attribute per see. // They have a default radius of 1.0, and it get scaled public : - static zShape* create(nMessage &n); - zShapeCircle(); + zShapeCircle(eGrid *grid, unsigned short idZone); + zShapeCircle(nMessage &m); ~zShapeCircle() {}; - virtual void WriteCreate( nMessage & m ); + void WriteCreate( nMessage & m ); - virtual bool isInteracting(eGameObject * target); - virtual void render(const eCamera * cam ); + bool isInteracting(eGameObject * target); + void render(const eCamera * cam ); + + bool isEmulatingOldZone() {return emulatingOldZone_;}; + bool emulatingOldZone_; +private: + virtual nDescriptor& CreatorDescriptor() const; //!< returns the descriptor to recreate this object over the network }; #ifdef DADA @@ -97,19 +111,21 @@ class zShapePolygon : public zShape { public : - static zShape* create(nMessage &n); - zShapePolygon(); + zShapePolygon(eGrid *grid, unsigned short idZone); + zShapePolygon(nMessage &n); ~zShapePolygon() {}; - virtual void WriteCreate( nMessage & m ); + void WriteCreate( nMessage & m ); - virtual bool isInteracting(eGameObject * target); - virtual void render(const eCamera * cam ); + bool isInteracting(eGameObject * target); + void render(const eCamera * cam ); #ifdef DADA void addPoint( myPoint const &aPoint, std::pair<tString, tString> const & exprPair) { points.push_back(aPoint); exprs.push_back(exprPair);}; #else void addPoint( myPoint const &aPoint) { points.push_back(aPoint);}; #endif + bool isEmulatingOldZone() {return false;}; // zShapePolygon cant be used for emulation of old zones + protected: #ifdef DADA std::vector< myPoint > points; @@ -119,12 +135,15 @@ #endif bool isInside (eCoord anECoord); static void networkRead(nMessage &m, zShape *aShape); +private: + virtual nDescriptor& CreatorDescriptor() const; //!< returns the descriptor to recreate this object over the network }; -typedef boost::shared_ptr<zShape> zShapePtr; +//typedef boost::shared_ptr<zShape> zShapePtr; +#include "tSafePTR.h" +typedef tJUST_CONTROLLED_PTR< zShape> zShapePtr; #include "tSysTime.h" - #endif Modified: armagetronad/branches/zone-v2-02-shape/armagetronad/src/tron/zone/zZone.cpp =================================================================== --- armagetronad/branches/zone-v2-02-shape/armagetronad/src/tron/zone/zZone.cpp 2007-05-18 21:30:24 UTC (rev 7225) +++ armagetronad/branches/zone-v2-02-shape/armagetronad/src/tron/zone/zZone.cpp 2007-05-20 10:20:06 UTC (rev 7226) @@ -106,15 +106,14 @@ // ******************************************************************************* zZone::zZone( eGrid * grid ) :eNetGameObject( grid, eCoord(0,0), eCoord(0,0), NULL, true ), - rotation_(1,0), + // rotation_(1,0), effectGroupEnter(), effectGroupInside(), effectGroupLeave(), effectGroupOutside(), shape(), playersInside(), - playersOutside(), - usesShape(false) + playersOutside() { // store creation time referenceTime_ = createTime_ = lastTime = 0; @@ -125,7 +124,7 @@ sg_Zones.push_back(this); // initialize position functions - SetPosition( pos ); + // SetPosition( pos ); eSoundMixer* mixer = eSoundMixer::GetMixer(); mixer->PushButton(ZONE_SPAWN, pos); } @@ -143,18 +142,18 @@ // ******************************************************************************* zZone::zZone( nMessage & m ) - :eNetGameObject( m ), rotation_(1,0), + :eNetGameObject( m ), + //rotation_(1,0), shape(), playersInside(), - playersOutside(), - usesShape(false) + playersOutside() { // read creation time m >> createTime_; referenceTime_ = lastTime = createTime_; // initialize color to white, ReadSync will fill in the true value if available - color_.r_ = color_.g_ = color_.b_ = 1.0f; + // color_.r_ = color_.g_ = color_.b_ = 1.0f; // add to game grid this->AddToList(); @@ -162,10 +161,27 @@ sg_Zones.push_back(this); // initialize position functions - SetPosition( pos ); + // SetPosition( pos ); eSoundMixer* mixer = eSoundMixer::GetMixer(); mixer->PushButton(ZONE_SPAWN, pos); - + + + shape = zShapePtr(new zShapeCircle(Grid(), ID())); + + tFunction asdf = tFunction(); + asdf.SetSlope(0.0); + asdf.SetOffset(100.0); + shape->setPosX(asdf); + shape->setPosY(asdf); + shape->setScale(asdf); + shape->setRotation(asdf); + shape->setScale(asdf); + shape->setColor(rColor(0.7, 0.0, 0.7)); + zShapeCircle *circle = dynamic_cast<zShapeCircle *>( (zShape*)shape ); + + circle->emulatingOldZone_ = true; + + /* if (!m.End() && sz_ShapedZones.Supported() ) { // Factory to make the shapes @@ -188,8 +204,24 @@ { shape = zShapePtr((*(iterShapeFactory->second))(m)); } - usesShape = true; } + else + { + // Didnt receive a shape information. Assume we are talking to a 0.2.8- server + shape = zShapePtr(new zShapeCircle()); +#ifdef DADA + // TODO: Fill this if and when we decide to with with xValue +#else + shape->setPosX(posx_); + shape->setPosY(posy_); + shape->setScale(scale_); + shape->setRotation(rotationSpeed_); + shape->setScale(scale_); + shape->setColor(color_); +#endif + emulateOldZoneShape = true; + } + */ } // ******************************************************************************* @@ -241,8 +273,10 @@ m << createTime_; - if(usesShape && sz_ShapedZones.Supported() ) + /* + if(!emulateOldZoneShape && sz_ShapedZones.Supported() ) shape->WriteCreate( m ); + */ } // ******************************************************************************* @@ -260,6 +294,7 @@ // delegate eNetGameObject::WriteSync( m ); + /* // write color m << color_.r_; m << color_.g_; @@ -273,6 +308,20 @@ // write rotation speed m << rotationSpeed_; + */ + + // Simply populate the message with semi-meaningful data + m << shape->getColor().r_; + m << shape->getColor().g_; + m << shape->getColor().b_; + + m << referenceTime_; + + m << shape->getPosX(); + m << shape->getPosY(); + m << shape->getScale(); + m << shape->getRotation(); + } // ******************************************************************************* @@ -290,14 +339,19 @@ // delegage eNetGameObject::ReadSync( m ); + if(shape->isEmulatingOldZone()) + { + // read color + rColor aColor(0.0, 0.7, 0.5); if (!m.End()) { - m >> color_.r_; - m >> color_.g_; - m >> color_.b_; - se_MakeColorValid(color_.r_, color_.g_, color_.b_, 1.0f); + m >> aColor.r_; + m >> aColor.g_; + m >> aColor.b_; } + se_MakeColorValid(aColor.r_, aColor.g_, aColor.b_, 1.0f); + shape->setColor(aColor); // read reference time and functions if (!m.End()) @@ -305,33 +359,54 @@ m >> referenceTime_; if (!m.End()) { - m >> posx_; - m >> posy_; - m >> scale_; + tFunction aFunc; + m >> aFunc; + shape->setPosX(aFunc); + m >> aFunc; + shape->setPosY(aFunc); + m >> aFunc; + shape->setScale(aFunc); } } else { + // Uses values from the eNetGameObject referenceTime_ = createTime_; - // take old default values - this->scale_.SetOffset( sg_initialSize ); - this->scale_.SetSlope( sg_expansionSpeed ); - SetPosition( pos ); - SetVelocity( eCoord() ); + tFunction aFunc; + aFunc.SetOffset( pos.x ); + aFunc.SetSlope( 0 ); + shape->setPosX( aFunc ); + + aFunc.SetOffset( pos.y ); + aFunc.SetSlope( 0 ); + shape->setPosY( aFunc ); + + aFunc.SetOffset( sg_initialSize ); + aFunc.SetSlope( sg_expansionSpeed ); + shape->setScale( aFunc ); } // read rotation speed + tFunction rotationSpeed; if (!m.End()) { - m >> rotationSpeed_; + m >> rotationSpeed; } else { // set fixed values - SetRotationSpeed( .3f ); - SetRotationAcceleration( 0.0f ); + rotationSpeed.SetOffset( .3f ); + rotationSpeed.SetSlope( 0.0f ); } + shape->setRotation(rotationSpeed); + } + else + { + bool b; + // Discard the information + while(!m.End()) { m >> b;} + } } // ******************************************************************************* @@ -346,10 +421,12 @@ bool zZone::Timestep( REAL time ) { - if(usesShape) { shape->TimeStep( time ); + /* + if(!emulateOldZoneShape) { + shape->TimeStep( time ); } - else { + else { // Old representation of zone // rotate REAL speed = GetRotationSpeed(); REAL angle = ( time - lastTime ) * speed; @@ -369,6 +446,7 @@ } } // update time + */ lastTime = time; return false; @@ -542,6 +620,7 @@ return zone_init; } +/* // ******************************************************************************* // * // * Scale @@ -554,8 +633,10 @@ REAL zZone::Scale( void ) const { - return GetScale(); + // return GetScale(); + return shape->getScale(); } +*/ // ******************************************************************************* // * @@ -569,84 +650,7 @@ void zZone::Render( const eCamera * cam ) { - if(usesShape) shape->render(cam); - else - { -#ifndef DEDICATED - - color_.a_ = ( lastTime - createTime_ ) * .2f; - if ( color_.a_ > .7f ) - color_.a_ = .7f; - if ( color_.a_ <= 0 ) - return; - - GLfloat m[4][4]={{rotation_.x,rotation_.y,0,0}, - {-rotation_.y,rotation_.x,0,0}, - {0,0,1,0}, - {pos.x,pos.y,0,1}}; - - ModelMatrix(); - glPushMatrix(); - - glDisable(GL_LIGHT0); - glDisable(GL_LIGHT1); - glDisable(GL_LIGHTING); - glDisable(GL_CULL_FACE); - glDepthMask(GL_FALSE); - glBlendFunc( GL_SRC_ALPHA, GL_ONE ); - - //glDisable(GL_TEXTURE); - glDisable(GL_TEXTURE_2D); - - // glTranslatef(pos.x,pos.y,0); - - glMultMatrixf(&m[0][0]); - // glScalef(.5,.5,.5); - - if ( sr_alphaBlend ) - BeginQuads(); - else - BeginLineStrip(); - - const REAL seglen = .2f; - const REAL bot = 0.0f; - const REAL top = 5.0f; // + ( lastTime - createTime_ ) * .1f; - - color_.Apply(); - - REAL r = Scale(); - for ( int i = sg_segments - 1; i>=0; --i ) - { - REAL a = i * 2 * 3.14159 / REAL( sg_segments ); - REAL b = a + seglen; - - REAL sa = r * sin(a); - REAL ca = r * cos(a); - REAL sb = r * sin(b); - REAL cb = r * cos(b); - - glVertex3f(sa, ca, bot); - glVertex3f(sa, ca, top); - glVertex3f(sb, cb, top); - glVertex3f(sb, cb, bot); - - if ( !sr_alphaBlend ) - { - glVertex3f(sa, ca, bot); - RenderEnd(); - BeginLineStrip(); - } - } - - RenderEnd(); - - glBlendFunc( GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA ); - glDepthMask(GL_TRUE); - - glPopMatrix(); -#endif - } } @@ -662,6 +666,8 @@ eCoord zZone::GetPosition( void ) const { + // HACK, to be implemented later and differently + // Should get this info from the shape, not the zone eCoord ret; GetPosition( ret ); return ret; @@ -680,94 +686,13 @@ zZone const & zZone::GetPosition( eCoord & position ) const { - position.x = EvaluateFunctionNow( posx_ ); - position.y = EvaluateFunctionNow( posy_ ); + position.x = EvaluateFunctionNow( shape->getPosX() ); + position.y = EvaluateFunctionNow( shape->getPosY() ); return *this; } // ******************************************************************************* // * -// * SetPosition -// * -// ******************************************************************************* -//! -//! @param position the current position to set -//! @return A reference to this to allow chaining -//! -// ******************************************************************************* - -zZone & zZone::SetPosition( eCoord const & position ) -{ - SetFunctionNow( posx_, position.x ); - SetFunctionNow( posy_, position.y ); - return *this; -} - -// ******************************************************************************* -// * -// * GetVelocity -// * -// ******************************************************************************* -//! -//! @return the current velocity -//! -// ******************************************************************************* - -eCoord zZone::GetVelocity( void ) const -{ - eCoord ret; - GetVelocity( ret ); - - return ret; -} - -// ******************************************************************************* -// * -// * GetVelocity -// * -// ******************************************************************************* -//! -//! @param velocity the current velocity to fill -//! @return A reference to this to allow chaining -//! -// ******************************************************************************* - -zZone const & zZone::GetVelocity( eCoord & velocity ) const -{ - velocity.x = posx_.GetSlope(); - velocity.y = posy_.GetSlope(); - - return *this; -} - -// ******************************************************************************* -// * -// * SetVelocity -// * -// ******************************************************************************* -//! -//! @param velocity the current velocity to set -//! @return A reference to this to allow chaining -//! -// ******************************************************************************* - -zZone & zZone::SetVelocity( eCoord const & velocity ) -{ - // backup position - eCoord pos; - GetPosition( pos ); - - posx_.SetSlope( velocity.x ); - posy_.SetSlope( velocity.y ); - - // restore position - SetPosition( pos ); - - return *this; -} - -// ******************************************************************************* -// * // * GetScale // * // ******************************************************************************* @@ -778,103 +703,18 @@ REAL zZone::GetScale( void ) const { - REAL ret = EvaluateFunctionNow( this->scale_ ); - ret = ret > 0 ? ret : 0; + // REAL ret = EvaluateFunctionNow( this->scale_ ); + // ret = ret > 0 ? ret : 0; - return ret; -} -// ******************************************************************************* -// * -// * GetScale -// * -// ******************************************************************************* -//! -//! @param scale the current scale to fill -//! @return A reference to this to allow chaining -//! -// ******************************************************************************* + // HACK, to be implemented later and differently + // Should get this info from the shape, not the zone + return EvaluateFunctionNow( shape->getScale() ); -zZone const & zZone::GetScale( REAL & scale ) const -{ - scale = GetScale(); - - return *this; } // ******************************************************************************* // * -// * SetScale -// * -// ******************************************************************************* -//! -//! @param scale the current scale to set -//! @return A reference to this to allow chaining -//! -// ******************************************************************************* - -zZone & zZone::SetScale( REAL scale ) -{ - SetFunctionNow( this->scale_, scale ); - - return *this; -} - -// ******************************************************************************* -// * -// * GetExpansionSpeed -// * -// ******************************************************************************* -//! -//! @return the current expansion speed -//! -// ******************************************************************************* - -REAL zZone::GetExpansionSpeed( void ) const -{ - return this->scale_.GetSlope(); -} - -// ******************************************************************************* -// * -// * GetExpansionSpeed -// * -// ******************************************************************************* -//! -//! @param expansionSpeed the current expansion speed to fill -//! @return A reference to this to allow chaining -//! -// ******************************************************************************* - -zZone const & zZone::GetExpansionSpeed( REAL & expansionSpeed ) const -{ - expansionSpeed = this->scale_.GetSlope(); - - return *this; -} - -// ******************************************************************************* -// * -// * SetExpansionSpeed -// * -// ******************************************************************************* -//! -//! @param expansionSpeed the current expansion speed to set -//! @return A reference to this to allow chaining -//! -// ******************************************************************************* - -zZone & zZone::SetExpansionSpeed( REAL expansionSpeed ) -{ - REAL r = EvaluateFunctionNow( this->scale_ ); - this->scale_.SetSlope( expansionSpeed ); - SetScale( r ); - - return *this; -} - -// ******************************************************************************* -// * // * SetReferenceTime // * // ******************************************************************************* @@ -885,32 +725,18 @@ void zZone::SetReferenceTime( void ) { // set offsets to current values + /* this->posx_.SetOffset( EvaluateFunctionNow( this->posx_ ) ); this->posy_.SetOffset( EvaluateFunctionNow( this->posy_ ) ); this->scale_.SetOffset( EvaluateFunctionNow( this->scale_ ) ); this->rotationSpeed_.SetOffset( EvaluateFunctionNow( this->rotationSpeed_ ) ); - + */ // reset time this->referenceTime_ = lastTime; } // ******************************************************************************* // * -// * GetRotationSpeed -// * -// ******************************************************************************* -//! -//! @return The current rotation speed -//! -// ******************************************************************************* - -REAL zZone::GetRotationSpeed( void ) const -{ - return EvaluateFunctionNow( rotationSpeed_ ); -} - -// ******************************************************************************* -// * // * GetRotation // * // ******************************************************************************* @@ -919,79 +745,15 @@ //! // ******************************************************************************* -tCoord const &zZone::GetRotation( void ) const +tCoord const zZone::GetRotation( void ) const { - return rotation_; + // HACK, to be implemented later and differently + // Should get this info from the shape, not the zone + return tCoord(0.0, 0.0); } // ******************************************************************************* // * -// * GetRotationSpeed -// * -// ******************************************************************************* -//! -//! @param rotationSpeed The current rotation speed to fill -//! @return A reference to this to allow chaining -//! -// ******************************************************************************* - -zZone const & zZone::GetRotationSpeed( REAL & rotationSpeed ) const -{ - rotationSpeed = this->GetRotationSpeed(); - return *this; -} - -// ******************************************************************************* -// * -// * SetRotationSpeed -// * -// ******************************************************************************* -//! -//! @param rotationSpeed The current rotation speed to set -//! @return A reference to this to allow chaining -//! -// ******************************************************************************* - -zZone & zZone::SetRotationSpeed( REAL rotationSpeed ) -{ - SetFunctionNow( this->rotationSpeed_, rotationSpeed ); - return *this; -} - -// ******************************************************************************* -// * -// * GetRotationAcceleration -// * -// ******************************************************************************* -//! -//! @return the current acceleration of the rotation -//! -// ******************************************************************************* - -REAL zZone::GetRotationAcceleration( void ) const -{ - return this->rotationSpeed_.GetSlope(); -} - -// ******************************************************************************* -// * -// * GetRotationAcceleration -// * -// ******************************************************************************* -//! -//! @param rotationAcceleration the current acceleration of the rotation to fill -//! @return A reference to this to allow chaining -//! -// ******************************************************************************* - -zZone const & zZone::GetRotationAcceleration( REAL & rotationAcceleration ) const -{ - rotationAcceleration = this->GetRotationAcceleration(); - return *this; -} - -// ******************************************************************************* -// * // * GetColor // * // ******************************************************************************* @@ -1000,43 +762,8 @@ //! // ******************************************************************************* -rColor const & zZone::GetColor( void ) const +rColor const zZone::GetColor( void ) const { - return color_; + return shape->getColor(); } -// ******************************************************************************* -// * -// * SetColor -// * -// ******************************************************************************* -//! -//! @return the current color of the zone -//! -// ******************************************************************************* - -void zZone::SetColor( rColor const & color ) -{ - color_ = color; -} - -// ******************************************************************************* -// * -// * SetRotationAcceleration -// * -// ******************************************************************************* -//! -//! @param rotationAcceleration the current acceleration of the rotation to set -//! @return A reference to this to allow chaining -//! -// ******************************************************************************* - -zZone & zZone::SetRotationAcceleration( REAL rotationAcceleration ) -{ - REAL omega = this->GetRotationSpeed(); - this->rotationSpeed_.SetSlope( rotationAcceleration ); - SetRotationSpeed( omega ); - - return *this; -} - Modified: armagetronad/branches/zone-v2-02-shape/armagetronad/src/tron/zone/zZone.h =================================================================== --- armagetronad/branches/zone-v2-02-shape/armagetronad/src/tron/zone/zZone.h 2007-05-18 21:30:24 UTC (rev 7225) +++ armagetronad/branches/zone-v2-02-shape/armagetronad/src/tron/zone/zZone.h 2007-05-20 10:20:06 UTC (rev 7226) @@ -49,9 +49,13 @@ void SetReferenceTime(); //!< sets the reference time to the current time - zZone & SetPosition ( eCoord const & position ); //!< Sets the current position eCoord GetPosition ( void ) const; //!< Gets the current position zZone const & GetPosition ( eCoord & position ) const; //!< Gets the current position + tCoord const GetRotation ( void ) const; //!< Gets the current rotation state + REAL GetScale ( void ) const; //!< Gets the current scale + rColor const GetColor( void ) const; //!< Gets the current color + /* + zZone & SetPosition ( eCoord const & position ); //!< Sets the current position zZone & SetVelocity ( eCoord const & velocity ); //!< Sets the current velocity eCoord GetVelocity ( void ) const; //!< Gets the current velocity zZone const & GetVelocity ( eCoord & velocity ) const; //!< Gets the current velocity @@ -70,24 +74,40 @@ zZone const & GetRotationAcceleration( REAL & rotationAcceleration ) const; //!< Gets the current acceleration of the rotation rColor const & GetColor( void ) const; //!< Gets the current color void SetColor( rColor const & color ); //!< Sets the current color +*/ void addEffectGroupEnter (zEffectGroupPtr anEffectGroup) {effectGroupEnter.push_back (anEffectGroup);}; void addEffectGroupInside (zEffectGroupPtr anEffectGroup) {effectGroupInside.push_back (anEffectGroup);}; void addEffectGroupLeave (zEffectGroupPtr anEffectGroup) {effectGroupLeave.push_back (anEffectGroup);}; void addEffectGroupOutside(zEffectGroupPtr anEffectGroup) {effectGroupOutside.push_back(anEffectGroup);}; - void setShape (zShapePtr aShape) {shape = aShape; usesShape=true;}; + void setShape (zShapePtr aShape) { + shape = aShape; +#ifdef DADA +#else + /* + posx_ = shape->getPosX(); + posy_ = shape->getPosY(); + scale_ = shape->getScale(); + rotationSpeed_ = shape->getRotation(); + color_ = shape->getColor(); + */ +#endif + }; protected: - rColor color_; //!< the zone's color + // rColor color_; //!< the zone's color REAL createTime_; //!< the time the zone was created at + REAL referenceTime_; //!< reference time for function evaluations + /* tFunction posx_; //!< time dependence of x component of position tFunction posy_; //!< time dependence of y component of position tFunction scale_; //!< time dependence of scale tFunction rotationSpeed_; //!< the zone's rotation speed eCoord rotation_; //!< the current rotation state + */ virtual bool Timestep(REAL currentTime); //!< simulates behaviour up to currentTime virtual void OnVanish(); //!< called when the zone vanishes @@ -102,7 +122,6 @@ std::set<ePlayerNetID *> playersInside; //!< The players that are currently inside the zone std::set<ePlayerNetID *> playersOutside; //!< The players that are currently outside the zone - bool usesShape; private: virtual void WriteCreate(nMessage &m); //!< writes data for network constructor virtual void WriteSync(nMessage &m); //!< writes sync data @@ -117,7 +136,7 @@ virtual nDescriptor& CreatorDescriptor() const; //!< returns the descriptor to recreate this object over the network - REAL Scale() const; //!< returns the current scale + // REAL Scale() const; //!< returns the current scale virtual void Render(const eCamera *cam); //!< renders the zone Modified: armagetronad/branches/zone-v2-02-shape/armagetronad/src/tron/zone/zZoneInfluence.cpp =================================================================== --- armagetronad/branches/zone-v2-02-shape/armagetronad/src/tron/zone/zZoneInfluence.cpp 2007-05-18 21:30:24 UTC (rev 7225) +++ armagetronad/branches/zone-v2-02-shape/armagetronad/src/tron/zone/zZoneInfluence.cpp 2007-05-20 10:20:06 UTC (rev 7226) @@ -31,8 +31,11 @@ void zZoneInfluenceItemRotation::apply(REAL value) { - zone->SetRotationSpeed(rotationSpeed*value); - zone->SetRotationAcceleration(rotationAcceleration); + // HACK: + // Need a solution that influence the shape, not the zone + // zone->SetRotationSpeed(rotationSpeed*value); + // zone->SetRotationAcceleration(rotationAcceleration); + std::cout << "This has not been implemented yet! Tell Philippeqc he forgot to do it!" << std::endl; } zZoneInfluenceItemScale::zZoneInfluenceItemScale(zZonePtr aZone): @@ -42,7 +45,10 @@ void zZoneInfluenceItemScale::apply(REAL value) { - zone->SetScale(scale); + // HACK: + // Need a solution that influence the shape, not the zone + // zone->SetScale(scale); + std::cout << "This has not been implemented yet! Tell Philippeqc he forgot to do it!" << std::endl; } zZoneInfluenceItemPosition::zZoneInfluenceItemPosition(zZonePtr aZone): @@ -52,7 +58,10 @@ void zZoneInfluenceItemPosition::apply(REAL value) { - zone->SetPosition(pos); + // HACK: + // Need a solution that influence the shape, not the zone + // zone->SetPosition(pos); + std::cout << "This has not been implemented yet! Tell Philippeqc he forgot to do it!" << std::endl; } zZoneInfluenceItemColor::zZoneInfluenceItemColor(zZonePtr aZone): @@ -62,6 +71,9 @@ void zZoneInfluenceItemColor::apply(REAL value) { - zone->SetColor(color); + // HACK: + // Need a solution that influence the shape, not the zone + // zone->SetColor(color); + std::cout << "This has not been implemented yet! Tell Philippeqc he forgot to do it!" << std::endl; } Modified: armagetronad/branches/zone-v2-02-shape/armagetronad/src/tron/zone/zZoneInfluence.h =================================================================== --- armagetronad/branches/zone-v2-02-shape/armagetronad/src/tron/zone/zZoneInfluence.h 2007-05-18 21:30:24 UTC (rev 7225) +++ armagetronad/branches/zone-v2-02-shape/armagetronad/src/tron/zone/zZoneInfluence.h 2007-05-20 10:20:06 UTC (rev 7226) @@ -11,7 +11,6 @@ class zZone; //typedef boost::shared_ptr< zZone > zZonePtr; typedef tJUST_CONTROLLED_PTR< zZone> zZonePtr; -//typedef zZone * zZonePtr; class zZoneInfluenceItem; typedef boost::shared_ptr<zZoneInfluenceItem> zZoneInfluenceItemPtr; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |