Пример #1
1
void StringTest::testConstructor()
{
    cxxtools::String s1;
    CXXTOOLS_UNIT_ASSERT(s1 == cxxtools::String(L""));

    cxxtools::String s2(L"abcde");
    CXXTOOLS_UNIT_ASSERT(s2 == L"abcde");

    cxxtools::String s3(L"abcde", 3);
    CXXTOOLS_UNIT_ASSERT(s3 == L"abc");

    cxxtools::String s4(3, 'x');
    CXXTOOLS_UNIT_ASSERT(s4 == L"xxx");

    cxxtools::String s5(s2);
    CXXTOOLS_UNIT_ASSERT(s5 == L"abcde");

    cxxtools::String s6(s2, 1);
    CXXTOOLS_UNIT_ASSERT(s6 == L"bcde");

    cxxtools::String s7(s2, 1, 3);
    CXXTOOLS_UNIT_ASSERT(s7 == L"bcd");

    cxxtools::String s10;
    CXXTOOLS_UNIT_ASSERT(s10 == cxxtools::String(L""));

    const cxxtools::Char c11[] = { 'a', 'b', 'c', 'd', 'e', '\0' };
    cxxtools::String s11(c11);
    CXXTOOLS_UNIT_ASSERT(s11 == c11);

    const cxxtools::Char c12[] = { 'a', 'b', 'c', '\0' };
    cxxtools::String s12(L"abcde", 3);
    CXXTOOLS_UNIT_ASSERT(s12 == c12);

    const cxxtools::Char c13[] = { 'x', 'x', 'x', '\0' };
    cxxtools::String s13(3, 'x');
    CXXTOOLS_UNIT_ASSERT(s13 == c13);

    const cxxtools::Char c14[] = { 'a', 'b', 'c', 'd', 'e', '\0' };
    cxxtools::String s14(s11);
    CXXTOOLS_UNIT_ASSERT(s14 == c14);

    const cxxtools::Char c15[] = { 'b', 'c', 'd', 'e', '\0' };
    cxxtools::String s15(s11, 1);
    CXXTOOLS_UNIT_ASSERT(s15 == c15);

    const cxxtools::Char c16[] = { 'b', 'c', 'd', '\0' };
    cxxtools::String s16(s11, 1, 3);
    CXXTOOLS_UNIT_ASSERT(s16 == c16);

    cxxtools::String s20(s2.begin(), s2.end());
    CXXTOOLS_UNIT_ASSERT(s20 == L"abcde");
}
Пример #2
0
void CUIListWnd::RemoveItem(int index)
{
	if(index<0 || index>=(int)m_ItemList.size()) return;

	LIST_ITEM_LIST_it it;

	//выбрать нужный элемент
	it = m_ItemList.begin();
	for(int i=0; i<index;++i, ++it);

	R_ASSERT(m_ItemList.end() != it);
	
	DetachChild(*it);


	UpdateList();

	//обновить полосу прокрутки
	if(m_ItemList.size()>0)
		m_ScrollBar->SetRange(0,s16(m_ItemList.size()-1));
	else
		m_ScrollBar->SetRange(0,0);

	m_ScrollBar->SetPageSize( (m_iRowNum < (int)m_ItemList.size())? m_iRowNum : (int)m_ItemList.size() );
	m_ScrollBar->SetScrollPos(s16(m_iFirstShownIndex));
	m_ScrollBar->Refresh();

	//перенумеровать индексы заново
	i=0;
	for(LIST_ITEM_LIST_it it=m_ItemList.begin();  m_ItemList.end() != it; ++it,i++)
	{
		(*it)->SetIndex(i);
	}

}
Пример #3
0
bool HMC5883::Update(Vector3f &mag)
{
	if(!mI2C.IsHealthy())//if i2c not work correctly
	{
		mI2C.Initialize();    //initialize i2c
		Initialize();	        //initialize mpu6050
		return false;
	}
	if(mIsUpdated==false) 
	{
		if(tskmgr.Time()-mUpdatedTime > 1)
		{
			mI2C.Initialize();    //initialize i2c
			Initialize();	        //initialize HMC5883
			mIsUpdated = true;
		}
		return false;
	}
	mIsUpdated = false;
	u8 reg = HMC5883_XOUT_M;    //form mag x high register, read 6 bytes
	mI2C.AddCommand(HMC5883_ADDRESS, &reg, 1, mRawData, 6, this, true);
	mI2C.Start();  //start run i2c command
	
	//convert sensor data
	mag.x   = s16(mRawData[0]<<8 | mRawData[1]);
	mag.y   = s16(mRawData[2]<<8 | mRawData[3]);
	mag.z   = s16(mRawData[4]<<8 | mRawData[5]);

	return true;
}
Пример #4
0
void ESceneAIMapTools::PackPosition(NodePosition& Dest, Fvector& Src, Fbox& bb, SAIParams& params)
{
	float sp = 1/params.fPatchSize;
	int px,py,pz;
	px = iFloor(Src.x*sp+EPS_L);
	py = iFloor(65535.f*(Src.y-bb.min.y)/(bb.max.y-bb.min.y)+EPS_L);
	pz = iFloor(Src.z*sp+EPS_L);
	
	clamp	(px,-32767,32767);	Dest.x = s16	(px);
	clamp	(py,0,     65535);	Dest.y = u16	(py);
	clamp	(pz,-32767,32767);	Dest.z = s16	(pz);
}
Пример #5
0
void CPHCollisionDamageReceiver::Hit(u16 source_id,u16 bone_id,float power,const Fvector& dir,Fvector &pos )
{

	DAMAGE_BONES_I i=FindBone(bone_id);
	if(i==m_controled_bones.end())return;
	power*=i->second;
	if(power<hit_threthhold)return;
	
	NET_Packet		P;
	CPhysicsShellHolder *ph=PPhysicsShellHolder();
	SHit	HS;
	
	HS.GenHeader(GE_HIT,ph->ID());					//	ph->u_EventGen(P,GE_HIT,ph->ID());
	HS.whoID			= ph->ID();					//	P.w_u16		(ph->ID());
	HS.weaponID			= source_id;				//	P.w_u16		(source_id);
	HS.dir				= dir;						//	P.w_dir		(dir);
	HS.power			= power;					//	P.w_float	(power);
	HS.boneID			= s16(bone_id);				//	P.w_s16		(s16(bone_id));
	HS.p_in_bone_space	= pos;						//	P.w_vec3	(pos);
	HS.impulse			= 0.f;						//	P.w_float	(0.f);
	HS.hit_type			= (ALife::eHitTypeStrike);	//	P.w_u16		(ALife::eHitTypeStrike);
	HS.Write_Packet(P);						

	ph->u_EventSend(P);
}
Пример #6
0
void CUIListWnd::RemoveAll()
{
	if(m_ItemList.empty()) return;

	LIST_ITEM_LIST_it it;

		
	while(!m_ItemList.empty())
	{
		DetachChild(m_ItemList.front());
	}

	m_iFirstShownIndex = 0;
	
	
	UpdateList();
	Reset();

	//обновить полосу прокрутки
	m_ScrollBar->SetRange(0,0);
	m_ScrollBar->SetPageSize(1);
	m_ScrollBar->SetScrollPos(s16(m_iFirstShownIndex));

	UpdateScrollBar();
}
Пример #7
0
void KeyboardEvent::execute()
{
    switch(m_type)
    {
    case Cocos2dKeyEvent::Text:
    {
        std::wstring w(m_text.Get()->Data());
        std::u16string  s16(w.begin(),w.end());
        std::string utf8String;
        StringUtils::UTF16ToUTF8(s16, utf8String);
        IMEDispatcher::sharedDispatcher()->dispatchInsertText(utf8String.c_str(), utf8String.size());
        break;
    }

    default:
        switch (m_type)
        {
        case Cocos2dKeyEvent::Escape:
            //Director::getInstance()()->getKeypadDispatcher()->dispatchKeypadMSG(kTypeBackClicked);
            break;
        case Cocos2dKeyEvent::Back:
            IMEDispatcher::sharedDispatcher()->dispatchDeleteBackward();
            break;
        case Cocos2dKeyEvent::Enter:
            IMEDispatcher::sharedDispatcher()->dispatchInsertText("\n", 1);
            break;
        default:
            break;
        }        
        break;
    }
}
Пример #8
0
void evdevDevice::ForceFeedback::SetState(ControlState state)
{
  // libevdev doesn't have nice helpers for forcefeedback
  // we will use the file descriptors directly.

  if (m_id != -1)  // delete the previous effect (which also stops it)
  {
    ioctl(m_fd, EVIOCRMFF, m_id);
    m_id = -1;
  }

  if (state > 0)  // Upload and start an effect.
  {
    ff_effect effect;

    effect.id = -1;
    effect.direction = 0;        // down
    effect.replay.length = 500;  // 500ms
    effect.replay.delay = 0;
    effect.trigger.button = 0;  // don't trigger on button press
    effect.trigger.interval = 0;

    // This is the the interface that XInput uses, with 2 motors of differing sizes/frequencies that
    // are controlled seperatally
    if (m_type == FF_RUMBLE)
    {
      effect.type = FF_RUMBLE;
      // max ranges tuned to 'feel' similar in magnitude to triangle/sine on xbox360 controller
      effect.u.rumble.strong_magnitude = u16(state * 0x4000);
      effect.u.rumble.weak_magnitude = u16(state * 0xFFFF);
    }
    else  // FF_PERIODIC, a more generic interface.
    {
      effect.type = FF_PERIODIC;
      effect.u.periodic.waveform = m_type;
      effect.u.periodic.phase = 0x7fff;  // 180 degrees
      effect.u.periodic.offset = 0;
      effect.u.periodic.period = 10;
      effect.u.periodic.magnitude = s16(state * 0x7FFF);
      effect.u.periodic.envelope.attack_length = 0;  // no attack
      effect.u.periodic.envelope.attack_level = 0;
      effect.u.periodic.envelope.fade_length = 0;
      effect.u.periodic.envelope.fade_level = 0;
    }

    ioctl(m_fd, EVIOCSFF, &effect);
    m_id = effect.id;

    input_event play;
    play.type = EV_FF;
    play.code = m_id;
    play.value = 1;

    if (write(m_fd, &play, sizeof(play)) < 0)
    {
    }
  }
}
Пример #9
0
void __fastcall TransformAnalog(s16 &X, s16 &Y, SETTINGS &set, bool leftStick)
{
	// If input is dead, no need to check or do anything else
	if((X == 0) && (Y == 0)) return;

	STICK stick = leftStick ? set.stickL : set.stickR;
	tPOINT point(X, Y, stick.dzconst, stick.adzconst);

	if (stick.linearity != 0) point.ApplyLinearity(stick.linearity);
	if (stick.dzcheck  > 0) point.ApplyDeadzone(stick.dzcheck, set.linearDZ);
	if (stick.adzcheck > 0) point.ApplyAntiDeadzone(stick.adzcheck, set.linearADZ);

	f64 fX = stick.invertedX ? point.GetX() * -1.0 : point.GetX();
	f64 fY = stick.invertedY ? point.GetY() * -1.0 : point.GetY();

	X = s16(fX < -32767.0 ? -32767 : fX > 32767.0 ? 32767 : fX);
	Y = s16(fY < -32767.0 ? -32767 : fY > 32767.0 ? 32767 : fY);
}
Пример #10
0
inline void floatTos16(s16* dst, const float *src, u32 numsamples, u32 numchannels)
{
	for (u32 i = 0; i < numsamples * numchannels; i++)
	{
		float sample = src[i] * 32768.0f;
		sample = MathUtil::Clamp(sample, -32768.f, 32767.f);
		dst[i] = s16(sample);
	}
}
Пример #11
0
void CUIListWnd::Init(float x, float y, float width, float height, float item_height)
{
	CUIWindow::Init(x, y, width, height);

	//добавить полосу прокрутки
	m_ScrollBar = xr_new<CUIScrollBar>(); m_ScrollBar->SetAutoDelete(true);
	AttachChild(m_ScrollBar);

	if (!!m_scrollbar_profile)
		m_ScrollBar->Init(width,0,height, false, *m_scrollbar_profile);
	else
		m_ScrollBar->Init(width,0,height, false);


	m_ScrollBar->SetWndPos(m_ScrollBar->GetWndPos().x - m_ScrollBar->GetWidth(), m_ScrollBar->GetWndPos().y);

	SetItemWidth(width - m_ScrollBar->GetWidth());
	
	m_iFirstShownIndex = 0;

	SetItemHeight(item_height);
	m_iRowNum = iFloor(height/m_iItemHeight);


	

	

	m_ScrollBar->SetRange(0,0);
	m_ScrollBar->SetPageSize(s16(0));
	m_ScrollBar->SetScrollPos(s16(m_iFirstShownIndex));

	m_ScrollBar->Show(false);
	m_ScrollBar->Enable(false);

/*
	m_StaticActiveBackground.Init(ACTIVE_BACKGROUND,"hud\\default", 0,0,alNone);
	m_StaticActiveBackground.SetTile(iFloor(m_iItemWidth/ACTIVE_BACKGROUND_WIDTH), 
									 iFloor(m_iItemHeight/ACTIVE_BACKGROUND_HEIGHT),
									 fmod(m_iItemWidth,float(ACTIVE_BACKGROUND_WIDTH)), 
									 fmod(m_iItemHeight,float(ACTIVE_BACKGROUND_HEIGHT)));
*/
	UpdateList();
}
u16 ResolverIn::getAngle()
{
	static DelayedConditional faultdelay(parentSys,0.2,false);
	//TODO

	/* status 9.2012:
	 * pinnia heilutetaan systemin hf taskista
	 *
	 *
	 * update:kytkis loytyy psvn skemana, natti RC ulostulo resosta
	 *
	 * luenta:
	 * säädetään keskeytys 20kHz:iin ja luetaan adc arvot talteen pulssin keskeltä
	 *
	 * skooppi:
	 * transcend muistitikulla skooppikuvia resolverista kun lähdön kanssa sarjassa 6.8 ohm ja
	 * kelan rinnan 0.33uf -> melkein siniaalto mutta LC oskillaatiota reunoissa
	 *
	 * sin ja kelt: käämin päät maahan nähden
	 * pink: erotus käämin yli
	 * vih: toision ulostulo
	 *
	 * Tarvinnee myös isomman sarjaresistanssin koska driveri lämpenee 70Chen 25Cssä ja ulostuloksi tulee
	 * yli +-2v
	 *
	 */

	/* TODO add fault detection if voltages of both channels less than 100mV or so
	 * this detects disconnected resolver and prevents angle going crazy*/

	lastAngle = currAngle;
	float x, y; //parentSys->physIO.ADin.getVoltageVolts(AnalogIn::EncA),parentSys->physIO.ADin.getVoltageVolts(AnalogIn::EncB)

	getSamples( x, y );

	//detect loss of input voltage (resolver disconnected or miswired)
	bool fault=false;
	if((x*x+y*y)<(0.2*0.2)) fault=true;
	if(faultdelay.delayedTrue( fault ) )
	{
		parentSys->setFault(FLT_ENCODER,FAULTLOCATION_BASE+101);
	}


	currAngle = u16( s32( 65536.0 * atan2f( x, y ) * (0.5 / M_PI) ) );

	lastOutputCount = outputCount;
	unrolledCount += s16( currAngle - lastAngle );
	outputCount = unrolledCount / (65536 / countsPerRev);

	return outputCount;
}
Пример #13
0
void CUIListWnd::InitListWnd(Fvector2 pos, Fvector2 size, float item_height)
{
	inherited::SetWndPos(pos);
	inherited::SetWndSize(size);

	//добавить полосу прокрутки
	m_ScrollBar = xr_new<CUIScrollBar>(); m_ScrollBar->SetAutoDelete(true);
	AttachChild(m_ScrollBar);

	if (!!m_scrollbar_profile)
		m_ScrollBar->InitScrollBar(Fvector2().set(size.x,0.0f), size.y, false, *m_scrollbar_profile);
	else
		m_ScrollBar->InitScrollBar(Fvector2().set(size.x,0.0f), size.y, false);


	m_ScrollBar->SetWndPos( Fvector2().set(m_ScrollBar->GetWndPos().x - m_ScrollBar->GetWidth(), m_ScrollBar->GetWndPos().y));

	SetItemWidth(size.x - m_ScrollBar->GetWidth());
	
	m_iFirstShownIndex = 0;

	SetItemHeight(item_height);
	m_iRowNum = iFloor(size.y/m_iItemHeight);


	

	

	m_ScrollBar->SetRange(0,0);
	m_ScrollBar->SetPageSize(0);
	m_ScrollBar->SetScrollPos(s16(m_iFirstShownIndex));

	m_ScrollBar->Show(false);
	m_ScrollBar->Enable(false);

/*
	m_StaticActiveBackground.Init(ACTIVE_BACKGROUND,"hud\\default", 0,0,alNone);
	m_StaticActiveBackground.SetTile(iFloor(m_iItemWidth/ACTIVE_BACKGROUND_WIDTH), 
									 iFloor(m_iItemHeight/ACTIVE_BACKGROUND_HEIGHT),
									 fmod(m_iItemWidth,float(ACTIVE_BACKGROUND_WIDTH)), 
									 fmod(m_iItemHeight,float(ACTIVE_BACKGROUND_HEIGHT)));
*/
	UpdateList();
}
Пример #14
0
/*==============================================================================
 * FUNCTION:        DfaTest::testMeetSize
 * OVERVIEW:        Test meeting IntegerTypes with various other types
 *============================================================================*/
