//===========================================================================// // File: team.hpp // // Project: MUNGA // // Contents: Team Specifications // //---------------------------------------------------------------------------// // Date Who Modification // // -------- --- ---------------------------------------------------------- // // 01/11/96 JM initial coding // //---------------------------------------------------------------------------// // Copyright (C) 1995, Virtual World Entertainment, Inc. // // All Rights reserved worldwide // // This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // //===========================================================================// #if !defined (TEAM_HPP) # define TEAM_HPP # if !defined (ENTITY_HPP) # include "entity.hpp" # endif //########################################################################## //################# Team__MakeMessage ########################## //########################################################################## class Team__MakeMessage : public Entity::MakeMessage { public: char teamName[64]; int initialScore; Team__MakeMessage( Receiver::MessageID message_ID, size_t length, Entity::ClassID class_ID, const EntityID &owner_ID, ResourceDescription::ResourceID resource_ID, LWord instance_flags, const Origin &origin, char *team_name ) : Entity::MakeMessage( message_ID, length, class_ID, owner_ID, resource_ID, instance_flags, origin ) { Str_Copy(teamName, team_name, sizeof(teamName)); } }; //########################################################################## //################# Team__ScoreMessage ########################## //########################################################################## class Team__ScoreMessage : public Entity::Message { public: Scalar scoreAward; Team__ScoreMessage( Receiver::MessageID message_ID, size_t length, Scalar score ): Entity::Message(message_ID, length), scoreAward(score) {} }; //########################################################################## //######################## CLASS Team ################################ //########################################################################## class Team : public Entity { //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // Shared Data support // public: static Derivation ClassDerivations; static SharedData DefaultData; //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // Message Support // public: enum { ScoreMessageID = Entity::NextMessageID, NextMessageID }; typedef Team__ScoreMessage ScoreMessage; void ScoreMessageHandler(ScoreMessage *message); private: static const HandlerEntry MessageHandlerEntries[]; protected: static MessageHandlerSet MessageHandlers; //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // Attribute Support // private: static const IndexEntry AttributePointers[]; protected: static AttributeIndexSet AttributeIndex; public: enum { TeamNameAttributeID = Entity::NextAttributeID, TeamScoreAttributeID, NextAttributeID }; char teamName[64]; Scalar teamScore; //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // Model Support // public: typedef void (Team::*Performance)(Scalar time_slice); void SetPerformance(Performance performance) { Check(this); activePerformance = (Simulation::Performance)performance; } virtual void TeamSimulation(Scalar time_slice); //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // Construction / Destruction Support // public: typedef Team__MakeMessage MakeMessage; Team( MakeMessage *creation_message, SharedData &shared_data = DefaultData ); ~Team(); Logical TestInstance() const; static Team* Make(MakeMessage *creation_message); static Logical CreateMakeMessage ( MakeMessage *creation_message, NotationFile *model_file, const ResourceDirectories *directories ); }; #endif