Update of /cvsroot/wpdev/wolfpack
In directory sc8-pr-cvs1:/tmp/cvs-serv17965
Added Files:
basedef.cpp basedef.h
Log Message:
Removed init_sounds
--- NEW FILE: basedef.cpp ---
#include "basedef.h"
#include "globals.h"
#include "wpdefmanager.h"
#include "prototypes.h"
#include <string.h>
cCharBaseDef *cBaseDefManager::getCharBaseDef( unsigned short id )
{
if( id >= 0x400 )
return 0;
return chardefs[ id ];
}
void cBaseDefManager::load()
{
for( unsigned int i = 0; i < 0x400; ++i )
{
// Check for <basechar id="">
const cElement *element = DefManager->getDefinition( WPDT_CHARBASE, "0x" + QString::number( i, 16 ) );
if( !element )
{
chardefs[i] = 0;
continue;
}
chardefs[i] = new cCharBaseDef;
chardefs[i]->basesound_ = hex2dec( element->getAttribute( "basesound", "0" ) ).toUShort();
chardefs[i]->soundmode_ = hex2dec( element->getAttribute( "soundmode", "0" ) ).toUShort();
chardefs[i]->shrinked_ = hex2dec( element->getAttribute( "shrinked", "0" ) ).toUShort();
chardefs[i]->flags_ = hex2dec( element->getAttribute( "flags", "0" ) ).toUInt();
chardefs[i]->type_ = hex2dec( element->getAttribute( "type", "0" ) ).toUShort();
}
}
void cBaseDefManager::unload()
{
unsigned short i = 0;
while( i < 0x400 )
delete chardefs[i++];
memset( &chardefs, 0, 0x400 * sizeof( cCharBaseDef* ) );
}
--- NEW FILE: basedef.h ---
#if !defined( __BASEDEF_H__ )
#define __BASEDEF_H__
#include "singleton.h"
/*
Class which contains information about characters that never changes.
*/
class cCharBaseDef
{
friend class cBaseDefManager;
protected:
// Sounds
unsigned short basesound_;
unsigned char soundmode_;
unsigned short shrinked_;
unsigned int flags_;
unsigned char type_;
public:
cCharBaseDef() {}
virtual ~cCharBaseDef() {}
// Getters ONLY
// These are READONLY PROPERTIES!
unsigned short basesound() const { return basesound_; }
unsigned char soundmode() const { return soundmode_; }
unsigned short shrinked() const { return shrinked_; }
unsigned int flags() const { return flags_; }
unsigned char type() const { return type_; }
};
class cBaseDefManager
{
protected:
cCharBaseDef *chardefs[0x400]; // 0x400 entries in anim.idx
public:
cBaseDefManager() {}
virtual ~cBaseDefManager() {}
cCharBaseDef *getCharBaseDef( unsigned short id );
void load();
void reload()
{
unload();
load();
}
void unload();
};
typedef SingletonHolder< cBaseDefManager > BaseDefManager;
#endif
|