void DfaTest::testMeetSize()
{
    IntegerType i32(32, 1);
    SizeType s32(32);
    SizeType s16(16);
    FloatType flt(32);
    VoidType v;

    bool ch = false;
    Type *res = s32.meetWith(&i32, ch, false);
    CPPUNIT_ASSERT(ch == true);
    std::ostringstream ost1;
    ost1 << res;
    std::string actual(ost1.str());
    std::string expected("i32");
    CPPUNIT_ASSERT_EQUAL(expected, actual);

    ch = false;
    res = s32.meetWith(&s16, ch, false);
    CPPUNIT_ASSERT(ch == false);

#if 0
    // There is a known failure here; to show the warning, use ErrLogger
    Boomerang::get()->setLogger(new ErrLogger);

    res = s16.meetWith(&flt, ch, false);
    CPPUNIT_ASSERT(ch == true);
    std::ostringstream ost2;
    ost2 << res;
    actual = ost2.str();
    expected = "union";
    CPPUNIT_ASSERT_EQUAL(expected, actual);
#endif

    ch = false;
    res = s16.meetWith(&v, ch, false);
    CPPUNIT_ASSERT(ch == false);
    std::ostringstream ost3;
    ost3 << res;
    actual = ost3.str();
    expected = "16";
    CPPUNIT_ASSERT_EQUAL(expected, actual);
}
Пример #15
0
bool OSystem_Wii::setGraphicsMode(int mode) {
	s16 xar, yar;

	printf("setGraphicsMode %d\n", mode);

	xar = vmode->viWidth / 2;
	yar = vmode->xfbHeight / 2;

#ifndef GAMECUBE
	if (CONF_GetAspectRatio() && !_fullscreen)
		xar = s16(float(xar) / 1.33f);
#endif

	GX_SetCamPosZ(400 - mode * 10);
	GX_Start(640, 480, xar, yar);

	_activeGraphicsMode = mode;

	return true;
}
Пример #16
0
void game_cl_TeamDeathmatch::OnTeamSelect(int Team)
{
	bool NeedToSendTeamSelect = true;
	if (Team != -1)
	{
		if (Team+1 == local_player->team && m_bSkinSelected)
			NeedToSendTeamSelect = false;
		else
		{
				NeedToSendTeamSelect = true;				
		}
	}

	if (NeedToSendTeamSelect)
	{
		CObject *l_pObj = Level().CurrentEntity();

		CGameObject *l_pPlayer = smart_cast<CGameObject*>(l_pObj);
		if(!l_pPlayer) return;

		NET_Packet		P;
		l_pPlayer->u_EventGen		(P,GE_GAME_EVENT,l_pPlayer->ID()	);
		P.w_u16(GAME_EVENT_PLAYER_GAME_MENU);
		P.w_u8(PLAYER_CHANGE_TEAM);
		
		P.w_s16			(s16(Team+1));
		//P.w_u32			(0);
		l_pPlayer->u_EventSend		(P);
		//-----------------------------------------------------------------
		m_bSkinSelected = FALSE;
	};
	//-----------------------------------------------------------------
	m_bTeamSelected = TRUE;	
	//---------------------------
//	if (m_bMenuCalledFromReady)
//	{
//		OnKeyboardPress(kJUMP);
//	}
};
Пример #17
0
void CScriptGameObject::Hit(CScriptHit *tpLuaHit)
{
	CScriptHit		&tLuaHit = *tpLuaHit;
	NET_Packet		P;
	SHit			HS;
	HS.GenHeader(GE_HIT,object().ID());										//	object().u_EventGen(P,GE_HIT,object().ID());
	THROW2			(tLuaHit.m_tpDraftsman,"Where is hit initiator??!");	//	THROW2			(tLuaHit.m_tpDraftsman,"Where is hit initiator??!");
	HS.whoID  = u16(tLuaHit.m_tpDraftsman->ID());							//	P.w_u16			(u16(tLuaHit.m_tpDraftsman->ID()));
	HS.weaponID = 0;														//	P.w_u16			(0);
	HS.dir = tLuaHit.m_tDirection;											//	P.w_dir			(tLuaHit.m_tDirection);
	HS.power = tLuaHit.m_fPower;											//	P.w_float		(tLuaHit.m_fPower);
	CKinematics		*V = smart_cast<CKinematics*>(object().Visual());		//	CKinematics		*V = smart_cast<CKinematics*>(object().Visual());
	VERIFY			(V);													//	VERIFY			(V);
	if (xr_strlen	(tLuaHit.m_caBoneName))									//	if (xr_strlen	(tLuaHit.m_caBoneName))
		HS.boneID = 		(V->LL_BoneID(tLuaHit.m_caBoneName));			//		P.w_s16		(V->LL_BoneID(tLuaHit.m_caBoneName));
	else																	//	else
		HS.boneID = 		(s16(0));										//		P.w_s16		(s16(0));
	HS.p_in_bone_space = Fvector().set(0,0,0);								//	P.w_vec3		(Fvector().set(0,0,0));
	HS.impulse = tLuaHit.m_fImpulse;										//	P.w_float		(tLuaHit.m_fImpulse);
	HS.hit_type = (ALife::EHitType)(tLuaHit.m_tHitType);					//	P.w_u16			(u16(tLuaHit.m_tHitType));
	HS.Write_Packet(P);						

	object().u_EventSend(P);
}
Пример #18
0
u8*	DecompressAsh( const u8 *stuff, u32 &len )
{
	if( !IsAshCompressed( stuff, len ) )
	{
		return NULL;
	}

	unsigned int r[32];
	unsigned int count = 0;
	unsigned int t;

	r[4] = (u32)stuff;	  //in

	r[5] = 0x415348;
	r[6] = 0x415348;

	r[5] = s32(*(unsigned int *)(r[4]+4));
	r[5] = r[5] & 0x00FFFFFF;

	u32 size = r[5];
	//gprintf("Decompressed size: %d\n", size);
	u8* buf1 = (u8*)memalign( 32, size );
	if( !buf1 )
	{
		gprintf( "ASH: no memory\n" );
		return NULL;
	}
	r[3] = (u32)buf1;   //out
	memset( (void*)buf1, 0, size );
	//printf("r[3] :%08X\n", r[3]);

	//printf("\n\n");

	r[24] = 0x10;
	r[28] = s32(*(unsigned int *)(r[4]+8));
	r[25] = 0;
	r[29] = 0;
	r[26] = s32(*(unsigned int *)(r[4]+0xC));
	r[30] = s32(*(unsigned int *)(r[4]+r[28]));
	r[28] = r[28] + 4;
	//r[8]  = 0x8108<<16;
	//HACK, pointer to RAM
	u8* workingBuffer = (u8*)memalign( 32, 0x100000 );
	if( !workingBuffer )
	{
		gprintf( "ASH: no memory 2\n" );
		free( buf1 );
		return NULL;
	}
	r[8]  = (u32)workingBuffer;
	memset( (void*)workingBuffer, 0, 0x100000 );
	//printf("r[8] :%08X\n", r[8]);

	r[8]  = r[8];
	r[9]  = r[8]  + 0x07FE;
	r[10] = r[9]  + 0x07FE;
	r[11] = r[10] + 0x1FFE;
	r[31] = r[11] + 0x1FFE;
	r[23] = 0x200;
	r[22] = 0x200;
	r[27] = 0;

loc_81332124:

	if( r[25] != 0x1F )
		goto loc_81332140;

	r[0] = r[26] >> 31;
	r[26]= s32(*(unsigned int *)(r[4] + r[24]));
	r[25]= 0;
	r[24]= r[24] + 4;
	goto loc_8133214C;

loc_81332140:

	r[0] = r[26] >> 31;
	r[25]= r[25] + 1;
	r[26]= r[26] << 1;

loc_8133214C:

	if( r[0] == 0 )
		goto loc_81332174;

	r[0] = r[23] | 0x8000;
	*(unsigned short *)(r[31]) = s16(r[0]);
	r[0] = r[23] | 0x4000;
	*(unsigned short *)(r[31]+2) = s16(r[0]);

	r[31] = r[31] + 4;
	r[27] = r[27] + 2;
	r[23] = r[23] + 1;
	r[22] = r[22] + 1;

	goto loc_81332124;

loc_81332174:

	r[12] = 9;
	r[21] = r[25] + r[12];
	t = r[21];
	if( r[21] > 0x20 )
		goto loc_813321AC;

	r[21] = (~(r[12] - 0x20))+1;
	r[6]  = r[26] >> r[21];
	if( t == 0x20 )
		goto loc_8133219C;

	r[26] = r[26] << r[12];
	r[25] = r[25] +  r[12];
	goto loc_813321D0;

loc_8133219C:

	r[26]= s32(*(unsigned int *)(r[4] + r[24]));
	r[25]= 0;
	r[24]= r[24] + 4;
	goto loc_813321D0;

loc_813321AC:

	r[0] = (~(r[12] - 0x20))+1;
	r[6] = r[26] >> r[0];
	r[26]= s32(*(unsigned int *)(r[4] + r[24]));
	r[0] = (~(r[21] - 0x40))+1;
	r[24]= r[24] + 4;
	r[0] = r[26] >> r[0];
	r[6] = r[6] | r[0];
	r[25] = r[21] - 0x20;
	r[26] = r[26] << r[25];

loc_813321D0:

	r[12]= s16(*(unsigned short *)(r[31] - 2));
	r[31] -= 2;
	r[27]= r[27] - 1;
	r[0] = r[12] & 0x8000;
	r[12]= (r[12] & 0x1FFF) << 1;
	if( r[0] == 0 )
		goto loc_813321F8;

	*(unsigned short *)(r[9]+r[12]) = s16(r[6]);
	r[6] = (r[12] & 0x3FFF)>>1;					 //   extrwi  %r6, %r12, 14,17
	if( r[27] != 0 )
		goto loc_813321D0;

	goto loc_81332204;

loc_813321F8:

	*(unsigned short *)(r[8]+r[12]) = s16(r[6]);
	r[23] = r[22];
	goto loc_81332124;

loc_81332204:

	r[23] = 0x800;
	r[22] = 0x800;

loc_8133220C:

	if( r[29] != 0x1F )
		goto loc_81332228;

	r[0] = r[30] >> 31;
	r[30]= s32(*(unsigned int *)(r[4] + r[28]));
	r[29]= 0;
	r[28]= r[28] + 4;
	goto loc_81332234;

loc_81332228:

	r[0] = r[30] >> 31;
	r[29]= r[29] +  1;
	r[30]= r[30] << 1;

loc_81332234:

	if( r[0] == 0 )
		goto loc_8133225C;

	r[0] = r[23] | 0x8000;
	*(unsigned short *)(r[31]) = s16(r[0]);
	r[0] = r[23] | 0x4000;
	*(unsigned short *)(r[31]+2) = s16(r[0]);

	r[31] = r[31] + 4;
	r[27] = r[27] + 2;
	r[23] = r[23] + 1;
	r[22] = r[22] + 1;

	goto loc_8133220C;

loc_8133225C:

	r[12] = 0xB;
	r[21] = r[29] + r[12];
	t = r[21];
	if( r[21] > 0x20 )
		goto loc_81332294;

	r[21] = (~(r[12] - 0x20))+1;
	r[7]  = r[30] >> r[21];
	if( t == 0x20 )
		goto loc_81332284;

	r[30] = r[30] << r[12];
	r[29] = r[29] +  r[12];
	goto loc_813322B8;

loc_81332284:

	r[30]= s32(*(unsigned int *)(r[4] + r[28]));
	r[29]= 0;
	r[28]= r[28] + 4;
	goto loc_813322B8;

loc_81332294:

	r[0] = (~(r[12] - 0x20))+1;
	r[7] = r[30] >> r[0];
	r[30]= s32(*(unsigned int *)(r[4] + r[28]));
	r[0] = (~(r[21] - 0x40))+1;
	r[28]= r[28] + 4;
	r[0] = r[30] >> r[0];
	r[7] = r[7] | r[0];
	r[29]= r[21] - 0x20;
	r[30]= r[30] << r[29];

loc_813322B8:

	r[12]= s16(*(unsigned short *)(r[31] - 2));
	r[31] -= 2;
	r[27]= r[27] - 1;
	r[0] = r[12] & 0x8000;
	r[12]= (r[12] & 0x1FFF) << 1;
	if( r[0] == 0 )
		goto loc_813322E0;

	*(unsigned short *)(r[11]+r[12]) = s16(r[7]);
	r[7] = (r[12] & 0x3FFF)>>1;					 // extrwi  %r7, %r12, 14,17
	if( r[27] != 0 )
		goto loc_813322B8;

	goto loc_813322EC;

loc_813322E0:

	*(unsigned short *)(r[10]+r[12]) = s16(r[7]);
	r[23] = r[22];
	goto loc_8133220C;

loc_813322EC:

	r[0] = r[5];

loc_813322F0:

	r[12]= r[6];

loc_813322F4:

	if( r[12] < 0x200 )
		goto loc_8133233C;

	if( r[25] != 0x1F )
		goto loc_81332318;

	r[31] = r[26] >> 31;
	r[26] = s32(*(unsigned int *)(r[4] + r[24]));
	r[24] = r[24] + 4;
	r[25] = 0;
	goto loc_81332324;

loc_81332318:

	r[31] = r[26] >> 31;
	r[25] = r[25] +  1;
	r[26] = r[26] << 1;

loc_81332324:

	r[27] = r[12] << 1;
	if( r[31] != 0 )
		goto loc_81332334;

	r[12] = s16(*(unsigned short *)(r[8] + r[27]));
	goto loc_813322F4;

loc_81332334:

	r[12] = s16(*(unsigned short *)(r[9] + r[27]));
	goto loc_813322F4;

loc_8133233C:

	if( r[12] >= 0x100 )
		goto loc_8133235C;

	*(unsigned char *)(r[3]) = r[12];
	r[3] = r[3] + 1;
	r[5] = r[5] - 1;
	if( r[5] != 0 )
		goto loc_813322F0;

	goto loc_81332434;

loc_8133235C:

	r[23] = r[7];

loc_81332360:

	if( r[23] < 0x800 )
		goto loc_813323A8;

	if( r[29] != 0x1F )
		goto loc_81332384;

	r[31] = r[30] >> 31;
	r[30] = s32(*(unsigned int *)(r[4] + r[28]));
	r[28] = r[28] + 4;
	r[29] = 0;
	goto loc_81332390;

loc_81332384:

	r[31] = r[30] >> 31;
	r[29] = r[29] +  1;
	r[30] = r[30] << 1;

loc_81332390:

	r[27] = r[23] << 1;
	if( r[31] != 0 )
		goto loc_813323A0;

	r[23] = s16(*(unsigned short *)(r[10] + r[27]));
	goto loc_81332360;

loc_813323A0:

	r[23] = s16(*(unsigned short *)(r[11] + r[27]));
	goto loc_81332360;

loc_813323A8:

	r[12] = r[12] - 0xFD;
	r[23] = ~r[23] + r[3] + 1;
	r[5]  = ~r[12] + r[5] + 1;
	r[31] = r[12] >> 3;

	if( r[31] == 0 )
		goto loc_81332414;

	count = r[31];

loc_813323C0:

	r[31] = *(unsigned char *)(r[23] - 1);
	*(unsigned char *)(r[3]) = r[31];

	r[31] = *(unsigned char *)(r[23]);
	*(unsigned char *)(r[3]+1) = r[31];

	r[31] = *(unsigned char *)(r[23] + 1);
	*(unsigned char *)(r[3]+2) = r[31];

	r[31] = *(unsigned char *)(r[23] + 2);
	*(unsigned char *)(r[3]+3) = r[31];

	r[31] = *(unsigned char *)(r[23] + 3);
	*(unsigned char *)(r[3]+4) = r[31];

	r[31] = *(unsigned char *)(r[23] + 4);
	*(unsigned char *)(r[3]+5) = r[31];

	r[31] = *(unsigned char *)(r[23] + 5);
	*(unsigned char *)(r[3]+6) = r[31];

	r[31] = *(unsigned char *)(r[23] + 6);
	*(unsigned char *)(r[3]+7) = r[31];

	r[23] = r[23] + 8;
	r[3]  = r[3]  + 8;

	if( --count )
		goto loc_813323C0;

	r[12] = r[12] & 7;
	if( r[12] == 0 )
		goto loc_8133242C;

loc_81332414:

	count = r[12];

loc_81332418:

	r[31] = *(unsigned char *)(r[23] - 1);
	r[23] = r[23] + 1;
	*(unsigned char *)(r[3]) = r[31];
	r[3]  = r[3] + 1;

	if( --count )
		goto loc_81332418;

loc_8133242C:

	if( r[5] != 0 )
		goto loc_813322F0;

loc_81332434:

	r[3] = r[0];
	len = r[3];

	//gprintf("Decompressed %d bytes\n", r[3]);
	free( workingBuffer );
	return buf1;
}
Пример #19
0
LRESULT StringEditorWindow::WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
	switch ( msg )
	{
		case WM_SHOWWINDOW:
			if ( wParam == TRUE )
				RefreshWindow();
			else if ( wParam == FALSE )
				updateString(currSelString);
			break;

		case WM_MOUSEWHEEL:
			listStrings.SetTopIndex(listStrings.GetTopIndex()-(int((s16(HIWORD(wParam)))/WHEEL_DELTA)));
			break;

		case WM_PREMEASUREITEMS: // Measuring is time sensative, load necessary items for measuring all strings once
			stringListDC = listStrings.getDC();
			break;

		case WM_MEASUREITEM:
			{
				MEASUREITEMSTRUCT* mis = (MEASUREITEMSTRUCT*)lParam;
				RawString str;

				if ( chkd.maps.curr->GetString(str, mis->itemData) && str.size() > 0 &&
					 GetStringDrawSize(stringListDC, mis->itemWidth, mis->itemHeight, str) )
				{
					mis->itemWidth += 5;
					mis->itemHeight += 2;
				}
				return TRUE;
			}
			break;

		case WM_POSTMEASUREITEMS: // Release items loaded for measurement
			listStrings.ReleaseDC(stringListDC);
			stringListDC = NULL;
			break;

		case WM_PREDRAWITEMS:
			break;

		case WM_DRAWITEM:
			{
				PDRAWITEMSTRUCT pdis = (PDRAWITEMSTRUCT)lParam;
				bool isSelected = ((pdis->itemState&ODS_SELECTED) == ODS_SELECTED),
					 drawSelection = ((pdis->itemAction&ODA_SELECT) == ODA_SELECT),
					 drawEntire = ((pdis->itemAction&ODA_DRAWENTIRE) == ODA_DRAWENTIRE);

				if ( pdis->itemID != -1 && ( drawSelection || drawEntire ) )
				{	
					RawString str;
					if ( chkd.maps.curr != nullptr && chkd.maps.curr->GetString(str, pdis->itemData) && str.size() > 0 )
					{
						HBRUSH hBackground = CreateSolidBrush(RGB(0, 0, 0)); // Same color as in WM_CTLCOLORLISTBOX
						if ( hBackground != NULL )
						{
							FillRect(pdis->hDC, &pdis->rcItem, hBackground); // Draw far background
							DeleteObject(hBackground);
							hBackground = NULL;
						}
						SetBkMode(pdis->hDC, TRANSPARENT);
						DrawString(pdis->hDC, pdis->rcItem.left+3, pdis->rcItem.top+1, pdis->rcItem.right-pdis->rcItem.left,
							RGB(16, 252, 24), str);
					}
					if ( isSelected )
						DrawFocusRect(pdis->hDC, &pdis->rcItem);
				}
				return TRUE;
			}
			break;

		case WM_POSTDRAWITEMS:
			break;

		default:
			return ClassWindow::WndProc(hWnd, msg, wParam, lParam);
			break;
	}
	return 0;
}
Пример #20
0
BOOL	CCustomOutfit::BonePassBullet					(int boneID)
{
	return m_boneProtection->getBonePassBullet(s16(boneID));
}
Пример #21
0
/*
 * Execute the IF_ICMPEQ instruction
 */
