本文整理汇总了C++中IReader::length方法的典型用法代码示例。如果您正苦于以下问题:C++ IReader::length方法的具体用法?C++ IReader::length怎么用?C++ IReader::length使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类IReader
的用法示例。
在下文中一共展示了IReader::length方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: pointer
void global_slots_data:: Load ( )
{
// Load .details
// copy
//if()
IReader* R = FS.r_open ( "$level$", "build.details" );
R->r_chunk ( 0, &dtH );
R->seek ( 0 );
u32 check_sum = crc32( R-> pointer(), R->length());
recalculation_data.load( check_sum );
if( !recalculation_data.recalculating() )
{
IWriter* W = FS.w_open ( "$level$", "level.details" );
W->w ( R->pointer(), R->length() );
FS.w_close ( W );
}
FS.r_close ( R );
// re-open
string_path N;
FS.update_path ( N, "$level$", "level.details" );
dtFS = xr_new<CVirtualFileRW> ( N );
R_ASSERT ( dtH.version()==DETAIL_VERSION );
dtFS->find_chunk ( 2 );
dtS = (DetailSlot*)dtFS->pointer();
}
示例2: sizeof
bool CALifeStorageManager::load (LPCSTR save_name_no_check)
{
LPCSTR game_saves_path = FS.get_path("$game_saves$")->m_Path;
string_path save_name;
strncpy_s (save_name, sizeof(save_name), save_name_no_check, sizeof(save_name)-5-xr_strlen(SAVE_EXTENSION)-xr_strlen(game_saves_path));
CTimer timer;
timer.Start ();
string_path save;
xr_strcpy (save,m_save_name);
if (!save_name) {
if (!xr_strlen(m_save_name))
R_ASSERT2 (false,"There is no file name specified!");
}
else
{
strconcat (sizeof(m_save_name), m_save_name, save_name, SAVE_EXTENSION);
}
string_path file_name;
FS.update_path (file_name,"$game_saves$",m_save_name);
xr_strcpy (g_last_saved_game, save_name);
xr_strcpy (g_bug_report_file, file_name);
IReader *stream;
stream = FS.r_open(file_name);
if (!stream) {
Msg ("* Cannot find saved game %s",file_name);
xr_strcpy (m_save_name,save);
return (false);
}
CHECK_OR_EXIT (CSavedGameWrapper::valid_saved_game(*stream),make_string("%s\nSaved game version mismatch or saved game is corrupted",file_name));
/*
string512 temp;
strconcat (sizeof(temp),temp,CStringTable().translate("st_loading_saved_game").c_str()," \"",save_name,SAVE_EXTENSION,"\"");
g_pGamePersistent->LoadTitle(temp);
*/
g_pGamePersistent->LoadTitle();
unload ();
reload (m_section);
u32 source_count = stream->r_u32();
void *source_data = xr_malloc(source_count);
rtc_decompress (source_data,source_count,stream->pointer(),stream->length() - 3*sizeof(u32));
FS.r_close (stream);
load (source_data, source_count, file_name);
xr_free (source_data);
groups().on_after_game_load ();
VERIFY (graph().actor());
Msg ("* Game %s is successfully loaded from file '%s' (%.3fs)",save_name, file_name,timer.GetElapsed_sec());
return (true);
}
示例3:
void CGameGraphBuilder::load_graph_points (const float &start, const float &amount)
{
Progress (start);
Msg ("Loading graph points");
string_path spawn_file_name;
strconcat (sizeof(spawn_file_name),spawn_file_name,*m_level_name,"level.spawn");
IReader *reader = FS.r_open(spawn_file_name);
u32 id;
NET_Packet net_packet;
for (
IReader *chunk = reader->open_chunk_iterator(id);
chunk;
chunk = reader->open_chunk_iterator(id,chunk)
)
{
net_packet.B.count = chunk->length();
chunk->r (net_packet.B.data,net_packet.B.count);
load_graph_point (net_packet);
}
FS.r_close (reader);
Msg ("%d graph points loaded",graph().vertices().size());
Progress (start + amount);
}
示例4: stream
void ppmd_initialize ()
{
if (trained_model)
trained_model->rewind ();
static bool initialized = false;
if (initialized)
return;
string_path file_name;
FS.update_path (file_name,"$game_config$","mp\\!PPMd.mdl");
if (FS.exist(file_name)) {
IReader *reader = FS.r_open(file_name);
R_ASSERT (reader);
u32 buffer_size = reader->length();
u8 *buffer = (u8*)xr_malloc(buffer_size);
reader->r (buffer,buffer_size);
FS.r_close (reader);
trained_model = new stream(buffer,buffer_size);
}
initialized = true;
if (StartSubAllocator(suballocator_size))
return;
exit (-1);
}
示例5:
BOOL testEqual (LPCSTR path, IReader* base)
{
IReader* test = FS.r_open (path);
if (test->length() != base->length())
{
return FALSE;
}
return 0==memcmp(test->pointer(),base->pointer(),base->length());
}
示例6: transfer
void transfer(const char *name, xr_vector<T> &dest, IReader& F, u32 chunk)
{
IReader* O = F.open_chunk(chunk);
u32 count = O?(O->length()/sizeof(T)):0;
clMsg ("* %16s: %d",name,count);
if (count)
{
dest.reserve(count);
dest.insert (dest.begin(), (T*)O->pointer(), (T*)O->pointer() + count);
}
if (O) O->close ();
}
示例7: testEqual
bool xrCompressor::testEqual(LPCSTR path, IReader* base)
{
bool res = false;
IReader* test = FS.r_open (path);
if(test->length() == base->length())
{
if( 0==memcmp(test->pointer(),base->pointer(),base->length()) )
res = TRUE;
}
FS.r_close (test);
return res;
}
示例8:
bool CSavedGameWrapper::valid_saved_game (IReader &stream)
{
if (stream.length() < 8)
return (false);
if (stream.r_u32() != u32(-1))
return (false);
if (stream.r_u32() < 0x0002)
return (false);
return (true);
}
示例9: LoadActions
u32 CParticleManager::LoadActions(int alist_id, IReader& R)
{
// Execute the specified action list.
ParticleActions* pa = GetActionListPtr(alist_id);
pa->clear ();
if (R.length()){
u32 cnt = R.r_u32();
for (u32 k=0; k<cnt; k++){
ParticleAction* act = CreateAction ((PActionEnum)R.r_u32());
act->Load (R);
pa->append (act);
}
}
return pa->size();
}
示例10: CEffectorCam
CDemoPlay::CDemoPlay(const char *name, float ms, u32 cycles, float life_time) : CEffectorCam(cefDemo,life_time/*,FALSE*/)
{
Msg ("*** Playing demo: %s",name);
Console->Execute ("hud_weapon 0");
if( g_bBenchmark || g_SASH.IsRunning() )
Console->Execute ("hud_draw 0");
fSpeed = ms;
dwCyclesLeft = cycles?cycles:1;
m_pMotion = 0;
m_MParam = 0;
string_path nm, fn;
xr_strcpy (nm,sizeof(nm),name);
LPSTR extp =strext(nm);
if (extp)
xr_strcpy ( nm, sizeof( nm ) - ( extp - nm ), ".anm");
if ( FS.exist(fn,"$level$",nm) || FS.exist(fn,"$game_anims$",nm) )
{
m_pMotion = xr_new<COMotion> ();
m_pMotion->LoadMotion (fn);
m_MParam = xr_new<SAnimParams> ();
m_MParam->Set (m_pMotion);
m_MParam->Play ();
}else{
if (!FS.exist(name)) {
g_pGameLevel->Cameras().RemoveCamEffector (cefDemo);
return ;
}
IReader* fs = FS.r_open (name);
u32 sz = fs->length();
if (sz%sizeof(Fmatrix) != 0) {
FS.r_close (fs);
g_pGameLevel->Cameras().RemoveCamEffector (cefDemo);
return ;
}
seq.resize (sz/sizeof(Fmatrix));
m_count = seq.size();
CopyMemory (&*seq.begin(),fs->pointer(),sz);
FS.r_close (fs);
Log ("~ Total key-frames: ",m_count);
}
stat_started = FALSE;
Device.PreCache (50, true, false);
}
示例11: ai
CSavedGameWrapper::CSavedGameWrapper (LPCSTR saved_game_name)
{
string_path file_name;
saved_game_full_name (saved_game_name,file_name);
R_ASSERT3 (FS.exist(file_name),"There is no saved game ",file_name);
IReader *stream = FS.r_open(file_name);
if (!valid_saved_game(*stream)) {
FS.r_close (stream);
CALifeTimeManager time_manager(alife_section);
m_game_time = time_manager.game_time();
m_actor_health = 1.f;
m_level_id = ai().game_graph().header().levels().begin()->first;
return;
}
u32 source_count = stream->r_u32();
void *source_data = xr_malloc(source_count);
rtc_decompress (source_data,source_count,stream->pointer(),stream->length() - 3*sizeof(u32));
FS.r_close (stream);
IReader reader(source_data,source_count);
{
CALifeTimeManager time_manager(alife_section);
time_manager.load (reader);
m_game_time = time_manager.game_time();
}
{
R_ASSERT2 (reader.find_chunk(OBJECT_CHUNK_DATA),"Can't find chunk OBJECT_CHUNK_DATA!");
u32 count = reader.r_u32();
VERIFY (count > 0);
CSE_ALifeDynamicObject *object = CALifeObjectRegistry::get_object(reader);
VERIFY (object->ID == 0);
CSE_ALifeCreatureActor *actor = smart_cast<CSE_ALifeCreatureActor*>(object);
VERIFY (actor);
m_actor_health = actor->g_Health();
m_level_id = ai().game_graph().vertex(object->m_tGraphID)->level_id();
F_entity_Destroy (object);
}
xr_free (source_data);
}
示例12: operator
bool operator ()(char* o){
//compare file names
int eq = xr_strcmp(m_full_name,o);
if(0!=eq)
return false;
if( !m_flags.test(eDontCheckFileSize) ){
//compare file size
const CLocatorAPI::file* f = m_fs_old->exist("$target_folder$",o);
u32 file_size = f->size_real;
if ( (f->vfs==0xffffffff) && (file_size != m_file_size) )
return false;
};
//compare file crc
if( !m_crc32 && !m_flags.test(eDontCheckCRC) ){
IReader* r = m_fs_new->r_open ("$target_folder$",m_full_name);
m_crc32 = crc32 (r->pointer(),r->length());
m_fs_new->r_close(r);
};
if( !m_flags.test(eDontCheckCRC) ){
IReader* r_ = m_fs_old->r_open("$target_folder$",o);
u32 crc32_ = crc32 (r_->pointer(),r_->length());
m_fs_old->r_close(r_);
if(m_crc32!=crc32_)
return false;
}
if( !m_flags.test(eDontCheckBinary) ){
//compare files binary content
IReader* f1 = m_fs_new->r_open ("$target_folder$",m_full_name);
IReader* f2 = m_fs_old->r_open ("$target_folder$",o);
int res = memcmp(f1->pointer(),f2->pointer(),f1->length());
m_fs_new->r_close(f1);
m_fs_old->r_close(f2);
if(0!=res)
return false;
}
return true;
}
示例13:
HRESULT __stdcall Open (D3DXINCLUDE_TYPE IncludeType, LPCSTR pFileName, LPCVOID pParentData, LPCVOID *ppData, UINT *pBytes)
{
string_path pname;
strconcat (sizeof(pname),pname,::Render->getShaderPath(),pFileName);
IReader* R = FS.r_open ("$game_shaders$",pname);
if (0==R) {
// possibly in shared directory or somewhere else - open directly
R = FS.r_open ("$game_shaders$",pFileName);
if (0==R) return E_FAIL;
}
// duplicate and zero-terminate
u32 size = R->length();
u8* data = xr_alloc<u8> (size + 1);
CopyMemory (data,R->pointer(),size);
data[size] = 0;
FS.r_close (R);
*ppData = data;
*pBytes = size;
return D3D_OK;
}
示例14: LPSTR
//--------------------------------------------------------------------------------------------------------------
SPS* CResourceManager::_CreatePS (LPCSTR name)
{
LPSTR N = LPSTR(name);
map_PS::iterator I = m_ps.find (N);
if (I!=m_ps.end()) return I->second;
else
{
SPS* _ps = xr_new<SPS> ();
_ps->dwFlags |= xr_resource_flagged::RF_REGISTERED;
m_ps.insert (mk_pair(_ps->set_name(name),_ps));
if (0==stricmp(name,"null")) {
_ps->ps = NULL;
return _ps;
}
// Open file
includer Includer;
string_path cname;
strconcat (sizeof(cname), cname,::Render->getShaderPath(),name,".ps");
FS.update_path (cname, "$game_shaders$", cname);
// duplicate and zero-terminate
IReader* R = FS.r_open(cname);
R_ASSERT2 (R,cname);
u32 size = R->length();
char* data = xr_alloc<char>(size + 1);
CopyMemory (data,R->pointer(),size);
data[size] = 0;
FS.r_close (R);
// Select target
LPCSTR c_target = "ps_2_0";
LPCSTR c_entry = "main";
if (strstr(data,"main_ps_1_1")) { c_target = "ps_1_1"; c_entry = "main_ps_1_1"; }
if (strstr(data,"main_ps_1_2")) { c_target = "ps_1_2"; c_entry = "main_ps_1_2"; }
if (strstr(data,"main_ps_1_3")) { c_target = "ps_1_3"; c_entry = "main_ps_1_3"; }
if (strstr(data,"main_ps_1_4")) { c_target = "ps_1_4"; c_entry = "main_ps_1_4"; }
if (strstr(data,"main_ps_2_0")) { c_target = "ps_2_0"; c_entry = "main_ps_2_0"; }
// Compile
LPD3DXBUFFER pShaderBuf = NULL;
LPD3DXBUFFER pErrorBuf = NULL;
LPD3DXSHADER_CONSTANTTABLE pConstants = NULL;
HRESULT _hr = S_OK;
_hr = ::Render->shader_compile (name,data,size, NULL, &Includer, c_entry, c_target, D3DXSHADER_DEBUG | D3DXSHADER_PACKMATRIX_ROWMAJOR /*| D3DXSHADER_PREFER_FLOW_CONTROL*/, &pShaderBuf, &pErrorBuf, NULL);
//_hr = D3DXCompileShader (text,text_size, NULL, &Includer, c_entry, c_target, D3DXSHADER_DEBUG | D3DXSHADER_PACKMATRIX_ROWMAJOR, &pShaderBuf, &pErrorBuf, NULL);
xr_free (data);
LPCSTR last_error = "";
if (SUCCEEDED(_hr))
{
if (pShaderBuf)
{
_hr = HW.pDevice->CreatePixelShader ((DWORD*)pShaderBuf->GetBufferPointer(), &_ps->ps);
if (SUCCEEDED(_hr)) {
LPCVOID data = NULL;
_hr = D3DXFindShaderComment ((DWORD*)pShaderBuf->GetBufferPointer(),MAKEFOURCC('C','T','A','B'),&data,NULL);
if (SUCCEEDED(_hr) && data)
{
pConstants = LPD3DXSHADER_CONSTANTTABLE(data);
_ps->constants.parse (pConstants,0x1);
}
else
_hr = E_FAIL;
}
}
else
_hr = E_FAIL;
}else
{
if (pErrorBuf)
last_error = (LPCSTR)pErrorBuf->GetBufferPointer();
}
// Real Wolf.10.12.2014
string1024 buff;
if (FAILED(_hr))
{
if (xr_strlen(last_error))
sprintf_s(buff, 1023, "ќшибка компил¤ции шейдера %s: %s ", name, last_error);
else
sprintf_s(buff, 1023, "ќшибка компил¤ции шейдера %s. ¬озможна ошибка в скрипте, или\n видеокарта не поддерживает пиксельные шейдеры 1.1", name);
Msg(buff);
}
pConstants = NULL;
_RELEASE(pShaderBuf);
_RELEASE(pErrorBuf);
CHECK_OR_EXIT (
!FAILED(_hr),
make_string(buff)
);
return _ps;
}
}
示例15: if
ID3DBaseTexture* CRender::texture_load(LPCSTR fRName, u32& ret_msize)
{
ID3DTexture2D* pTexture2D = NULL;
IDirect3DCubeTexture9* pTextureCUBE = NULL;
string_path fn;
u32 dwWidth,dwHeight;
u32 img_size = 0;
int img_loaded_lod = 0;
D3DFORMAT fmt;
u32 mip_cnt=u32(-1);
// validation
R_ASSERT (fRName);
R_ASSERT (fRName[0]);
// make file name
string_path fname;
xr_strcpy(fname,fRName); //. andy if (strext(fname)) *strext(fname)=0;
fix_texture_name (fname);
IReader* S = NULL;
//if (FS.exist(fn,"$game_textures$",fname, ".dds") && strstr(fname,"_bump")) goto _BUMP;
if (!FS.exist(fn,"$game_textures$", fname, ".dds") && strstr(fname,"_bump")) goto _BUMP_from_base;
if (FS.exist(fn,"$level$", fname, ".dds")) goto _DDS;
if (FS.exist(fn,"$game_saves$", fname, ".dds")) goto _DDS;
if (FS.exist(fn,"$game_textures$", fname, ".dds")) goto _DDS;
#ifdef _EDITOR
ELog.Msg(mtError,"Can't find texture '%s'",fname);
return 0;
#else
Msg("! Can't find texture '%s'",fname);
R_ASSERT(FS.exist(fn,"$game_textures$", "ed\\ed_not_existing_texture",".dds"));
goto _DDS;
// Debug.fatal(DEBUG_INFO,"Can't find texture '%s'",fname);
#endif
_DDS:
{
// Load and get header
D3DXIMAGE_INFO IMG;
S = FS.r_open (fn);
#ifdef DEBUG
Msg ("* Loaded: %s[%d]b",fn,S->length());
#endif // DEBUG
img_size = S->length ();
R_ASSERT (S);
HRESULT const result = D3DXGetImageInfoFromFileInMemory (S->pointer(),S->length(),&IMG);
if ( FAILED(result) ) {
Msg ("! Can't get image info for texture '%s'",fn);
FS.r_close (S);
string_path temp;
R_ASSERT ( FS.exist( temp, "$game_textures$", "ed\\ed_not_existing_texture", ".dds" ) );
R_ASSERT ( xr_strcmp(temp,fn) );
xr_strcpy ( fn, temp );
goto _DDS;
}
if (IMG.ResourceType == D3DRTYPE_CUBETEXTURE) goto _DDS_CUBE;
else goto _DDS_2D;
_DDS_CUBE:
{
HRESULT const result =
D3DXCreateCubeTextureFromFileInMemoryEx(
HW.pDevice,
S->pointer(),S->length(),
D3DX_DEFAULT,
IMG.MipLevels,0,
IMG.Format,
D3DPOOL_MANAGED,
D3DX_DEFAULT,
D3DX_DEFAULT,
0,&IMG,0,
&pTextureCUBE
);
FS.r_close (S);
if ( FAILED(result) ) {
Msg ("! Can't load texture '%s'",fn);
string_path temp;
R_ASSERT ( FS.exist( temp, "$game_textures$", "ed\\ed_not_existing_texture", ".dds" ) );
R_ASSERT ( xr_strcmp(temp,fn) );
xr_strcpy ( fn, temp );
goto _DDS;
}
// OK
dwWidth = IMG.Width;
dwHeight = IMG.Height;
fmt = IMG.Format;
ret_msize = calc_texture_size(img_loaded_lod, mip_cnt, img_size);
mip_cnt = pTextureCUBE->GetLevelCount();
return pTextureCUBE;
}
_DDS_2D:
{
strlwr (fn);
//.........这里部分代码省略.........