您当前的位置:首页 > IT编程 > C++
| C语言 | Java | VB | VC | python | Android | TensorFlow | C++ | oracle | 学术与代码 | cnn卷积神经网络 | gnn | 图像修复 | Keras | 数据集 | Neo4j | 自然语言处理 | 深度学习 | 医学CAD | 医学影像 | 超参数 | pointnet | pytorch | 异常检测 | Transformers | 情感分类 | 知识图谱 |

自学教程:C++ DemoPlayer函数代码示例

51自学网 2021-06-01 20:26:52
  C++
这篇教程C++ DemoPlayer函数代码示例写得很实用,希望能帮到您。

本文整理汇总了C++中DemoPlayer函数的典型用法代码示例。如果您正苦于以下问题:C++ DemoPlayer函数的具体用法?C++ DemoPlayer怎么用?C++ DemoPlayer使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。

在下文中一共展示了DemoPlayer函数的25个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。

示例1: Graphics

void CItems::RenderPickup(const CNetObj_Pickup *pPrev, const CNetObj_Pickup *pCurrent){	Graphics()->TextureSet(g_pData->m_aImages[IMAGE_GAME].m_Id);	Graphics()->QuadsBegin();	vec2 Pos = mix(vec2(pPrev->m_X, pPrev->m_Y), vec2(pCurrent->m_X, pCurrent->m_Y), Client()->IntraGameTick());	float Angle = 0.0f;	float Size = 64.0f;	const int c[] = {		SPRITE_PICKUP_HEALTH,		SPRITE_PICKUP_ARMOR,		SPRITE_PICKUP_GRENADE,		SPRITE_PICKUP_SHOTGUN,		SPRITE_PICKUP_LASER,		SPRITE_PICKUP_NINJA		};	RenderTools()->SelectSprite(c[pCurrent->m_Type]);	switch(pCurrent->m_Type)	{	case PICKUP_GRENADE:		Size = g_pData->m_Weapons.m_aId[WEAPON_GRENADE].m_VisualSize;		break;	case PICKUP_SHOTGUN:		Size = g_pData->m_Weapons.m_aId[WEAPON_SHOTGUN].m_VisualSize;		break;	case PICKUP_LASER:		Size = g_pData->m_Weapons.m_aId[WEAPON_LASER].m_VisualSize;		break;	case PICKUP_NINJA:		m_pClient->m_pEffects->PowerupShine(Pos, vec2(96,18));		Size *= 2.0f;		Pos.x -= 10.0f;	}		Graphics()->QuadsSetRotation(Angle);	static float s_Time = 0.0f;	static float s_LastLocalTime = Client()->LocalTime();	float Offset = Pos.y/32.0f + Pos.x/32.0f;	if(Client()->State() == IClient::STATE_DEMOPLAYBACK)	{		const IDemoPlayer::CInfo *pInfo = DemoPlayer()->BaseInfo();		if(!pInfo->m_Paused)			s_Time += (Client()->LocalTime()-s_LastLocalTime)*pInfo->m_Speed;	}	else	{		if(m_pClient->m_Snap.m_pGameData && !(m_pClient->m_Snap.m_pGameData->m_GameStateFlags&GAMESTATEFLAG_PAUSED))			s_Time += Client()->LocalTime()-s_LastLocalTime; 	}	Pos.x += cosf(s_Time*2.0f+Offset)*2.5f;	Pos.y += sinf(s_Time*2.0f+Offset)*2.5f;	s_LastLocalTime = Client()->LocalTime();	RenderTools()->DrawSprite(Pos.x, Pos.y, Size);	Graphics()->QuadsEnd();}
开发者ID:EliasFarhan,项目名称:teeworlds,代码行数:57,


示例2: Graphics