void op_if_icmpeq() {
    int value2 = popInt();
    int value1 = popInt();
    if (value1 == value2) { pc += s16(1); }
    else { pc += 3; }
}
Пример #22
0
s16	CUIGameCTA::GetBuyMenuItemIndex		(u8 Addons, u8 ItemID)
{
    s16	ID = (s16(Addons) << 0x08) | s16(ItemID);
    return ID;
};
Пример #23
0
/*
 * Execute the IFEQ instruction
 */
void op_ifeq() {
    if (popInt() == 0) { pc += s16(1); }
    else { pc += 3; }
}
Пример #24
0
/*
 * Execute the GOTO instruction
 */
void op_goto() {
    pc += s16(1);
}
Пример #25
0
void	CGameSpy_Browser::ReadServerInfo	(ServerInfo* pServerInfo, void* pServer)
{
	CStringTable st;

	if (!pServer || !pServerInfo) return;
	sprintf_s(pServerInfo->m_Address, "%s:%d", xrGS_SBServerGetPublicAddress(pServer), xrGS_SBServerGetPublicQueryPort(pServer));
	sprintf_s(pServerInfo->m_HostName, "%s", xrGS_SBServerGetPublicAddress(pServer));
	sprintf_s(pServerInfo->m_ServerName, "%s", xrGS_SBServerGetStringValue(pServer, m_pQR2->xrGS_RegisteredKey(HOSTNAME_KEY), pServerInfo->m_HostName));

	sprintf_s(pServerInfo->m_SessionName, "%s", xrGS_SBServerGetStringValue(pServer, m_pQR2->xrGS_RegisteredKey(MAPNAME_KEY), "Unknown"));	
	sprintf_s(pServerInfo->m_ServerGameType, "%s", xrGS_SBServerGetStringValue(pServer, m_pQR2->xrGS_RegisteredKey(GAMETYPE_KEY), "Unknown"));
	pServerInfo->m_bPassword	= xrGS_SBServerGetBoolValue(pServer, m_pQR2->xrGS_RegisteredKey(PASSWORD_KEY), SBFalse) == SBTrue;
	pServerInfo->m_bUserPass	= xrGS_SBServerGetBoolValue(pServer, m_pQR2->xrGS_RegisteredKey(G_USER_PASSWORD_KEY), SBFalse) == SBTrue;

#ifdef BATTLEYE
	pServerInfo->m_bBattlEye	= xrGS_SBServerGetBoolValue(pServer, m_pQR2->xrGS_RegisteredKey(G_BATTLEYE_KEY), SBFalse) == SBTrue;
#endif // BATTLEYE

	pServerInfo->m_Ping = (s16)(xrGS_SBServerGetPing(pServer) & 0xffff);
	pServerInfo->m_ServerNumPlayers = (s16)xrGS_SBServerGetIntValue(pServer, m_pQR2->xrGS_RegisteredKey(NUMPLAYERS_KEY), 0);
	pServerInfo->m_ServerMaxPlayers = (s16)xrGS_SBServerGetIntValue(pServer, m_pQR2->xrGS_RegisteredKey(MAXPLAYERS_KEY), 32);
	pServerInfo->m_ServerNumTeams = (s16)xrGS_SBServerGetIntValue(pServer, m_pQR2->xrGS_RegisteredKey(NUMTEAMS_KEY), 0);
	pServerInfo->m_Port		= (s16)xrGS_SBServerGetIntValue(pServer, m_pQR2->xrGS_RegisteredKey(HOSTPORT_KEY), 0);
	pServerInfo->m_HPort	= (s16)xrGS_SBServerGetPublicQueryPort(pServer);
	pServerInfo->m_bDedicated	= (xrGS_SBServerGetBoolValue(pServer, m_pQR2->xrGS_RegisteredKey(DEDICATED_KEY), SBFalse)) == SBTrue;
	pServerInfo->m_GameType = (u8)xrGS_SBServerGetIntValue(pServer, m_pQR2->xrGS_RegisteredKey(GAMETYPE_NAME_KEY), 0);
	if (pServerInfo->m_GameType == 0)
	{
		if (!xr_strcmp(pServerInfo->m_ServerGameType, "deathmatch"))
			pServerInfo->m_GameType = GAME_DEATHMATCH;
		else if (!xr_strcmp(pServerInfo->m_ServerGameType, "teamdeathmatch"))
			pServerInfo->m_GameType = GAME_TEAMDEATHMATCH;
		else if (!xr_strcmp(pServerInfo->m_ServerGameType, "artefacthunt"))
			pServerInfo->m_GameType = GAME_ARTEFACTHUNT;
	}
	sprintf_s(pServerInfo->m_ServerVersion, "%s", xrGS_SBServerGetStringValue(pServer, m_pQR2->xrGS_RegisteredKey(GAMEVER_KEY), "--"));

	//--------- Read Game Infos ---------------------------//
	pServerInfo->m_aInfos.clear();
	pServerInfo->m_aPlayers.clear();
	pServerInfo->m_aTeams.clear();
	//-------------------------------------------------------//
	if (xrGS_SBServerHasFullKeys(pServer) == SBFalse) return;

//	pServerInfo->m_aInfos.push_back(GameInfo("Version:", pServerInfo->m_ServerVersion));
	pServerInfo->m_aInfos.push_back(GameInfo(*st.translate("mp_si_servername"), pServerInfo->m_ServerName));
	pServerInfo->m_aInfos.push_back(GameInfo(*st.translate("mp_si_version"), pServerInfo->m_ServerVersion));
	
#ifdef BATTLEYE
	ADD_BOOL_INFO(pServerInfo, pServer, "BattlEye", G_BATTLEYE_KEY);
#endif // BATTLEYE

	ADD_INT_INFO_N (pServerInfo, pServer, 1, "Max ping", "", G_MAX_PING_KEY);	
	ADD_BOOL_INFO(pServerInfo, pServer, *st.translate("mp_si_maprotation"), G_MAP_ROTATION_KEY);
	
	pServerInfo->m_aInfos.push_back(
		GameInfo(*st.translate("mp_si_voting"), 
		(xrGS_SBServerGetBoolValue(pServer, m_pQR2->xrGS_RegisteredKey(G_VOTING_ENABLED_KEY), SBFalse) == SBTrue) ?
			*st.translate("mp_si_enabled") : *st.translate("mp_si_disabled")));

//	ADD_BOOL_INFO(pServerInfo, pServer, *st.translate("mp_si_voting"), G_VOTING_ENABLED_KEY);
	//-----------------------------------------------------------------------
	pServerInfo->m_aInfos.push_back(GameInfo(*st.translate("mp_si_spectatormodes"), ""));
	int SpectrModes = xrGS_SBServerGetIntValue(pServer, m_pQR2->xrGS_RegisteredKey(G_SPECTATOR_MODES_KEY), 0);
	
	pServerInfo->m_aInfos.push_back(GameInfo(*st.translate("mp_si_free_fly"), ((SpectrModes & (1<<CSpectator::eacFreeFly	)) != 0) ? *st.translate("mp_si_yes") : *st.translate("mp_si_no")));
	pServerInfo->m_aInfos.push_back(GameInfo(*st.translate("mp_si_first_eye"), ((SpectrModes & (1<<CSpectator::eacFirstEye	)) != 0) ? *st.translate("mp_si_yes") : *st.translate("mp_si_no")));
	pServerInfo->m_aInfos.push_back(GameInfo(*st.translate("mp_si_look_at"), ((SpectrModes & (1<<CSpectator::eacLookAt	)) != 0) ? *st.translate("mp_si_yes") : *st.translate("mp_si_no")));
	pServerInfo->m_aInfos.push_back(GameInfo(*st.translate("mp_si_free_look"), ((SpectrModes & (1<<CSpectator::eacFreeLook	)) != 0) ? *st.translate("mp_si_yes") : *st.translate("mp_si_no")));
	if (pServerInfo->m_GameType != GAME_DEATHMATCH)
		pServerInfo->m_aInfos.push_back(GameInfo(*st.translate("mp_si_team_only"), ((SpectrModes & (1<<CSpectator::eacMaxCam	)) != 0) ? *st.translate("mp_si_yes") : *st.translate("mp_si_no")));
	//-----------------------------------------------------------------------
	
	if (pServerInfo->m_GameType == GAME_DEATHMATCH || pServerInfo->m_GameType == GAME_TEAMDEATHMATCH) 
	{
		ADD_INT_INFO_N (pServerInfo, pServer, 1, *st.translate("mp_si_fraglimit"), "", G_FRAG_LIMIT_KEY);	
	}

	ADD_TIME_INFO(pServerInfo, pServer, 1.0f, *st.translate("mp_si_time_limit"), "%.0f %s",*st.translate("mp_si_min"), G_TIME_LIMIT_KEY);

	if (xrGS_SBServerGetIntValue(pServer, m_pQR2->xrGS_RegisteredKey(G_DAMAGE_BLOCK_TIME_KEY), 0) != 0)
	{
		pServerInfo->m_aInfos.push_back(GameInfo(*st.translate("mp_si_invinsibility"), ""));
		ADD_BOOL_INFO(pServerInfo, pServer, *st.translate("mp_si_invinsibility_indicators"), G_DAMAGE_BLOCK_INDICATOR_KEY);
		ADD_TIME_INFO(pServerInfo, pServer, 1.0f, *st.translate("mp_si_invinsibility_time"), "%.f %s",*st.translate("mp_si_sec"), G_DAMAGE_BLOCK_TIME_KEY);
	}	

	ADD_BOOL_INFO(pServerInfo, pServer, *st.translate("mp_si_anomalies"), G_ANOMALIES_ENABLED_KEY);
	if ((xrGS_SBServerGetBoolValue(pServer, m_pQR2->xrGS_RegisteredKey(G_ANOMALIES_ENABLED_KEY), SBFalse)) == SBTrue)
	{
		if (xrGS_SBServerGetIntValue(pServer, m_pQR2->xrGS_RegisteredKey(G_ANOMALIES_TIME_KEY),0) != 0)
		{
			ADD_TIME_INFO(pServerInfo, pServer, 1.0f, *st.translate("mp_si_anomalies_period"), "%.1f %s",*st.translate("mp_si_min"), G_ANOMALIES_TIME_KEY);
		}
		else
			pServerInfo->m_aInfos.push_back(GameInfo(*st.translate("mp_si_anomalies_period"), *st.translate("mp_si_infinite")));
	}

	ADD_TIME_INFO(pServerInfo, pServer, 1.0f, *st.translate("mp_si_forcerespawn"), "%.f %s",*st.translate("mp_si_sec"), G_FORCE_RESPAWN_KEY);
	ADD_TIME_INFO(pServerInfo, pServer, 1.0f, *st.translate("mp_si_warmuptime"), "%.0f %s",*st.translate("mp_si_sec"), G_WARM_UP_TIME_KEY);

	if (pServerInfo->m_GameType == GAME_TEAMDEATHMATCH || pServerInfo->m_GameType == GAME_ARTEFACTHUNT)
	{
		ADD_BOOL_INFO(pServerInfo, pServer, *st.translate("mp_si_autoteam_balance"), G_AUTO_TEAM_BALANCE_KEY);
		ADD_BOOL_INFO(pServerInfo, pServer, *st.translate("mp_si_autoteam_swap"), G_AUTO_TEAM_SWAP_KEY);
		ADD_BOOL_INFO(pServerInfo, pServer, *st.translate("mp_si_friendly_indicators"), G_FRIENDLY_INDICATORS_KEY);
		ADD_BOOL_INFO(pServerInfo, pServer, *st.translate("mp_si_friendly_names"), G_FRIENDLY_NAMES_KEY);

		ADD_INT_INFO_N (pServerInfo, pServer, 1/100.0f, *st.translate("mp_si_friendly_fire"), " %%", G_FRIENDLY_FIRE_KEY);
	};

	if (pServerInfo->m_GameType == GAME_ARTEFACTHUNT)
	{
		pServerInfo->m_aInfos.push_back(GameInfo(*st.translate("mp_si_artefacts"), ""));
		ADD_INT_INFO(pServerInfo, pServer, *st.translate("mp_si_afcount"),					G_ARTEFACTS_COUNT_KEY	);

		ADD_TIME_INFO(pServerInfo, pServer, 1.0f, *st.translate("mp_si_afstaytime"), "%.2f %s",*st.translate("mp_si_min"), G_ARTEFACT_STAY_TIME_KEY);
		ADD_TIME_INFO(pServerInfo, pServer, 1.0f, *st.translate("mp_si_afrespawntime"), "%.0f %s",*st.translate("mp_si_sec"), G_ARTEFACT_RESPAWN_TIME_KEY);

		int Reinforcement = atoi(xrGS_SBServerGetStringValue(pServer, m_pQR2->xrGS_RegisteredKey(G_REINFORCEMENT_KEY), "0"));		
		switch (Reinforcement)
		{
		case -1:
			pServerInfo->m_aInfos.push_back(GameInfo(*st.translate("mp_si_players_respawn"), *st.translate("mp_si_artefact_captured")));
			break;
		case 0:
			pServerInfo->m_aInfos.push_back(GameInfo(*st.translate("mp_si_players_respawn"), *st.translate("mp_si_any_time")));
			break;
		default:
			ADD_TIME_INFO(pServerInfo, pServer, 1.0f, *st.translate("mp_si_players_respawn"), "%.0f %s",*st.translate("mp_si_sec"), G_REINFORCEMENT_KEY);
			break;
		}

		ADD_BOOL_INFO(pServerInfo, pServer, *st.translate("mp_si_shielded_bases"),					G_SHIELDED_BASES_KEY	);
		ADD_BOOL_INFO(pServerInfo, pServer, *st.translate("mp_si_return_players"),					G_RETURN_PLAYERS_KEY	);
		ADD_BOOL_INFO(pServerInfo, pServer, *st.translate("mp_si_afbearer_cant_sprint"),			G_BEARER_CANT_SPRINT_KEY);
	}
	
	//--------- Read Players Info -------------------------//	
	for (int i=0; i<pServerInfo->m_ServerNumPlayers; i++)
	{
		PlayerInfo PInfo;
		sprintf_s(PInfo.Name, "%s", xrGS_SBServerGetPlayerStringValue(pServer, i,	"player", "Unknown"));
		PInfo.Frags =		s16(xrGS_SBServerGetPlayerIntValue(pServer, i,			"score", 0));
		PInfo.Deaths =		u16(xrGS_SBServerGetPlayerIntValue(pServer, i,			"deaths", 0));
		PInfo.Rank =		u8(xrGS_SBServerGetPlayerIntValue(pServer, i,			"skill", 0));
		PInfo.Team =		u8(xrGS_SBServerGetPlayerIntValue(pServer, i,			"team", 0));
		PInfo.Spectator =	(xrGS_SBServerGetPlayerIntValue(pServer, i,				"spectator", 1)) != 0;
		PInfo.Artefacts =	u8(xrGS_SBServerGetPlayerIntValue(pServer, i,			"artefacts", 0));

		pServerInfo->m_aPlayers.push_back(PInfo);
	};
	//----------- Read Team Info ---------------------------//
	if (pServerInfo->m_GameType == GAME_TEAMDEATHMATCH || pServerInfo->m_GameType == GAME_ARTEFACTHUNT)
	{
		for (int i=0; i<pServerInfo->m_ServerNumTeams; i++)
		{
			TeamInfo TI;
			TI.Score = u8(xrGS_SBServerGetTeamIntValue(pServer, i, "t_score", 0));
			pServerInfo->m_aTeams.push_back(TI);
		}		
	}
};
Пример #26
0
/*
 * Execute the IFNE instruction
 */
