Exemplo n.º 1
0
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;
    }
}
Exemplo n.º 2
0
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();
    }
}
Exemplo n.º 3
0
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