void CItems::RenderPickup(const CNetObj_Pickup *pPrev, const CNetObj_Pickup *pCurrent){	Graphics()->TextureSet(g_pData->m_aImages[IMAGE_GAME].m_Id);	Graphics()->QuadsBegin();	vec2 Pos = mix(vec2(pPrev->m_X, pPrev->m_Y), vec2(pCurrent->m_X, pCurrent->m_Y), Client()->IntraGameTick());	float Angle = 0.0f;	float Size = 64.0f;	if (pCurrent->m_Type == POWERUP_WEAPON)	{		Angle = 0; //-pi/6;//-0.25f * pi * 2.0f;		RenderTools()->SelectSprite(g_pData->m_Weapons.m_aId[clamp(pCurrent->m_Subtype, 0, NUM_WEAPONS-1)].m_pSpriteBody);		Size = g_pData->m_Weapons.m_aId[clamp(pCurrent->m_Subtype, 0, NUM_WEAPONS-1)].m_VisualSize;		m_pClient->m_pEffects->WeaponShine(Pos, vec2(96,18));	}	else	{		const int c[] = {			SPRITE_PICKUP_HEALTH,			SPRITE_PICKUP_ARMOR,			SPRITE_PICKUP_WEAPON,			SPRITE_PICKUP_NINJA			};		RenderTools()->SelectSprite(c[pCurrent->m_Type]);		if(c[pCurrent->m_Type] == SPRITE_PICKUP_NINJA)		{			m_pClient->m_pEffects->PowerupShine(Pos, vec2(96,18));			Size *= 2.0f;			Pos.x -= 10.0f;		}	}	Graphics()->QuadsSetRotation(Angle);	float Offset = Pos.y/32.0f + Pos.x/32.0f;	if(Client()->State() == IClient::STATE_DEMOPLAYBACK)	{		const IDemoPlayer::CInfo *pInfo = DemoPlayer()->BaseInfo();		static float Time = 0;		static float LastLocalTime = Client()->LocalTime();				if(!pInfo->m_Paused)			Time += (Client()->LocalTime()-LastLocalTime)*pInfo->m_Speed;					Pos.x += cosf(Time*2.0f+Offset)*2.5f;		Pos.y += sinf(Time*2.0f+Offset)*2.5f;				LastLocalTime = Client()->LocalTime();	}	else	{		Pos.x += cosf(Client()->LocalTime()*2.0f+Offset)*2.5f;		Pos.y += sinf(Client()->LocalTime()*2.0f+Offset)*2.5f;	}	RenderTools()->DrawSprite(Pos.x, Pos.y, Size);	Graphics()->QuadsEnd();}
开发者ID:kaddyd,项目名称:teeworlds,代码行数:57,


示例3: DemoPlayer

void CMapLayers::EnvelopeUpdate(){	if(Client()->State() == IClient::STATE_DEMOPLAYBACK)	{		const IDemoPlayer::CInfo *pInfo = DemoPlayer()->BaseInfo();		m_CurrentLocalTick = pInfo->m_CurrentTick;		m_LastLocalTick = pInfo->m_CurrentTick;		m_EnvelopeUpdate = true;	}}
开发者ID:4a4ik,项目名称:teeworlds,代码行数:10,


示例4: DemoPlayer

void CEffects::OnRender(){	static int64 LastUpdate100hz = 0;	static int64 LastUpdate50hz = 0;	if(Client()->State() == IClient::STATE_DEMOPLAYBACK)	{		const IDemoPlayer::CInfo *pInfo = DemoPlayer()->BaseInfo();		if(time_get()-LastUpdate100hz > time_freq()/(100*pInfo->m_Speed))		{			m_Add100hz = true;			LastUpdate100hz = time_get();		}		else			m_Add100hz = false;		if(time_get()-LastUpdate50hz > time_freq()/(100*pInfo->m_Speed))		{			m_Add50hz = true;			LastUpdate50hz = time_get();		}		else			m_Add50hz = false;		if(m_Add50hz)			m_pClient->m_pFlow->Update();		return;	}	if(time_get()-LastUpdate100hz > time_freq()/100)	{		m_Add100hz = true;		LastUpdate100hz = time_get();	}	else		m_Add100hz = false;	if(time_get()-LastUpdate50hz > time_freq()/100)	{		m_Add50hz = true;		LastUpdate50hz = time_get();	}	else		m_Add50hz = false;	if(m_Add50hz)		m_pClient->m_pFlow->Update();}
开发者ID:Fear-cool,项目名称:DDRace,代码行数:50,


示例5: mix

void CGameClient::UpdatePositions(){	// local character position	if(g_Config.m_ClPredict && Client()->State() != IClient::STATE_DEMOPLAYBACK)	{		if(!m_Snap.m_pLocalCharacter ||			(m_Snap.m_pGameData && m_Snap.m_pGameData->m_GameStateFlags&(GAMESTATEFLAG_PAUSED|GAMESTATEFLAG_ROUNDOVER|GAMESTATEFLAG_GAMEOVER)))		{			// don't use predicted		}		else			m_LocalCharacterPos = mix(m_PredictedPrevChar.m_Pos, m_PredictedChar.m_Pos, Client()->PredIntraGameTick());	}	else if(m_Snap.m_pLocalCharacter && m_Snap.m_pLocalPrevCharacter)	{		m_LocalCharacterPos = mix(			vec2(m_Snap.m_pLocalPrevCharacter->m_X, m_Snap.m_pLocalPrevCharacter->m_Y),			vec2(m_Snap.m_pLocalCharacter->m_X, m_Snap.m_pLocalCharacter->m_Y), Client()->IntraGameTick());	}	// spectator position	if(m_Snap.m_SpecInfo.m_Active)	{		if(Client()->State() == IClient::STATE_DEMOPLAYBACK && DemoPlayer()->GetDemoType() == IDemoPlayer::DEMOTYPE_SERVER &&			m_Snap.m_SpecInfo.m_SpectatorID != -1)		{			m_Snap.m_SpecInfo.m_Position = mix(				vec2(m_Snap.m_aCharacters[m_Snap.m_SpecInfo.m_SpectatorID].m_Prev.m_X, m_Snap.m_aCharacters[m_Snap.m_SpecInfo.m_SpectatorID].m_Prev.m_Y),				vec2(m_Snap.m_aCharacters[m_Snap.m_SpecInfo.m_SpectatorID].m_Cur.m_X, m_Snap.m_aCharacters[m_Snap.m_SpecInfo.m_SpectatorID].m_Cur.m_Y),				Client()->IntraGameTick());			m_Snap.m_SpecInfo.m_UsePosition = true;		}		else if(m_Snap.m_pSpectatorInfo && (Client()->State() == IClient::STATE_DEMOPLAYBACK || m_Snap.m_SpecInfo.m_SpecMode != SPEC_FREEVIEW))		{			if(m_Snap.m_pPrevSpectatorInfo)				m_Snap.m_SpecInfo.m_Position = mix(vec2(m_Snap.m_pPrevSpectatorInfo->m_X, m_Snap.m_pPrevSpectatorInfo->m_Y),													vec2(m_Snap.m_pSpectatorInfo->m_X, m_Snap.m_pSpectatorInfo->m_Y), Client()->IntraGameTick());			else				m_Snap.m_SpecInfo.m_Position = vec2(m_Snap.m_pSpectatorInfo->m_X, m_Snap.m_pSpectatorInfo->m_Y);			m_Snap.m_SpecInfo.m_UsePosition = true;		}	}}
开发者ID:Learath2,项目名称:teeworlds,代码行数:43,


示例6: time_get

void CParticles::OnRender(){	if(Client()->State() < IClient::STATE_ONLINE)		return;	static int64 LastTime = 0;	int64 t = time_get();	if(Client()->State() == IClient::STATE_DEMOPLAYBACK)	{		const IDemoPlayer::CInfo *pInfo = DemoPlayer()->BaseInfo();		if(!pInfo->m_Paused)			Update((float)((t-LastTime)/(double)time_freq())*pInfo->m_Speed);	}	else	{		if(m_pClient->m_Snap.m_pGameInfoObj && !(m_pClient->m_Snap.m_pGameInfoObj->m_GameStateFlags&GAMESTATEFLAG_PAUSED))			Update((float)((t-LastTime)/(double)time_freq()));	}	LastTime = t;}
开发者ID:123pikapokapei,项目名称:HClient,代码行数:22,


示例7: Graphics

void CDamageInd::OnRender(){	Graphics()->TextureSet(g_pData->m_aImages[IMAGE_GAME].m_Id);	Graphics()->QuadsBegin();	static float s_LastLocalTime = Client()->LocalTime();	for(int i = 0; i < m_NumItems;)	{		if(Client()->State() == IClient::STATE_DEMOPLAYBACK)		{			const IDemoPlayer::CInfo *pInfo = DemoPlayer()->BaseInfo();			if(pInfo->m_Paused)				m_aItems[i].m_StartTime += Client()->LocalTime()-s_LastLocalTime;			else				m_aItems[i].m_StartTime += (Client()->LocalTime()-s_LastLocalTime)*(1.0f-pInfo->m_Speed);		}		else		{			if(m_pClient->m_Snap.m_pGameData && m_pClient->m_Snap.m_pGameData->m_GameStateFlags&GAMESTATEFLAG_PAUSED)				m_aItems[i].m_StartTime += Client()->LocalTime()-s_LastLocalTime;		}		float Life = 0.75f - (Client()->LocalTime() - m_aItems[i].m_StartTime);		if(Life < 0.0f)			DestroyI(&m_aItems[i]);		else		{			vec2 Pos = mix(m_aItems[i].m_Pos+m_aItems[i].m_Dir*75.0f, m_aItems[i].m_Pos, clamp((Life-0.60f)/0.15f, 0.0f, 1.0f));			const float Alpha = clamp(Life * 10.0f, 0.0f, 1.0f); // 0.1 -> 0.0 == 1.0 -> 0.0			Graphics()->SetColor(1.0f*Alpha, 1.0f*Alpha, 1.0f*Alpha, Alpha);			Graphics()->QuadsSetRotation(m_aItems[i].m_StartAngle + Life * 2.0f);			RenderTools()->SelectSprite(SPRITE_STAR1);			RenderTools()->DrawSprite(Pos.x, Pos.y, 48.0f);			i++;		}	}	s_LastLocalTime = Client()->LocalTime();	Graphics()->QuadsEnd();}
开发者ID:BotoX,项目名称:teeworlds,代码行数:38,


示例8: DemoPlayer

void CParticles::Add(int Group, CParticle *pPart){	if(Client()->State() == IClient::STATE_DEMOPLAYBACK)	{		const IDemoPlayer::CInfo *pInfo = DemoPlayer()->BaseInfo();		if(pInfo->m_Paused)			return;	}	else	{		if(m_pClient->m_Snap.m_pGameInfoObj && m_pClient->m_Snap.m_pGameInfoObj->m_GameStateFlags&GAMESTATEFLAG_PAUSED)			return;	}	if (m_FirstFree == -1)		return;	// remove from the free list	int Id = m_FirstFree;	m_FirstFree = m_aParticles[Id].m_NextPart;	if(m_FirstFree != -1)		m_aParticles[m_FirstFree].m_PrevPart = -1;	// copy data	m_aParticles[Id] = *pPart;	// insert to the group list	m_aParticles[Id].m_PrevPart = -1;	m_aParticles[Id].m_NextPart = m_aFirstPart[Group];	if(m_aFirstPart[Group] != -1)		m_aParticles[m_aFirstPart[Group]].m_PrevPart = Id;	m_aFirstPart[Group] = Id;	// set some parameters	m_aParticles[Id].m_Life = 0;}
开发者ID:123pikapokapei,项目名称:HClient,代码行数:36,


示例9: DemoPlayer

void CMenus::RenderDemoPlayer(CUIRect MainView){	const IDemoPlayer::CInfo *pInfo = DemoPlayer()->BaseInfo();		const float SeekBarHeight = 15.0f;	const float ButtonbarHeight = 20.0f;	const float NameBarHeight = 20.0f;	const float Margins = 5.0f;	float TotalHeight;		if(m_MenuActive)		TotalHeight = SeekBarHeight+ButtonbarHeight+NameBarHeight+Margins*3;	else		TotalHeight = SeekBarHeight+Margins*2;		MainView.HSplitBottom(TotalHeight, 0, &MainView);	MainView.VSplitLeft(250.0f, 0, &MainView);	MainView.VSplitRight(250.0f, &MainView, 0);		RenderTools()->DrawUIRect(&MainView, ms_ColorTabbarActive, CUI::CORNER_T, 10.0f);			MainView.Margin(5.0f, &MainView);		CUIRect SeekBar, ButtonBar, NameBar;		int CurrentTick = pInfo->m_CurrentTick - pInfo->m_FirstTick;	int TotalTicks = pInfo->m_LastTick - pInfo->m_FirstTick;		if(m_MenuActive)	{		MainView.HSplitTop(SeekBarHeight, &SeekBar, &ButtonBar);		ButtonBar.HSplitTop(Margins, 0, &ButtonBar);		ButtonBar.HSplitBottom(NameBarHeight, &ButtonBar, &NameBar);		NameBar.HSplitTop(4.0f, 0, &NameBar);	}	else		SeekBar = MainView;	// do seekbar	{		static int s_SeekBarId = 0;		void *id = &s_SeekBarId;		char aBuffer[128];				RenderTools()->DrawUIRect(&SeekBar, vec4(0,0,0,0.5f), CUI::CORNER_ALL, 5.0f);				float Amount = CurrentTick/(float)TotalTicks;				CUIRect FilledBar = SeekBar;		FilledBar.w = 10.0f + (FilledBar.w-10.0f)*Amount;				RenderTools()->DrawUIRect(&FilledBar, vec4(1,1,1,0.5f), CUI::CORNER_ALL, 5.0f);				str_format(aBuffer, sizeof(aBuffer), "%d:%02d / %d:%02d",			CurrentTick/SERVER_TICK_SPEED/60, (CurrentTick/SERVER_TICK_SPEED)%60,			TotalTicks/SERVER_TICK_SPEED/60, (TotalTicks/SERVER_TICK_SPEED)%60);		UI()->DoLabel(&SeekBar, aBuffer, SeekBar.h*0.70f, 0);		// do the logic	    int Inside = UI()->MouseInside(&SeekBar);					if(UI()->ActiveItem() == id)		{			if(!UI()->MouseButton(0))				UI()->SetActiveItem(0);			else			{				static float PrevAmount = 0.0f;				float Amount = (UI()->MouseX()-SeekBar.x)/(float)SeekBar.w;				if(Amount > 0.0f && Amount < 1.0f && absolute(PrevAmount-Amount) >= 0.01f)				{					PrevAmount = Amount;					m_pClient->OnReset();					m_pClient->m_SuppressEvents = true;					DemoPlayer()->SetPos(Amount);					m_pClient->m_SuppressEvents = false;				}			}		}		else if(UI()->HotItem() == id)		{			if(UI()->MouseButton(0))				UI()->SetActiveItem(id);		}						if(Inside)			UI()->SetHotItem(id);	}		if(CurrentTick == TotalTicks)	{		m_pClient->OnReset();		DemoPlayer()->Pause();		DemoPlayer()->SetPos(0);	}	if(m_MenuActive)	{		// do buttons		CUIRect Button;//.........这里部分代码省略.........
开发者ID:Landil,项目名称:teeworlds,代码行数:101,


示例10: if

//.........这里部分代码省略.........				p.x -= g_pData->m_Weapons.m_aId[iw].m_Offsetx;			}			else			{				Graphics()->QuadsSetRotation(-pi/2+State.GetAttach()->m_Angle*pi*2);			}			RenderTools()->DrawSprite(p.x, p.y, g_pData->m_Weapons.m_aId[iw].m_VisualSize);		}		else if (Player.m_Weapon == WEAPON_NINJA)		{			p = Position;			p.y += g_pData->m_Weapons.m_aId[iw].m_Offsety;			if(Direction.x < 0)			{				Graphics()->QuadsSetRotation(-pi/2-State.GetAttach()->m_Angle*pi*2);				p.x -= g_pData->m_Weapons.m_aId[iw].m_Offsetx;				m_pClient->m_pEffects->PowerupShine(p+vec2(32,0), vec2(32,12));			}			else			{				Graphics()->QuadsSetRotation(-pi/2+State.GetAttach()->m_Angle*pi*2);				m_pClient->m_pEffects->PowerupShine(p-vec2(32,0), vec2(32,12));			}			RenderTools()->DrawSprite(p.x, p.y, g_pData->m_Weapons.m_aId[iw].m_VisualSize);			// HADOKEN			if ((Client()->GameTick()-Player.m_AttackTick) <= (SERVER_TICK_SPEED / 6) && g_pData->m_Weapons.m_aId[iw].m_NumSpriteMuzzles)			{				int IteX = rand() % g_pData->m_Weapons.m_aId[iw].m_NumSpriteMuzzles;				static int s_LastIteX = IteX;				if(Client()->State() == IClient::STATE_DEMOPLAYBACK)				{					const IDemoPlayer::CInfo *pInfo = DemoPlayer()->BaseInfo();					if(pInfo->m_Paused)						IteX = s_LastIteX;					else						s_LastIteX = IteX;				}				else				{					if(m_pClient->m_Snap.m_pGameInfoObj && m_pClient->m_Snap.m_pGameInfoObj->m_GameStateFlags&GAMESTATEFLAG_PAUSED)						IteX = s_LastIteX;					else						s_LastIteX = IteX;				}				if(g_pData->m_Weapons.m_aId[iw].m_aSpriteMuzzles[IteX])				{					vec2 Dir = vec2(pPlayerChar->m_X,pPlayerChar->m_Y) - vec2(pPrevChar->m_X, pPrevChar->m_Y);					Dir = normalize(Dir);					float HadOkenAngle = GetAngle(Dir);					Graphics()->QuadsSetRotation(HadOkenAngle );					//float offsety = -data->weapons[iw].muzzleoffsety;					RenderTools()->SelectSprite(g_pData->m_Weapons.m_aId[iw].m_aSpriteMuzzles[IteX], 0);					vec2 DirY(-Dir.y,Dir.x);					p = Position;					float OffsetX = g_pData->m_Weapons.m_aId[iw].m_Muzzleoffsetx;					p -= Dir * OffsetX;					RenderTools()->DrawSprite(p.x, p.y, 160.0f);				}			}		}		else		{			// TODO: should be an animation			Recoil = 0;
开发者ID:hamidkag,项目名称:TBlock,代码行数:67,


示例11: DemoPlayer

void CMenus::RenderDemoPlayer(CUIRect MainView){	const IDemoPlayer::CInfo *pInfo = DemoPlayer()->BaseInfo();		const float SeekBarHeight = 15.0f;	const float ButtonbarHeight = 20.0f;	const float Margins = 5.0f;	float TotalHeight;		if(m_MenuActive)		TotalHeight = SeekBarHeight+ButtonbarHeight+Margins*3;	else		TotalHeight = SeekBarHeight+Margins*2;		MainView.HSplitBottom(TotalHeight, 0, &MainView);	MainView.VSplitLeft(250.0f, 0, &MainView);	MainView.VSplitRight(250.0f, &MainView, 0);		RenderTools()->DrawUIRect(&MainView, ms_ColorTabbarActive, CUI::CORNER_T, 10.0f);			MainView.Margin(5.0f, &MainView);		CUIRect SeekBar, ButtonBar;		if(m_MenuActive)	{		MainView.HSplitTop(SeekBarHeight, &SeekBar, &ButtonBar);		ButtonBar.HSplitTop(Margins, 0, &ButtonBar);	}	else		SeekBar = MainView;	// do seekbar	{		static int s_SeekBarId = 0;		void *id = &s_SeekBarId;		char aBuffer[128];				RenderTools()->DrawUIRect(&SeekBar, vec4(0,0,0,0.5f), CUI::CORNER_ALL, 5.0f);				int CurrentTick = pInfo->m_CurrentTick - pInfo->m_FirstTick;		int TotalTicks = pInfo->m_LastTick - pInfo->m_FirstTick;				float Amount = CurrentTick/(float)TotalTicks;				CUIRect FilledBar = SeekBar;		FilledBar.w = 10.0f + (FilledBar.w-10.0f)*Amount;				RenderTools()->DrawUIRect(&FilledBar, vec4(1,1,1,0.5f), CUI::CORNER_ALL, 5.0f);				str_format(aBuffer, sizeof(aBuffer), "%d:%02d / %d:%02d",			CurrentTick/SERVER_TICK_SPEED/60, (CurrentTick/SERVER_TICK_SPEED)%60,			TotalTicks/SERVER_TICK_SPEED/60, (TotalTicks/SERVER_TICK_SPEED)%60);		UI()->DoLabel(&SeekBar, aBuffer, SeekBar.h*0.70f, 0);		// do the logic	    int Inside = UI()->MouseInside(&SeekBar);					if(UI()->ActiveItem() == id)		{			if(!UI()->MouseButton(0))				UI()->SetActiveItem(0);			else			{				static float PrevAmount = 0.0f;				float Amount = (UI()->MouseX()-SeekBar.x)/(float)SeekBar.w;				if(Amount > 0 && Amount < 1.0f && PrevAmount != Amount)				{					PrevAmount = Amount;					m_pClient->OnReset();					m_pClient->m_SuppressEvents = true;					DemoPlayer()->SetPos(Amount);					m_pClient->m_SuppressEvents = false;				}			}		}		else if(UI()->HotItem() == id)		{			if(UI()->MouseButton(0))				UI()->SetActiveItem(id);		}						if(Inside)			UI()->SetHotItem(id);	}			if(m_MenuActive)	{		// do buttons		CUIRect Button;		// pause button		ButtonBar.VSplitLeft(ButtonbarHeight, &Button, &ButtonBar);		static int s_PauseButton = 0;		if(DoButton_DemoPlayer(&s_PauseButton, "| |", pInfo->m_Paused, &Button))		{			if(pInfo->m_Paused)				DemoPlayer()->Unpause();			else//.........这里部分代码省略.........
开发者ID:ddup1,项目名称:teeworlds,代码行数:101,


示例12: Client

//.........这里部分代码省略.........				p.x -= g_pData->m_Weapons.m_aId[iw].m_Offsetx;			}			else			{				Graphics()->QuadsSetRotation(-pi/2+State.GetAttach()->m_Angle*pi*2);			}			RenderTools()->DrawSprite(p.x, p.y, g_pData->m_Weapons.m_aId[iw].m_VisualSize);		}		else if (Player.m_Weapon == WEAPON_NINJA)		{			p = Position;			p.y += g_pData->m_Weapons.m_aId[iw].m_Offsety;			if(Direction.x < 0)			{				Graphics()->QuadsSetRotation(-pi/2-State.GetAttach()->m_Angle*pi*2);				p.x -= g_pData->m_Weapons.m_aId[iw].m_Offsetx;				m_pClient->m_pEffects->PowerupShine(p+vec2(32,0), vec2(32,12));			}			else			{				Graphics()->QuadsSetRotation(-pi/2+State.GetAttach()->m_Angle*pi*2);				m_pClient->m_pEffects->PowerupShine(p-vec2(32,0), vec2(32,12));			}			RenderTools()->DrawSprite(p.x, p.y, g_pData->m_Weapons.m_aId[iw].m_VisualSize);			// HADOKEN			if ((Client()->GameTick()-Player.m_AttackTick) <= (SERVER_TICK_SPEED / 6) && g_pData->m_Weapons.m_aId[iw].m_NumSpriteMuzzles)			{				int IteX = rand() % g_pData->m_Weapons.m_aId[iw].m_NumSpriteMuzzles;				static int s_LastIteX = IteX;				if(Client()->State() == IClient::STATE_DEMOPLAYBACK)				{					const IDemoPlayer::CInfo *pInfo = DemoPlayer()->BaseInfo();					if(pInfo->m_Paused)						IteX = s_LastIteX;					else						s_LastIteX = IteX;				}				else				{					if(m_pClient->m_Snap.m_pGameInfoObj && m_pClient->m_Snap.m_pGameInfoObj->m_GameStateFlags&GAMESTATEFLAG_PAUSED)						IteX = s_LastIteX;					else						s_LastIteX = IteX;				}				if(g_pData->m_Weapons.m_aId[iw].m_aSpriteMuzzles[IteX])				{					vec2 Dir = vec2(pPlayerChar->m_X,pPlayerChar->m_Y) - vec2(pPrevChar->m_X, pPrevChar->m_Y);					Dir = normalize(Dir);					float HadOkenAngle = GetAngle(Dir);					Graphics()->QuadsSetRotation(HadOkenAngle );					//float offsety = -data->weapons[iw].muzzleoffsety;					RenderTools()->SelectSprite(g_pData->m_Weapons.m_aId[iw].m_aSpriteMuzzles[IteX], 0);					vec2 DirY(-Dir.y,Dir.x);					p = Position;					float OffsetX = g_pData->m_Weapons.m_aId[iw].m_Muzzleoffsetx;					p -= Dir * OffsetX;					RenderTools()->DrawSprite(p.x, p.y, 160.0f);				}			}		}		else		{			// TODO: should be an animation			Recoil = 0;
开发者ID:MichelFR,项目名称:Teeworlds-Bot,代码行数:67,


示例13: mem_zero

//.........这里部分代码省略.........			else if(Item.m_Type == NETOBJTYPE_GAMEDATATEAM)			{				m_Snap.m_pGameDataTeam = (const CNetObj_GameDataTeam *)pData;			}			else if(Item.m_Type == NETOBJTYPE_GAMEDATAFLAG)			{				m_Snap.m_pGameDataFlag = (const CNetObj_GameDataFlag *)pData;				m_Snap.m_GameDataFlagSnapID = Item.m_ID;			}			else if(Item.m_Type == NETOBJTYPE_FLAG)				m_Snap.m_paFlags[Item.m_ID%2] = (const CNetObj_Flag *)pData;		}	}	// setup local pointers	if(m_LocalClientID >= 0)	{		CSnapState::CCharacterInfo *c = &m_Snap.m_aCharacters[m_LocalClientID];		if(c->m_Active)		{			m_Snap.m_pLocalCharacter = &c->m_Cur;			m_Snap.m_pLocalPrevCharacter = &c->m_Prev;			m_LocalCharacterPos = vec2(m_Snap.m_pLocalCharacter->m_X, m_Snap.m_pLocalCharacter->m_Y);		}		else if(Client()->SnapFindItem(IClient::SNAP_PREV, NETOBJTYPE_CHARACTER, m_LocalClientID))		{			// player died			m_pControls->OnPlayerDeath();		}	}	else	{		m_Snap.m_SpecInfo.m_Active = true;		if(Client()->State() == IClient::STATE_DEMOPLAYBACK && DemoPlayer()->GetDemoType() == IDemoPlayer::DEMOTYPE_SERVER &&			m_DemoSpecID != -1 && m_Snap.m_aCharacters[m_DemoSpecID].m_Active)		{			m_Snap.m_SpecInfo.m_SpecMode = SPEC_PLAYER;			m_Snap.m_SpecInfo.m_SpectatorID = m_DemoSpecID;		}		else		{			if (m_DemoSpecMode == SPEC_PLAYER)			{				m_Snap.m_SpecInfo.m_SpecMode = SPEC_FREEVIEW;				m_Snap.m_SpecInfo.m_SpectatorID = -1;			}			else			{				m_Snap.m_SpecInfo.m_SpecMode = m_DemoSpecMode;				m_Snap.m_SpecInfo.m_SpectatorID = m_DemoSpecID;			}		}	}	// sort player infos by score	for(int k = 0; k < MAX_CLIENTS-1; k++) // ffs, bubblesort	{		for(int i = 0; i < MAX_CLIENTS-k-1; i++)		{			if(m_Snap.m_aInfoByScore[i+1].m_pPlayerInfo && (!m_Snap.m_aInfoByScore[i].m_pPlayerInfo ||				m_Snap.m_aInfoByScore[i].m_pPlayerInfo->m_Score < m_Snap.m_aInfoByScore[i+1].m_pPlayerInfo->m_Score))			{				CPlayerInfoItem Tmp = m_Snap.m_aInfoByScore[i];				m_Snap.m_aInfoByScore[i] = m_Snap.m_aInfoByScore[i+1];				m_Snap.m_aInfoByScore[i+1] = Tmp;			}
开发者ID:Learath2,项目名称:teeworlds,代码行数:67,


示例14: DemolistPopulate

void CMenus::RenderDemoList(CUIRect MainView){	static int s_Inited = 0;	if(!s_Inited)	{		DemolistPopulate();		DemolistOnUpdate(true);		s_Inited = 1;	}	char aFooterLabel[128] = {0};	if(m_DemolistSelectedIndex >= 0)	{		CDemoItem *Item = &m_lDemos[m_DemolistSelectedIndex];		if(str_comp(Item->m_aFilename, "..") == 0)			str_copy(aFooterLabel, Localize("Parent Folder"), sizeof(aFooterLabel));		else if(m_DemolistSelectedIsDir)			str_copy(aFooterLabel, Localize("Folder"), sizeof(aFooterLabel));		else		{			if(!Item->m_InfosLoaded)			{				char aBuffer[512];				str_format(aBuffer, sizeof(aBuffer), "%s/%s", m_aCurrentDemoFolder, Item->m_aFilename);				Item->m_Valid = DemoPlayer()->GetDemoInfo(Storage(), aBuffer, Item->m_StorageType, &Item->m_Info);				Item->m_InfosLoaded = true;			}			if(!Item->m_Valid)				str_copy(aFooterLabel, Localize("Invalid Demo"), sizeof(aFooterLabel));			else				str_copy(aFooterLabel, Localize("Demo details"), sizeof(aFooterLabel));		}	}	// render background	RenderTools()->DrawUIRect(&MainView, vec4(0.0f, 0.0f, 0.0f, 0.25f), CUI::CORNER_ALL, 10.0f);	MainView.Margin(10.0f, &MainView);	CUIRect ButtonBar, RefreshRect, PlayRect, DeleteRect, RenameRect, FileIcon, ListBox;	MainView.HSplitBottom(ms_ButtonHeight+5.0f, &MainView, &ButtonBar);	ButtonBar.HSplitTop(5.0f, 0, &ButtonBar);	ButtonBar.VSplitRight(130.0f, &ButtonBar, &PlayRect);	ButtonBar.VSplitLeft(130.0f, &RefreshRect, &ButtonBar);	ButtonBar.VSplitLeft(10.0f, 0, &ButtonBar);	ButtonBar.VSplitLeft(120.0f, &DeleteRect, &ButtonBar);	ButtonBar.VSplitLeft(10.0f, 0, &ButtonBar);	ButtonBar.VSplitLeft(120.0f, &RenameRect, &ButtonBar);	MainView.HSplitBottom(140.0f, &ListBox, &MainView);	// render demo info	MainView.VMargin(5.0f, &MainView);	MainView.HSplitBottom(5.0f, &MainView, 0);	RenderTools()->DrawUIRect(&MainView, vec4(0,0,0,0.15f), CUI::CORNER_B, 4.0f);	if(!m_DemolistSelectedIsDir && m_DemolistSelectedIndex >= 0 && m_lDemos[m_DemolistSelectedIndex].m_Valid)	{		CUIRect Left, Right, Labels;		MainView.Margin(20.0f, &MainView);		MainView.VSplitMid(&Labels, &MainView);		// left side		Labels.HSplitTop(20.0f, &Left, &Labels);		Left.VSplitLeft(150.0f, &Left, &Right);		UI()->DoLabelScaled(&Left, Localize("Created:"), 14.0f, -1);		UI()->DoLabelScaled(&Right, m_lDemos[m_DemolistSelectedIndex].m_Info.m_aTimestamp, 14.0f, -1);		Labels.HSplitTop(5.0f, 0, &Labels);		Labels.HSplitTop(20.0f, &Left, &Labels);		Left.VSplitLeft(150.0f, &Left, &Right);		UI()->DoLabelScaled(&Left, Localize("Type:"), 14.0f, -1);		UI()->DoLabelScaled(&Right, m_lDemos[m_DemolistSelectedIndex].m_Info.m_aType, 14.0f, -1);		Labels.HSplitTop(5.0f, 0, &Labels);		Labels.HSplitTop(20.0f, &Left, &Labels);		Left.VSplitLeft(150.0f, &Left, &Right);		UI()->DoLabelScaled(&Left, Localize("Length:"), 14.0f, -1);		int Length = ((m_lDemos[m_DemolistSelectedIndex].m_Info.m_aLength[0]<<24)&0xFF000000) | ((m_lDemos[m_DemolistSelectedIndex].m_Info.m_aLength[1]<<16)&0xFF0000) |					((m_lDemos[m_DemolistSelectedIndex].m_Info.m_aLength[2]<<8)&0xFF00) | (m_lDemos[m_DemolistSelectedIndex].m_Info.m_aLength[3]&0xFF);		char aBuf[64];		str_format(aBuf, sizeof(aBuf), "%d:%02d", Length/60, Length%60);		UI()->DoLabelScaled(&Right, aBuf, 14.0f, -1);		Labels.HSplitTop(5.0f, 0, &Labels);		Labels.HSplitTop(20.0f, &Left, &Labels);		Left.VSplitLeft(150.0f, &Left, &Right);		UI()->DoLabelScaled(&Left, Localize("Version:"), 14.0f, -1);		str_format(aBuf, sizeof(aBuf), "%d", m_lDemos[m_DemolistSelectedIndex].m_Info.m_Version);		UI()->DoLabelScaled(&Right, aBuf, 14.0f, -1);		// right side		Labels = MainView;		Labels.HSplitTop(20.0f, &Left, &Labels);		Left.VSplitLeft(150.0f, &Left, &Right);		UI()->DoLabelScaled(&Left, Localize("Map:"), 14.0f, -1);		UI()->DoLabelScaled(&Right, m_lDemos[m_DemolistSelectedIndex].m_Info.m_aMapName, 14.0f, -1);		Labels.HSplitTop(5.0f, 0, &Labels);		Labels.HSplitTop(20.0f, &Left, &Labels);		Left.VSplitLeft(20.0f, 0, &Left);		Left.VSplitLeft(130.0f, &Left, &Right);		UI()->DoLabelScaled(&Left, Localize("Size:"), 14.0f, -1);		unsigned Size = (m_lDemos[m_DemolistSelectedIndex].m_Info.m_aMapSize[0]<<24) | (m_lDemos[m_DemolistSelectedIndex].m_Info.m_aMapSize[1]<<16) |					(m_lDemos[m_DemolistSelectedIndex].m_Info.m_aMapSize[2]<<8) | (m_lDemos[m_DemolistSelectedIndex].m_Info.m_aMapSize[3]);		str_format(aBuf, sizeof(aBuf), Localize("%d Bytes"), Size);		UI()->DoLabelScaled(&Right, aBuf, 14.0f, -1);//.........这里部分代码省略.........
开发者ID:KingteEGER,项目名称:teeworlds,代码行数:101,


示例15: if

void CItems::RenderProjectile(const CNetObj_Projectile *pCurrent, int ItemID){	// get positions	float Curvature = 0;	float Speed = 0;	if(pCurrent->m_Type == WEAPON_GRENADE)	{		Curvature = m_pClient->m_Tuning.m_GrenadeCurvature;		Speed = m_pClient->m_Tuning.m_GrenadeSpeed;	}	else if(pCurrent->m_Type == WEAPON_SHOTGUN)	{		Curvature = m_pClient->m_Tuning.m_ShotgunCurvature;		Speed = m_pClient->m_Tuning.m_ShotgunSpeed;	}	else if(pCurrent->m_Type == WEAPON_GUN)	{		Curvature = m_pClient->m_Tuning.m_GunCurvature;		Speed = m_pClient->m_Tuning.m_GunSpeed;	}	static float s_LastGameTickTime = Client()->GameTickTime();	if(m_pClient->m_Snap.m_pGameInfoObj && !(m_pClient->m_Snap.m_pGameInfoObj->m_GameStateFlags&GAMESTATEFLAG_PAUSED))		s_LastGameTickTime = Client()->GameTickTime();	float Ct = (Client()->PrevGameTick()-pCurrent->m_StartTick)/(float)SERVER_TICK_SPEED + s_LastGameTickTime;	if(Ct < 0)		return; // projectile havn't been shot yet	vec2 StartPos(pCurrent->m_X, pCurrent->m_Y);	vec2 StartVel(pCurrent->m_VelX/100.0f, pCurrent->m_VelY/100.0f);	vec2 Pos = CalcPos(StartPos, StartVel, Curvature, Speed, Ct);	vec2 PrevPos = CalcPos(StartPos, StartVel, Curvature, Speed, Ct-0.001f);	Graphics()->TextureSet(g_pData->m_aImages[IMAGE_GAME].m_Id);	Graphics()->QuadsBegin();	RenderTools()->SelectSprite(g_pData->m_Weapons.m_aId[clamp(pCurrent->m_Type, 0, NUM_WEAPONS-1)].m_pSpriteProj);	vec2 Vel = Pos-PrevPos;	//vec2 pos = mix(vec2(prev->x, prev->y), vec2(current->x, current->y), Client()->IntraGameTick());	// add particle for this projectile	if(pCurrent->m_Type == WEAPON_GRENADE)	{		m_pClient->m_pEffects->SmokeTrail(Pos, Vel*-1);		static float s_Time = 0.0f;		static float s_LastLocalTime = Client()->LocalTime();		if(Client()->State() == IClient::STATE_DEMOPLAYBACK)		{			const IDemoPlayer::CInfo *pInfo = DemoPlayer()->BaseInfo();			if(!pInfo->m_Paused)				s_Time += (Client()->LocalTime()-s_LastLocalTime)*pInfo->m_Speed;		}		else		{			if(m_pClient->m_Snap.m_pGameInfoObj && !(m_pClient->m_Snap.m_pGameInfoObj->m_GameStateFlags&GAMESTATEFLAG_PAUSED))				s_Time += Client()->LocalTime()-s_LastLocalTime;		}		Graphics()->QuadsSetRotation(s_Time*pi*2*2 + ItemID);		s_LastLocalTime = Client()->LocalTime();	}	else	{		m_pClient->m_pEffects->BulletTrail(Pos);		if(length(Vel) > 0.00001f)			Graphics()->QuadsSetRotation(GetAngle(Vel));		else			Graphics()->QuadsSetRotation(0);	}	IGraphics::CQuadItem QuadItem(Pos.x, Pos.y, 32, 32);	Graphics()->QuadsDraw(&QuadItem, 1);	Graphics()->QuadsSetRotation(0);	Graphics()->QuadsEnd();}
开发者ID:Ryozuki,项目名称:TeeSmash,代码行数:80,


示例16: CALLSTACK_ADD

void CMenus::RenderDemoList(CUIRect MainView){	CALLSTACK_ADD();	static int s_Inited = 0;	if(!s_Inited)	{		DemolistPopulate();		DemolistOnUpdate(true);		s_Inited = 1;	}	char aFooterLabel[128] = {0};	if(m_DemolistSelectedIndex >= 0)	{		CDemoItem *Item = &m_lDemos[m_DemolistSelectedIndex];		if(str_comp(Item->m_aFilename, "..") == 0)			str_copy(aFooterLabel, Localize("Parent Folder"), sizeof(aFooterLabel));		else if(m_DemolistSelectedIsDir)			str_copy(aFooterLabel, Localize("Folder"), sizeof(aFooterLabel));		else		{			if(!Item->m_InfosLoaded)			{				char aBuffer[512];				str_format(aBuffer, sizeof(aBuffer), "%s/%s", m_aCurrentDemoFolder, Item->m_aFilename);				Item->m_Valid = DemoPlayer()->GetDemoInfo(Storage(), aBuffer, Item->m_StorageType, &Item->m_Info);				Item->m_InfosLoaded = true;			}			if(!Item->m_Valid)				str_copy(aFooterLabel, Localize("Invalid Demo"), sizeof(aFooterLabel));			else				str_copy(aFooterLabel, Localize("Demo details"), sizeof(aFooterLabel));		}	}	// render background	RenderTools()->DrawUIRect(&MainView, ms_ColorTabbarActive, CUI::CORNER_ALL, 10.0f);	MainView.Margin(10.0f, &MainView);	CUIRect ButtonBar, RefreshRect, PlayRect, DeleteRect, RenameRect, ListBox;	MainView.HSplitBottom(ms_ButtonHeight+5.0f, &MainView, &ButtonBar);	ButtonBar.HSplitTop(5.0f, 0, &ButtonBar);	ButtonBar.VSplitRight(130.0f, &ButtonBar, &PlayRect);	ButtonBar.VSplitLeft(130.0f, &RefreshRect, &ButtonBar);	ButtonBar.VSplitLeft(10.0f, 0, &ButtonBar);	ButtonBar.VSplitLeft(120.0f, &DeleteRect, &ButtonBar);	ButtonBar.VSplitLeft(10.0f, 0, &ButtonBar);	ButtonBar.VSplitLeft(120.0f, &RenameRect, &ButtonBar);	MainView.HSplitBottom(140.0f, &ListBox, &MainView);	// render demo info	MainView.VMargin(5.0f, &MainView);	MainView.HSplitBottom(5.0f, &MainView, 0);	RenderTools()->DrawUIRect(&MainView, vec4(0,0,0,0.15f), CUI::CORNER_B, 4.0f);	if(!m_DemolistSelectedIsDir && m_DemolistSelectedIndex >= 0 && m_lDemos[m_DemolistSelectedIndex].m_Valid)	{		CUIRect Left, Right, Labels;		MainView.Margin(20.0f, &MainView);		MainView.VSplitMid(&Labels, &MainView);		// left side		Labels.HSplitTop(20.0f, &Left, &Labels);		Left.VSplitLeft(150.0f, &Left, &Right);		UI()->DoLabelScaled(&Left, Localize("Created:"), 14.0f, -1);		char aTimestamp[256];		str_timestamp_ex(m_lDemos[m_DemolistSelectedIndex].m_Date, aTimestamp, sizeof(aTimestamp), "%Y-%m-%d %H:%M:%S");		UI()->DoLabelScaled(&Right, aTimestamp, 14.0f, -1);		Labels.HSplitTop(5.0f, 0, &Labels);		Labels.HSplitTop(20.0f, &Left, &Labels);		Left.VSplitLeft(150.0f, &Left, &Right);		UI()->DoLabelScaled(&Left, Localize("Type:"), 14.0f, -1);		UI()->DoLabelScaled(&Right, m_lDemos[m_DemolistSelectedIndex].m_Info.m_aType, 14.0f, -1);		Labels.HSplitTop(5.0f, 0, &Labels);		Labels.HSplitTop(20.0f, &Left, &Labels);		Left.VSplitLeft(150.0f, &Left, &Right);		UI()->DoLabelScaled(&Left, Localize("Length:"), 14.0f, -1);		int Length = ((m_lDemos[m_DemolistSelectedIndex].m_Info.m_aLength[0]<<24)&0xFF000000) | ((m_lDemos[m_DemolistSelectedIndex].m_Info.m_aLength[1]<<16)&0xFF0000) |					((m_lDemos[m_DemolistSelectedIndex].m_Info.m_aLength[2]<<8)&0xFF00) | (m_lDemos[m_DemolistSelectedIndex].m_Info.m_aLength[3]&0xFF);		char aBuf[64];		str_format(aBuf, sizeof(aBuf), "%d:%02d", Length/60, Length%60);		UI()->DoLabelScaled(&Right, aBuf, 14.0f, -1);		Labels.HSplitTop(5.0f, 0, &Labels);		Labels.HSplitTop(20.0f, &Left, &Labels);		Left.VSplitLeft(150.0f, &Left, &Right);		UI()->DoLabelScaled(&Left, Localize("Version:"), 14.0f, -1);		str_format(aBuf, sizeof(aBuf), "%d", m_lDemos[m_DemolistSelectedIndex].m_Info.m_Version);		UI()->DoLabelScaled(&Right, aBuf, 14.0f, -1);		// right side		Labels = MainView;		Labels.HSplitTop(20.0f, &Left, &Labels);		Left.VSplitLeft(150.0f, &Left, &Right);		UI()->DoLabelScaled(&Left, Localize("Map:"), 14.0f, -1);		UI()->DoLabelScaled(&Right, m_lDemos[m_DemolistSelectedIndex].m_Info.m_aMapName, 14.0f, -1);		Labels.HSplitTop(5.0f, 0, &Labels);		Labels.HSplitTop(20.0f, &Left, &Labels);		Left.VSplitLeft(20.0f, 0, &Left);//.........这里部分代码省略.........
开发者ID:AllTheHaxx,项目名称:AllTheHaxx,代码行数:101,


示例17: DemoPlayer

void CMenus::RenderDemoPlayer(CUIRect MainView){	const IDemoPlayer::CInfo *pInfo = DemoPlayer()->BaseInfo();	const float SeekBarHeight = 15.0f;	const float ButtonbarHeight = 20.0f;	const float NameBarHeight = 20.0f;	const float Margins = 5.0f;	float TotalHeight;	if(m_MenuActive)		TotalHeight = SeekBarHeight+ButtonbarHeight+NameBarHeight+Margins*3;	else		TotalHeight = SeekBarHeight+Margins*2;	MainView.HSplitBottom(TotalHeight, 0, &MainView);	MainView.VSplitLeft(50.0f, 0, &MainView);	MainView.VSplitRight(450.0f, &MainView, 0);	RenderTools()->DrawUIRect(&MainView, vec4(0.0f, 0.0f, 0.0f, 0.25f), CUI::CORNER_T, 10.0f);	MainView.Margin(5.0f, &MainView);	CUIRect SeekBar, ButtonBar, NameBar;	int CurrentTick = pInfo->m_CurrentTick - pInfo->m_FirstTick;	int TotalTicks = pInfo->m_LastTick - pInfo->m_FirstTick;	if(m_MenuActive)	{		MainView.HSplitTop(SeekBarHeight, &SeekBar, &ButtonBar);		ButtonBar.HSplitTop(Margins, 0, &ButtonBar);		ButtonBar.HSplitBottom(NameBarHeight, &ButtonBar, &NameBar);		NameBar.HSplitTop(4.0f, 0, &NameBar);	}	else		SeekBar = MainView;	// do seekbar	{		static int s_SeekBarID = 0;		void *id = &s_SeekBarID;		char aBuffer[128];		// draw seek bar		RenderTools()->DrawUIRect(&SeekBar, vec4(0,0,0,0.5f), CUI::CORNER_ALL, 5.0f);		// draw filled bar		float Amount = CurrentTick/(float)TotalTicks;		CUIRect FilledBar = SeekBar;		FilledBar.w = 10.0f + (FilledBar.w-10.0f)*Amount;		RenderTools()->DrawUIRect(&FilledBar, vec4(1,1,1,0.5f), CUI::CORNER_ALL, 5.0f);		// draw markers		for(int i = 0; i < pInfo->m_NumTimelineMarkers; i++)		{			float Ratio = (pInfo->m_aTimelineMarkers[i]-pInfo->m_FirstTick) / (float)TotalTicks;			Graphics()->TextureClear();			Graphics()->QuadsBegin();			Graphics()->SetColor(1.0f, 1.0f, 1.0f, 1.0f);			IGraphics::CQuadItem QuadItem(SeekBar.x + (SeekBar.w-10.0f)*Ratio, SeekBar.y, UI()->PixelSize(), SeekBar.h);			Graphics()->QuadsDrawTL(&QuadItem, 1);			Graphics()->QuadsEnd();		}		// draw time		str_format(aBuffer, sizeof(aBuffer), "%d:%02d / %d:%02d",			CurrentTick/SERVER_TICK_SPEED/60, (CurrentTick/SERVER_TICK_SPEED)%60,			TotalTicks/SERVER_TICK_SPEED/60, (TotalTicks/SERVER_TICK_SPEED)%60);		UI()->DoLabel(&SeekBar, aBuffer, SeekBar.h*0.70f, 0);		// do the logic		int Inside = UI()->MouseInside(&SeekBar);		if(UI()->ActiveItem() == id)		{			if(!UI()->MouseButton(0))				UI()->SetActiveItem(0);			else			{				static float PrevAmount = 0.0f;				float Amount = (UI()->MouseX()-SeekBar.x)/(float)SeekBar.w;				if(Amount > 0.0f && Amount < 1.0f && absolute(PrevAmount-Amount) >= 0.01f)				{					PrevAmount = Amount;					m_pClient->OnReset();					m_pClient->m_SuppressEvents = true;					DemoPlayer()->SetPos(Amount);					m_pClient->m_SuppressEvents = false;					m_pClient->m_pMapLayersBackGround->EnvelopeUpdate();					m_pClient->m_pMapLayersForeGround->EnvelopeUpdate();				}			}		}		else if(UI()->HotItem() == id)		{			if(UI()->MouseButton(0))				UI()->SetActiveItem(id);		}//.........这里部分代码省略.........
开发者ID:KingteEGER,项目名称:teeworlds,代码行数:101,


示例18: if

void CItems::RenderProjectile(const CNetObj_Projectile *pCurrent, int ItemID){	// get positions	float Curvature = 0;	float Speed = 0;	if(pCurrent->m_Type == WEAPON_GRENADE)	{		Curvature = m_pClient->m_Tuning[g_Config.m_ClDummy].m_GrenadeCurvature;		Speed = m_pClient->m_Tuning[g_Config.m_ClDummy].m_GrenadeSpeed;	}	else if(pCurrent->m_Type == WEAPON_SHOTGUN)	{		Curvature = m_pClient->m_Tuning[g_Config.m_ClDummy].m_ShotgunCurvature;		Speed = m_pClient->m_Tuning[g_Config.m_ClDummy].m_ShotgunSpeed;	}	else if(pCurrent->m_Type == WEAPON_GUN)	{		Curvature = m_pClient->m_Tuning[g_Config.m_ClDummy].m_GunCurvature;		Speed = m_pClient->m_Tuning[g_Config.m_ClDummy].m_GunSpeed;	}	//	bool LocalPlayerInGame = false;	if(m_pClient->m_Snap.m_pLocalInfo)		LocalPlayerInGame = m_pClient->m_aClients[m_pClient->m_Snap.m_pLocalInfo->m_ClientID].m_Team != -1;	//	static float s_LastGameTickTime = Client()->GameTickTime();	if(m_pClient->m_Snap.m_pGameInfoObj && !(m_pClient->m_Snap.m_pGameInfoObj->m_GameStateFlags&GAMESTATEFLAG_PAUSED))		s_LastGameTickTime = Client()->GameTickTime();	int PrevTick = Client()->PrevGameTick();	if (m_pClient->AntiPingGrenade() && LocalPlayerInGame && !(Client()->State() == IClient::STATE_DEMOPLAYBACK))	{		// calc predicted game tick		static int Offset = 0;		Offset = (int)(0.8f * (float)Offset + 0.2f * (float)(Client()->PredGameTick() - Client()->GameTick()));		PrevTick += Offset;	}	float Ct = (PrevTick-pCurrent->m_StartTick)/(float)SERVER_TICK_SPEED + s_LastGameTickTime;	if(Ct < 0)		return; // projectile havn't been shot yet	vec2 StartPos;	vec2 StartVel;	CServerInfo Info;	Client()->GetServerInfo(&Info);	ExtractInfo(pCurrent, &StartPos, &StartVel, IsDDNet(&Info));	vec2 Pos = CalcPos(StartPos, StartVel, Curvature, Speed, Ct);	vec2 PrevPos = CalcPos(StartPos, StartVel, Curvature, Speed, Ct-0.001f);	Graphics()->TextureSet(g_pData->m_aImages[IMAGE_GAME].m_Id);	Graphics()->QuadsBegin();	RenderTools()->SelectSprite(g_pData->m_Weapons.m_aId[clamp(pCurrent->m_Type, 0, NUM_WEAPONS-1)].m_pSpriteProj);	vec2 Vel = Pos-PrevPos;	//vec2 pos = mix(vec2(prev->x, prev->y), vec2(current->x, current->y), Client()->IntraGameTick());	// add particle for this projectile	if(pCurrent->m_Type == WEAPON_GRENADE)	{		m_pClient->m_pEffects->SmokeTrail(Pos, Vel*-1);		static float s_Time = 0.0f;		static float s_LastLocalTime = Client()->LocalTime();		if(Client()->State() == IClient::STATE_DEMOPLAYBACK)		{			const IDemoPlayer::CInfo *pInfo = DemoPlayer()->BaseInfo();			if(!pInfo->m_Paused)				s_Time += (Client()->LocalTime()-s_LastLocalTime)*pInfo->m_Speed;		}		else		{			if(m_pClient->m_Snap.m_pGameInfoObj && !(m_pClient->m_Snap.m_pGameInfoObj->m_GameStateFlags&GAMESTATEFLAG_PAUSED))				s_Time += Client()->LocalTime()-s_LastLocalTime;		}		Graphics()->QuadsSetRotation(s_Time*pi*2*2 + ItemID);		s_LastLocalTime = Client()->LocalTime();	}	else	{		m_pClient->m_pEffects->BulletTrail(Pos);		if(length(Vel) > 0.00001f)			Graphics()->QuadsSetRotation(GetAngle(Vel));		else			Graphics()->QuadsSetRotation(0);	}	IGraphics::CQuadItem QuadItem(Pos.x, Pos.y, 32, 32);//.........这里部分代码省略.........
开发者ID:Ameb,项目名称:ddnet,代码行数:101,


示例19: DemolistPopulate

void CMenus::RenderDemoList(CUIRect MainView){	static int s_Inited = 0;	if(!s_Inited)	{		DemolistPopulate();		DemolistOnUpdate(true);		s_Inited = 1;	}	char aFooterLabel[128] = {0};	if(m_DemolistSelectedIndex >= 0)	{		CDemoItem *Item = &m_lDemos[m_DemolistSelectedIndex];		if(str_comp(Item->m_aFilename, "..") == 0)			str_copy(aFooterLabel, Localize("Parent Folder"), sizeof(aFooterLabel));		else if(m_DemolistSelectedIsDir)			str_copy(aFooterLabel, Localize("Folder"), sizeof(aFooterLabel));		else		{			if(!Item->m_InfosLoaded)			{				char aBuffer[512];				str_format(aBuffer, sizeof(aBuffer), "%s/%s", m_aCurrentDemoFolder, Item->m_aFilename);				Item->m_Valid = DemoPlayer()->GetDemoInfo(Storage(), aBuffer, Item->m_StorageType, Item->m_aMap, sizeof(Item->m_aMap));				Item->m_InfosLoaded = true;			}			if(!Item->m_Valid)				str_copy(aFooterLabel, Localize("Invalid Demo"), sizeof(aFooterLabel));			else				str_format(aFooterLabel, sizeof(aFooterLabel), "%s: %s", Localize("Map"), Item->m_aMap);		}	}		// render background	RenderTools()->DrawUIRect(&MainView, ms_ColorTabbarActive, CUI::CORNER_ALL, 10.0f);	MainView.Margin(10.0f, &MainView);		CUIRect ButtonBar, RefreshRect, PlayRect, DeleteRect, FileIcon;	MainView.HSplitBottom(ms_ButtonHeight+5.0f, &MainView, &ButtonBar);	ButtonBar.HSplitTop(5.0f, 0, &ButtonBar);	ButtonBar.VSplitRight(130.0f, &ButtonBar, &PlayRect);	ButtonBar.VSplitLeft(130.0f, &RefreshRect, &ButtonBar);	ButtonBar.VSplitLeft(10.0f, &DeleteRect, &ButtonBar);	ButtonBar.VSplitLeft(120.0f, &DeleteRect, &ButtonBar);		static int s_DemoListId = 0;	static float s_ScrollValue = 0;	UiDoListboxStart(&s_DemoListId, &MainView, 17.0f, Localize("Demos"), aFooterLabel, m_lDemos.size(), 1, m_DemolistSelectedIndex, s_ScrollValue);	for(sorted_array<CDemoItem>::range r = m_lDemos.all(); !r.empty(); r.pop_front())	{		CListboxItem Item = UiDoListboxNextItem((void*)(&r.front()));		if(Item.m_Visible)		{			Item.m_Rect.VSplitLeft(Item.m_Rect.h, &FileIcon, &Item.m_Rect);			Item.m_Rect.VSplitLeft(5.0f, 0, &Item.m_Rect);			DoButton_Icon(IMAGE_FILEICONS, r.front().m_IsDir?SPRITE_FILE_FOLDER:SPRITE_FILE_DEMO1, &FileIcon);			UI()->DoLabel(&Item.m_Rect, r.front().m_aName, Item.m_Rect.h*ms_FontmodHeight, -1);		}	}	bool Activated = false;	m_DemolistSelectedIndex = UiDoListboxEnd(&s_ScrollValue, &Activated);	DemolistOnUpdate(false);		static int s_RefreshButton = 0;	if(DoButton_Menu(&s_RefreshButton, Localize("Refresh"), 0, &RefreshRect))	{		DemolistPopulate();		DemolistOnUpdate(false);	}	static int s_PlayButton = 0;	if(DoButton_Menu(&s_PlayButton, m_DemolistSelectedIsDir?Localize("Open"):Localize("Play"), 0, &PlayRect) || Activated)	{		if(m_DemolistSelectedIndex >= 0)		{			if(m_DemolistSelectedIsDir)	// folder			{				if(str_comp(m_lDemos[m_DemolistSelectedIndex].m_aFilename, "..") == 0)	// parent folder					fs_parent_dir(m_aCurrentDemoFolder);				else	// sub folder				{					char aTemp[256];					str_copy(aTemp, m_aCurrentDemoFolder, sizeof(aTemp));					str_format(m_aCurrentDemoFolder, sizeof(m_aCurrentDemoFolder), "%s/%s", aTemp, m_lDemos[m_DemolistSelectedIndex].m_aFilename);					m_DemolistStorageType = m_lDemos[m_DemolistSelectedIndex].m_StorageType;				}				DemolistPopulate();				DemolistOnUpdate(true);			}			else // file			{				char aBuf[512];				str_format(aBuf, sizeof(aBuf), "%s/%s", m_aCurrentDemoFolder, m_lDemos[m_DemolistSelectedIndex].m_aFilename);				const char *pError = Client()->DemoPlayer_Play(aBuf, m_lDemos[m_DemolistSelectedIndex].m_StorageType);				if(pError)					PopupMessage(Localize("Error"), str_comp(pError, "error loading demo") ? pError : Localize("Error loading demo"), Localize("Ok"));				else				{					UI()->SetActiveItem(0);//.........这里部分代码省略.........
开发者ID:Landil,项目名称:teeworlds,代码行数:101,


示例20: Client

void CModAPI_Component_Items::OnRender(){    if(Client()->State() < IClient::STATE_ONLINE)        return;    int Num = Client()->SnapNumItems(IClient::SNAP_CURRENT);    for(int i = 0; i < Num; i++)    {        IClient::CSnapItem Item;        const void *pData = Client()->SnapGetItem(IClient::SNAP_CURRENT, i, &Item);        switch(Item.m_Type)        {        case NETOBJTYPE_MODAPI_SPRITE:        {            const void *pPrev = Client()->SnapFindItem(IClient::SNAP_PREV, Item.m_Type, Item.m_ID);            if(pPrev)                RenderModAPISprite((const CNetObj_ModAPI_Sprite *)pPrev, (const CNetObj_ModAPI_Sprite *)pData);        }        break;        case NETOBJTYPE_MODAPI_ANIMATEDSPRITE:        {            const void *pPrev = Client()->SnapFindItem(IClient::SNAP_PREV, Item.m_Type, Item.m_ID);            if(pPrev)                RenderModAPIAnimatedSprite((const CNetObj_ModAPI_AnimatedSprite *)pPrev, (const CNetObj_ModAPI_AnimatedSprite *)pData);        }        break;        case NETOBJTYPE_MODAPI_SPRITECHARACTER:        {            const void *pPrev = Client()->SnapFindItem(IClient::SNAP_PREV, Item.m_Type, Item.m_ID);            if(pPrev)                RenderModAPISpriteCharacter((const CNetObj_ModAPI_SpriteCharacter *)pPrev, (const CNetObj_ModAPI_SpriteCharacter *)pData);        }        break;        case NETOBJTYPE_MODAPI_ANIMATEDSPRITECHARACTER:        {            const void *pPrev = Client()->SnapFindItem(IClient::SNAP_PREV, Item.m_Type, Item.m_ID);            if(pPrev)                RenderModAPIAnimatedSpriteCharacter((const CNetObj_ModAPI_AnimatedSpriteCharacter *)pPrev, (const CNetObj_ModAPI_AnimatedSpriteCharacter *)pData);        }        break;        case NETOBJTYPE_MODAPI_LINE:        {            RenderModAPILine((const CNetObj_ModAPI_Line *)pData);        }        break;        case NETOBJTYPE_MODAPI_TEXT:        {            const void *pPrev = Client()->SnapFindItem(IClient::SNAP_PREV, Item.m_Type, Item.m_ID);            if(pPrev)                RenderModAPIText((const CNetObj_ModAPI_Text *)pPrev, (const CNetObj_ModAPI_Text *)pData);        }        break;        case NETOBJTYPE_MODAPI_ANIMATEDTEXT:        {            const void *pPrev = Client()->SnapFindItem(IClient::SNAP_PREV, Item.m_Type, Item.m_ID);            if(pPrev)                RenderModAPIAnimatedText((const CNetObj_ModAPI_AnimatedText *)pPrev, (const CNetObj_ModAPI_AnimatedText *)pData);        }        break;        case NETOBJTYPE_MODAPI_TEXTCHARACTER:        {            const void *pPrev = Client()->SnapFindItem(IClient::SNAP_PREV, Item.m_Type, Item.m_ID);            if(pPrev)                RenderModAPITextCharacter((const CNetObj_ModAPI_TextCharacter *)pPrev, (const CNetObj_ModAPI_TextCharacter *)pData);        }        break;        case NETOBJTYPE_MODAPI_ANIMATEDTEXTCHARACTER:        {            const void *pPrev = Client()->SnapFindItem(IClient::SNAP_PREV, Item.m_Type, Item.m_ID);            if(pPrev)                RenderModAPIAnimatedTextCharacter((const CNetObj_ModAPI_AnimatedTextCharacter *)pPrev, (const CNetObj_ModAPI_AnimatedTextCharacter *)pData);        }        break;        }    }    int64 CurrentTime = time_get();    int64 DeltaTime = CurrentTime - m_LastTime;    m_LastTime = CurrentTime;    if(Client()->State() == IClient::STATE_DEMOPLAYBACK)    {        const IDemoPlayer::CInfo *pInfo = DemoPlayer()->BaseInfo();        if(!pInfo->m_Paused)            UpdateEvents((float)((DeltaTime)/(double)time_freq())*pInfo->m_Speed);    }    else    {        if(m_pClient->m_Snap.m_pGameData && !(m_pClient->m_Snap.m_pGameData->m_GameStateFlags&GAMESTATEFLAG_PAUSED))            UpdateEvents((float)((DeltaTime)/(double)time_freq()));    }//.........这里部分代码省略.........
开发者ID:teeworlds-modapi,项目名称:mod-target,代码行数:101,


示例21: if

void CItems::RenderProjectile(const CNetObj_Projectile *pCurrent, int ItemID){	// get positions	float Curvature = 0;	float Speed = 0;	if(pCurrent->m_Type == WEAPON_GRENADE)	{		Curvature = m_pClient->m_Tuning.m_GrenadeCurvature;		Speed = m_pClient->m_Tuning.m_GrenadeSpeed;	}	else if(pCurrent->m_Type == WEAPON_SHOTGUN)	{		Curvature = m_pClient->m_Tuning.m_ShotgunCurvature;		Speed = m_pClient->m_Tuning.m_ShotgunSpeed;	}	else if(pCurrent->m_Type == WEAPON_GUN)	{		Curvature = m_pClient->m_Tuning.m_GunCurvature;		Speed = m_pClient->m_Tuning.m_GunSpeed;	}	float Ct = (Client()->PrevGameTick()-pCurrent->m_StartTick)/(float)SERVER_TICK_SPEED + Client()->GameTickTime();	if(Ct < 0)		return; // projectile havn't been shot yet			vec2 StartPos(pCurrent->m_X, pCurrent->m_Y);	vec2 StartVel(pCurrent->m_VelX/100.0f, pCurrent->m_VelY/100.0f);	vec2 Pos = CalcPos(StartPos, StartVel, Curvature, Speed, Ct);	vec2 PrevPos = CalcPos(StartPos, StartVel, Curvature, Speed, Ct-0.001f);	Graphics()->TextureSet(g_pData->m_aImages[IMAGE_GAME].m_Id);	Graphics()->QuadsBegin();		RenderTools()->SelectSprite(g_pData->m_Weapons.m_aId[clamp(pCurrent->m_Type, 0, NUM_WEAPONS-1)].m_pSpriteProj);	vec2 Vel = Pos-PrevPos;	//vec2 pos = mix(vec2(prev->x, prev->y), vec2(current->x, current->y), Client()->IntraGameTick());		// add particle for this projectile	if(pCurrent->m_Type == WEAPON_GRENADE)	{		m_pClient->m_pEffects->SmokeTrail(Pos, Vel*-1);		m_pClient->m_pFlow->Add(Pos, Vel*1000*Client()->FrameTime(), 10.0f);				if(Client()->State() == IClient::STATE_DEMOPLAYBACK)		{			const IDemoPlayer::CInfo *pInfo = DemoPlayer()->BaseInfo();			static float Time = 0;			static float LastLocalTime = Client()->LocalTime();					if(!pInfo->m_Paused)				Time += (Client()->LocalTime()-LastLocalTime)*pInfo->m_Speed;						Graphics()->QuadsSetRotation(Time*pi*2*2 + ItemID);						LastLocalTime = Client()->LocalTime();		}		else			Graphics()->QuadsSetRotation(Client()->LocalTime()*pi*2*2 + ItemID);	}	else	{		m_pClient->m_pEffects->BulletTrail(Pos);		m_pClient->m_pFlow->Add(Pos, Vel*1000*Client()->FrameTime(), 10.0f);		if(length(Vel) > 0.00001f)			Graphics()->QuadsSetRotation(GetAngle(Vel));		else			Graphics()->QuadsSetRotation(0);	}	IGraphics::CQuadItem QuadItem(Pos.x, Pos.y, 32, 32);	Graphics()->QuadsDraw(&QuadItem, 1);	//--- Antiping	// Draw shadows of grenades	bool LocalPlayerInGame = 		m_pClient->m_aClients[m_pClient->m_Snap.m_LocalCid].m_Team != -1;	if(g_Config.m_AntiPing && pCurrent->m_Type == WEAPON_GRENADE && LocalPlayerInGame)	{		// Calculate average prediction offset, because client_predtick() gets varial values :(((		// Must be there is a normal way to realize it, but I'm too lazy to find it. ^)		if (m_pClient->m_Average_Prediction_Offset == -1)		{			int Offset = Client()->PredGameTick() - Client()->GameTick();			m_pClient->m_Prediction_Offset_Summ += Offset;			m_pClient->m_Prediction_Offset_Count++;			if (m_pClient->m_Prediction_Offset_Count >= 100)			{				m_pClient->m_Average_Prediction_Offset = 					round((float)m_pClient->m_Prediction_Offset_Summ / m_pClient->m_Prediction_Offset_Count);			}		}				// Draw shadow only if grenade directed to local player//.........这里部分代码省略.........
开发者ID:CoolerMAN,项目名称:tdtw,代码行数:101,


示例22: if

//.........这里部分代码省略.........		vec2 PrevPredictedPos;				if (g_Config.m_AntiPingGrenadeExpl)		{			// grenade explode on collisions			float eps=g_Config.m_AntiPingGrenadeEps*0.0001f;			for (int i=0; (Ct+i*eps<PredictedCt)&&!explode; i++)			{				PredictedPos = CalcPos(StartPos, StartVel, Curvature, Speed, Ct+i*eps);				PrevPredictedPos = CalcPos(StartPos, StartVel, Curvature, Speed,  Ct+(i-1)*eps);				if (Collision()->IntersectLine(PrevPredictedPos, PredictedPos, &PredictedPos, 0))					explode=1;			}						// grenade explode if TimeSpan>GrenadeLifetime			if (((PredictedTick-pCurrent->m_StartTick)/(float)SERVER_TICK_SPEED)>m_pClient->m_Tuning.m_GrenadeLifetime)				explode=2;							// Render explode			if (explode==1)			{				m_pClient->m_pEffects->FakeExplosion(PredictedPos);			}			else if (explode==2)			{				float ExplodeCt=m_pClient->m_Tuning.m_GrenadeLifetime;				PredictedPos = CalcPos(StartPos, StartVel, Curvature, Speed, ExplodeCt);				m_pClient->m_pEffects->FakeExplosion(PredictedPos);			}		}				if (m_pClient->m_Average_Prediction_Offset != -1 && GrenadeIsDirectedToLocalPlayer && !explode && PredictedCt >= 0)		{			PredictedPos = CalcPos(StartPos, StartVel, Curvature, Speed, PredictedCt);			PrevPredictedPos = CalcPos(StartPos, StartVel, Curvature, Speed, PredictedCt-0.001f);			int shadow_type = pCurrent->m_Type; 			Graphics()->SetColor(0, 1, 0, 0.75f); 			RenderTools()->SelectSprite(g_pData->m_Weapons.m_aId[clamp(shadow_type, 0, NUM_WEAPONS-1)].m_pSpriteProj);			IGraphics::CQuadItem QuadItem(PredictedPos.x, PredictedPos.y, 28, 28);			Graphics()->QuadsDraw(&QuadItem, 1);		}				Graphics()->QuadsSetRotation(0);		Graphics()->QuadsEnd();	}		if (!(g_Config.m_AntiPingShowGrenadeIfExplode || explode==0 || pCurrent->m_Type != WEAPON_GRENADE))		return;		// draw original particle	Graphics()->TextureSet(g_pData->m_aImages[IMAGE_GAME].m_Id);	Graphics()->QuadsBegin();		RenderTools()->SelectSprite(g_pData->m_Weapons.m_aId[clamp(pCurrent->m_Type, 0, NUM_WEAPONS-1)].m_pSpriteProj);	vec2 Vel = Pos-PrevPos;	//vec2 pos = mix(vec2(prev->x, prev->y), vec2(current->x, current->y), Client()->IntraGameTick());		// add particle for this projectile	if(pCurrent->m_Type == WEAPON_GRENADE)	{		m_pClient->m_pEffects->SmokeTrail(Pos, Vel*-1);		m_pClient->m_pFlow->Add(Pos, Vel*1000*Client()->FrameTime(), 10.0f);				if(Client()->State() == IClient::STATE_DEMOPLAYBACK)		{			const IDemoPlayer::CInfo *pInfo = DemoPlayer()->BaseInfo();			static float Time = 0;			static float LastLocalTime = Client()->LocalTime();					if(!pInfo->m_Paused)				Time += (Client()->LocalTime()-LastLocalTime)*pInfo->m_Speed;						Graphics()->QuadsSetRotation(Time*pi*2*2 + ItemID);						LastLocalTime = Client()->LocalTime();		}		else			Graphics()->QuadsSetRotation(Client()->LocalTime()*pi*2*2 + ItemID);	}	else	{		if(pCurrent->m_Type != WEAPON_SHOTGUN)			m_pClient->m_pEffects->SgBulletTrail(Pos);		else			m_pClient->m_pEffects->BulletTrail(Pos);		m_pClient->m_pFlow->Add(Pos, Vel*1000*Client()->FrameTime(), 10.0f);		if(length(Vel) > 0.00001f)			Graphics()->QuadsSetRotation(GetAngle(Vel));		else			Graphics()->QuadsSetRotation(0);	}	IGraphics::CQuadItem QuadItem(Pos.x, Pos.y, 32, 32);	Graphics()->QuadsDraw(&QuadItem, 1);	Graphics()->QuadsSetRotation(0);	Graphics()->QuadsEnd();}
开发者ID:kaddyd,项目名称:teeworlds,代码行数:101,


示例23: RenderBackButton

void CMenus::RenderDemoList(CUIRect MainView){	CUIRect BottomView;	MainView.HSplitTop(20.0f, 0, &MainView);	// back button	RenderBackButton(MainView);	// cut view	MainView.HSplitBottom(80.0f, &MainView, &BottomView);	BottomView.HSplitTop(20.f, 0, &BottomView);	static int s_Inited = 0;	if(!s_Inited)	{		DemolistPopulate();		DemolistOnUpdate(true);		s_Inited = 1;	}	char aFooterLabel[128] = {0};	if(m_DemolistSelectedIndex >= 0)	{		CDemoItem *Item = &m_lDemos[m_DemolistSelectedIndex];		if(str_comp(Item->m_aFilename, "..") == 0)			str_copy(aFooterLabel, Localize("Parent Folder"), sizeof(aFooterLabel));		else if(m_DemolistSelectedIsDir)			str_copy(aFooterLabel, Localize("Folder"), sizeof(aFooterLabel));		else		{			if(!Item->m_InfosLoaded)			{				char aBuffer[512];				str_format(aBuffer, sizeof(aBuffer), "%s/%s", m_aCurrentDemoFolder, Item->m_aFilename);				Item->m_Valid = DemoPlayer()->GetDemoInfo(Storage(), aBuffer, Item->m_StorageType, &Item->m_Info);				Item->m_InfosLoaded = true;			}			if(!Item->m_Valid)				str_copy(aFooterLabel, Localize("Invalid Demo"), sizeof(aFooterLabel));			else				str_copy(aFooterLabel, Localize("Demo details"), sizeof(aFooterLabel));		}	}	CUIRect ListBox, Button, Label, FileIcon;	MainView.HSplitTop(230.0f, &ListBox, &MainView);	static int s_DemoListId = 0;	static float s_ScrollValue = 0;	UiDoListboxHeader(&ListBox, Localize("Recorded"), 20.0f, 2.0f);	UiDoListboxStart(&s_DemoListId, 20.0f, 0, m_lDemos.size(), 1, m_DemolistSelectedIndex, s_ScrollValue);	for(sorted_array<CDemoItem>::range r = m_lDemos.all(); !r.empty(); r.pop_front())	{		CListboxItem Item = UiDoListboxNextItem((void*)(&r.front()));		if(Item.m_Visible)		{			Item.m_Rect.VSplitLeft(Item.m_Rect.h, &FileIcon, &Item.m_Rect);			Item.m_Rect.VSplitLeft(5.0f, 0, &Item.m_Rect);			FileIcon.Margin(3.0f, &FileIcon);			FileIcon.x += 3.0f;			DoButton_Icon(IMAGE_FILEICONS, r.front().m_IsDir?SPRITE_FILE_FOLDER:SPRITE_FILE_DEMO1, &FileIcon);			if(!str_comp(m_lDemos[m_DemolistSelectedIndex].m_aName, r.front().m_aName))			{				TextRender()->TextColor(0.0f, 0.0f, 0.0f, 1.0f);				TextRender()->TextOutlineColor(1.0f, 1.0f, 1.0f, 0.25f);				Item.m_Rect.y += 2.0f;				UI()->DoLabel(&Item.m_Rect, r.front().m_aName, Item.m_Rect.h*ms_FontmodHeight*0.8f, 0);				TextRender()->TextColor(1.0f, 1.0f, 1.0f, 1.0f);				TextRender()->TextOutlineColor(0.0f, 0.0f, 0.0f, 0.3f);			}			else			{				Item.m_Rect.y += 2.0f;				UI()->DoLabel(&Item.m_Rect, r.front().m_aName, Item.m_Rect.h*ms_FontmodHeight*0.8f, 0);			}		}	}	bool Activated = false;	m_DemolistSelectedIndex = UiDoListboxEnd(&s_ScrollValue, &Activated);	DemolistOnUpdate(false);	// render demo info	int NumOptions = (!m_DemolistSelectedIsDir && m_DemolistSelectedIndex >= 0 && m_lDemos[m_DemolistSelectedIndex].m_Valid) ? 8 : 0;	float ButtonHeight = 20.0f;	float Spacing = 2.0f;	float BackgroundHeight = (float)(NumOptions+1)*ButtonHeight+(float)NumOptions*Spacing;	MainView.HSplitTop(10.0f, 0, &MainView);	MainView.HSplitTop(BackgroundHeight, &MainView, 0);	RenderTools()->DrawUIRect(&MainView, vec4(0.0f, 0.0f, 0.0f, 0.25f), CUI::CORNER_ALL, 5.0f);	MainView.HSplitTop(ButtonHeight, &Label, &MainView);	Label.y += 2.0f;	UI()->DoLabel(&Label, aFooterLabel, ButtonHeight*ms_FontmodHeight*0.8f, 0);	if(!m_DemolistSelectedIsDir && m_DemolistSelectedIndex >= 0 && m_lDemos[m_DemolistSelectedIndex].m_Valid)	{		MainView.HSplitTop(Spacing, 0, &MainView);		MainView.HSplitTop(ButtonHeight, &Button, &MainView);		DoInfoBox(&Button, Localize("Created"), m_lDemos[m_DemolistSelectedIndex].m_Info.m_aTimestamp);//.........这里部分代码省略.........
开发者ID:pusdesris,项目名称:teeworlds,代码行数:101,


示例24: mem_zero

//.........这里部分代码省略.........						m_FlagDropTick[TEAM_RED] = 0;				if(m_Snap.m_pGameDataObj->m_FlagCarrierBlue == FLAG_TAKEN)				{					if(m_FlagDropTick[TEAM_BLUE] == 0)						m_FlagDropTick[TEAM_BLUE] = Client()->GameTick();				}				else if(m_FlagDropTick[TEAM_BLUE] != 0)						m_FlagDropTick[TEAM_BLUE] = 0;			}			else if(Item.m_Type == NETOBJTYPE_FLAG)				m_Snap.m_paFlags[Item.m_ID%2] = (const CNetObj_Flag *)pData;		}	}	// setup local pointers	if(m_Snap.m_LocalClientID >= 0)	{		CSnapState::CCharacterInfo *c = &m_Snap.m_aCharacters[m_Snap.m_LocalClientID];		if(c->m_Active)		{			m_Snap.m_pLocalCharacter = &c->m_Cur;			m_Snap.m_pLocalPrevCharacter = &c->m_Prev;			m_LocalCharacterPos = vec2(m_Snap.m_pLocalCharacter->m_X, m_Snap.m_pLocalCharacter->m_Y);		}		else if(Client()->SnapFindItem(IClient::SNAP_PREV, NETOBJTYPE_CHARACTER, m_Snap.m_LocalClientID))		{			// player died			m_pControls->OnPlayerDeath();		}	}	else	{		m_Snap.m_SpecInfo.m_Active = true;		if(Client()->State() == IClient::STATE_DEMOPLAYBACK && DemoPlayer()->GetDemoType() == IDemoPlayer::DEMOTYPE_SERVER &&			m_DemoSpecID != SPEC_FREEVIEW && m_Snap.m_aCharacters[m_DemoSpecID].m_Active)			m_Snap.m_SpecInfo.m_SpectatorID = m_DemoSpecID;		else			m_Snap.m_SpecInfo.m_SpectatorID = SPEC_FREEVIEW;	}	// clear out unneeded client data	for(int i = 0; i < MAX_CLIENTS; ++i)	{		if(!m_Snap.m_paPlayerInfos[i] && m_aClients[i].m_Active)			m_aClients[i].Reset();	}	// update friend state	for(int i = 0; i < MAX_CLIENTS; ++i)	{		if(i == m_Snap.m_LocalClientID || !m_Snap.m_paPlayerInfos[i] || !Friends()->IsFriend(m_aClients[i].m_aName, m_aClients[i].m_aClan, true))			m_aClients[i].m_Friend = false;		else			m_aClients[i].m_Friend = true;	}	// sort player infos by score	mem_copy(m_Snap.m_paInfoByScore, m_Snap.m_paPlayerInfos, sizeof(m_Snap.m_paInfoByScore));	for(int k = 0; k < MAX_CLIENTS-1; k++) // ffs, bubblesort	{		for(int i = 0; i < MAX_CLIENTS-k-1; i++)		{			if(m_Snap.m_paInfoByScore[i+1] && (!m_Snap.m_paInfoByScore[i] || m_Snap.m_paInfoByScore[i]->m_Score < m_Snap.m_paInfoByScore[i+1]->m_Score))			{				const CNetObj_PlayerInfo *pTmp = m_Snap.m_paInfoByScore[i];				m_Snap.m_paInfoByScore[i] = m_Snap.m_paInfoByScore[i+1];
开发者ID:BigCrazyChris,项目名称:XXLDDRace,代码行数:67,


示例25: RenderBackButton

void CMenus::RenderDemoList(CUIRect MainView){	CUIRect BottomView;	MainView.HSplitTop(20.0f, 0, &MainView);	// back button	RenderBackButton(MainView);	// cut view	MainView.HSplitBottom(80.0f, &MainView, &BottomView);	RenderTools()->DrawUIRect(&MainView, vec4(0.0f, 0.0f, 0.0f, g_Config.m_ClMenuAlpha/100.0f), CUI::CORNER_ALL, 5.0f);	BottomView.HSplitTop(20.f, 0, &BottomView);	static int s_Inited = 0;	if(!s_Inited)	{		DemolistPopulate();		DemolistOnUpdate(true);		s_Inited = 1;	}	char aFooterLabel[128] = {0};	if(m_DemolistSelectedIndex >= 0)	{		CDemoItem *Item = &m_lDemos[m_DemolistSelectedIndex];		if(str_comp(Item->m_aFilename, "..") == 0)			str_copy(aFooterLabel, Localize("Parent Folder"), sizeof(aFooterLabel));		else if(m_DemolistSelectedIsDir)			str_copy(aFooterLabel, Localize("Folder"), sizeof(aFooterLabel));		else		{			if(!Item->m_InfosLoaded)			{				char aBuffer[512];				str_format(aBuffer, sizeof(aBuffer), "%s/%s", m_aCurrentDemoFolder, Item->m_aFilename);				Item->m_Valid = DemoPlayer()->GetDemoInfo(Storage(), aBuffer, Item->m_StorageType, &Item->m_Info);				Item->m_InfosLoaded = true;			}			if(!Item->m_Valid)				str_copy(aFooterLabel, Localize("Invalid Demo"), sizeof(aFooterLabel));			else				str_copy(aFooterLabel, Localize("Demo details"), sizeof(aFooterLabel));		}	}	static bool s_DemoDetailsActive = true;	const int NumOptions = 8;	const float ButtonHeight = 20.0f;	const float ButtonSpacing = 2.0f;	const float HMargin = 5.0f;	const float BackgroundHeight = s_DemoDetailsActive ? (float)(NumOptions+1)*ButtonHeight+(float)NumOptions*ButtonSpacing : ButtonHeight;	CUIRect ListBox, Button, FileIcon;	MainView.HSplitTop(MainView.h - BackgroundHeight - 2 * HMargin, &ListBox, &MainView);	static CListBoxState s_ListBoxState;	UiDoListboxHeader(&s_ListBoxState, &ListBox, Localize("Recorded"), 20.0f, 2.0f);	UiDoListboxStart(&s_ListBoxState, &s_ListBoxState, 20.0f, 0, m_lDemos.size(), 1, m_DemolistSelectedIndex);	for(sorted_array<CDemoItem>::range r = m_lDemos.all(); !r.empty(); r.pop_front())	{		CListboxItem Item = UiDoListboxNextItem(&s_ListBoxState, (void*)(&r.front()));		// marker count		const CDemoItem& DemoItem = r.front();		int DemoMarkerCount = 0;		if(DemoItem.m_Valid && DemoItem.m_InfosLoaded)			DemoMarkerCount = DemoGetMarkerCount(DemoItem.m_Info);		if(Item.m_Visible)		{			Item.m_Rect.VSplitLeft(Item.m_Rect.h, &FileIcon, &Item.m_Rect);			Item.m_Rect.VSplitLeft(5.0f, 0, &Item.m_Rect);			FileIcon.Margin(3.0f, &FileIcon);			FileIcon.x += 3.0f;			vec4 IconColor = vec4(1, 1, 1, 1);			if(!DemoItem.m_IsDir)			{				IconColor = vec4(0.6f, 0.6f, 0.6f, 1.0f); // not loaded				if(DemoItem.m_Valid && DemoItem.m_InfosLoaded)					IconColor = DemoMarkerCount > 0 ? vec4(0.5, 1, 0.5, 1) : vec4(1,1,1,1);			}			DoIconColor(IMAGE_FILEICONS, r.front().m_IsDir?SPRITE_FILE_FOLDER:SPRITE_FILE_DEMO1, &FileIcon, IconColor);			if((&r.front() - m_lDemos.base_ptr()) == m_DemolistSelectedIndex) // selected			{				TextRender()->TextColor(0.0f, 0.0f, 0.0f, 1.0f);				TextRender()->TextOutlineColor(1.0f, 1.0f, 1.0f, 0.25f);				Item.m_Rect.y += 2.0f;				UI()->DoLabel(&Item.m_Rect, r.front().m_aName, Item.m_Rect.h*ms_FontmodHeight*0.8f, CUI::ALIGN_CENTER);				TextRender()->TextColor(1.0f, 1.0f, 1.0f, 1.0f);				TextRender()->TextOutlineColor(0.0f, 0.0f, 0.0f, 0.3f);			}			else			{				Item.m_Rect.y += 2.0f;				UI()->DoLabel(&Item.m_Rect, r.front().m_aName, Item.m_Rect.h*ms_FontmodHeight*0.8f, CUI::ALIGN_CENTER);			}		}	}	bool Activated = false;//.........这里部分代码省略.........
开发者ID:BotoX,项目名称:teeworlds,代码行数:101,



注:本文中的DemoPlayer函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


C++ DeregisterEventSource函数代码示例
C++ Delta函数代码示例
万事OK自学网:51自学网_软件自学网_CAD自学网自学excel、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。