void op_ifne() {
    if (popInt() != 0) { pc += s16(1); }
    else { pc += 3; }
}
bool test(bool is_kernel_exact = true)
{
	// types
  typedef typename K::FT FT;
  typedef typename K::Line_3 Line;
  typedef typename K::Point_3 Point;
  typedef typename K::Segment_3 Segment;
  typedef typename K::Ray_3 Ray;
  typedef typename K::Line_3 Line;
  typedef typename K::Triangle_3 Triangle;

  /* -------------------------------------
  // Test data is something like that (in t supporting plane)
  // Triangle is (p1,p2,p3)
  //
  //       +E          +1
  //                 /   \
  //        +C     6+  +8  +4      +B
  //              /   9++7  \
  //            3+-------+5--+2
  //     
  //         +F        +A      
  ------------------------------------- */
  
  Point p1(FT(1.), FT(0.), FT(0.));
  Point p2(FT(0.), FT(1.), FT(0.));
  Point p3(FT(0.), FT(0.), FT(1.));
  
  Triangle t(p1,p2,p3);
  
  // Edges of t 
  Segment s12(p1,p2);
  Segment s21(p2,p1);
  Segment s13(p1,p3);
  Segment s23(p2,p3);
  Segment s32(p3,p2);
  Segment s31(p3,p1);
  
  bool b = test_aux(is_kernel_exact,t,s12,"t-s12",s12);
  b &= test_aux(is_kernel_exact,t,s21,"t-s21",s21);
  b &= test_aux(is_kernel_exact,t,s13,"t-s13",s13);
  b &= test_aux(is_kernel_exact,t,s23,"t-s23",s23);

  // Inside points
  Point p4(FT(0.5), FT(0.5), FT(0.));
  Point p5(FT(0.), FT(0.75), FT(0.25));
  Point p6(FT(0.5), FT(0.), FT(0.5));
  Point p7(FT(0.25), FT(0.625), FT(0.125));
  Point p8(FT(0.5), FT(0.25), FT(0.25));
  
  Segment s14(p1,p4);
  Segment s41(p4,p1);
  Segment s24(p2,p4);
  Segment s42(p4,p2);
  Segment s15(p1,p5);
  Segment s25(p2,p5);
  Segment s34(p3,p4);
  Segment s35(p3,p5);
  Segment s36(p3,p6);
  Segment s45(p4,p5);
  Segment s16(p1,p6);
  Segment s26(p2,p6);
  Segment s62(p6,p2);
  Segment s46(p4,p6);
  Segment s48(p4,p8);
  Segment s56(p5,p6);
  Segment s65(p6,p5);
  Segment s64(p6,p4);
  Segment s17(p1,p7);
  Segment s67(p6,p7);
  Segment s68(p6,p8);
  Segment s86(p8,p6);
  Segment s78(p7,p8);
  Segment s87(p8,p7);
  
  b &= test_aux(is_kernel_exact,t,s14,"t-s14",s14);
  b &= test_aux(is_kernel_exact,t,s41,"t-s41",s41);
  b &= test_aux(is_kernel_exact,t,s24,"t-s24",s24);
  b &= test_aux(is_kernel_exact,t,s42,"t-s42",s42);
  b &= test_aux(is_kernel_exact,t,s15,"t-s15",s15);
  b &= test_aux(is_kernel_exact,t,s25,"t-s25",s25);
  b &= test_aux(is_kernel_exact,t,s34,"t-s34",s34);
  b &= test_aux(is_kernel_exact,t,s35,"t-s35",s35);
  b &= test_aux(is_kernel_exact,t,s36,"t-s36",s36);
  b &= test_aux(is_kernel_exact,t,s45,"t-s45",s45);
  b &= test_aux(is_kernel_exact,t,s16,"t-s16",s16);
  b &= test_aux(is_kernel_exact,t,s26,"t-s26",s26);
  b &= test_aux(is_kernel_exact,t,s62,"t-s62",s62);
  b &= test_aux(is_kernel_exact,t,s46,"t-s46",s46);
  b &= test_aux(is_kernel_exact,t,s65,"t-s65",s65);
  b &= test_aux(is_kernel_exact,t,s64,"t-s64",s64);
  b &= test_aux(is_kernel_exact,t,s48,"t-s48",s48);
  b &= test_aux(is_kernel_exact,t,s56,"t-s56",s56);
  b &= test_aux(is_kernel_exact,t,s17,"t-t17",s17);
  b &= test_aux(is_kernel_exact,t,s67,"t-t67",s67);
  b &= test_aux(is_kernel_exact,t,s68,"t-s68",s68);
  b &= test_aux(is_kernel_exact,t,s86,"t-s86",s86);
  b &= test_aux(is_kernel_exact,t,s78,"t-t78",s78);
  b &= test_aux(is_kernel_exact,t,s87,"t-t87",s87);
  
  // Outside points (in triangle plane)
  Point pA(FT(-0.5), FT(1.), FT(0.5));
  Point pB(FT(0.5), FT(1.), FT(-0.5));
  Point pC(FT(0.5), FT(-0.5), FT(1.));
  Point pE(FT(1.), FT(-1.), FT(1.));
  Point pF(FT(-1.), FT(0.), FT(2.));
  
  Segment sAB(pA,pB);
  Segment sBC(pB,pC);
  Segment s2E(p2,pE);
  Segment sE2(pE,p2);
  Segment s2A(p2,pA);
  Segment s6E(p6,pE);
  Segment sB8(pB,p8);
  Segment sC8(pC,p8);
  Segment s8C(p8,pC);
  Segment s1F(p1,pF);
  Segment sF6(pF,p6);
  
  b &= test_aux(is_kernel_exact,t,sAB,"t-sAB",p2);
  b &= test_aux(is_kernel_exact,t,sBC,"t-sBC",s46);
  b &= test_aux(is_kernel_exact,t,s2E,"t-s2E",s26);
  b &= test_aux(is_kernel_exact,t,sE2,"t-sE2",s62);
  b &= test_aux(is_kernel_exact,t,s2A,"t-s2A",p2);
  b &= test_aux(is_kernel_exact,t,s6E,"t-s6E",p6);
  b &= test_aux(is_kernel_exact,t,sB8,"t-sB8",s48);
  b &= test_aux(is_kernel_exact,t,sC8,"t-sC8",s68);
  b &= test_aux(is_kernel_exact,t,s8C,"t-s8C",s86);
  b &= test_aux(is_kernel_exact,t,s1F,"t-s1F",s13);
  b &= test_aux(is_kernel_exact,t,sF6,"t-sF6",s36);
  
  // Outside triangle plane
  Point pa(FT(0.), FT(0.), FT(0.));
  Point pb(FT(2.), FT(0.), FT(0.));
  Point pc(FT(1.), FT(0.), FT(1.));
  Point pe(FT(1.), FT(0.5), FT(0.5));
  
  Segment sab(pa,pb);
  Segment sac(pa,pc);
  Segment sae(pa,pe);
  Segment sa8(pa,p8);
  Segment sb2(pb,p2);
  
  b &= test_aux(is_kernel_exact,t,sab,"t-sab",p1);
  b &= test_aux(is_kernel_exact,t,sac,"t-sac",p6);
  b &= test_aux(is_kernel_exact,t,sae,"t-sae",p8);
  b &= test_aux(is_kernel_exact,t,sa8,"t-sa8",p8);
  b &= test_aux(is_kernel_exact,t,sb2,"t-sb2",p2);
  
  // -----------------------------------
  // ray queries
  // -----------------------------------
  // Edges of t 
  Ray r12(p1,p2);
  Ray r21(p2,p1);
  Ray r13(p1,p3);
  Ray r23(p2,p3);
  
  b &= test_aux(is_kernel_exact,t,r12,"t-r12",s12);
  b &= test_aux(is_kernel_exact,t,r21,"t-r21",s21);
  b &= test_aux(is_kernel_exact,t,r13,"t-r13",s13);
  b &= test_aux(is_kernel_exact,t,r23,"t-r23",s23);
  
  // In triangle
  Point p9_(FT(0.), FT(0.5), FT(0.5));
  Point p9(FT(0.25), FT(0.375), FT(0.375));
  
  Ray r14(p1,p4);
  Ray r41(p4,p1);
  Ray r24(p2,p4);
  Ray r42(p4,p2);
  Ray r15(p1,p5);
  Ray r25(p2,p5);
  Ray r34(p3,p4);
  Ray r35(p3,p5);
  Ray r36(p3,p6);
  Ray r45(p4,p5);
  Ray r16(p1,p6);
  Ray r26(p2,p6);
  Ray r62(p6,p2);
  Ray r46(p4,p6);
  Ray r48(p4,p8);
  Ray r56(p5,p6);
  Ray r47(p4,p7);
  Ray r89(p8,p9);
  Ray r86(p8,p6);
  Ray r68(p6,p8);
  Segment r89_res(p8,p9_);
  
  b &= test_aux(is_kernel_exact,t,r14,"t-r14",s12);
  b &= test_aux(is_kernel_exact,t,r41,"t-r41",s41);
  b &= test_aux(is_kernel_exact,t,r24,"t-r24",s21);
  b &= test_aux(is_kernel_exact,t,r42,"t-r42",s42);
  b &= test_aux(is_kernel_exact,t,r15,"t-r15",s15);
  b &= test_aux(is_kernel_exact,t,r25,"t-r25",s23);
  b &= test_aux(is_kernel_exact,t,r34,"t-r34",s34);
  b &= test_aux(is_kernel_exact,t,r35,"t-r35",s32);
  b &= test_aux(is_kernel_exact,t,r36,"t-r36",s31);
  b &= test_aux(is_kernel_exact,t,r45,"t-r45",s45);
  b &= test_aux(is_kernel_exact,t,r16,"t-r16",s13);
  b &= test_aux(is_kernel_exact,t,r26,"t-r26",s26);
  b &= test_aux(is_kernel_exact,t,r62,"t-r62",s62);
  b &= test_aux(is_kernel_exact,t,r46,"t-r46",s46);
  b &= test_aux(is_kernel_exact,t,r48,"t-r48",s46);
  b &= test_aux(is_kernel_exact,t,r56,"t-r56",s56);
  b &= test_aux(is_kernel_exact,t,r47,"t-r47",s45);
  b &= test_aux(is_kernel_exact,t,r89,"t-t89",r89_res);
  b &= test_aux(is_kernel_exact,t,r68,"t-r68",s64);
  b &= test_aux(is_kernel_exact,t,r86,"t-r86",s86);
  
  
  // Outside points (in triangre prane)
  Ray rAB(pA,pB);
  Ray rBC(pB,pC);
  Ray r2E(p2,pE);
  Ray rE2(pE,p2);
  Ray r2A(p2,pA);
  Ray r6E(p6,pE);
  Ray rB8(pB,p8);
  Ray rC8(pC,p8);
  Ray r8C(p8,pC);
  Ray r1F(p1,pF);
  Ray rF6(pF,p6);
  
  b &= test_aux(is_kernel_exact,t,rAB,"t-rAB",p2);
  b &= test_aux(is_kernel_exact,t,rBC,"t-rBC",s46);
  b &= test_aux(is_kernel_exact,t,r2E,"t-r2E",s26);
  b &= test_aux(is_kernel_exact,t,rE2,"t-rE2",s62);
  b &= test_aux(is_kernel_exact,t,r2A,"t-r2A",p2);
  b &= test_aux(is_kernel_exact,t,r6E,"t-r6E",p6);
  b &= test_aux(is_kernel_exact,t,rB8,"t-rB8",s46);
  b &= test_aux(is_kernel_exact,t,rC8,"t-rC8",s64);
  b &= test_aux(is_kernel_exact,t,r8C,"t-r8C",s86);
  b &= test_aux(is_kernel_exact,t,r1F,"t-r1F",s13);
  b &= test_aux(is_kernel_exact,t,rF6,"t-rF6",s31);
  
  // Outside triangle plane
  Ray rab(pa,pb);
  Ray rac(pa,pc);
  Ray rae(pa,pe);
  Ray ra8(pa,p8);
  Ray rb2(pb,p2);
  
  b &= test_aux(is_kernel_exact,t,rab,"t-rab",p1);
  b &= test_aux(is_kernel_exact,t,rac,"t-rac",p6);
  b &= test_aux(is_kernel_exact,t,rae,"t-rae",p8);
  b &= test_aux(is_kernel_exact,t,ra8,"t-ra8",p8);
  b &= test_aux(is_kernel_exact,t,rb2,"t-rb2",p2);
  
  // -----------------------------------
  // Line queries
  // -----------------------------------
  // Edges of t 
  Line l12(p1,p2);
  Line l21(p2,p1);
  Line l13(p1,p3);
  Line l23(p2,p3);
  
  b &= test_aux(is_kernel_exact,t,l12,"t-l12",s12);
  b &= test_aux(is_kernel_exact,t,l21,"t-l21",s21);
  b &= test_aux(is_kernel_exact,t,l13,"t-l13",s13);
  b &= test_aux(is_kernel_exact,t,l23,"t-l23",s23);
  
  // In triangle
  Line l14(p1,p4);
  Line l41(p4,p1);
  Line l24(p2,p4);
  Line l42(p4,p2);
  Line l15(p1,p5);
  Line l25(p2,p5);
  Line l34(p3,p4);
  Line l35(p3,p5);
  Line l36(p3,p6);
  Line l45(p4,p5);
  Line l16(p1,p6);
  Line l26(p2,p6);
  Line l62(p6,p2);
  Line l46(p4,p6);
  Line l48(p4,p8);
  Line l56(p5,p6);
  Line l47(p4,p7);
  Line l89(p8,p9);
  Line l86(p8,p6);
  Line l68(p6,p8);
  Segment l89_res(p1,p9_);

  
  b &= test_aux(is_kernel_exact,t,l14,"t-l14",s12);
  b &= test_aux(is_kernel_exact,t,l41,"t-l41",s21);
  b &= test_aux(is_kernel_exact,t,l24,"t-l24",s21);
  b &= test_aux(is_kernel_exact,t,l42,"t-l42",s12);
  b &= test_aux(is_kernel_exact,t,l15,"t-l15",s15);
  b &= test_aux(is_kernel_exact,t,l25,"t-l25",s23);
  b &= test_aux(is_kernel_exact,t,l34,"t-l34",s34);
  b &= test_aux(is_kernel_exact,t,l35,"t-l35",s32);
  b &= test_aux(is_kernel_exact,t,l36,"t-l36",s31);
  b &= test_aux(is_kernel_exact,t,l45,"t-l45",s45);
  b &= test_aux(is_kernel_exact,t,l16,"t-l16",s13);
  b &= test_aux(is_kernel_exact,t,l26,"t-l26",s26);
  b &= test_aux(is_kernel_exact,t,l62,"t-l62",s62);
  b &= test_aux(is_kernel_exact,t,l46,"t-l46",s46);
  b &= test_aux(is_kernel_exact,t,l48,"t-l48",s46);
  b &= test_aux(is_kernel_exact,t,l56,"t-l56",s56);
  b &= test_aux(is_kernel_exact,t,l47,"t-l47",s45);
  b &= test_aux(is_kernel_exact,t,l89,"t-t89",l89_res);
  b &= test_aux(is_kernel_exact,t,l68,"t-l68",s64);
  b &= test_aux(is_kernel_exact,t,l86,"t-l86",s46);

  
  // Outside points (in triangle plane)
  Line lAB(pA,pB);
  Line lBC(pB,pC);
  Line l2E(p2,pE);
  Line lE2(pE,p2);
  Line l2A(p2,pA);
  Line l6E(p6,pE);
  Line lB8(pB,p8);
  Line lC8(pC,p8);
  Line l8C(p8,pC);
  Line l1F(p1,pF);
  Line lF6(pF,p6);
  
  b &= test_aux(is_kernel_exact,t,lAB,"t-lAB",p2);
  b &= test_aux(is_kernel_exact,t,lBC,"t-lBC",s46);
  b &= test_aux(is_kernel_exact,t,l2E,"t-l2E",s26);
  b &= test_aux(is_kernel_exact,t,lE2,"t-lE2",s62);
  b &= test_aux(is_kernel_exact,t,l2A,"t-l2A",p2);
  b &= test_aux(is_kernel_exact,t,l6E,"t-l6E",s26);
  b &= test_aux(is_kernel_exact,t,lB8,"t-lB8",s46);
  b &= test_aux(is_kernel_exact,t,lC8,"t-lC8",s64);
  b &= test_aux(is_kernel_exact,t,l8C,"t-l8C",s46);
  b &= test_aux(is_kernel_exact,t,l1F,"t-l1F",s13);
  b &= test_aux(is_kernel_exact,t,lF6,"t-lF6",s31);
  
  // Outside triangle plane
  Line lab(pa,pb);
  Line lac(pa,pc);
  Line lae(pa,pe);
  Line la8(pa,p8);
  Line lb2(pb,p2);
  
  b &= test_aux(is_kernel_exact,t,lab,"t-lab",p1);
  b &= test_aux(is_kernel_exact,t,lac,"t-lac",p6);
  b &= test_aux(is_kernel_exact,t,lae,"t-lae",p8);
  b &= test_aux(is_kernel_exact,t,la8,"t-la8",p8);
  b &= test_aux(is_kernel_exact,t,lb2,"t-lb2",p2);
  
  
	return b;
}
Пример #28
0
/*
 * Execute the IFGT instruction
 */
void op_ifgt() {
    if (popInt() > 0) { pc += s16(1); }
    else { pc += 3; }
}
Пример #29
0
/*
 * Execute the JSR instruction
 */
void op_jsr() {
    pushInt(pc + 3);
    pc += s16(1);
}
Пример #30
0
/*
 * Execute the IFLE instruction
 */
void op_ifle() {
    if (popInt() <= 0) { pc += s16(1); }
    else { pc += 3; }
}