本文整理汇总了C++中CFile::ReadByte方法的典型用法代码示例。如果您正苦于以下问题:C++ CFile::ReadByte方法的具体用法?C++ CFile::ReadByte怎么用?C++ CFile::ReadByte使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CFile
的用法示例。
在下文中一共展示了CFile::ReadByte方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: ReadExtras
void CSegment::ReadExtras (CFile& cf)
{
m_nType = cf.ReadByte ();
m_nMatCen = cf.ReadByte ();
m_value = cf.ReadByte ();
m_flags = cf.ReadByte ();
m_xAvgSegLight = cf.ReadFix ();
}
示例2: PIGBitmapHeaderD1Read
/*
* reads a descent 1 tPIGBitmapHeader structure from a CFile
*/
void PIGBitmapHeaderD1Read (tPIGBitmapHeader *dbh, CFile& cf)
{
cf.Read (dbh->name, 8, 1);
dbh->dflags = cf.ReadByte ();
dbh->width = cf.ReadByte ();
dbh->height = cf.ReadByte ();
dbh->wh_extra = 0;
dbh->flags = cf.ReadByte ();
dbh->bmAvgColor = cf.ReadByte ();
dbh->offset = cf.ReadInt ();
}
示例3: ReadType
void CSegment::ReadType (CFile& cf, ubyte flags)
{
if (flags & (1 << MAX_SIDES_PER_SEGMENT)) {
m_nType = cf.ReadByte ();
m_nMatCen = cf.ReadByte ();
m_value = char (cf.ReadShort ());
}
else {
m_nType = 0;
m_nMatCen = -1;
m_value = 0;
}
}
示例4: Read
void CSegment::Read (CFile& cf)
{
#if DBG
if (Index () == nDbgSeg)
nDbgSeg = nDbgSeg;
#endif
if (gameStates.app.bD2XLevel) {
m_owner = cf.ReadByte ();
m_group = cf.ReadByte ();
}
else {
m_owner = -1;
m_group = -1;
}
ubyte flags = bNewFileFormat ? cf.ReadByte () : 0x7f;
if (gameData.segs.nLevelVersion == 5) { // d2 SHAREWARE level
ReadType (cf, flags);
ReadVerts (cf);
ReadChildren (cf, flags);
}
else {
ReadChildren (cf, flags);
ReadVerts (cf);
if (gameData.segs.nLevelVersion <= 1) { // descent 1 level
ReadType (cf, flags);
}
}
m_objects = -1;
if (gameData.segs.nLevelVersion <= 5) // descent 1 thru d2 SHAREWARE level
m_xAvgSegLight = fix (cf.ReadShort ()) << 4;
// Read the walls as a 6 byte array
flags = bNewFileFormat ? cf.ReadByte () : 0x3f;
int i;
for (i = 0; i < MAX_SIDES_PER_SEGMENT; i++)
m_sides [i].ReadWallNum (cf, (flags & (1 << i)) != 0);
ushort sideVerts [4];
for (i = 0; i < MAX_SIDES_PER_SEGMENT; i++) {
::GetCorners (Index (), i, sideVerts);
m_sides [i].Read (cf, sideVerts, m_children [i] == -1);
}
}
示例5: ReadColor
void ReadColor (CFile& cf, tFaceColor *pc, int bFloatData, int bRegisterColor)
{
pc->index = cf.ReadByte ();
if (bFloatData) {
tRgbColord c;
cf.Read (&c, sizeof (c), 1);
pc->color.red = (float) c.red;
pc->color.green = (float) c.green;
pc->color.blue = (float) c.blue;
}
else {
int c = cf.ReadInt ();
pc->color.red = (float) c / (float) 0x7fffffff;
c = cf.ReadInt ();
pc->color.green = (float) c / (float) 0x7fffffff;
c = cf.ReadInt ();
pc->color.blue = (float) c / (float) 0x7fffffff;
}
if (bRegisterColor &&
(((pc->color.red > 0) && (pc->color.red < 1)) ||
((pc->color.green > 0) && (pc->color.green < 1)) ||
((pc->color.blue > 0) && (pc->color.blue < 1))))
gameStates.render.bColored = 1;
pc->color.alpha = 1;
}
示例6: LoadState
void CTrigger::LoadState (CFile& cf, bool bObjTrigger)
{
m_info.nType = (ubyte) cf.ReadByte ();
if (bObjTrigger && (saveGameManager.Version () >= 41))
m_info.flags = cf.ReadShort ();
else
m_info.flags = short (cf.ReadByte ());
m_info.nLinks = cf.ReadByte ();
m_info.value = cf.ReadFix ();
m_info.time = cf.ReadFix ();
for (int i = 0; i < MAX_TRIGGER_TARGETS; i++) {
m_info.segments [i] = cf.ReadShort ();
m_info.sides [i] = cf.ReadShort ();
}
m_info.nChannel = -1;
m_info.tOperated = (saveGameManager.Version () < 44) ? -1 : cf.ReadFix ();
}
示例7: ReadTMapInfoN
/*
* reads n tTexMapInfo structs from a CFile
*/
int ReadTMapInfoN (CArray<tTexMapInfo>& ti, int n, CFile& cf)
{
int i;
for (i = 0;i < n;i++) {
ti [i].flags = cf.ReadByte ();
ti [i].pad [0] = cf.ReadByte ();
ti [i].pad [1] = cf.ReadByte ();
ti [i].pad [2] = cf.ReadByte ();
ti [i].lighting = cf.ReadFix ();
ti [i].damage = cf.ReadFix ();
ti [i].nEffectClip = cf.ReadShort ();
ti [i].destroyed = cf.ReadShort ();
ti [i].slide_u = cf.ReadShort ();
ti [i].slide_v = cf.ReadShort ();
}
return i;
}
示例8: ReadTMapInfoND1
int ReadTMapInfoND1 (tTexMapInfo *ti, int n, CFile& cf)
{
int i;
for (i = 0;i < n;i++) {
cf.Seek (13, SEEK_CUR);// skip filename
ti [i].flags = cf.ReadByte ();
ti [i].lighting = cf.ReadFix ();
ti [i].damage = cf.ReadFix ();
ti [i].nEffectClip = cf.ReadInt ();
}
return i;
}
示例9: Read
void CObject::Read (CFile& cf)
{
#if DBG
if (OBJ_IDX (this) == nDbgObj)
nDbgObj = nDbgObj;
#endif
info.nType = cf.ReadByte ();
info.nId = cf.ReadByte ();
info.controlType = cf.ReadByte ();
info.movementType = cf.ReadByte ();
info.renderType = cf.ReadByte ();
info.nFlags = cf.ReadByte ();
info.nSegment = cf.ReadShort ();
info.nAttachedObj = -1;
cf.ReadVector (info.position.vPos);
cf.ReadMatrix (info.position.mOrient);
info.xSize = cf.ReadFix ();
info.xShields = cf.ReadFix ();
cf.ReadVector (info.vLastPos);
info.contains.nType = cf.ReadByte ();
info.contains.nId = cf.ReadByte ();
info.contains.nCount = cf.ReadByte ();
switch (info.movementType) {
case MT_PHYSICS:
cf.ReadVector (mType.physInfo.velocity);
cf.ReadVector (mType.physInfo.thrust);
mType.physInfo.mass = cf.ReadFix ();
mType.physInfo.drag = cf.ReadFix ();
mType.physInfo.brakes = cf.ReadFix ();
cf.ReadVector (mType.physInfo.rotVel);
cf.ReadVector (mType.physInfo.rotThrust);
mType.physInfo.turnRoll = cf.ReadFixAng ();
mType.physInfo.flags = cf.ReadShort ();
break;
case MT_SPINNING:
cf.ReadVector (mType.spinRate);
break;
case MT_NONE:
break;
default:
Int3();
}
int i;
switch (info.controlType) {
case CT_AI:
cType.aiInfo.behavior = cf.ReadByte ();
for (i = 0; i < MAX_AI_FLAGS; i++)
cType.aiInfo.flags [i] = cf.ReadByte ();
cType.aiInfo.nHideSegment = cf.ReadShort ();
cType.aiInfo.nHideIndex = cf.ReadShort ();
cType.aiInfo.nPathLength = cf.ReadShort ();
cType.aiInfo.nCurPathIndex = (char) cf.ReadShort ();
if (gameTopFileInfo.fileinfoVersion <= 25) {
cf.ReadShort (); // cType.aiInfo.follow_path_start_seg =
cf.ReadShort (); // cType.aiInfo.follow_path_end_seg =
}
break;
case CT_EXPLOSION:
cType.explInfo.nSpawnTime = cf.ReadFix ();
cType.explInfo.nDeleteTime = cf.ReadFix ();
cType.explInfo.nDeleteObj = cf.ReadShort ();
cType.explInfo.attached.nNext = cType.explInfo.attached.nPrev = cType.explInfo.attached.nParent = -1;
break;
case CT_WEAPON: //do I really need to read these? Are they even saved to disk?
cType.laserInfo.parent.nType = cf.ReadShort ();
cType.laserInfo.parent.nObject = cf.ReadShort ();
cType.laserInfo.parent.nSignature = cf.ReadInt ();
break;
case CT_LIGHT:
cType.lightInfo.intensity = cf.ReadFix ();
break;
case CT_POWERUP:
if (gameTopFileInfo.fileinfoVersion >= 25)
cType.powerupInfo.nCount = cf.ReadInt ();
else
cType.powerupInfo.nCount = 1;
if (info.nId == POW_VULCAN)
cType.powerupInfo.nCount = VULCAN_WEAPON_AMMO_AMOUNT;
else if (info.nId == POW_GAUSS)
cType.powerupInfo.nCount = VULCAN_WEAPON_AMMO_AMOUNT;
else if (info.nId == POW_OMEGA)
cType.powerupInfo.nCount = MAX_OMEGA_CHARGE;
break;
case CT_NONE:
case CT_FLYING:
case CT_DEBRIS:
break;
case CT_SLEW: //the CPlayerData is generally saved as slew
break;
//.........这里部分代码省略.........
示例10: LoadState
void CObject::LoadState (CFile& cf)
{
info.nSignature = cf.ReadInt ();
info.nType = (ubyte) cf.ReadByte ();
info.nId = (ubyte) cf.ReadByte ();
info.nNextInSeg = cf.ReadShort ();
info.nPrevInSeg = cf.ReadShort ();
info.controlType = (ubyte) cf.ReadByte ();
info.movementType = (ubyte) cf.ReadByte ();
info.renderType = (ubyte) cf.ReadByte ();
info.nFlags = (ubyte) cf.ReadByte ();
info.nSegment = cf.ReadShort ();
info.nAttachedObj = cf.ReadShort ();
cf.ReadVector (info.position.vPos);
cf.ReadMatrix (info.position.mOrient);
info.xSize = cf.ReadFix ();
info.xShields = cf.ReadFix ();
cf.ReadVector (info.vLastPos);
info.contains.nType = cf.ReadByte ();
info.contains.nId = cf.ReadByte ();
info.contains.nCount = cf.ReadByte ();
info.nCreator = cf.ReadByte ();
info.xLifeLeft = cf.ReadFix ();
if (info.movementType == MT_PHYSICS) {
cf.ReadVector (mType.physInfo.velocity);
cf.ReadVector (mType.physInfo.thrust);
mType.physInfo.mass = cf.ReadFix ();
mType.physInfo.drag = cf.ReadFix ();
mType.physInfo.brakes = cf.ReadFix ();
cf.ReadVector (mType.physInfo.rotVel);
cf.ReadVector (mType.physInfo.rotThrust);
mType.physInfo.turnRoll = cf.ReadFixAng ();
mType.physInfo.flags = (ushort) cf.ReadShort ();
}
else if (info.movementType == MT_SPINNING) {
cf.ReadVector (mType.spinRate);
}
switch (info.controlType) {
case CT_WEAPON:
cType.laserInfo.parent.nType = cf.ReadShort ();
cType.laserInfo.parent.nObject = cf.ReadShort ();
cType.laserInfo.parent.nSignature = cf.ReadInt ();
cType.laserInfo.xCreationTime = cf.ReadFix ();
cType.laserInfo.nLastHitObj = cf.ReadShort ();
if (cType.laserInfo.nLastHitObj < 0)
cType.laserInfo.nLastHitObj = 0;
else {
gameData.objs.nHitObjects [Index () * MAX_HIT_OBJECTS] = cType.laserInfo.nLastHitObj;
cType.laserInfo.nLastHitObj = 1;
}
cType.laserInfo.nHomingTarget = cf.ReadShort ();
cType.laserInfo.xScale = cf.ReadFix ();
break;
case CT_EXPLOSION:
cType.explInfo.nSpawnTime = cf.ReadFix ();
cType.explInfo.nDeleteTime = cf.ReadFix ();
cType.explInfo.nDeleteObj = cf.ReadShort ();
cType.explInfo.attached.nParent = cf.ReadShort ();
cType.explInfo.attached.nPrev = cf.ReadShort ();
cType.explInfo.attached.nNext = cf.ReadShort ();
break;
case CT_AI:
cType.aiInfo.behavior = (ubyte) cf.ReadByte ();
cf.Read (cType.aiInfo.flags, 1, MAX_AI_FLAGS);
cType.aiInfo.nHideSegment = cf.ReadShort ();
cType.aiInfo.nHideIndex = cf.ReadShort ();
cType.aiInfo.nPathLength = cf.ReadShort ();
cType.aiInfo.nCurPathIndex = cf.ReadByte ();
cType.aiInfo.bDyingSoundPlaying = cf.ReadByte ();
cType.aiInfo.nDangerLaser = cf.ReadShort ();
cType.aiInfo.nDangerLaserSig = cf.ReadInt ();
cType.aiInfo.xDyingStartTime = cf.ReadFix ();
break;
case CT_LIGHT:
cType.lightInfo.intensity = cf.ReadFix ();
break;
case CT_POWERUP:
cType.powerupInfo.nCount = cf.ReadInt ();
cType.powerupInfo.xCreationTime = cf.ReadFix ();
cType.powerupInfo.nFlags = cf.ReadInt ();
break;
}
switch (info.renderType) {
case RT_MORPH:
case RT_POLYOBJ: {
int i;
rType.polyObjInfo.nModel = cf.ReadInt ();
for (i = 0; i < MAX_SUBMODELS; i++)
cf.ReadAngVec (rType.polyObjInfo.animAngles [i]);
rType.polyObjInfo.nSubObjFlags = cf.ReadInt ();
rType.polyObjInfo.nTexOverride = cf.ReadInt ();
rType.polyObjInfo.nAltTextures = cf.ReadInt ();
break;
}
case RT_WEAPON_VCLIP:
case RT_HOSTAGE:
//.........这里部分代码省略.........
示例11: ReadRobotInfos
/*
* reads n tRobotInfo structs from a CFile
*/
int ReadRobotInfos (CArray<tRobotInfo>& botInfo, int n, CFile& cf, int o)
{
int h, i, j;
for (i = 0; i < n; i++) {
h = i + o;
botInfo [h].nModel = cf.ReadInt ();
for (j = 0; j < MAX_GUNS; j++)
cf.ReadVector (botInfo [h].gunPoints [j]);
cf.Read (botInfo [h].gunSubModels, MAX_GUNS, 1);
botInfo [h].nExp1VClip = cf.ReadShort ();
botInfo [h].nExp1Sound = cf.ReadShort ();
botInfo [h].nExp2VClip = cf.ReadShort ();
botInfo [h].nExp2Sound = cf.ReadShort ();
botInfo [h].nWeaponType = cf.ReadByte ();
botInfo [h].nSecWeaponType = cf.ReadByte ();
botInfo [h].nGuns = cf.ReadByte ();
botInfo [h].containsId = cf.ReadByte ();
botInfo [h].containsCount = cf.ReadByte ();
botInfo [h].containsProb = cf.ReadByte ();
botInfo [h].containsType = cf.ReadByte ();
botInfo [h].kamikaze = cf.ReadByte ();
botInfo [h].scoreValue = cf.ReadShort ();
botInfo [h].badass = cf.ReadByte ();
botInfo [h].energyDrain = cf.ReadByte ();
botInfo [h].lighting = cf.ReadFix ();
botInfo [h].strength = cf.ReadFix ();
botInfo [h].mass = cf.ReadFix ();
botInfo [h].drag = cf.ReadFix ();
for (j = 0; j < NDL; j++)
botInfo [h].fieldOfView [j] = cf.ReadFix ();
for (j = 0; j < NDL; j++)
botInfo [h].primaryFiringWait [j] = cf.ReadFix ();
for (j = 0; j < NDL; j++)
botInfo [h].secondaryFiringWait [j] = cf.ReadFix ();
for (j = 0; j < NDL; j++)
botInfo [h].turnTime [j] = cf.ReadFix ();
for (j = 0; j < NDL; j++)
botInfo [h].xMaxSpeed [j] = cf.ReadFix ();
for (j = 0; j < NDL; j++)
botInfo [h].circleDistance [j] = cf.ReadFix ();
cf.Read (botInfo [h].nRapidFireCount, NDL, 1);
cf.Read (botInfo [h].evadeSpeed, NDL, 1);
botInfo [h].cloakType = cf.ReadByte ();
botInfo [h].attackType = cf.ReadByte ();
botInfo [h].seeSound = cf.ReadByte ();
botInfo [h].attackSound = cf.ReadByte ();
botInfo [h].clawSound = cf.ReadByte ();
botInfo [h].tauntSound = cf.ReadByte ();
botInfo [h].bossFlag = cf.ReadByte ();
botInfo [h].companion = cf.ReadByte ();
botInfo [h].smartBlobs = cf.ReadByte ();
botInfo [h].energyBlobs = cf.ReadByte ();
botInfo [h].thief = cf.ReadByte ();
botInfo [h].pursuit = cf.ReadByte ();
botInfo [h].lightcast = cf.ReadByte ();
botInfo [h].bDeathRoll = cf.ReadByte ();
botInfo [h].flags = cf.ReadByte ();
cf.Read(botInfo [h].pad, 3, 1);
botInfo [h].deathrollSound = cf.ReadByte ();
botInfo [h].glow = cf.ReadByte ();
botInfo [h].behavior = cf.ReadByte ();
botInfo [h].aim = cf.ReadByte ();
for (j = 0; j < MAX_GUNS + 1; j++)
ReadJointLists (botInfo [h].animStates [j], N_ANIM_STATES, cf);
botInfo [h].always_0xabcd = cf.ReadInt ();
}
return i;
}
示例12: OOF_ReadByte
static sbyte OOF_ReadByte (CFile& cf, const char *pszIdent)
{
sbyte b = cf.ReadByte ();
OOF_PrintLog (" %s = %d\n", pszIdent, b);
return b;
}
示例13: LoadLevelData
// ----------------------------------------------------------------------------
//loads a level (.LVL) file from disk
//returns 0 if success, else error code
int LoadLevelData (char * pszFilename, int nLevel)
{
CFile cf;
char filename [128];
int sig, nMineDataOffset, nGameDataOffset;
int nError;
SetDataVersion (-1);
gameData.segs.bHaveSlideSegs = 0;
if (gameData.app.nGameMode & GM_NETWORK) {
gameData.multiplayer.maxPowerupsAllowed.Clear (0);
gameData.multiplayer.powerupsInMine.Clear (0);
}
#if DBG
Level_being_loaded = pszFilename;
#endif
gameStates.render.nMeshQuality = gameOpts->render.nMeshQuality;
for (;;) {
strcpy (filename, pszFilename);
if (!cf.Open (filename, "", "rb", gameStates.app.bD1Mission))
return 1;
strcpy(gameData.segs.szLevelFilename, filename);
// #ifdef NEWDEMO
// if (gameData.demo.nState == ND_STATE_RECORDING)
// NDRecordStartDemo();
// #endif
sig = cf.ReadInt ();
gameData.segs.nLevelVersion = cf.ReadInt ();
gameStates.app.bD2XLevel = (gameData.segs.nLevelVersion >= 10);
#if TRACE
console.printf (CON_DBG, "gameData.segs.nLevelVersion = %d\n", gameData.segs.nLevelVersion);
#endif
nMineDataOffset = cf.ReadInt ();
nGameDataOffset = cf.ReadInt ();
Assert(sig == MAKE_SIG('P','L','V','L'));
if (gameData.segs.nLevelVersion >= 8) { //read dummy data
cf.ReadInt ();
cf.ReadShort ();
cf.ReadByte ();
}
if (gameData.segs.nLevelVersion < 5)
cf.ReadInt (); //was hostagetext_offset
if (gameData.segs.nLevelVersion > 1) {
cf.GetS (szCurrentLevelPalette, sizeof (szCurrentLevelPalette));
if (szCurrentLevelPalette [strlen(szCurrentLevelPalette) - 1] == '\n')
szCurrentLevelPalette [strlen(szCurrentLevelPalette) - 1] = 0;
}
if ((gameData.segs.nLevelVersion <= 1) || (szCurrentLevelPalette [0] == 0)) // descent 1 level
strcpy (szCurrentLevelPalette, DEFAULT_LEVEL_PALETTE); //D1_PALETTE
if (gameData.segs.nLevelVersion >= 3)
gameStates.app.nBaseCtrlCenExplTime = cf.ReadInt ();
else
gameStates.app.nBaseCtrlCenExplTime = DEFAULT_CONTROL_CENTER_EXPLOSION_TIME;
if (gameData.segs.nLevelVersion >= 4)
gameData.reactor.nStrength = cf.ReadInt ();
else
gameData.reactor.nStrength = -1; //use old defaults
if (gameData.segs.nLevelVersion >= 7) {
#if TRACE
console.printf (CON_DBG, " loading dynamic lights ...\n");
#endif
if (0 > ReadVariableLights (cf)) {
cf.Close ();
return 5;
}
}
if (gameData.segs.nLevelVersion < 6) {
gameData.segs.secret.nReturnSegment = 0;
gameData.segs.secret.returnOrient = CFixMatrix::IDENTITY;
}
else {
gameData.segs.secret.nReturnSegment = cf.ReadInt ();
for (int i = 0; i < 9; i++)
gameData.segs.secret.returnOrient [i] = cf.ReadInt ();
}
//NOTE LINK TO ABOVE!!
cf.Seek (nGameDataOffset, SEEK_SET);
nError = LoadMineDataCompiled (cf, 1);
cf.Seek (nMineDataOffset, SEEK_SET);
nError = LoadMineSegmentsCompiled (cf);
if (nError == -1) { //error!!
cf.Close ();
return 2;
}
//.........这里部分代码省略.........
示例14: BMReadGameDataD1
void BMReadGameDataD1 (CFile& cf)
{
int h, i, j, v10DataOffset;
#if 1
tD1WallClip w;
D1_tmap_info t;
//D1Robot_info r;
#endif
tWallClip *pw;
tTexMapInfo *pt;
tRobotInfo *pr;
CPolyModel model;
ubyte tmpSounds [D1_MAX_SOUNDS];
v10DataOffset = cf.ReadInt ();
cf.Read (&gameData.pig.tex.nTextures [1], sizeof (int), 1);
j = (gameData.pig.tex.nTextures [1] == 70) ? 70 : D1_MAX_TEXTURES;
/*---*/PrintLog (" Loading %d texture indices\n", j);
//cf.Read (gameData.pig.tex.bmIndex [1], sizeof (tBitmapIndex), D1_MAX_TEXTURES);
ReadBitmapIndices (gameData.pig.tex.bmIndex [1], D1_MAX_TEXTURES, cf);
BuildTextureIndex (1, D1_MAX_TEXTURES);
/*---*/PrintLog (" Loading %d texture descriptions\n", j);
for (i = 0, pt = &gameData.pig.tex.tMapInfo [1][0]; i < j; i++, pt++) {
#if DBG
cf.Read (t.filename, sizeof (t.filename), 1);
#else
cf.Seek (sizeof (t.filename), SEEK_CUR);
#endif
pt->flags = (ubyte) cf.ReadByte ();
pt->lighting = cf.ReadFix ();
pt->damage = cf.ReadFix ();
pt->nEffectClip = cf.ReadInt ();
pt->slide_u =
pt->slide_v = 0;
pt->destroyed = -1;
}
cf.Read (Sounds [1], sizeof (ubyte), D1_MAX_SOUNDS);
cf.Read (AltSounds [1], sizeof (ubyte), D1_MAX_SOUNDS);
/*---*/PrintLog (" Initializing %d sounds\n", D1_MAX_SOUNDS);
if (gameOpts->sound.bUseD1Sounds) {
memcpy (Sounds [1] + D1_MAX_SOUNDS, Sounds [0] + D1_MAX_SOUNDS, MAX_SOUNDS - D1_MAX_SOUNDS);
memcpy (AltSounds [1] + D1_MAX_SOUNDS, AltSounds [0] + D1_MAX_SOUNDS, MAX_SOUNDS - D1_MAX_SOUNDS);
}
else {
memcpy (Sounds [1], Sounds [0], MAX_SOUNDS);
memcpy (AltSounds [1], AltSounds [0], MAX_SOUNDS);
}
for (i = 0; i < D1_MAX_SOUNDS; i++) {
if (Sounds [1][i] == 255)
Sounds [1][i] = Sounds [0][i];
if (AltSounds [1][i] == 255)
AltSounds [1][i] = AltSounds [0][i];
}
gameData.eff.nClips [1] = cf.ReadInt ();
/*---*/PrintLog (" Loading %d animation clips\n", gameData.eff.nClips [1]);
ReadVideoClips (gameData.eff.vClips [1], D1_VCLIP_MAXNUM, cf);
gameData.eff.nEffects [1] = cf.ReadInt ();
/*---*/PrintLog (" Loading %d animation descriptions\n", gameData.eff.nClips [1]);
ReadEffectClips (gameData.eff.effects [1], D1_MAX_EFFECTS, cf);
gameData.walls.nAnims [1] = cf.ReadInt ();
/*---*/PrintLog (" Loading %d CWall animations\n", gameData.walls.nAnims [1]);
for (i = 0, pw = &gameData.walls.anims [1][0]; i < D1_MAX_WALL_ANIMS; i++, pw++) {
//cf.Read (&w, sizeof (w), 1);
pw->xTotalTime = cf.ReadFix ();
pw->nFrameCount = cf.ReadShort ();
for (j = 0; j < D1_MAX_CLIP_FRAMES; j++)
pw->frames [j] = cf.ReadShort ();
pw->openSound = cf.ReadShort ();
pw->closeSound = cf.ReadShort ();
pw->flags = cf.ReadShort ();
cf.Read (pw->filename, sizeof (w.filename), 1);
pw->pad = (char) cf.ReadByte ();
}
cf.Read (&gameData.bots.nTypes [1], sizeof (int), 1);
/*---*/PrintLog (" Loading %d robot descriptions\n", gameData.bots.nTypes [1]);
gameData.bots.info [1] = gameData.bots.info [0];
if (!gameOpts->sound.bUseD1Sounds)
return;
for (i = 0, pr = &gameData.bots.info [1][0]; i < D1_MAX_ROBOT_TYPES; i++, pr++) {
//cf.Read (&r, sizeof (r), 1);
cf.Seek (
sizeof (int) * 3 +
(sizeof (CFixVector) + sizeof (ubyte)) * MAX_GUNS +
sizeof (short) * 5 +
sizeof (sbyte) * 7 +
sizeof (fix) * 4 +
sizeof (fix) * 7 * NDL +
sizeof (sbyte) * 2 * NDL,
SEEK_CUR);
pr->seeSound = (ubyte) cf.ReadByte ();
pr->attackSound = (ubyte) cf.ReadByte ();
pr->clawSound = (ubyte) cf.ReadByte ();
cf.Seek (
JOINTLIST_SIZE * (MAX_GUNS + 1) * N_ANIM_STATES +
sizeof (int),
SEEK_CUR);
pr->always_0xabcd = 0xabcd;
}
//.........这里部分代码省略.........
示例15: BMReadWeaponInfoD1N
void BMReadWeaponInfoD1N (CFile& cf, int i)
{
CD1WeaponInfo* wiP = gameData.weapons.infoD1 + i;
wiP->renderType = cf.ReadByte ();
wiP->nModel = cf.ReadByte ();
wiP->nInnerModel = cf.ReadByte ();
wiP->persistent = cf.ReadByte ();
wiP->nFlashVClip = cf.ReadByte ();
wiP->flashSound = cf.ReadShort ();
wiP->nRobotHitVClip = cf.ReadByte ();
wiP->nRobotHitSound = cf.ReadShort ();
wiP->nWallHitVClip = cf.ReadByte ();
wiP->nWallHitSound = cf.ReadShort ();
wiP->fireCount = cf.ReadByte ();
wiP->nAmmoUsage = cf.ReadByte ();
wiP->nVClipIndex = cf.ReadByte ();
wiP->destructible = cf.ReadByte ();
wiP->matter = cf.ReadByte ();
wiP->bounce = cf.ReadByte ();
wiP->homingFlag = cf.ReadByte ();
wiP->dum1 = cf.ReadByte ();
wiP->dum2 = cf.ReadByte ();
wiP->dum3 = cf.ReadByte ();
wiP->xEnergyUsage = cf.ReadFix ();
wiP->xFireWait = cf.ReadFix ();
wiP->bitmap.index = cf.ReadShort ();
wiP->blob_size = cf.ReadFix ();
wiP->xFlashSize = cf.ReadFix ();
wiP->xImpactSize = cf.ReadFix ();
for (i = 0; i < NDL; i++)
wiP->strength [i] = cf.ReadFix ();
for (i = 0; i < NDL; i++)
wiP->speed [i] = cf.ReadFix ();
wiP->mass = cf.ReadFix ();
wiP->drag = cf.ReadFix ();
wiP->thrust = cf.ReadFix ();
wiP->poLenToWidthRatio = cf.ReadFix ();
wiP->light = cf.ReadFix ();
wiP->lifetime = cf.ReadFix ();
wiP->xDamageRadius = cf.ReadFix ();
wiP->picture.index = cf.ReadShort ();
}