#include "munga.h" #pragma hdrstop #include "team.h" #include "app.h" #include "nttmgr.h" //############################################################################# //############################### Team ################################# //############################################################################# //############################################################################# // Shared Data Support // Derivation* Team::GetClassDerivations() { static Derivation classDerivations(Entity::GetClassDerivations(), "Team"); return &classDerivations; } Team::SharedData Team::DefaultData( Team::GetClassDerivations(), Team::MessageHandlers, Team::GetAttributeIndex(), Team::StateCount, (Team::MakeHandler)Team::Make ); //############################################################################# // Attribute Support // const Team::IndexEntry Team::AttributePointers[]= { ATTRIBUTE_ENTRY(Team, TeamName, teamName), ATTRIBUTE_ENTRY(Team, TeamScore, teamScore) }; Team::AttributeIndexSet& Team::GetAttributeIndex() { static Team::AttributeIndexSet attributeIndex(ELEMENTS(Team::AttributePointers), Team::AttributePointers, Entity::GetAttributeIndex() ); return attributeIndex; } //############################################################################# // Message Support // const Receiver::HandlerEntry Team::MessageHandlerEntries[]= { MESSAGE_ENTRY(Team, Score) }; Receiver::MessageHandlerSet Team::MessageHandlers( ELEMENTS(Team::MessageHandlerEntries), Team::MessageHandlerEntries, Entity::GetMessageHandlers() ); //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // void Team::ScoreMessageHandler(ScoreMessage *score_message) { Check(this); Check(score_message); teamScore += score_message->scoreAward; Check_Fpu(); } //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // void Team::TeamSimulation( Scalar // time_slice ) { Check(this); } //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // Team::Team( MakeMessage *creation_message, SharedData &shared_data ) : Entity (creation_message, shared_data) { Str_Copy(teamName, creation_message->teamName, sizeof(teamName)); teamScore = creation_message->initialScore; // //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // Add this to the Entity Group of Teams //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // Check(application); EntityManager *entity_manager = application->GetEntityManager(); Check(entity_manager); EntityGroup *team_group = entity_manager->UseGroup("Teams"); Check(team_group); team_group->Add(this); SetValidFlag(); Check_Fpu(); } //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // Team::~Team() { } //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // Team* Team::Make(MakeMessage *creation_message) { Check_Fpu(); return new Team(creation_message); } //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // Logical Team::CreateMakeMessage( MakeMessage *creation_message, NotationFile *model_file, const ResourceDirectories *directories ) { Check(creation_message); Check(model_file); Check_Pointer(directories); if (!Entity::CreateMakeMessage(creation_message, model_file, directories)) { return False; } creation_message->messageLength = sizeof(Team::MakeMessage); creation_message->classToCreate = TeamClassID; creation_message->instanceFlags = MasterInstance | TrappedFlag | MapFlag; Str_Copy(creation_message->teamName, "DEFUALT", sizeof(creation_message->teamName)); char *p; #if 0 // //~~~~~~~~~~~~~~~ // Get the TeamID //~~~~~~~~~~~~~~~ // if ((p = strtok(NULL, " ")) == NULL) { std::cerr << "teamID missing!\n"; return False; } creation_message->teamID = atoi(p); #endif // //~~~~~~~~~~~~~~~~~~~~~~ // Get the Initial Score //~~~~~~~~~~~~~~~~~~~~~~ // if ((p = strtok(NULL, " ")) == NULL) { std::cerr << "InitialScore missing!\n"; return False; } creation_message->initialScore = atoi(p); // //~~~~~~~~~~~~~~~ // Get the TeamName //~~~~~~~~~~~~~~~ // if ((p = strtok(NULL, ",")) == NULL) { std::cerr << "teamName missing!\n"; return False; } Str_Copy(creation_message->teamName,p, sizeof(creation_message->teamName)); return True; } Logical Team::TestInstance() const { return IsDerivedFrom(*GetClassDerivations()); }