void EnemieN::Fire() { if(!m_bUsable){ return; } if(m_ClockFire.getElapsedTime().asMilliseconds() >= 1000){ bool ok = true; for(auto it = m_TirList.begin(); it != m_TirList.end(); it++){ if(it->IsOut()){ it->SetPos(m_Enemie.getPosition().x, m_Enemie.getPosition().y); it->Revive(); ok = false; break; } } if(m_cmpt == 0 && ok) { Tir t = Tir(m_Tileset, 11, 4, 1, 1, Mathf::PI * 0.5, m_Enemie.getPosition().x +5, m_Enemie.getPosition().y + 30); t.GetSprite().setScale(0.5f, 0.5f); m_TirList.push_back(t); m_step *= -1; } if(m_cmpt == 1 && ok) { Tir t = Tir(m_Tileset, 11, 4, 1, 1, Mathf::PI * 0.5, m_Enemie.getPosition().x + 30, m_Enemie.getPosition().y + 30); t.GetSprite().setScale(0.5f, 0.5f); m_TirList.push_back(t); m_step *= -1; } m_ClockFire.restart(); m_cmpt+=m_step; } }
void EnemieG::Fire() { if(!m_bUsable){ return; } if(m_ClockFire.getElapsedTime().asMilliseconds() >= 1000){ bool ok = true; for(auto it = m_TirList.begin(); it != m_TirList.end(); it++){ if(it->IsOut()){ it->SetPos(m_Enemie.getPosition().x, m_Enemie.getPosition().y); it->Revive(); ok = false; break; } } if(ok) { Tir t = Tir(m_Tileset, 6, 12, 1, 1, Mathf::PI * 0.5, m_Enemie.getPosition().x, m_Enemie.getPosition().y + 30); m_TirList.push_back(t); } m_ClockFire.restart(); } }
UINT IsCisFile2( HFILE hf, LPSTR lpf, LPSTR lpb, DWORD len, DWORD fsiz ) { UINT ftype; int i, j; PCISKHDR pCisKey; PCISF1 pCisVis; char c; LPSTR lpd, lps; BYTE bi, bl, rc, ri, bc; PVISHDR2 pV2; PVISBLK pVis; BOOL bDir; PVISIN1 pI1; PVISIN2 pI2; DWORD max; ftype = 0; lpd = &gcDiagBuf[0]; bi = bl = rc = ri = bc = 0; pVis = 0; pV2 = 0; bDir = FALSE; pI1 = 0; pI2 = 0; if( ( max = len ) && ( pCisKey = (PCISKHDR)lpb ) ) { if( len > sizeof( CISKHDR ) ) { for( i = 0; i < LCISKHDR; i++ ) { if( lpb[i] != szCisKHdr[i] ) break; } if( i == LCISKHDR ) { if( ( pCisKey->ch_Stop == 0x1a ) && ( j = pCisKey->ch_Count ) ) { ftype = CISKFILE; } } } if( ( ftype == 0 ) && ( len > sizeof( CISF1 ) ) ) { pCisVis = (PCISF1)lpb; for( i = 0; i < LCISHDR; i++ ) { if( lpb[i] != szVisHdr[i] ) break; } if( i == LCISHDR ) { // ( ( c == 'K' ) || ( c == 'F' ) || ( c == 'J' ) ) ) c = pCisVis->cf_Type; if( ( pCisVis->cf_V1a == 0x1a ) && // = 0x1a c ) { // = ";"=PLX "K"=ART "F"=MSG "J"=PLX ftype = CISVFILE; lps = (LPSTR)((PCISF1)pCisVis + 1); #ifdef DIAGFILE sprintf( lpd, "Processing file [%s].", lpf ); wrtit( lpd ); strcpy( lpd, "Unknown 1: " ); AddHex( lpd, pCisVis->cf_Type ); // = "K"=ART "F"=MSG "J"=PLX AddHex( lpd, pCisVis->cf_Unk1[0] ); // Unknown AddHex( lpd, pCisVis->cf_Unk1[1] ); // Unknown wrtit( lpd ); strcpy( lpd, "HDT: 1 " ); //AddHr( lpd, pCisVis->cf_TD1.tHr ); //AddMin( lpd, pCisVis->cf_TD1.tMin ); //AddSec( lpd, pCisVis->cf_TD1.tSec ); //AddDay( lpd, pCisVis->cf_TD1.tDate.cDay ); //AddMth( lpd, pCisVis->cf_TD1.tDate.cMth ); //AddYr( lpd, pCisVis->cf_TD1.tDate.cYr ); AddDT( lpd, &pCisVis->cf_TD1 ); //wrtit( lpd ); //strcpy( lpd, "Header DT: 2 = " ); //AddHr( lpd, pCisVis->cf_TD2.tHr ); //AddMin( lpd, pCisVis->cf_TD2.tMin ); //AddSec( lpd, pCisVis->cf_TD2.tSec ); //AddDay( lpd, pCisVis->cf_TD2.tDate.cDay ); //AddMth( lpd, pCisVis->cf_TD2.tDate.cMth ); //AddYr( lpd, pCisVis->cf_TD2.tDate.cYr ); strcat( lpb, " 2 " ); AddDT( lpd, &pCisVis->cf_TD2 ); wrtit( lpd ); strcpy( lpd, "Unknown 2: " ); AddHex( lpd, pCisVis->cf_Unk2[0] ); // Unknown AddHex( lpd, pCisVis->cf_Unk2[1] ); // Unknown AddHex( lpd, (BYTE)(((pCisVis->cf_Unk3 & 0xff00) >> 8) & 0xff) ); AddHex( lpd, (BYTE)((pCisVis->cf_Unk3 & 0x00ff) & 0xff) ); wrtit( lpd ); strcpy( lpd, "Subject:[" ); lps = (LPSTR)((PCISF1)pCisVis + 1); max -= sizeof( CISF1 ); // Reduce by HEADER bl = *lps++; // Get SUBJECT Length max--; if( max == 0 ) goto Dn_VBlock; szSubj[0] = 0; if( (DWORD)bl > max ) bl = (BYTE)max; if( bl ) { for( bi = 0; bi < bl; bi++ ) { szSubj[bi] = lps[bi]; } szSubj[bi] = 0; sprintf( (lpd + lstrlen( lpd )), "%s", &szSubj[0] ); bDir = IsOut(); } strcat( lpd, "]" ); //wrtit( lpd ); lps = lps + bl; // REDUCE SIZE max -= bl; if( max == 0 ) goto Dn_VBlock; if( bl ) { //strcpy( lpd, "Author:[" ); strcat( lpd, " Author:[" ); bl = *lps++; max--; // Reduce max if( max == 0 ) goto Dn_VBlock; if( (DWORD)bl > max ) bl = (BYTE)max; if( bl ) { for( bi = 0; bi < bl; bi++ ) { sprintf( (lpd + lstrlen( lpd )), "%c", (lps[bi] & 0xff) ); } } strcat( lpd, "]" ); //wrtit( lpd ); lps = lps + bl; // REDUCE SIZE max -= bl; if( max < 2 ) goto Dn_VBlock; bl = *lps++; max--; if( (DWORD)bl > max ) bl = (BYTE)max; if( bl ) { //strcpy( lpd, "Address:[" ); strcat( lpd, " Address:[" ); for( bi = 0; bi < bl; bi++ ) { sprintf( (lpd + lstrlen( lpd )), "%c", (lps[bi] & 0xff) ); } strcat( lpd, "]" ); wrtit( lpd ); lps = lps + bl; max -= bl; } } if( max < 2 ) goto Dn_VBlock; bl = *lps++; // This SHOULD be ZERO!!! max--; if( (DWORD)bl > max ) bl = (BYTE)max; *lpd = 0; while( bl ) // BUT if we do have something { strcpy( lpd, "Unknown String: [" ); for( bi = 0; bi < bl; bi++ ) { sprintf( (lpd + lstrlen( lpd )), "%c", (lps[bi] & 0xff) ); } strcat( lpd, "]" ); wrtit( lpd ); lps = lps + bl; max -= bl; if( max < 2 ) goto Dn_VBlock; bl = *lps++; max--; if( (DWORD)bl > max ) bl = (BYTE)max; } // We are now at Header 2 pV2 = (PVISHDR2)lps; if( max < sizeof( VISHDR2 ) ) goto Dn_VBlock; strcpy( lpd, "Unknown 3: " ); AddHex( lpd, pV2->v2_Unk1 ); AddHex( lpd, pV2->v2_Unk2 ); strcat( lpd, "TD1 = " ); AddDT( lpd, &pV2->v2_TD1 ); strcat( lpd, "TD2 = " ); AddDT( lpd, &pV2->v2_TD2 ); wrtit( lpd ); // Now Subject From Address lps = (LPSTR)((PVISHDR2)pV2 + 1); max -= sizeof( VISHDR2 ); if( max < 2 ) goto Dn_VBlock; bl = *lps++; max--; if( (DWORD)bl > max ) bl = (BYTE)max; *lpd = 0; if( bl ) { strcat( lpd, "Subj: [" ); for( bi = 0; bi < bl; bi++ ) { sprintf( (lpd + lstrlen( lpd )), "%c", (lps[bi] & 0xff) ); } strcat( lpd, "] " ); lps += bl; max -= bl; } if( max < 2 ) goto Dn_VBlock; bl = *lps++; max--; if( (DWORD)bl > max ) bl = (BYTE)max; if( bl ) { strcat( lpd, "From: [" ); for( bi = 0; bi < bl; bi++ ) { sprintf( (lpd + lstrlen( lpd )), "%c", (lps[bi] & 0xff) ); } strcat( lpd, "] " ); lps += bl; max -= bl; } if( max < 2 ) goto Dn_VBlock; bl = *lps++; max--; if( (DWORD)bl > max ) bl = (BYTE)max; if( bl ) { strcat( lpd, "Addr: [" ); for( bi = 0; bi < bl; bi++ ) { sprintf( (lpd + lstrlen( lpd )), "%c", (lps[bi] & 0xff) ); } strcat( lpd, "] " ); lps += bl; max -= bl; } wrtit( lpd ); if( max < 2 ) goto Dn_VBlock; rc = *lps++; max--; sprintf( lpd, "Recipient(s) = %u", (rc & 0xff) ); wrtit( lpd ); ri = rc; if( max < 2 ) goto Dn_VBlock; bl = *lps++; max--; if( (DWORD)bl > max ) bl = (BYTE)max; while( ri-- ) { if( (ri+1) == rc ) strcpy( lpd, "To: [" ); else strcpy( lpd, "Cc: [" ); for( bi = 0; bi < bl; bi++ ) { sprintf( (lpd + lstrlen( lpd )), "%c", (lps[bi] & 0xff) ); } strcat( lpd, "] " ); lps += bl; max -= bl; if( max < 2 ) goto Dn_VBlock; strcat( lpd, "] Addr: [" ); bl = *lps++; max--; if( (DWORD)bl > max ) bl = (BYTE)max; for( bi = 0; bi < bl; bi++ ) { sprintf( (lpd + lstrlen( lpd )), "%c", (lps[bi] & 0xff) ); } strcat( lpd, "]" ); lps += bl; max -= bl; strcat( lpd, " +4 Unks " ); if( max < 4 ) goto Dn_VBlock; bi = 4; while( bi-- ) AddHex( lpd, *lps++ ); max -= 4; if( ri ) // If NOT last { if( max < 2 ) goto Dn_VBlock; bl = *lps++; max--; if( (DWORD)bl > max ) bl = (BYTE)max; } wrtit( lpd ); } // while recipients // We are now at HEADER 3 if( bDir ) // If OUT { if( max < sizeof( VISBLK ) ) goto Dn_VBlock; pVis = (PVISBLK)lps; //strcpy( lpd, "Unknown 4: " ); //AddHex( lpd, pVis->vb_Unk1 ); // 00 //AddHex( lpd, pVis->vb_Unk2 ); // 00 //AddHex( lpd, pVis->vb_Unk3 ); // 00 //wrtit( lpd ); sprintf( lpd, "OUT: AutoFile = %s", (LPSTR)(pVis->vb_AutoFile ? "Yes " : "No ") ); //wrtit( lpd ); //strcpy( lpd, "Unknown 5: " ); strcat( lpd, "Unknown 4: " ); AddHex( lpd, pVis->vb_Unk5 ); // 00 AddHex( lpd, pVis->vb_Unk6 ); // 00 AddHex( lpd, pVis->vb_Unk7 ); // 00 AddHex( lpd, pVis->vb_Unk8 ); // 29 AddHex( lpd, pVis->vb_Unk9 ); // 00 AddHex( lpd, pVis->vb_Unk10 ); // 02 AddHex( lpd, pVis->vb_Unk11 ); // 00 AddHex( lpd, pVis->vb_Unk12 ); // 00 AddHex( lpd, pVis->vb_Unk13 ); // 00 wrtit( lpd ); strcpy( lpd, "Importance: " ); switch( pVis->vb_Importance ) // 01=Normal 00=Low 02=High { case 0: strcat( lpd, "Low(0) " ); break; case 1: strcat( lpd, "Normal(1) " ); break; case 2: strcat( lpd, "Hight(2) " ); break; default: strcat( lpd, "Unknown " ); AddHex( lpd, pVis->vb_Importance ); break; } strcat( lpd, "Sensitivity: " ); switch( pVis->vb_Sensitive ) // 00=Normal 01=Personal 02=Private //03=Confidential { case 0: strcat( lpd, "Normal(0) " ); break; case 1: strcat( lpd, "Personal(1) " ); break; case 2: strcat( lpd, "Private(2) " ); break; case 3: strcat( lpd, "Confidential(3) " ); break; default: strcat( lpd, "Unknown " ); AddHex( lpd, pVis->vb_Sensitive ); break; } sprintf( (lpd + lstrlen( lpd )), "Receipt=%s", (LPSTR)(pVis->vb_Receipt ? "Yes" : "No" ) ); wrtit( lpd ); // BYTE vb_Unk17; // 00 // BYTE vb_Payment; // 08 0x40=Shared 0x80=Receiver 0x01=Rel.Date // // 0x02=Exp.Date // BYTE vb_Unk19; // // BYTE vb_Unk20; // BYTE vb_Unk21; // //BYTE vb_RelDay; // 1C 06 1B = // //BYTE vb_RelMth; // 28/06/97 // //BYTE vb_RelYr; // NOTE: 0x01 in vb_Payment for Valid Date // CISDATE vb_RelDate; // BYTE vb_Unk25; // BYTE vb_Unk26; // BYTE vb_Unk27; // //BYTE vb_ExpDay; // 1C 06 1B = // //BYTE vb_ExpMth; // 28/06/97 // //BYTE vb_ExpYr; // NOTE: 0x02 in vb_Payment for Valid Date // CISDATE vb_ExpDate; // BYTE vb_Unk31; // 00 // BYTE vb_Attach; // 01=None 02=Attached // BYTE vb_Unk33; // 01 // WORD vb_TxtLen; // Length of TEXT content (incl @b, etc) // BYTE vb_Unk36; // BYTE vb_Unk37; // BYTE vb_Unk38; // BYTE vb_Unk39; // BYTE vb_Unk40; // 05 // BYTE vb_Unk41; // BYTE vb_Unk42; // BYTE vb_Unk43; // BYTE vb_Unk44; // BYTE vb_Unk45; // BYTE vb_Attach2; // 02 // WORD vb_AttLen; // 00 1C for example // BYTE vb_Unk49; // BYTE vb_Unk50; // // Text starts - If NO attachment // // If attachement then // // 00 or Len,"Description" // // followed by Len,"FileName" // // Then 03 00 00 00 00 // // Where 0x03=Binary 0x04=Text 0x02=GIF 0x06=JPEG // // Len(1C),"Path Name" // // Plus 00 00 00 00 00 // // THEN TEXT //}VISBLK; ////typedef VISBLK FAR * PVISBLK; lps = (LPSTR)((PVISBLK)pVis + 1); max -= sizeof( VISBLK ); } else // !bDir = IN { if( max < sizeof( VISIN1 ) ) goto Dn_VBlock; pI1 = (PVISIN1)lps; strcpy( lpd, "IN: Unk: " ); bl = sizeof( VISIN1 ); for( bi = 0; bi < bl; bi++ ) { AddHex( lpd, lps[bi] ); } wrtit( lpd ); //typedef struct { // BYTE in_Unk1; // BYTE in_Unk2; // BYTE in_Unk3; // BYTE in_Unk4; // BYTE in_Unk5; // BYTE in_Unk6; // BYTE in_Unk7; // BYTE in_Unk8; // BYTE in_Unk9; //}VISIN1; //typedef VISIN1 * PVISIN1; lps += bl; max -= sizeof( VISIN1 ); if( max < 2 ) goto Dn_VBlock; bl = *lps++; max--; if( (DWORD)bl > max ) bl = (BYTE)max; strcpy( lpd, "String [" ); for( bi = 0; bi < bl; bi++ ) { // Len, "Text" sprintf( (lpd + lstrlen( lpd )), "%c", lps[bi] ); } lps += bl; max -= bl; if( max < sizeof( VISIN2 ) ) goto Dn_VBlock; pI2 = (PVISIN2)lps; bl = 5; strcpy( lpd, "Unknown: " ); for( bi = 0; bi < bl; bi++ ) { sprintf( (lpd + lstrlen( lpd )), "%c", lps[bi] ); } lps += bl; //typedef struct { // BYTE i2_Unk1; // BYTE i2_Unk2; // BYTE i2_Unk3; // BYTE i2_Unk4; // BYTE i2_Unk5; // BYTE i2_Unk6[16]; // BYTE i2_Unk22[16]; //}VISIN2; //typedef VISIN2 * PVISIN2; bl = 16; strcpy( lpd, "Unknown: " ); for( bi = 0; bi < bl; bi++ ) { sprintf( (lpd + lstrlen( lpd )), "%c", lps[bi] ); } lps += bl; bl = 16; strcpy( lpd, "Unknown: " ); for( bi = 0; bi < bl; bi++ ) { sprintf( (lpd + lstrlen( lpd )), "%c", lps[bi] ); } lps += bl; lps = (LPSTR)((PVISIN2)pI2 + 1); max -= sizeof( VISIN2 ); } // We have reached the TEXT strcpy( lpd, "Text:" ); wrtit( lpd ); bc = 0; // Zero column *lpd = 0; while( max ) { if( max > 16 ) bl = 16; else bl = (BYTE)max; for( bi = 0; bi < bl; bi++ ) { c = lps[bi]; if( ( c == 0x0a ) || ( c == 0x09 ) ) { // nothing to do here } else if( c < ' ' ) { c = '*'; // switch to AST } if( c == 0x0a ) { //sprintf( (lpd + lstrlen( lpd )), // "%c", // 0x0d ); //sprintf( (lpd + lstrlen( lpd )), // "%c", // c ); bc = 0; // Zero the column. wrtit( lpd ); *lpd = 0; } else if( c == '@' ) { if( lps[bi+1] == '@' ) { sprintf( (lpd + lstrlen( lpd )), "%c", c ); bc++; bi++; } else if( lps[bi+1] == 'b' ) { //sprintf( (lpd + lstrlen( lpd )), // "%c", // 0x0d ); //sprintf( (lpd + lstrlen( lpd )), // "%c", // 0x0a ); bi++; bc = 0; // Zero the column wrtit( lpd ); *lpd = 0; } else { sprintf( (lpd + lstrlen( lpd )), "%c", c ); bc++; // Another column if( c == 0x09 ) { bc += 6; } } } else { sprintf( (lpd + lstrlen( lpd )), "%c", c ); bc++; // Another column if( c == 0x09 ) { bc += 6; } } if( bc > MINCOLS ) { if( c == ' ' ) { //sprintf( (lpd + lstrlen( lpd )), // "%c", // 0x0d ); //sprintf( (lpd + lstrlen( lpd )), // "%c", // 0x0a ); bc = 0; // Zero the column wrtit( lpd ); *lpd = 0; } else if( bc > MAXCOLS ) { //sprintf( (lpd + lstrlen( lpd )), // "%c", // 0x0d ); //sprintf( (lpd + lstrlen( lpd )), // "%c", // 0x0a ); bc = 0; // Zero the column wrtit( lpd ); *lpd = 0; } } } // for bl lps += bl; // Bump the pointer max -= bl; // and redcue the count } if( bc ) { wrtit( lpd ); *lpd = 0; } #endif // DIAGFILE Dn_VBlock: strcpy( lpd, "Done VIS File" ); wrtit( lpd ); } // verified VIS } // i == LCISHDR ie "VIS000" present