full review of source
This commit is contained in:
parent
7c63dd9981
commit
ad671c3e13
@ -13,7 +13,7 @@
|
||||
\brief Definition file for core ZEngine class.
|
||||
|
||||
ZEngine Game Engine core Engine definition.
|
||||
<br>$Id: ZE_ZEngine.h,v 1.40 2003/06/11 00:15:25 cozman Exp $<br>
|
||||
<br>$Id: ZE_ZEngine.h,v 1.41 2003/06/11 05:51:32 cozman Exp $<br>
|
||||
\author James Turk
|
||||
**/
|
||||
|
||||
@ -102,7 +102,7 @@ class ZEngine
|
||||
//! Option controlling how logfile is used.
|
||||
bool mLogAllErrors;
|
||||
//! C-style FILE* for error logging.
|
||||
FILE *mErrlog;
|
||||
std::FILE *mErrlog;
|
||||
//! Event filter, for users who need to process their own events.
|
||||
SDL_EventFilter mEventFilter;
|
||||
|
||||
|
@ -14,7 +14,7 @@
|
||||
|
||||
Definition file for ZError, the Error logging class for ZEngine.
|
||||
This class should never be used by the average user, it is used by ZEngine to store information on an error.
|
||||
<br>$Id: ZE_ZError.h,v 1.11 2003/06/11 00:15:25 cozman Exp $<br>
|
||||
<br>$Id: ZE_ZError.h,v 1.12 2003/06/11 05:51:32 cozman Exp $<br>
|
||||
\author James Turk
|
||||
**/
|
||||
|
||||
@ -102,13 +102,6 @@ class ZError
|
||||
**/
|
||||
ZError(ZErrorCode code=ZERR_NONE, std::string desc="", std::string file="", int line=0);
|
||||
|
||||
/*!
|
||||
\brief Virtual Destructor.
|
||||
|
||||
Virtual destructor making future inheritance safe.
|
||||
**/
|
||||
virtual ~ZError();
|
||||
|
||||
/*!
|
||||
\brief Set members of error object.
|
||||
|
||||
|
@ -121,8 +121,9 @@ class ZFont
|
||||
\param r Red component of color (0-255).
|
||||
\param g Green component of color (0-255).
|
||||
\param b Blue component of color (0-255).
|
||||
\param a Alpha component of drawn font, including background if present. (0-255) (Optional, defaults to 255.)
|
||||
**/
|
||||
void SetColor(Uint8 r, Uint8 g, Uint8 b);
|
||||
void SetColor(Uint8 r, Uint8 g, Uint8 b, Uint8 a=255);
|
||||
|
||||
/*!
|
||||
\brief Set Background rColor.
|
||||
|
@ -6,7 +6,7 @@
|
||||
|
||||
Implementation file for VersinInfo class, simple class for containing and comparing
|
||||
version numbers.
|
||||
<br>$Id: VersionInfo.cpp,v 1.3 2003/06/11 00:15:07 cozman Exp $<br>
|
||||
<br>$Id: VersionInfo.cpp,v 1.4 2003/06/11 05:51:15 cozman Exp $<br>
|
||||
\author James Turk
|
||||
**/
|
||||
|
||||
@ -26,6 +26,7 @@ std::string VersionInfo::GetString() const
|
||||
|
||||
bool VersionInfo::operator<(const VersionInfo &rhs) const
|
||||
{
|
||||
//chained compares, compare numbers in order of importance
|
||||
if(this->major < rhs.major)
|
||||
return true;
|
||||
else if(this->major == rhs.major)
|
||||
@ -38,24 +39,19 @@ bool VersionInfo::operator<(const VersionInfo &rhs) const
|
||||
return true;
|
||||
else if(this->release == rhs.release)
|
||||
{
|
||||
if(this->extra.length() == 0 && rhs.extra.length() != 0)
|
||||
return true;
|
||||
else if(this->extra.length() && rhs.extra.length())
|
||||
{
|
||||
return this->extra[0] < rhs.extra[0];
|
||||
}
|
||||
return this->extra < rhs.extra; //just compare the strings at the end
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
return false; //if it reaches this point rhs is >=
|
||||
}
|
||||
|
||||
bool VersionInfo::operator==(const VersionInfo &rhs) const
|
||||
{
|
||||
return this->GetString() == rhs.GetString();
|
||||
return this->GetString() == rhs.GetString(); //only equal data produces equal strings
|
||||
}
|
||||
|
||||
bool VersionInfo::operator>(const VersionInfo &rhs) const
|
||||
{
|
||||
return !((*this) < rhs || (*this) == rhs);
|
||||
return !((*this) < rhs || (*this) == rhs); //if not < and not ==, must be >
|
||||
}
|
||||
|
@ -13,7 +13,7 @@
|
||||
\brief Source file for ZEngine utility functions.
|
||||
|
||||
Source file containing open utilities for use inside and alongside ZEngine.
|
||||
<br>$Id: ZE_Utility.cpp,v 1.8 2003/06/11 00:15:08 cozman Exp $<br>
|
||||
<br>$Id: ZE_Utility.cpp,v 1.9 2003/06/11 05:51:15 cozman Exp $<br>
|
||||
\author James Turk
|
||||
**/
|
||||
|
||||
@ -26,13 +26,14 @@ std::string FormatStr(const char *fmtstr, ...)
|
||||
{
|
||||
char buf[512];
|
||||
va_list args;
|
||||
|
||||
//simply puts args into the buffer using standard parsing rules
|
||||
va_start(args,fmtstr);
|
||||
vsprintf(buf, fmtstr, args);
|
||||
va_end(args);
|
||||
return buf;
|
||||
}
|
||||
|
||||
//Each of the Free*s safely frees & NULLs the pointer
|
||||
void FreeImage(SDL_Surface *&image)
|
||||
{
|
||||
if(image)
|
||||
|
@ -13,7 +13,7 @@
|
||||
\brief Source file for ZClient.
|
||||
|
||||
Implementation file for ZClient, the TCP Client class for ZEngine.
|
||||
<br>$Id: ZE_ZClient.cpp,v 1.8 2003/06/11 00:15:08 cozman Exp $<br>
|
||||
<br>$Id: ZE_ZClient.cpp,v 1.9 2003/06/11 05:51:15 cozman Exp $<br>
|
||||
\author James Turk
|
||||
**/
|
||||
|
||||
@ -30,6 +30,7 @@ std::string num2dotted4(unsigned int num)
|
||||
int d=16777216; //2^24
|
||||
int m;
|
||||
|
||||
//the dotted IP a.b.c.d = a256^3+b256^2+c256+d, this is the numeric ip algorithm in reverse
|
||||
while(d > 0)
|
||||
{
|
||||
m = num/d;
|
||||
@ -41,13 +42,13 @@ std::string num2dotted4(unsigned int num)
|
||||
return FormatStr("%d.%d.%d.%d",ip[3],ip[2],ip[1],ip[0]);
|
||||
}
|
||||
|
||||
ZClient::ZClient(bool verbose)
|
||||
ZClient::ZClient(bool verbose) :
|
||||
rEngine(ZEngine::GetInstance()),
|
||||
rSocket(NULL),
|
||||
rSocketSet(NULL),
|
||||
rVerbose(verbose),
|
||||
rWaitTime(0)
|
||||
{
|
||||
rEngine = ZEngine::GetInstance();
|
||||
rSocket = NULL;
|
||||
rSocketSet = NULL;
|
||||
rVerbose = verbose;
|
||||
rWaitTime = 0;
|
||||
}
|
||||
|
||||
ZClient::~ZClient()
|
||||
@ -59,6 +60,7 @@ bool ZClient::Connect(char *server, Uint16 port)
|
||||
{
|
||||
IPaddress ip;
|
||||
|
||||
//see if the IP is reachable
|
||||
if(SDLNet_ResolveHost(&ip,server,port) < 0)
|
||||
rEngine->ReportError(ZERR_NET_CLIENT,FormatStr("Failed to resolve host: %s:%d",server,port));
|
||||
else if(rVerbose)
|
||||
@ -113,6 +115,7 @@ bool ZClient::Send(ZByte *data, int size)
|
||||
{
|
||||
sent = SDLNet_TCP_Send(rSocket,data,size);
|
||||
|
||||
//send < size means that entire packet didn't send.. which is a problem
|
||||
if(sent < size)
|
||||
{
|
||||
rEngine->ReportError(ZERR_NET_CLIENT,FormatStr("Failed to send data, closing socket: %s", SDLNet_GetError()));
|
||||
@ -137,8 +140,10 @@ int ZClient::Receive(ZByte *data)
|
||||
|
||||
if(rSocket)
|
||||
{
|
||||
//check if data is waiting on the socket
|
||||
if(SDLNet_CheckSockets(rSocketSet, rWaitTime) > 0 && SDLNet_SocketReady(rSocket))
|
||||
{
|
||||
//if recieved 0 (data was waiting) something happened
|
||||
received = SDLNet_TCP_Recv(rSocket,data,MAX_MSG_LEN);
|
||||
if(received <= 0)
|
||||
{
|
||||
|
@ -13,7 +13,7 @@
|
||||
\brief Source file for ZConfigFile.
|
||||
|
||||
Implementation of ZConfigFile, the ZEngine INI-Style Config File.
|
||||
<br>$Id: ZE_ZConfigFile.cpp,v 1.11 2003/06/11 00:15:08 cozman Exp $<br>
|
||||
<br>$Id: ZE_ZConfigFile.cpp,v 1.12 2003/06/11 05:51:15 cozman Exp $<br>
|
||||
\author James Turk
|
||||
**/
|
||||
|
||||
@ -30,12 +30,12 @@ std::string ZConfigFile::CleanString(std::string str) const
|
||||
//cycle through, only copy spaces and if a character is uppercase, convert it to lowercase
|
||||
for(std::string::size_type i = 0; i < str.length(); ++i)
|
||||
{
|
||||
if(!isspace(str[i]) || inQuotes)
|
||||
if(!std::isspace(str[i]) || inQuotes) //if it's in quotes leave it be
|
||||
{
|
||||
if(str[i] == '\"')
|
||||
inQuotes = !inQuotes;
|
||||
if(isupper(str[i]) && !inQuotes)
|
||||
str[i] = static_cast<char>(tolower(str[i]));
|
||||
inQuotes = !inQuotes; //each quote toggles the quote state
|
||||
if(std::isupper(str[i]) && !inQuotes)
|
||||
str[i] = static_cast<char>(std::tolower(str[i]));
|
||||
tmpStr += str[i];
|
||||
}
|
||||
}
|
||||
@ -48,6 +48,7 @@ bool ZConfigFile::Exists(std::string sec) const
|
||||
|
||||
sec = CleanString(sec);
|
||||
|
||||
//check list for 'cleaned' version of string
|
||||
for(secIter = rFileLayout.begin(); secIter != rFileLayout.end(); ++secIter)
|
||||
{
|
||||
if(CleanString((*secIter).section) == sec)
|
||||
@ -64,6 +65,7 @@ bool ZConfigFile::Exists(std::string sec, std::string var) const
|
||||
sec = CleanString(sec);
|
||||
var = CleanString(var);
|
||||
|
||||
//first find section, then do same search for variable
|
||||
for(secIter = rFileLayout.begin(); secIter != rFileLayout.end(); ++secIter)
|
||||
{
|
||||
if(CleanString((*secIter).section) == sec)
|
||||
@ -83,19 +85,19 @@ void ZConfigFile::SetVariable(std::string sec, std::string var, std::string val)
|
||||
std::list<ZCF_Section>::iterator secIter;
|
||||
std::list<ZCF_Variable>::iterator varIter;
|
||||
|
||||
if(Exists(CleanString(sec)))
|
||||
if(Exists(CleanString(sec))) //if section exists find it
|
||||
{
|
||||
sec = CleanString(sec);
|
||||
for(secIter = rFileLayout.begin(); secIter != rFileLayout.end(); ++secIter)
|
||||
{
|
||||
if(CleanString((*secIter).section) == sec) //if this is the section
|
||||
{
|
||||
if(Exists(sec,var))
|
||||
if(Exists(sec,var)) //if variable exists find it
|
||||
{
|
||||
var = CleanString(var);
|
||||
for(varIter = (*secIter).varList.begin(); varIter != (*secIter).varList.end(); ++varIter)
|
||||
{
|
||||
if(CleanString((*varIter).var) == var) //if this is the variable
|
||||
if(CleanString((*varIter).var) == var) //once variable found, set value
|
||||
{
|
||||
(*varIter).val = val;
|
||||
break; //break from this loop
|
||||
@ -124,13 +126,14 @@ void ZConfigFile::SetVariable(std::string sec, std::string var, std::string val)
|
||||
|
||||
std::string ZConfigFile::GetVariable(std::string sec, std::string var, std::string defVal) const
|
||||
{
|
||||
//finds variable in same manner as SetVariable, but if not found doesn't create, just returns default value
|
||||
std::list<ZCF_Section>::const_iterator secIter;
|
||||
std::list<ZCF_Variable>::const_iterator varIter;
|
||||
|
||||
sec = CleanString(sec);
|
||||
var = CleanString(var);
|
||||
|
||||
if(Exists(sec))
|
||||
if(Exists(sec))
|
||||
{
|
||||
for(secIter = rFileLayout.begin(); secIter != rFileLayout.end(); ++secIter)
|
||||
{
|
||||
@ -157,11 +160,13 @@ std::string ZConfigFile::GetVariable(std::string sec, std::string var, std::stri
|
||||
return defVal; //if it gets to the end just return the default
|
||||
}
|
||||
|
||||
ZConfigFile::ZConfigFile() {}
|
||||
ZConfigFile::ZConfigFile()
|
||||
{
|
||||
}
|
||||
|
||||
ZConfigFile::ZConfigFile(std::string rFilename)
|
||||
{
|
||||
Process(rFilename);
|
||||
Process(rFilename); //process does all the work
|
||||
}
|
||||
|
||||
ZConfigFile::~ZConfigFile()
|
||||
@ -173,12 +178,12 @@ void ZConfigFile::Process(std::string filename)
|
||||
{
|
||||
rFilename = filename;
|
||||
|
||||
std::ifstream cfile(rFilename.c_str());
|
||||
std::ifstream cfile(rFilename.c_str());
|
||||
std::string section, str, var, tmp;
|
||||
|
||||
rFileLayout.clear();
|
||||
rFileLayout.clear(); //layout must be cleared, in case variable is being used multiple times
|
||||
|
||||
while(!cfile.eof() && cfile.is_open())
|
||||
while(!cfile.eof() && cfile.is_open()) //parses entire file
|
||||
{
|
||||
std::getline(cfile,str); //read in a line
|
||||
tmp = CleanString(str); //get a clean version
|
||||
@ -195,6 +200,7 @@ void ZConfigFile::Process(std::string filename)
|
||||
cfile.close();
|
||||
}
|
||||
|
||||
//each get* gets the variable (stored as a string) from using GetVariable, then converts it to the desired format
|
||||
float ZConfigFile::GetFloat(std::string section, std::string var, float defVal) const
|
||||
{
|
||||
std::string val;
|
||||
@ -273,6 +279,7 @@ std::string ZConfigFile::GetString(std::string section, std::string var, std::st
|
||||
return val;
|
||||
}
|
||||
|
||||
//each set* converts it's variable to a string, then places it in using SetVariable
|
||||
void ZConfigFile::SetFloat(std::string section, std::string var, float val)
|
||||
{
|
||||
char buf[20];
|
||||
@ -315,6 +322,7 @@ void ZConfigFile::Flush()
|
||||
//in case the filename is already cleared somehow
|
||||
if(rFilename.length())
|
||||
{
|
||||
//open the file blanked out, to not duplicate entries
|
||||
std::ofstream cfile(rFilename.c_str(), std::ios::out|std::ios::trunc);
|
||||
|
||||
if(cfile)
|
||||
@ -343,7 +351,7 @@ void ZConfigFile::Flush()
|
||||
|
||||
void ZConfigFile::Close()
|
||||
{
|
||||
Flush();
|
||||
Flush(); //when the file is closed it should be flushed to disk
|
||||
rFilename = "";
|
||||
}
|
||||
|
||||
|
@ -13,7 +13,7 @@
|
||||
\brief Central source file for ZEngine.
|
||||
|
||||
Actual implementation of ZEngine singleton class, the core of ZEngine.
|
||||
<br>$Id: ZE_ZEngine.cpp,v 1.45 2003/06/11 00:15:08 cozman Exp $<br>
|
||||
<br>$Id: ZE_ZEngine.cpp,v 1.46 2003/06/11 05:51:15 cozman Exp $<br>
|
||||
\author James Turk
|
||||
**/
|
||||
|
||||
@ -25,46 +25,30 @@ namespace ZE
|
||||
VersionInfo ZEngine::Version(0,8,4,"dev");
|
||||
ZEngine *ZEngine::sInstance=NULL;
|
||||
|
||||
ZEngine::ZEngine()
|
||||
{
|
||||
mInitialized = false;
|
||||
mWidth = 800;
|
||||
mHeight = 600;
|
||||
mBPP = -1;
|
||||
mFullscreen = true;
|
||||
|
||||
ZEngine::ZEngine() :
|
||||
mInitialized(false), mWidth(800), mHeight(600), mBPP(-1), mFullscreen(true),
|
||||
#ifdef USE_SDL_MIXER
|
||||
mRate = 22050;
|
||||
mStereo = false;
|
||||
mRate(22050), mStereo(false),
|
||||
#endif
|
||||
mNeedReload = false;
|
||||
|
||||
mScreen = NULL;
|
||||
|
||||
mEventFilter = NULL;
|
||||
mActive = mQuit = false;
|
||||
mKeyIsPressed = NULL;
|
||||
mMouseX = mMouseY = 0;
|
||||
mMouseB = 0;
|
||||
|
||||
mNeedReload(false),mScreen(NULL),
|
||||
mEventFilter(NULL), mActive(false), mQuit(false), mKeyIsPressed(NULL),
|
||||
mMouseX(0), mMouseY(0), mMouseB(0),
|
||||
mUnpauseOnActive(false), mPaused(false),
|
||||
mDesiredFramerate(0), mNextUpdate(0), mLastPause(0), mPausedTime(0), mLastTime(0),
|
||||
mSecPerFrame(0.0),
|
||||
mLogAllErrors(true), mErrlog(stderr)
|
||||
{
|
||||
for(int k = 0; k < SDLK_LAST; ++k)
|
||||
mKeyPress[k] = false;
|
||||
|
||||
mUnpauseOnActive = mPaused = false;
|
||||
mDesiredFramerate = 0;
|
||||
mNextUpdate = mLastPause = mPausedTime = mLastTime = 0;
|
||||
mSecPerFrame = 0.0;
|
||||
|
||||
|
||||
ZError::CreateStringTable();
|
||||
mLogAllErrors = true;
|
||||
mErrlog = stderr;
|
||||
|
||||
SeedRandom(static_cast<unsigned long>(time(NULL)));
|
||||
}
|
||||
|
||||
ZEngine* ZEngine::GetInstance()
|
||||
{
|
||||
if(!sInstance)
|
||||
if(!sInstance) //first time through, gets new instance, each time after returns same one
|
||||
sInstance = new ZEngine;
|
||||
|
||||
return sInstance;
|
||||
@ -74,8 +58,8 @@ void ZEngine::ReleaseInstance()
|
||||
{
|
||||
if(sInstance)
|
||||
{
|
||||
ZError::DestroyStringTable();
|
||||
sInstance->CloseDisplay();
|
||||
ZError::DestroyStringTable(); //part of fix to memory leak with static members
|
||||
sInstance->CloseDisplay();
|
||||
delete sInstance;
|
||||
}
|
||||
sInstance = NULL;
|
||||
@ -107,6 +91,7 @@ bool ZEngine::CreateDisplay(std::string title, std::string icon)
|
||||
|
||||
if(!mInitialized)
|
||||
{
|
||||
//audio initialized just in case, must be initialized w/ video to work so InitSubsystem wasn't an option
|
||||
if(SDL_Init(SDL_INIT_VIDEO|SDL_INIT_TIMER|SDL_INIT_AUDIO) < 0)
|
||||
{
|
||||
ReportError(ZERR_SDL_INIT,SDL_GetError());
|
||||
@ -134,7 +119,7 @@ bool ZEngine::CreateDisplay(std::string title, std::string icon)
|
||||
ReportError(ZERR_VIDMODE,FormatStr("%d is invalid BPP, must be 8,15,16,24 or 32, trying best BPP.",mBPP));
|
||||
mBPP = -1;
|
||||
}
|
||||
else
|
||||
else //this decides correcr BPP
|
||||
{
|
||||
if(mBPP == -1)
|
||||
mBPP = SDL_GetVideoInfo()->vfmt->BitsPerPixel;
|
||||
@ -152,6 +137,7 @@ bool ZEngine::CreateDisplay(std::string title, std::string icon)
|
||||
}
|
||||
}
|
||||
|
||||
//buffer sizes
|
||||
switch (mBPP)
|
||||
{
|
||||
case 8:
|
||||
@ -172,6 +158,7 @@ bool ZEngine::CreateDisplay(std::string title, std::string icon)
|
||||
break;
|
||||
}
|
||||
|
||||
//key GL attributes
|
||||
SDL_GL_SetAttribute(SDL_GL_RED_SIZE, rgb_size[0]);
|
||||
SDL_GL_SetAttribute(SDL_GL_GREEN_SIZE, rgb_size[1]);
|
||||
SDL_GL_SetAttribute(SDL_GL_BLUE_SIZE, rgb_size[2]);
|
||||
@ -297,7 +284,7 @@ void ZEngine::ToggleFullscreen()
|
||||
else
|
||||
CreateDisplay(title);
|
||||
#endif
|
||||
SetReloadNeed(true);
|
||||
SetReloadNeed(true); //images need to be reloaded on fullscreen swap
|
||||
}
|
||||
|
||||
bool ZEngine::Initialized()
|
||||
@ -314,10 +301,12 @@ void ZEngine::Update()
|
||||
{
|
||||
SDL_GL_SwapBuffers();
|
||||
|
||||
//keeps track of spf//
|
||||
mSecPerFrame = (GetTime()-mLastTime)/1000.0;
|
||||
mLastTime = GetTime();
|
||||
mLastTime = GetTime();
|
||||
|
||||
if(mDesiredFramerate)
|
||||
//framerate limiting//
|
||||
if(mDesiredFramerate)
|
||||
{
|
||||
if(mLastTime < mNextUpdate)
|
||||
SDL_Delay(mNextUpdate-mLastTime);
|
||||
@ -334,15 +323,17 @@ void ZEngine::Clear(float red, float green, float blue, float alpha)
|
||||
|
||||
void ZEngine::SetGL2D()
|
||||
{
|
||||
//disable unused features for 2D//
|
||||
glPushAttrib(GL_ENABLE_BIT);
|
||||
glDisable(GL_DEPTH_TEST);
|
||||
glDisable(GL_CULL_FACE);
|
||||
glEnable(GL_TEXTURE_2D);
|
||||
|
||||
/* This allows alpha blending of 2D textures with the scene*/
|
||||
// This allows alpha blending of 2D textures with the scene //
|
||||
glEnable(GL_BLEND);
|
||||
glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA);
|
||||
|
||||
//setup viewport & ortho mode to emulate standard 2D API conventions
|
||||
glViewport(0, 0, mWidth, mHeight);
|
||||
|
||||
glMatrixMode(GL_PROJECTION);
|
||||
@ -363,7 +354,7 @@ void ZEngine::Delay(Uint32 milliseconds)
|
||||
|
||||
Uint32 ZEngine::GetTime()
|
||||
{
|
||||
if(mPaused)
|
||||
if(mPaused) //when paused time hasn't been added to mPausedTime
|
||||
return SDL_GetTicks() - (mPausedTime + (SDL_GetTicks() - mLastPause));
|
||||
else
|
||||
return SDL_GetTicks() - mPausedTime;
|
||||
@ -382,6 +373,7 @@ void ZEngine::UnpauseTimer()
|
||||
{
|
||||
if(mPaused)
|
||||
{
|
||||
//mPaused time accumulates total time engine has been paused in all pauses
|
||||
mPausedTime += (SDL_GetTicks() - mLastPause);
|
||||
mPaused = false;
|
||||
}
|
||||
@ -394,7 +386,7 @@ double ZEngine::GetFrameTime()
|
||||
|
||||
double ZEngine::GetFramerate()
|
||||
{
|
||||
return mSecPerFrame ? 1/mSecPerFrame : 0;
|
||||
return mSecPerFrame ? 1/mSecPerFrame : 0; //avoid /0
|
||||
}
|
||||
|
||||
void ZEngine::SetDesiredFramerate(Uint8 rate)
|
||||
@ -450,7 +442,7 @@ bool ZEngine::KeyIsPressed(SDLKey key)
|
||||
bool ZEngine::KeyPress(SDLKey key)
|
||||
{
|
||||
bool temp = mKeyPress[key];
|
||||
mKeyPress[key] = false;
|
||||
mKeyPress[key] = false; //checking removes the press, this is used to detect single presses
|
||||
return temp;
|
||||
}
|
||||
|
||||
@ -486,6 +478,7 @@ bool ZEngine::RButtonPressed()
|
||||
|
||||
bool ZEngine::MouseInRect(SDL_Rect *rect)
|
||||
{
|
||||
//useful function, needed so much it made it in
|
||||
return (mMouseX >= rect->x && mMouseX <= rect->x+rect->w &&
|
||||
mMouseY >= rect->y && mMouseY <= rect->y+rect->h);
|
||||
}
|
||||
@ -498,8 +491,9 @@ void ZEngine::CheckEvents()
|
||||
{
|
||||
if(!mEventFilter || mEventFilter(&event)) //if the filter returns 0 it is removing the event, it will not be processed
|
||||
{
|
||||
switch(event.type)
|
||||
switch(event.type) //only certain events are handled, mEventFilter can handle user requests
|
||||
{
|
||||
//these events try and catch all video changes, for potential surface loss
|
||||
case SDL_VIDEOEXPOSE:
|
||||
case SDL_ACTIVEEVENT:
|
||||
if(event.active.state & SDL_APPACTIVE || event.active.state & SDL_APPINPUTFOCUS)
|
||||
@ -525,6 +519,7 @@ void ZEngine::CheckEvents()
|
||||
}
|
||||
}
|
||||
break;
|
||||
//SDL_KEYDOWN/UP messages manipulate the mKeyPress array, used for single presses
|
||||
case SDL_KEYDOWN:
|
||||
mKeyPress[event.key.keysym.sym] = true;
|
||||
break;
|
||||
@ -540,7 +535,7 @@ void ZEngine::CheckEvents()
|
||||
}
|
||||
}
|
||||
|
||||
mKeyIsPressed = SDL_GetKeyState(NULL); //recommended but not needed (says Sam)
|
||||
mKeyIsPressed = SDL_GetKeyState(NULL); //recommended but not needed (says Sam on the list)
|
||||
|
||||
//Alt-X or Alt-F4
|
||||
if((mKeyIsPressed[SDLK_x] || mKeyIsPressed[SDLK_F4]) &&
|
||||
@ -562,9 +557,11 @@ void ZEngine::InitPhysFS(std::string argv)
|
||||
std::string::size_type pos;
|
||||
PHYSFS_init(argv.c_str());
|
||||
|
||||
pos = argv.rfind(PHYSFS_getDirSeparator());
|
||||
//example c:/home/games/agame/bin/agame.exe rfind finds the slash before the exe
|
||||
//and the substr returns the root dir: c:/home/games/agame/bin/
|
||||
pos = argv.rfind(PHYSFS_getDirSeparator()); //find last slash
|
||||
if(pos != std::string::npos)
|
||||
AddPhysFSDir(argv.substr(0,pos));
|
||||
AddPhysFSDir(argv.substr(0,pos)); //everything up to last slash
|
||||
}
|
||||
|
||||
void ZEngine::AddPhysFSDir(std::string dir)
|
||||
@ -579,12 +576,13 @@ void ZEngine::SetErrorLog(bool logAll, std::string logFile)
|
||||
mLogAllErrors = logAll;
|
||||
if(logFile.length())
|
||||
{
|
||||
//stderr & stdout are special cases, and should be directed to their appropriate streams
|
||||
if(logFile == "stderr")
|
||||
mErrlog = stderr;
|
||||
else if(logFile == "stdout")
|
||||
mErrlog = stdout;
|
||||
else
|
||||
mErrlog = fopen(logFile.c_str(),"w");
|
||||
mErrlog = std::fopen(logFile.c_str(),"w");
|
||||
}
|
||||
}
|
||||
|
||||
@ -595,7 +593,7 @@ void ZEngine::ReportError(ZErrorCode code, std::string desc, std::string file, u
|
||||
if(mLogAllErrors)
|
||||
{
|
||||
LogError(mCurError);
|
||||
fflush(mErrlog);
|
||||
std::fflush(mErrlog);
|
||||
}
|
||||
else
|
||||
mErrorQueue.push(mCurError);
|
||||
@ -610,18 +608,17 @@ ZErrorCode ZEngine::GetLastError()
|
||||
|
||||
void ZEngine::WriteLog(std::string str)
|
||||
{
|
||||
fprintf(mErrlog,str.c_str());
|
||||
fprintf(mErrlog,"\n");
|
||||
std::fprintf(mErrlog,str.c_str());
|
||||
std::fprintf(mErrlog,"\n");
|
||||
}
|
||||
|
||||
void ZEngine::LogError(ZError error)
|
||||
{
|
||||
fprintf(mErrlog,error.LogString().c_str());
|
||||
std::fprintf(mErrlog,error.LogString().c_str());
|
||||
}
|
||||
|
||||
void ZEngine::FlushErrors()
|
||||
{
|
||||
mCurError.Create(ZERR_NONE);
|
||||
while(!mErrorQueue.empty())
|
||||
{
|
||||
LogError(mErrorQueue.front());
|
||||
|
@ -13,7 +13,7 @@
|
||||
\brief Source file for ZError.
|
||||
|
||||
Implementation of ZError, the ZEngine internal error information storage class.
|
||||
<br>$Id: ZE_ZError.cpp,v 1.9 2003/06/11 00:15:09 cozman Exp $<br>
|
||||
<br>$Id: ZE_ZError.cpp,v 1.10 2003/06/11 05:51:16 cozman Exp $<br>
|
||||
\author James Turk
|
||||
**/
|
||||
|
||||
@ -28,6 +28,7 @@ void ZError::CreateStringTable()
|
||||
{
|
||||
if(!sErrorDesc)
|
||||
{
|
||||
//create error strings
|
||||
sErrorDesc = new std::string[ZERR_LAST];
|
||||
sErrorDesc[ZERR_NONE] = "No Error. [%s]";
|
||||
sErrorDesc[ZERR_SDL_INTERNAL] = "SDL Error. [%s]";
|
||||
@ -59,15 +60,8 @@ void ZError::DestroyStringTable()
|
||||
}
|
||||
}
|
||||
|
||||
ZError::ZError(ZErrorCode code, std::string desc, std::string file, int line)
|
||||
{
|
||||
rCode = code;
|
||||
rDescription = desc;
|
||||
rFilename = file;
|
||||
rLine = line;
|
||||
}
|
||||
|
||||
ZError::~ZError()
|
||||
ZError::ZError(ZErrorCode code, std::string desc, std::string file, int line) :
|
||||
rCode(code), rDescription(desc), rFilename(file), rLine(line)
|
||||
{
|
||||
}
|
||||
|
||||
@ -88,13 +82,14 @@ std::string ZError::LogString() const
|
||||
{
|
||||
std::string msg;
|
||||
|
||||
//if there is a description be sure to integrate it
|
||||
msg = rDescription.length() ? FormatStr(sErrorDesc[rCode].c_str(),rDescription.c_str()) : sErrorDesc[rCode];
|
||||
|
||||
if(rLine != 0)
|
||||
if(rLine != 0) //if there is a line (there is also a filename)
|
||||
return FormatStr(" -%s(%d): %s\n",rFilename.c_str(),rLine,msg.c_str());
|
||||
else if(rFilename.length())
|
||||
else if(rFilename.length()) //no line, just filename
|
||||
return FormatStr(" -%s: %s\n",rFilename.c_str(),msg.c_str());
|
||||
else
|
||||
else //just the message
|
||||
return FormatStr(" -%s\n",msg.c_str());
|
||||
}
|
||||
|
||||
|
@ -13,7 +13,7 @@
|
||||
\brief Source file for ZFont.
|
||||
|
||||
Implementation of ZFont, the basic Font class for ZEngine.
|
||||
<br>$Id: ZE_ZFont.cpp,v 1.11 2003/06/11 00:15:09 cozman Exp $<br>
|
||||
<br>$Id: ZE_ZFont.cpp,v 1.12 2003/06/11 05:51:16 cozman Exp $<br>
|
||||
\author James Turk
|
||||
**/
|
||||
|
||||
@ -24,18 +24,18 @@
|
||||
namespace ZE
|
||||
{
|
||||
|
||||
ZFont::ZFont()
|
||||
ZFont::ZFont() :
|
||||
rEngine(ZEngine::GetInstance()),
|
||||
rFont(NULL)
|
||||
{
|
||||
rEngine = ZEngine::GetInstance();
|
||||
rFont = NULL;
|
||||
rColor.r = rColor.g = rColor.b = rColor.unused = 255;
|
||||
rBGColor.r = rBGColor.g = rBGColor.b = rBGColor.unused = 0;
|
||||
}
|
||||
|
||||
ZFont::ZFont(std::string filename, int size)
|
||||
ZFont::ZFont(std::string filename, int size) :
|
||||
rEngine(ZEngine::GetInstance()),
|
||||
rFont(NULL)
|
||||
{
|
||||
rEngine = ZEngine::GetInstance();
|
||||
rFont = NULL;
|
||||
rColor.r = rColor.g = rColor.b = rColor.unused = 255;
|
||||
rBGColor.r = rBGColor.g = rBGColor.b = rBGColor.unused = 0;
|
||||
Open(filename,size);
|
||||
@ -49,6 +49,7 @@ ZFont::~ZFont()
|
||||
void ZFont::Open(std::string filename, int size)
|
||||
{
|
||||
Release();
|
||||
rFilename = filename;
|
||||
rFont = rEngine->LoadFont(filename,size);
|
||||
}
|
||||
|
||||
@ -59,19 +60,22 @@ void ZFont::Release()
|
||||
|
||||
void ZFont::DrawText(std::string text, ZImage &image) const
|
||||
{
|
||||
image.Attach(TTF_RenderText_Solid(rFont, text.c_str(), rColor));
|
||||
image.Attach(TTF_RenderText_Blended(rFont, text.c_str(), rColor));
|
||||
image.SetAlpha(rColor.unused); //the images alpha comes from the SetColor a parameter
|
||||
}
|
||||
|
||||
void ZFont::DrawShadedText(std::string text, ZImage &image) const
|
||||
{
|
||||
image.Attach(TTF_RenderText_Shaded(rFont, text.c_str(), rColor, rBGColor));
|
||||
image.SetAlpha(rColor.unused);
|
||||
}
|
||||
|
||||
void ZFont::SetColor(Uint8 r, Uint8 g, Uint8 b)
|
||||
void ZFont::SetColor(Uint8 r, Uint8 g, Uint8 b, Uint8 a)
|
||||
{
|
||||
rColor.r = r;
|
||||
rColor.g = g;
|
||||
rColor.b = b;
|
||||
rColor.unused = a; //used in DrawText and DrawBlendedText
|
||||
}
|
||||
|
||||
void ZFont::SetBGColor(Uint8 r, Uint8 g, Uint8 b)
|
||||
|
@ -13,7 +13,7 @@
|
||||
\brief Source file for ZImage.
|
||||
|
||||
Implementation of ZImage, the Image class for ZEngine.
|
||||
<br>$Id: ZE_ZImage.cpp,v 1.34 2003/06/11 00:15:09 cozman Exp $<br>
|
||||
<br>$Id: ZE_ZImage.cpp,v 1.35 2003/06/11 05:51:16 cozman Exp $<br>
|
||||
\author James Turk
|
||||
**/
|
||||
|
||||
@ -22,51 +22,51 @@
|
||||
namespace ZE
|
||||
{
|
||||
|
||||
ZImage::ZImage()
|
||||
ZImage::ZImage() :
|
||||
rEngine(ZEngine::GetInstance()),
|
||||
rImage(NULL),
|
||||
rAlpha(255)
|
||||
{
|
||||
rEngine = ZEngine::GetInstance();
|
||||
rImage = NULL;
|
||||
rAlpha = 255;
|
||||
Release();
|
||||
}
|
||||
|
||||
ZImage::ZImage(const ZImage &rhs)
|
||||
ZImage::ZImage(const ZImage &rhs) :
|
||||
rEngine(ZEngine::GetInstance()),
|
||||
rImage(NULL),
|
||||
rAlpha(rhs.Alpha())
|
||||
{
|
||||
rEngine = ZEngine::GetInstance();
|
||||
rImage = NULL;
|
||||
rAlpha = rhs.Alpha();
|
||||
OpenFromImage(rhs.Surface(),0,0,(Sint16)rhs.Width(),(Sint16)rhs.Height());
|
||||
}
|
||||
|
||||
ZImage::ZImage(std::string filename)
|
||||
ZImage::ZImage(std::string filename) :
|
||||
rEngine(ZEngine::GetInstance()),
|
||||
rImage(NULL),
|
||||
rAlpha(255)
|
||||
{
|
||||
rEngine = ZEngine::GetInstance();
|
||||
rImage = NULL;
|
||||
rAlpha = 255;
|
||||
Open(filename);
|
||||
}
|
||||
|
||||
ZImage::ZImage(SDL_Surface *surface)
|
||||
ZImage::ZImage(SDL_Surface *surface) :
|
||||
rEngine(ZEngine::GetInstance()),
|
||||
rImage(NULL),
|
||||
rAlpha(255)
|
||||
{
|
||||
rEngine = ZEngine::GetInstance();
|
||||
rImage = NULL;
|
||||
rAlpha = 255;
|
||||
Attach(surface);
|
||||
}
|
||||
|
||||
ZImage::ZImage(SDL_Surface *img, Sint16 x, Sint16 y, Sint16 w, Sint16 h)
|
||||
ZImage::ZImage(SDL_Surface *img, Sint16 x, Sint16 y, Sint16 w, Sint16 h) :
|
||||
rEngine(ZEngine::GetInstance()),
|
||||
rImage(NULL),
|
||||
rAlpha(255)
|
||||
{
|
||||
rEngine = ZEngine::GetInstance();
|
||||
rImage = NULL;
|
||||
rAlpha = 255;
|
||||
OpenFromImage(img,x,y,w,h);
|
||||
}
|
||||
|
||||
ZImage::ZImage(const ZImage &img, Sint16 x, Sint16 y, Sint16 w, Sint16 h)
|
||||
ZImage::ZImage(const ZImage &img, Sint16 x, Sint16 y, Sint16 w, Sint16 h) :
|
||||
rEngine(ZEngine::GetInstance()),
|
||||
rImage(NULL),
|
||||
rAlpha(255)
|
||||
{
|
||||
rEngine = ZEngine::GetInstance();
|
||||
rImage = NULL;
|
||||
rAlpha = 255;
|
||||
OpenFromImage(img.Surface(),x,y,w,h); //call SDL_Surface* version instead of taking the long way
|
||||
}
|
||||
|
||||
@ -116,15 +116,16 @@ void ZImage::OpenFromImage(const ZImage &img, Sint16 x, Sint16 y, Sint16 w, Sint
|
||||
OpenFromImage(img.Surface(),x,y,w,h);
|
||||
}
|
||||
|
||||
//attach is really the core of ZImage, everything calls it, it converts SDL_Surface->OpenGL Texture->ZImage
|
||||
void ZImage::Attach(SDL_Surface *surface)
|
||||
{
|
||||
GLfloat coord[4];
|
||||
|
||||
Release(); //avoid most user inflicted memory leaks
|
||||
Release(); //avoid most user inflicted memory leaks associated with ZImage
|
||||
|
||||
//surface conversion//
|
||||
SDL_Surface *temp = surface;
|
||||
surface = SDL_DisplayFormatAlpha(temp);
|
||||
surface = SDL_DisplayFormatAlpha(temp); //TTF_RenderTextBlended relys on this
|
||||
if(surface)
|
||||
{
|
||||
FreeImage(temp);
|
||||
@ -139,7 +140,7 @@ void ZImage::Attach(SDL_Surface *surface)
|
||||
{
|
||||
rWidth = surface->w;
|
||||
rHeight = surface->h;
|
||||
rTexID = SDL_GL_LoadTexture(surface,coord);
|
||||
rTexID = SDL_GL_LoadTexture(surface,coord); //major helper, not written by me, found on libsdl.org
|
||||
rTexMinX = coord[0];
|
||||
rTexMinY = coord[1];
|
||||
rTexMaxX = coord[2];
|
||||
@ -152,17 +153,17 @@ void ZImage::Attach(SDL_Surface *surface)
|
||||
|
||||
void ZImage::Reload()
|
||||
{
|
||||
//this little hack helps to reload images to OpenGL surfaces after loss
|
||||
SDL_Surface *temp = rImage;
|
||||
rImage = NULL;
|
||||
rImage = NULL;
|
||||
Attach(temp);
|
||||
}
|
||||
|
||||
void ZImage::Release()
|
||||
{
|
||||
//set everything back the way it came
|
||||
if(glIsTexture(rTexID))
|
||||
{
|
||||
glDeleteTextures(1,&rTexID);
|
||||
}
|
||||
rTexMinX = rTexMinY = rTexMaxX = rTexMaxY = 0.0f;
|
||||
rTexID = rWidth = rHeight = 0;
|
||||
FreeImage(rImage);
|
||||
@ -175,7 +176,6 @@ void ZImage::SetAlpha(Uint8 alpha)
|
||||
|
||||
void ZImage::SetColorKey(Uint8 red, Uint8 green, Uint8 blue)
|
||||
{
|
||||
SDL_Surface *temp=NULL;
|
||||
Uint32 color = SDL_MapRGB(rImage->format,red,green,blue);
|
||||
|
||||
if(rImage)
|
||||
@ -183,11 +183,7 @@ void ZImage::SetColorKey(Uint8 red, Uint8 green, Uint8 blue)
|
||||
if(SDL_SetColorKey(rImage, SDL_SRCCOLORKEY, color) < 0)
|
||||
rEngine->ReportError(ZERR_SDL_INTERNAL,FormatStr("SDL_SetColorKey failed in ZImage::SetColorKey: %s",SDL_GetError()));
|
||||
else
|
||||
{
|
||||
temp = rImage;
|
||||
rImage = NULL;
|
||||
Attach(temp); //do the reattach
|
||||
}
|
||||
Reload(); //do the reattach hack, this gets a new OpenGL surface for the same image
|
||||
}
|
||||
else
|
||||
rEngine->ReportError(ZERR_NOIMAGE,"SetColorKey");
|
||||
@ -196,12 +192,14 @@ void ZImage::SetColorKey(Uint8 red, Uint8 green, Uint8 blue)
|
||||
void ZImage::Flip(bool horizontal, bool vertical)
|
||||
{
|
||||
GLfloat temp;
|
||||
//all that a flip does is invert the Min/Max coordinates
|
||||
if(horizontal)
|
||||
{
|
||||
temp = rTexMinX;
|
||||
rTexMinX = rTexMaxX;
|
||||
rTexMaxX = temp;
|
||||
}
|
||||
|
||||
if(vertical)
|
||||
{
|
||||
temp = rTexMinY;
|
||||
@ -210,6 +208,7 @@ void ZImage::Flip(bool horizontal, bool vertical)
|
||||
}
|
||||
}
|
||||
|
||||
//stretching and resizing is very inexpensive, done via variables
|
||||
void ZImage::Stretch(float xFactor, float yFactor)
|
||||
{
|
||||
rWidth = static_cast<unsigned int>(xFactor*rWidth);
|
||||
@ -222,6 +221,7 @@ void ZImage::Resize(unsigned int width, unsigned int height)
|
||||
rHeight = height;
|
||||
}
|
||||
|
||||
//this is available for other uses of ZEngine
|
||||
void ZImage::Bind() const
|
||||
{
|
||||
if(rTexID)
|
||||
@ -238,15 +238,15 @@ void ZImage::Draw(int x, int y) const
|
||||
|
||||
void ZImage::Draw(float x, float y) const
|
||||
{
|
||||
glColor4ub(255,255,255,rAlpha);
|
||||
glColor4ub(255,255,255,rAlpha); //sets the color correctly
|
||||
Bind();
|
||||
glBegin(GL_TRIANGLE_STRIP);
|
||||
glBegin(GL_TRIANGLE_STRIP); //triangle strips, speedier?
|
||||
glTexCoord2f(rTexMinX,rTexMinY); glVertex2f(x,y);
|
||||
glTexCoord2f(rTexMaxX,rTexMinY); glVertex2f(x+rWidth,y);
|
||||
glTexCoord2f(rTexMinX,rTexMaxY); glVertex2f(x,y+rHeight);
|
||||
glTexCoord2f(rTexMaxX,rTexMaxY); glVertex2f(x+rWidth,y+rHeight);
|
||||
glEnd();
|
||||
glColor4ub(255,255,255,255); //return to standard color state
|
||||
glColor4ub(255,255,255,255); //be responsible, return to standard color state
|
||||
}
|
||||
|
||||
void ZImage::DrawRotated(int x, int y, float angle) const
|
||||
@ -256,16 +256,17 @@ void ZImage::DrawRotated(int x, int y, float angle) const
|
||||
|
||||
void ZImage::DrawRotated(float x, float y, float angle) const
|
||||
{
|
||||
float cX,cY; //center variables
|
||||
|
||||
//center point
|
||||
float cX,cY;
|
||||
cX = rWidth/2.0f;
|
||||
cY = rHeight/2.0f;
|
||||
|
||||
glPushMatrix();
|
||||
glTranslatef(x+cX,y+cY,0);
|
||||
glRotatef(angle,0,0,1.0f);
|
||||
glTranslatef(x+cX,y+cY,0); //translate to center
|
||||
glRotatef(angle,0,0,1.0f); //rotate on z axis, to keep x&y parallel to 2D plane
|
||||
glColor4ub(255,255,255,rAlpha);
|
||||
Bind();
|
||||
//draw is modified to be based around center//
|
||||
glBegin(GL_TRIANGLE_STRIP);
|
||||
glTexCoord2f(rTexMinX,rTexMinY); glVertex2f(-cX,-cY);
|
||||
glTexCoord2f(rTexMaxX,rTexMinY); glVertex2f(-cX+rWidth,-cY);
|
||||
|
@ -13,7 +13,7 @@
|
||||
\brief Source file for ZMusic.
|
||||
|
||||
Implementation of ZMusic, the basic Music class for ZEngine.
|
||||
<br>$Id: ZE_ZMusic.cpp,v 1.9 2003/06/11 00:15:10 cozman Exp $<br>
|
||||
<br>$Id: ZE_ZMusic.cpp,v 1.10 2003/06/11 05:51:16 cozman Exp $<br>
|
||||
\author James Turk
|
||||
**/
|
||||
|
||||
@ -24,18 +24,19 @@
|
||||
namespace ZE
|
||||
{
|
||||
|
||||
const int ZMusic::LoopInfinite = -1;
|
||||
//ZMusic is a very simple class, each call basically wraps a self-explanatory function of SDL_Mixer
|
||||
const int ZMusic::LoopInfinite = -1; //constant for infinite, as used by SDL_Mixer
|
||||
|
||||
ZMusic::ZMusic()
|
||||
ZMusic::ZMusic() :
|
||||
rEngine(ZEngine::GetInstance()),
|
||||
rMusic(NULL)
|
||||
{
|
||||
rEngine = ZEngine::GetInstance();
|
||||
rMusic = NULL;
|
||||
}
|
||||
|
||||
ZMusic::ZMusic(std::string filename)
|
||||
ZMusic::ZMusic(std::string filename) :
|
||||
rEngine(ZEngine::GetInstance()),
|
||||
rMusic(NULL)
|
||||
{
|
||||
rEngine = ZEngine::GetInstance();
|
||||
rMusic = NULL;
|
||||
Open(filename);
|
||||
}
|
||||
|
||||
|
@ -13,7 +13,7 @@
|
||||
\brief Source file for ZRect.
|
||||
|
||||
Implementation of ZRect, the Rectangle class for ZEngine.
|
||||
<br>$Id: ZE_ZRect.cpp,v 1.11 2003/05/13 01:31:30 cozman Exp $<br>
|
||||
<br>$Id: ZE_ZRect.cpp,v 1.12 2003/06/11 05:51:16 cozman Exp $<br>
|
||||
\author James Turk
|
||||
**/
|
||||
|
||||
@ -153,6 +153,7 @@ ZRect ZRect::Intersection(const ZRect &rect) const
|
||||
{
|
||||
float tempX=0,tempY=0,tempW=0,tempH=0;
|
||||
|
||||
//can only grab the intersection if they intersect
|
||||
if(Intersects(rect))
|
||||
{
|
||||
tempX = rX > rect.X() ? rX : rect.X();
|
||||
|
@ -13,7 +13,7 @@
|
||||
\brief Source file for ZServer.
|
||||
|
||||
Implementation file for ZServer, the TCP Server class for ZEngine.
|
||||
<br>$Id: ZE_ZServer.cpp,v 1.6 2003/05/13 01:31:30 cozman Exp $<br>
|
||||
<br>$Id: ZE_ZServer.cpp,v 1.7 2003/06/11 05:51:16 cozman Exp $<br>
|
||||
\author James Turk
|
||||
**/
|
||||
|
||||
@ -27,21 +27,17 @@ namespace ZE
|
||||
void ZServer::CloseSocket(int num)
|
||||
{
|
||||
SDLNet_TCP_Close(rClientSockets[num]);
|
||||
rClientSockets[num] = NULL;
|
||||
rClientSockets[num] = NULL; //closed sockets should be NULL to mark them closed
|
||||
if(rVerbose)
|
||||
rEngine->WriteLog(FormatStr("Closing socket #%d",num));
|
||||
}
|
||||
|
||||
ZServer::ZServer(bool v)
|
||||
ZServer::ZServer(bool verbose)
|
||||
{
|
||||
rEngine(ZEngine::GetInstance()),
|
||||
rSocket(NULL), rSocketSet(NULL), rClientSockets(NULL),
|
||||
rMaxClients(0), rVerbose(verbose), rWaitTime(0)
|
||||
{
|
||||
rEngine = ZEngine::GetInstance();
|
||||
|
||||
rSocket = NULL;
|
||||
rSocketSet = NULL;
|
||||
rClientSockets = NULL;
|
||||
rMaxClients = 0;
|
||||
rVerbose = v;
|
||||
rWaitTime = 0;
|
||||
}
|
||||
|
||||
ZServer::~ZServer()
|
||||
@ -97,6 +93,7 @@ void ZServer::Stop()
|
||||
SDLNet_FreeSocketSet(rSocketSet);
|
||||
rSocketSet = NULL;
|
||||
}
|
||||
//each client must be let go, old memory leak
|
||||
if(rClientSockets)
|
||||
{
|
||||
for(int i=0; i < rMaxClients; ++i)
|
||||
@ -160,6 +157,7 @@ void ZServer::CheckSockets()
|
||||
size = result;
|
||||
if(rVerbose)
|
||||
rEngine->WriteLog("ZServer: Mirroring data: ");
|
||||
|
||||
for(int j=0; j < rMaxClients; ++j)
|
||||
{
|
||||
if(rClientSockets[j] && i != j) //send to open sockets that aren't the same
|
||||
|
@ -13,7 +13,7 @@
|
||||
\brief Source file for ZSound.
|
||||
|
||||
Implementation of ZSound, the basic Sound class for ZEngine.
|
||||
<br>$Id: ZE_ZSound.cpp,v 1.9 2003/06/11 00:15:10 cozman Exp $<br>
|
||||
<br>$Id: ZE_ZSound.cpp,v 1.10 2003/06/11 05:51:16 cozman Exp $<br>
|
||||
\author James Turk
|
||||
**/
|
||||
|
||||
@ -24,20 +24,22 @@
|
||||
namespace ZE
|
||||
{
|
||||
|
||||
//ZSound is almost exactly like ZMusic, when making changes check if that change should
|
||||
//be applied to ZMusic as well, roughly 90% of the time it should be.
|
||||
const int ZSound::LoopInfinite = -1;
|
||||
|
||||
ZSound::ZSound()
|
||||
ZSound::ZSound() :
|
||||
rEngine(ZEngine::GetInstance()),
|
||||
rSound(NULL),
|
||||
rChannelID(-1) //request channel ID
|
||||
{
|
||||
rEngine = ZEngine::GetInstance();
|
||||
rSound = NULL;
|
||||
rChannelID = -1; //request channel ID
|
||||
}
|
||||
|
||||
ZSound::ZSound(std::string filename)
|
||||
ZSound::ZSound(std::string filename) :
|
||||
rEngine(ZEngine::GetInstance()),
|
||||
rSound(NULL),
|
||||
rChannelID(-1) //request channel ID
|
||||
{
|
||||
rEngine = ZEngine::GetInstance();
|
||||
rSound = NULL;
|
||||
rChannelID = -1; //request channel ID
|
||||
Open(filename);
|
||||
}
|
||||
|
||||
|
@ -13,7 +13,7 @@
|
||||
\brief Source file for ZTimer.
|
||||
|
||||
Implementation of ZTimer, the basic Timer class for ZEngine.
|
||||
<br>$Id: ZE_ZTimer.cpp,v 1.8 2003/05/13 01:31:30 cozman Exp $<br>
|
||||
<br>$Id: ZE_ZTimer.cpp,v 1.9 2003/06/11 05:51:16 cozman Exp $<br>
|
||||
\author James Turk
|
||||
**/
|
||||
|
||||
@ -30,11 +30,11 @@ Uint32 ZTimer::GetParentTime() const
|
||||
return SDL_GetTicks();
|
||||
}
|
||||
|
||||
ZTimer::ZTimer(bool useZEngine)
|
||||
ZTimer::ZTimer(bool useZEngine) :
|
||||
rEngine(ZEngine::GetInstance()),
|
||||
rUseZEngine(useZEngine),
|
||||
rPaused(false)
|
||||
{
|
||||
rEngine = ZEngine::GetInstance();
|
||||
rUseZEngine = useZEngine;
|
||||
rPaused = false;
|
||||
Reset();
|
||||
}
|
||||
|
||||
@ -61,6 +61,7 @@ void ZTimer::Unpause()
|
||||
{
|
||||
if(rPaused)
|
||||
{
|
||||
//when unpausing update the total paused time by that pause
|
||||
rPausedTime += (GetParentTime()-rLastPause);
|
||||
rPaused = false;
|
||||
}
|
||||
@ -68,10 +69,10 @@ void ZTimer::Unpause()
|
||||
|
||||
Uint32 ZTimer::GetTime() const
|
||||
{
|
||||
if(rPaused)
|
||||
if(rPaused) //when paused timer adjusted to subtract currently paused time
|
||||
return GetParentTime() - (rPausedTime + (GetParentTime() - rLastPause));
|
||||
else
|
||||
return GetParentTime() - rPausedTime;
|
||||
return GetParentTime() - rPausedTime; //paused time is the cotal amt of time the program has been paused
|
||||
}
|
||||
|
||||
bool ZTimer::IsPaused() const
|
||||
|
7
src/external/SDLGL_Util.cpp
vendored
7
src/external/SDLGL_Util.cpp
vendored
@ -4,14 +4,13 @@
|
||||
|
||||
#include "external/SDLGL_Util.h"
|
||||
|
||||
//finds nearest power of two (going up), needed for surfaces
|
||||
int power_of_two(int input)
|
||||
{
|
||||
int value = 1;
|
||||
|
||||
while(value < input)
|
||||
{
|
||||
value <<= 1;
|
||||
}
|
||||
while(value < input) //texture coord must be >= input
|
||||
value <<= 1; //value <<= 1 is the same as value *= 2
|
||||
return value;
|
||||
}
|
||||
|
||||
|
@ -8,7 +8,7 @@
|
||||
and the home of this Library is http://www.zengine.sourceforge.net
|
||||
*******************************************************************************/
|
||||
|
||||
/*$Id: ZFontTest.cpp,v 1.11 2003/01/12 19:00:14 cozman Exp $*/
|
||||
/*$Id: ZFontTest.cpp,v 1.12 2003/06/11 05:51:47 cozman Exp $*/
|
||||
|
||||
#include <ZEngine.h>
|
||||
#include <string>
|
||||
@ -42,7 +42,7 @@ void Test()
|
||||
//Open and Setup all the Fonts and Create Images//
|
||||
ZImage text[6];
|
||||
ZFont almonte("data/almontew.ttf",48), axaxax("data/axaxax.ttf",32), betsy("data/betsy.ttf",64);
|
||||
almonte.SetColor(255,0,0);
|
||||
almonte.SetColor(255,0,0,128);
|
||||
almonte.DrawText("This is the font test.",text[0]);
|
||||
axaxax.SetColor(0,255,255);
|
||||
axaxax.SetStyle(true,false,false);
|
||||
|
@ -8,7 +8,7 @@
|
||||
and the home of this Library is http://www.zengine.sourceforge.net
|
||||
*******************************************************************************/
|
||||
|
||||
/*$Id: ZImageTest.cpp,v 1.17 2003/04/27 18:55:00 cozman Exp $*/
|
||||
/*$Id: ZImageTest.cpp,v 1.18 2003/06/11 05:51:47 cozman Exp $*/
|
||||
|
||||
#include <ZEngine.h>
|
||||
#include <string>
|
||||
@ -21,7 +21,7 @@ bool Initialize()
|
||||
ZConfigFile cfg("tests.zcf");
|
||||
int w,h,bpp,rate;
|
||||
bool fs;
|
||||
string title;
|
||||
std::string title;
|
||||
|
||||
w = cfg.GetInt("ZImageTest","width",800);
|
||||
h = cfg.GetInt("ZImageTest","height",600);
|
||||
|
@ -8,7 +8,7 @@
|
||||
and the home of this Library is http://www.zengine.sourceforge.net
|
||||
*******************************************************************************/
|
||||
|
||||
/*$Id: ZMouseTest.cpp,v 1.12 2003/01/12 19:00:17 cozman Exp $*/
|
||||
/*$Id: ZMouseTest.cpp,v 1.13 2003/06/11 05:51:47 cozman Exp $*/
|
||||
|
||||
#include <ZEngine.h>
|
||||
#include <string>
|
||||
@ -21,7 +21,7 @@ bool Initialize()
|
||||
ZConfigFile cfg("tests.zcf");
|
||||
int w,h,bpp,rate;
|
||||
bool fs;
|
||||
string title;
|
||||
std::string title;
|
||||
|
||||
w = cfg.GetInt("ZMouseTest","width",800);
|
||||
h = cfg.GetInt("ZMouseTest","height",600);
|
||||
|
@ -8,7 +8,7 @@
|
||||
and the home of this Library is http://www.zengine.sourceforge.net
|
||||
*******************************************************************************/
|
||||
|
||||
/*$Id: ZMusicTest.cpp,v 1.14 2003/02/10 05:16:30 cozman Exp $*/
|
||||
/*$Id: ZMusicTest.cpp,v 1.15 2003/06/11 05:51:47 cozman Exp $*/
|
||||
|
||||
#include <ZEngine.h>
|
||||
#include <string>
|
||||
@ -21,7 +21,7 @@ bool Initialize()
|
||||
ZConfigFile cfg("tests.zcf");
|
||||
int w,h,bpp,rate;
|
||||
bool fs;
|
||||
string title;
|
||||
std::string title;
|
||||
|
||||
w = cfg.GetInt("ZMusicTest","width",800);
|
||||
h = cfg.GetInt("ZMusicTest","height",600);
|
||||
|
@ -8,7 +8,7 @@
|
||||
and the home of this Library is http://www.zengine.sourceforge.net
|
||||
*******************************************************************************/
|
||||
|
||||
/*$Id: ZRectTest.cpp,v 1.15 2003/01/12 19:00:21 cozman Exp $*/
|
||||
/*$Id: ZRectTest.cpp,v 1.16 2003/06/11 05:51:47 cozman Exp $*/
|
||||
|
||||
#include <ZEngine.h>
|
||||
#include <string>
|
||||
@ -21,7 +21,7 @@ bool Initialize()
|
||||
ZConfigFile cfg("tests.zcf");
|
||||
int w,h,bpp,rate;
|
||||
bool fs;
|
||||
string title;
|
||||
std::string title;
|
||||
|
||||
w = cfg.GetInt("ZRectTest","Width",800);
|
||||
h = cfg.GetInt("ZRectTest","height",600);
|
||||
|
@ -8,7 +8,7 @@
|
||||
and the home of this Library is http://www.zengine.sourceforge.net
|
||||
*******************************************************************************/
|
||||
|
||||
/*$Id: ZSoundTest.cpp,v 1.12 2003/02/10 05:16:30 cozman Exp $*/
|
||||
/*$Id: ZSoundTest.cpp,v 1.13 2003/06/11 05:51:47 cozman Exp $*/
|
||||
|
||||
#include <ZEngine.h>
|
||||
#include <string>
|
||||
@ -21,7 +21,7 @@ bool Initialize()
|
||||
ZConfigFile cfg("tests.zcf");
|
||||
int w,h,bpp,rate;
|
||||
bool fs;
|
||||
string title;
|
||||
std::string title;
|
||||
|
||||
w = cfg.GetInt("ZSoundTest","width",800);
|
||||
h = cfg.GetInt("ZSoundTest","height",600);
|
||||
@ -39,7 +39,7 @@ void Test()
|
||||
{
|
||||
ZEngine *engine = ZEngine::GetInstance();
|
||||
|
||||
string name[5] = { "monkey", "rooster", "kick", "carcrash", "whip" };
|
||||
std::string name[5] = { "monkey", "rooster", "kick", "carcrash", "whip" };
|
||||
ZSound sample[5];
|
||||
ZFont font("data/almontew.ttf",48);
|
||||
ZImage text[6];
|
||||
|
@ -8,7 +8,7 @@
|
||||
and the home of this Library is http://www.zengine.sourceforge.net
|
||||
*******************************************************************************/
|
||||
|
||||
/*$Id: ZTimerTest.cpp,v 1.12 2003/02/10 05:16:30 cozman Exp $*/
|
||||
/*$Id: ZTimerTest.cpp,v 1.13 2003/06/11 05:51:47 cozman Exp $*/
|
||||
|
||||
#include <ZEngine.h>
|
||||
#include <string>
|
||||
@ -21,7 +21,7 @@ bool Initialize()
|
||||
ZConfigFile cfg("tests.zcf");
|
||||
int w,h,bpp,rate;
|
||||
bool fs;
|
||||
string title;
|
||||
std::string title;
|
||||
|
||||
w = cfg.GetInt("ZTimerTest","width",800);
|
||||
h = cfg.GetInt("ZTimerTest","height",600);
|
||||
@ -39,7 +39,7 @@ void Test()
|
||||
{
|
||||
ZEngine *engine = ZEngine::GetInstance();
|
||||
|
||||
string TimerName[3] = {"ZEngine Timer", "ZEngine Hooked Timer", "SDL Hooked Timer"};
|
||||
std::string TimerName[3] = {"ZEngine Timer", "ZEngine Hooked Timer", "SDL Hooked Timer"};
|
||||
int curTimer = 0;
|
||||
|
||||
//Open and Setup Font and Create Images and Timers//
|
||||
|
Loading…
Reference in New Issue
Block a user