From 51133dee2ee5c7b10ad77df80032a6b13ca426ad Mon Sep 17 00:00:00 2001 From: c0d3d3v Date: Tue, 14 Jun 2022 19:30:01 +0200 Subject: [PATCH] Add freezing snow flakes effect and fix 50HZ timer + add 10Hz Timer to particle system --- data/extras.png | Bin 56617 -> 54520 bytes src/game/client/components/effects.cpp | 77 +++-- src/game/client/components/effects.h | 2 + .../components/menus_settings_assets.cpp | 10 +- src/game/client/components/particles.cpp | 65 +++- src/game/client/components/particles.h | 13 + src/game/client/components/players.cpp | 324 +++++++++--------- src/game/client/render.h | 13 +- 8 files changed, 296 insertions(+), 208 deletions(-) diff --git a/data/extras.png b/data/extras.png index d10304b8ad57159b440b852cb6986891d8075eb1..8b71bf273fb718abfeca2ff3fb26dd26795257ca 100644 GIT binary patch literal 54520 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 z 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 RCqm$N-0r09D{H^_{{f;zDlh;5 literal 56617 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 ZQ9X6fvK>{bm_DamageInd.Reset(); } -void CEffects::PowerupShine(vec2 Pos, vec2 size) +void CEffects::PowerupShine(vec2 Pos, vec2 Size) { if(!m_Add50hz) return; @@ -65,7 +66,7 @@ void CEffects::PowerupShine(vec2 Pos, vec2 size) CParticle p; p.SetDefault(); p.m_Spr = SPRITE_PART_SLICE; - p.m_Pos = Pos + vec2((random_float() - 0.5f) * size.x, (random_float() - 0.5f) * size.y); + p.m_Pos = Pos + vec2((random_float() - 0.5f) * Size.x, (random_float() - 0.5f) * Size.y); p.m_Vel = vec2(0, 0); p.m_LifeSpan = 0.5f; p.m_StartSize = 16.0f; @@ -78,6 +79,31 @@ void CEffects::PowerupShine(vec2 Pos, vec2 size) m_pClient->m_Particles.Add(CParticles::GROUP_GENERAL, &p); } +void CEffects::FreezingFlakes(vec2 Pos, vec2 Size) +{ + if(!m_Add5hz) + return; + + CParticle p; + p.SetDefault(); + p.m_Spr = SPRITE_PART_SNOWFLAKE; + p.m_Pos = Pos + vec2((random_float() - 0.5f) * Size.x, (random_float() - 0.5f) * Size.y); + p.m_Vel = vec2(0, 0); + p.m_LifeSpan = 1.5f; + p.m_StartSize = (random_float() + 0.5f) * 16.0f; + p.m_EndSize = p.m_StartSize * 0.5f; + p.m_UseAlphaFading = true; + p.m_StartAlpha = 1.0f; + p.m_EndAlpha = 0.0f; + p.m_Rot = random_float() * pi * 2; + p.m_Rotspeed = pi; + p.m_Gravity = random_float() * 250.0f; + p.m_Friction = 0.9f; + p.m_FlowAffected = 0.0f; + p.m_Collides = false; + m_pClient->m_Particles.Add(CParticles::GROUP_EXTRA, &p); +} + void CEffects::SmokeTrail(vec2 Pos, vec2 Vel, float Alpha, float TimePassed) { if(!m_Add50hz && TimePassed < 0.001f) @@ -255,51 +281,38 @@ void CEffects::HammerHit(vec2 Pos) void CEffects::OnRender() { - static int64_t LastUpdate100hz = 0; - static int64_t LastUpdate50hz = 0; + static int64_t s_LastUpdate100hz = 0; + static int64_t s_LastUpdate50hz = 0; + static int64_t s_LastUpdate5hz = 0; + float Speed = 1.0f; if(Client()->State() == IClient::STATE_DEMOPLAYBACK) - { - const IDemoPlayer::CInfo *pInfo = DemoPlayer()->BaseInfo(); + Speed = DemoPlayer()->BaseInfo()->m_Speed; - if(time() - LastUpdate100hz > time_freq() / (100 * pInfo->m_Speed)) - { - m_Add100hz = true; - LastUpdate100hz = time(); - } - else - m_Add100hz = false; - - if(time() - LastUpdate50hz > time_freq() / (100 * pInfo->m_Speed)) - { - m_Add50hz = true; - LastUpdate50hz = time(); - } - else - m_Add50hz = false; - - if(m_Add50hz) - m_pClient->m_Flow.Update(); - - return; - } - - if(time() - LastUpdate100hz > time_freq() / 100) + if(time() - s_LastUpdate100hz > time_freq() / (100 * Speed)) { m_Add100hz = true; - LastUpdate100hz = time(); + s_LastUpdate100hz = time(); } else m_Add100hz = false; - if(time() - LastUpdate50hz > time_freq() / 100) + if(time() - s_LastUpdate50hz > time_freq() / (50 * Speed)) { m_Add50hz = true; - LastUpdate50hz = time(); + s_LastUpdate50hz = time(); } else m_Add50hz = false; + if(time() - s_LastUpdate5hz > time_freq() / (5 * Speed)) + { + m_Add5hz = true; + s_LastUpdate5hz = time(); + } + else + m_Add5hz = false; + if(m_Add50hz) m_pClient->m_Flow.Update(); } diff --git a/src/game/client/components/effects.h b/src/game/client/components/effects.h index df64ce6ea..323aa46b4 100644 --- a/src/game/client/components/effects.h +++ b/src/game/client/components/effects.h @@ -6,6 +6,7 @@ class CEffects : public CComponent { + bool m_Add5hz; bool m_Add50hz; bool m_Add100hz; @@ -26,6 +27,7 @@ public: void PlayerSpawn(vec2 Pos); void PlayerDeath(vec2 Pos, int ClientID); void PowerupShine(vec2 Pos, vec2 Size); + void FreezingFlakes(vec2 Pos, vec2 Size); void Update(); }; diff --git a/src/game/client/components/menus_settings_assets.cpp b/src/game/client/components/menus_settings_assets.cpp index dce87d78a..4a9d0f7f1 100644 --- a/src/game/client/components/menus_settings_assets.cpp +++ b/src/game/client/components/menus_settings_assets.cpp @@ -232,6 +232,14 @@ int CMenus::HudScan(const char *pName, int IsDir, int DirType, void *pUser) return AssetScan(pName, IsDir, DirType, pThis->m_vHudList, "hud", pGraphics, pUser); } +int CMenus::ExtrasScan(const char *pName, int IsDir, int DirType, void *pUser) +{ + auto *pRealUser = (SMenuAssetScanUser *)pUser; + auto *pThis = (CMenus *)pRealUser->m_pUser; + IGraphics *pGraphics = pThis->Graphics(); + return AssetScan(pName, IsDir, DirType, pThis->m_vExtrasList, "extras", pGraphics, pUser); +} + static std::vector s_vpSearchEntitiesList; static std::vector s_vpSearchGamesList; static std::vector s_vpSearchEmoticonsList; @@ -442,7 +450,7 @@ void CMenus::RenderSettingsCustom(CUIRect MainView) } else if(s_CurCustomTab == ASSETS_TAB_EXTRAS) { - InitAssetList(m_vExtrasList, "assets/extras", "extras", HudScan, Graphics(), Storage(), &User); + InitAssetList(m_vExtrasList, "assets/extras", "extras", ExtrasScan, Graphics(), Storage(), &User); } MainView.HSplitTop(10.0f, 0, &MainView); diff --git a/src/game/client/components/particles.cpp b/src/game/client/components/particles.cpp index 9a9d5c011..2cb3ef6a9 100644 --- a/src/game/client/components/particles.cpp +++ b/src/game/client/components/particles.cpp @@ -15,6 +15,7 @@ CParticles::CParticles() OnReset(); m_RenderTrail.m_pParts = this; m_RenderExplosions.m_pParts = this; + m_RenderExtra.m_pParts = this; m_RenderGeneral.m_pParts = this; } @@ -104,7 +105,14 @@ void CParticles::Update(float TimePassed) // move the point vec2 Vel = m_aParticles[i].m_Vel * TimePassed; - Collision()->MovePoint(&m_aParticles[i].m_Pos, &Vel, 0.1f + 0.9f * random_float(), NULL); + if(m_aParticles[i].m_Collides) + { + Collision()->MovePoint(&m_aParticles[i].m_Pos, &Vel, 0.1f + 0.9f * random_float(), NULL); + } + else + { + m_aParticles[i].m_Pos += Vel; + } m_aParticles[i].m_Vel = Vel * (1.0f / TimePassed); m_aParticles[i].m_Life += TimePassed; @@ -172,6 +180,13 @@ void CParticles::OnInit() RenderTools()->QuadContainerAddSprite(m_ParticleQuadContainerIndex, 1.f); } Graphics()->QuadContainerUpload(m_ParticleQuadContainerIndex); + + m_ExtraParticleQuadContainerIndex = Graphics()->CreateQuadContainer(false); + + // TODO: Use a loop similar to the one for m_ParticleQuadContainerIndex if you add more additional particles + Graphics()->QuadsSetSubset(0, 0, 1, 1); + RenderTools()->QuadContainerAddSprite(m_ExtraParticleQuadContainerIndex, 1.f); + Graphics()->QuadContainerUpload(m_ExtraParticleQuadContainerIndex); } bool CParticles::ParticleIsVisibleOnScreen(const vec2 &CurPos, float CurSize) @@ -191,6 +206,16 @@ bool CParticles::ParticleIsVisibleOnScreen(const vec2 &CurPos, float CurSize) void CParticles::RenderGroup(int Group) { + IGraphics::CTextureHandle *aParticles = GameClient()->m_ParticlesSkin.m_SpriteParticles; + int FirstParticleOffset = SPRITE_PART_SLICE; + int ParticleQuadContainerIndex = m_ParticleQuadContainerIndex; + if(Group == GROUP_EXTRA) + { + aParticles = GameClient()->m_ExtrasSkin.m_SpriteParticles; + FirstParticleOffset = SPRITE_PART_SNOWFLAKE; + ParticleQuadContainerIndex = m_ExtraParticleQuadContainerIndex; + } + // don't use the buffer methods here, else the old renderer gets many draw calls if(Graphics()->IsQuadContainerBufferingEnabled()) { @@ -206,16 +231,22 @@ void CParticles::RenderGroup(int Group) if(i != -1) { + float Alpha = m_aParticles[i].m_Color.a; + if(m_aParticles[i].m_UseAlphaFading) + { + float a = m_aParticles[i].m_Life / m_aParticles[i].m_LifeSpan; + Alpha = mix(m_aParticles[i].m_StartAlpha, m_aParticles[i].m_EndAlpha, a); + } LastColor[0] = m_aParticles[i].m_Color.r; LastColor[1] = m_aParticles[i].m_Color.g; LastColor[2] = m_aParticles[i].m_Color.b; - LastColor[3] = m_aParticles[i].m_Color.a; + LastColor[3] = Alpha; Graphics()->SetColor( m_aParticles[i].m_Color.r, m_aParticles[i].m_Color.g, m_aParticles[i].m_Color.b, - m_aParticles[i].m_Color.a); + Alpha); LastQuadOffset = m_aParticles[i].m_Spr; } @@ -226,14 +257,19 @@ void CParticles::RenderGroup(int Group) float a = m_aParticles[i].m_Life / m_aParticles[i].m_LifeSpan; vec2 p = m_aParticles[i].m_Pos; float Size = mix(m_aParticles[i].m_StartSize, m_aParticles[i].m_EndSize, a); + float Alpha = m_aParticles[i].m_Color.a; + if(m_aParticles[i].m_UseAlphaFading) + { + Alpha = mix(m_aParticles[i].m_StartAlpha, m_aParticles[i].m_EndAlpha, a); + } // the current position, respecting the size, is inside the viewport, render it, else ignore if(ParticleIsVisibleOnScreen(p, Size)) { - if((size_t)CurParticleRenderCount == gs_GraphicsMaxParticlesRenderCount || LastColor[0] != m_aParticles[i].m_Color.r || LastColor[1] != m_aParticles[i].m_Color.g || LastColor[2] != m_aParticles[i].m_Color.b || LastColor[3] != m_aParticles[i].m_Color.a || LastQuadOffset != QuadOffset) + if((size_t)CurParticleRenderCount == gs_GraphicsMaxParticlesRenderCount || LastColor[0] != m_aParticles[i].m_Color.r || LastColor[1] != m_aParticles[i].m_Color.g || LastColor[2] != m_aParticles[i].m_Color.b || LastColor[3] != Alpha || LastQuadOffset != QuadOffset) { - Graphics()->TextureSet(GameClient()->m_ParticlesSkin.m_SpriteParticles[LastQuadOffset - SPRITE_PART_SLICE]); - Graphics()->RenderQuadContainerAsSpriteMultiple(m_ParticleQuadContainerIndex, LastQuadOffset, CurParticleRenderCount, s_aParticleRenderInfo); + Graphics()->TextureSet(aParticles[LastQuadOffset - FirstParticleOffset]); + Graphics()->RenderQuadContainerAsSpriteMultiple(ParticleQuadContainerIndex, LastQuadOffset - FirstParticleOffset, CurParticleRenderCount, s_aParticleRenderInfo); CurParticleRenderCount = 0; LastQuadOffset = QuadOffset; @@ -241,12 +277,12 @@ void CParticles::RenderGroup(int Group) m_aParticles[i].m_Color.r, m_aParticles[i].m_Color.g, m_aParticles[i].m_Color.b, - m_aParticles[i].m_Color.a); + Alpha); LastColor[0] = m_aParticles[i].m_Color.r; LastColor[1] = m_aParticles[i].m_Color.g; LastColor[2] = m_aParticles[i].m_Color.b; - LastColor[3] = m_aParticles[i].m_Color.a; + LastColor[3] = Alpha; } s_aParticleRenderInfo[CurParticleRenderCount].m_Pos[0] = p.x; @@ -261,8 +297,8 @@ void CParticles::RenderGroup(int Group) i = m_aParticles[i].m_NextPart; } - Graphics()->TextureSet(GameClient()->m_ParticlesSkin.m_SpriteParticles[LastQuadOffset - SPRITE_PART_SLICE]); - Graphics()->RenderQuadContainerAsSpriteMultiple(m_ParticleQuadContainerIndex, LastQuadOffset, CurParticleRenderCount, s_aParticleRenderInfo); + Graphics()->TextureSet(aParticles[LastQuadOffset - FirstParticleOffset]); + Graphics()->RenderQuadContainerAsSpriteMultiple(ParticleQuadContainerIndex, LastQuadOffset - FirstParticleOffset, CurParticleRenderCount, s_aParticleRenderInfo); } else { @@ -276,11 +312,16 @@ void CParticles::RenderGroup(int Group) float a = m_aParticles[i].m_Life / m_aParticles[i].m_LifeSpan; vec2 p = m_aParticles[i].m_Pos; float Size = mix(m_aParticles[i].m_StartSize, m_aParticles[i].m_EndSize, a); + float Alpha = m_aParticles[i].m_Color.a; + if(m_aParticles[i].m_UseAlphaFading) + { + Alpha = mix(m_aParticles[i].m_StartAlpha, m_aParticles[i].m_EndAlpha, a); + } // the current position, respecting the size, is inside the viewport, render it, else ignore if(ParticleIsVisibleOnScreen(p, Size)) { - Graphics()->TextureSet(GameClient()->m_ParticlesSkin.m_SpriteParticles[m_aParticles[i].m_Spr - SPRITE_PART_SLICE]); + Graphics()->TextureSet(aParticles[m_aParticles[i].m_Spr - FirstParticleOffset]); Graphics()->QuadsBegin(); Graphics()->QuadsSetRotation(m_aParticles[i].m_Rot); @@ -289,7 +330,7 @@ void CParticles::RenderGroup(int Group) m_aParticles[i].m_Color.r, m_aParticles[i].m_Color.g, m_aParticles[i].m_Color.b, - m_aParticles[i].m_Color.a); // pow(a, 0.75f) * + Alpha); IGraphics::CQuadItem QuadItem(p.x, p.y, Size, Size); Graphics()->QuadsDraw(&QuadItem, 1); diff --git a/src/game/client/components/particles.h b/src/game/client/components/particles.h index 300816a9a..7b60aeea2 100644 --- a/src/game/client/components/particles.h +++ b/src/game/client/components/particles.h @@ -14,12 +14,16 @@ struct CParticle m_LifeSpan = 0; m_StartSize = 32; m_EndSize = 32; + m_UseAlphaFading = false; + m_StartAlpha = 1; + m_EndAlpha = 1; m_Rot = 0; m_Rotspeed = 0; m_Gravity = 0; m_Friction = 0; m_FlowAffected = 1.0f; m_Color = ColorRGBA(1, 1, 1, 1); + m_Collides = true; } vec2 m_Pos; @@ -34,6 +38,10 @@ struct CParticle float m_StartSize; float m_EndSize; + bool m_UseAlphaFading; + float m_StartAlpha; + float m_EndAlpha; + float m_Rot; float m_Rotspeed; @@ -42,6 +50,8 @@ struct CParticle ColorRGBA m_Color; + bool m_Collides; + // set by the particle system float m_Life; int m_PrevPart; @@ -57,6 +67,7 @@ public: { GROUP_PROJECTILE_TRAIL = 0, GROUP_EXPLOSIONS, + GROUP_EXTRA, GROUP_GENERAL, NUM_GROUPS }; @@ -72,6 +83,7 @@ public: private: int m_ParticleQuadContainerIndex; + int m_ExtraParticleQuadContainerIndex; enum { @@ -96,6 +108,7 @@ private: CRenderGroup m_RenderTrail; CRenderGroup m_RenderExplosions; + CRenderGroup m_RenderExtra; CRenderGroup m_RenderGeneral; bool ParticleIsVisibleOnScreen(const vec2 &CurPos, float CurSize); diff --git a/src/game/client/components/players.cpp b/src/game/client/components/players.cpp index 334da459f..70b9217c0 100644 --- a/src/game/client/components/players.cpp +++ b/src/game/client/components/players.cpp @@ -451,200 +451,199 @@ void CPlayers::RenderPlayer( // draw gun { - Graphics()->SetColor(1.0f, 1.0f, 1.0f, 1.0f); - Graphics()->QuadsSetRotation(State.GetAttach()->m_Angle * pi * 2 + Angle); - - if(ClientID < 0) - Graphics()->SetColor(1.0f, 1.0f, 1.0f, 0.5f); - - // normal weapons - int iw = clamp(Player.m_Weapon, 0, NUM_WEAPONS - 1); - Graphics()->TextureSet(GameClient()->m_GameSkin.m_SpriteWeapons[iw]); - int QuadOffset = iw * 2 + (Direction.x < 0 ? 1 : 0); - - Graphics()->SetColor(1.0f, 1.0f, 1.0f, Alpha); - - vec2 Dir = Direction; - float Recoil = 0.0f; - vec2 p; - if(Player.m_Weapon == WEAPON_HAMMER) + if(!(RenderInfo.m_TeeRenderFlags & TEE_NO_WEAPON)) { - // Static position for hammer - p = Position + vec2(State.GetAttach()->m_X, State.GetAttach()->m_Y); - p.y += g_pData->m_Weapons.m_aId[iw].m_Offsety; - // if attack is under way, bash stuffs - 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; - } - else - { - Graphics()->QuadsSetRotation(-pi / 2 + State.GetAttach()->m_Angle * pi * 2); - } - Graphics()->RenderQuadContainerAsSprite(m_WeaponEmoteQuadContainerIndex, QuadOffset, p.x, p.y); - } - else if(Player.m_Weapon == WEAPON_NINJA) - { - p = Position; - p.y += g_pData->m_Weapons.m_aId[iw].m_Offsety; + Graphics()->SetColor(1.0f, 1.0f, 1.0f, 1.0f); + Graphics()->QuadsSetRotation(State.GetAttach()->m_Angle * pi * 2 + Angle); - 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_Effects.PowerupShine(p + vec2(32, 0), vec2(32, 12)); - } - else - { - Graphics()->QuadsSetRotation(-pi / 2 + State.GetAttach()->m_Angle * pi * 2); - m_pClient->m_Effects.PowerupShine(p - vec2(32, 0), vec2(32, 12)); - } - Graphics()->RenderQuadContainerAsSprite(m_WeaponEmoteQuadContainerIndex, QuadOffset, p.x, p.y); + if(ClientID < 0) + Graphics()->SetColor(1.0f, 1.0f, 1.0f, 0.5f); - // HADOKEN - if(AttackTime <= 1 / 6.f && g_pData->m_Weapons.m_aId[iw].m_NumSpriteMuzzles) + // normal weapons + int CurrentWeapon = clamp(Player.m_Weapon, 0, NUM_WEAPONS - 1); + Graphics()->TextureSet(GameClient()->m_GameSkin.m_SpriteWeapons[CurrentWeapon]); + int QuadOffset = CurrentWeapon * 2 + (Direction.x < 0 ? 1 : 0); + + Graphics()->SetColor(1.0f, 1.0f, 1.0f, Alpha); + + vec2 Dir = Direction; + float Recoil = 0.0f; + vec2 WeaponPosition; + if(Player.m_Weapon == WEAPON_HAMMER) { - int IteX = rand() % g_pData->m_Weapons.m_aId[iw].m_NumSpriteMuzzles; - static int s_LastIteX = IteX; - if(Client()->State() == IClient::STATE_DEMOPLAYBACK) + // Static position for hammer + WeaponPosition = Position + vec2(State.GetAttach()->m_X, State.GetAttach()->m_Y); + WeaponPosition.y += g_pData->m_Weapons.m_aId[CurrentWeapon].m_Offsety; + // if attack is under way, bash stuffs + if(Direction.x < 0) { - const IDemoPlayer::CInfo *pInfo = DemoPlayer()->BaseInfo(); - if(pInfo->m_Paused) - IteX = s_LastIteX; - else - s_LastIteX = IteX; + Graphics()->QuadsSetRotation(-pi / 2 - State.GetAttach()->m_Angle * pi * 2); + WeaponPosition.x -= g_pData->m_Weapons.m_aId[CurrentWeapon].m_Offsetx; } 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]) - { - if(PredictLocalWeapons) - Dir = vec2(pPlayerChar->m_X, pPlayerChar->m_Y) - vec2(pPrevChar->m_X, pPrevChar->m_Y); - else - Dir = vec2(m_pClient->m_Snap.m_aCharacters[ClientID].m_Cur.m_X, m_pClient->m_Snap.m_aCharacters[ClientID].m_Cur.m_Y) - vec2(m_pClient->m_Snap.m_aCharacters[ClientID].m_Prev.m_X, m_pClient->m_Snap.m_aCharacters[ClientID].m_Prev.m_Y); - float HadOkenAngle = 0; - if(absolute(Dir.x) > 0.0001f || absolute(Dir.y) > 0.0001f) - { - Dir = normalize(Dir); - HadOkenAngle = angle(Dir); - } - else - { - Dir = vec2(1, 0); - } - Graphics()->QuadsSetRotation(HadOkenAngle); - QuadOffset = IteX * 2; - vec2 DirY(-Dir.y, Dir.x); - p = Position; - float OffsetX = g_pData->m_Weapons.m_aId[iw].m_Muzzleoffsetx; - p -= Dir * OffsetX; - Graphics()->TextureSet(GameClient()->m_GameSkin.m_SpriteWeaponsMuzzles[iw][IteX]); - Graphics()->RenderQuadContainerAsSprite(m_WeaponSpriteMuzzleQuadContainerIndex[iw], QuadOffset, p.x, p.y); + Graphics()->QuadsSetRotation(-pi / 2 + State.GetAttach()->m_Angle * pi * 2); } + Graphics()->RenderQuadContainerAsSprite(m_WeaponEmoteQuadContainerIndex, QuadOffset, WeaponPosition.x, WeaponPosition.y); } - } - else - { - // TODO: should be an animation - Recoil = 0; - float a = AttackTicksPassed / 5.0f; - if(a < 1) - Recoil = sinf(a * pi); - p = Position + Dir * g_pData->m_Weapons.m_aId[iw].m_Offsetx - Dir * Recoil * 10.0f; - p.y += g_pData->m_Weapons.m_aId[iw].m_Offsety; - if(Player.m_Weapon == WEAPON_GUN && g_Config.m_ClOldGunPosition) - p.y -= 8; - Graphics()->RenderQuadContainerAsSprite(m_WeaponEmoteQuadContainerIndex, QuadOffset, p.x, p.y); - } + else if(Player.m_Weapon == WEAPON_NINJA) + { + WeaponPosition = Position; + WeaponPosition.y += g_pData->m_Weapons.m_aId[CurrentWeapon].m_Offsety; - if(RenderInfo.m_ShineDecoration) - { - if(Direction.x < 0) - { - m_pClient->m_Effects.PowerupShine(p + vec2(32, 0), vec2(32, 12)); - } - else - { - m_pClient->m_Effects.PowerupShine(p - vec2(32, 0), vec2(32, 12)); - } - } - - if(Player.m_Weapon == WEAPON_GUN || Player.m_Weapon == WEAPON_SHOTGUN) - { - // check if we're firing stuff - if(g_pData->m_Weapons.m_aId[iw].m_NumSpriteMuzzles) //prev.attackticks) - { - float AlphaMuzzle = 0.0f; - if(AttackTicksPassed < g_pData->m_Weapons.m_aId[iw].m_Muzzleduration + 3) + if(Direction.x < 0) { - float t = AttackTicksPassed / g_pData->m_Weapons.m_aId[iw].m_Muzzleduration; - AlphaMuzzle = mix(2.0f, 0.0f, minimum(1.0f, maximum(0.0f, t))); - } - - 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; + Graphics()->QuadsSetRotation(-pi / 2 - State.GetAttach()->m_Angle * pi * 2); + WeaponPosition.x -= g_pData->m_Weapons.m_aId[CurrentWeapon].m_Offsetx; + m_pClient->m_Effects.PowerupShine(WeaponPosition + vec2(32, 0), vec2(32, 12)); } 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; + Graphics()->QuadsSetRotation(-pi / 2 + State.GetAttach()->m_Angle * pi * 2); + m_pClient->m_Effects.PowerupShine(WeaponPosition - vec2(32, 0), vec2(32, 12)); } - if(AlphaMuzzle > 0.0f && g_pData->m_Weapons.m_aId[iw].m_aSpriteMuzzles[IteX]) - { - float OffsetY = -g_pData->m_Weapons.m_aId[iw].m_Muzzleoffsety; - QuadOffset = IteX * 2 + (Direction.x < 0 ? 1 : 0); - if(Direction.x < 0) - OffsetY = -OffsetY; + Graphics()->RenderQuadContainerAsSprite(m_WeaponEmoteQuadContainerIndex, QuadOffset, WeaponPosition.x, WeaponPosition.y); - vec2 DirY(-Dir.y, Dir.x); - vec2 MuzzlePos = p + Dir * g_pData->m_Weapons.m_aId[iw].m_Muzzleoffsetx + DirY * OffsetY; - Graphics()->TextureSet(GameClient()->m_GameSkin.m_SpriteWeaponsMuzzles[iw][IteX]); - Graphics()->RenderQuadContainerAsSprite(m_WeaponSpriteMuzzleQuadContainerIndex[iw], QuadOffset, MuzzlePos.x, MuzzlePos.y); + // HADOKEN + if(AttackTime <= 1 / 6.f && g_pData->m_Weapons.m_aId[CurrentWeapon].m_NumSpriteMuzzles) + { + int IteX = rand() % g_pData->m_Weapons.m_aId[CurrentWeapon].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[CurrentWeapon].m_aSpriteMuzzles[IteX]) + { + if(PredictLocalWeapons) + Dir = vec2(pPlayerChar->m_X, pPlayerChar->m_Y) - vec2(pPrevChar->m_X, pPrevChar->m_Y); + else + Dir = vec2(m_pClient->m_Snap.m_aCharacters[ClientID].m_Cur.m_X, m_pClient->m_Snap.m_aCharacters[ClientID].m_Cur.m_Y) - vec2(m_pClient->m_Snap.m_aCharacters[ClientID].m_Prev.m_X, m_pClient->m_Snap.m_aCharacters[ClientID].m_Prev.m_Y); + float HadOkenAngle = 0; + if(absolute(Dir.x) > 0.0001f || absolute(Dir.y) > 0.0001f) + { + Dir = normalize(Dir); + HadOkenAngle = angle(Dir); + } + else + { + Dir = vec2(1, 0); + } + Graphics()->QuadsSetRotation(HadOkenAngle); + QuadOffset = IteX * 2; + vec2 DirY(-Dir.y, Dir.x); + WeaponPosition = Position; + float OffsetX = g_pData->m_Weapons.m_aId[CurrentWeapon].m_Muzzleoffsetx; + WeaponPosition -= Dir * OffsetX; + Graphics()->TextureSet(GameClient()->m_GameSkin.m_SpriteWeaponsMuzzles[CurrentWeapon][IteX]); + Graphics()->RenderQuadContainerAsSprite(m_WeaponSpriteMuzzleQuadContainerIndex[CurrentWeapon], QuadOffset, WeaponPosition.x, WeaponPosition.y); + } } } - } - Graphics()->SetColor(1.0f, 1.0f, 1.0f, 1.0f); - Graphics()->QuadsSetRotation(0); + else + { + // TODO: should be an animation + Recoil = 0; + float a = AttackTicksPassed / 5.0f; + if(a < 1) + Recoil = sinf(a * pi); + WeaponPosition = Position + Dir * g_pData->m_Weapons.m_aId[CurrentWeapon].m_Offsetx - Dir * Recoil * 10.0f; + WeaponPosition.y += g_pData->m_Weapons.m_aId[CurrentWeapon].m_Offsety; + if(Player.m_Weapon == WEAPON_GUN && g_Config.m_ClOldGunPosition) + WeaponPosition.y -= 8; + Graphics()->RenderQuadContainerAsSprite(m_WeaponEmoteQuadContainerIndex, QuadOffset, WeaponPosition.x, WeaponPosition.y); + } - switch(Player.m_Weapon) - { - case WEAPON_GUN: RenderHand(&RenderInfo, p, Direction, -3 * pi / 4, vec2(-15, 4), Alpha); break; - case WEAPON_SHOTGUN: RenderHand(&RenderInfo, p, Direction, -pi / 2, vec2(-5, 4), Alpha); break; - case WEAPON_GRENADE: RenderHand(&RenderInfo, p, Direction, -pi / 2, vec2(-4, 7), Alpha); break; + if(Player.m_Weapon == WEAPON_GUN || Player.m_Weapon == WEAPON_SHOTGUN) + { + // check if we're firing stuff + if(g_pData->m_Weapons.m_aId[CurrentWeapon].m_NumSpriteMuzzles) //prev.attackticks) + { + float AlphaMuzzle = 0.0f; + if(AttackTicksPassed < g_pData->m_Weapons.m_aId[CurrentWeapon].m_Muzzleduration + 3) + { + float t = AttackTicksPassed / g_pData->m_Weapons.m_aId[CurrentWeapon].m_Muzzleduration; + AlphaMuzzle = mix(2.0f, 0.0f, minimum(1.0f, maximum(0.0f, t))); + } + + int IteX = rand() % g_pData->m_Weapons.m_aId[CurrentWeapon].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(AlphaMuzzle > 0.0f && g_pData->m_Weapons.m_aId[CurrentWeapon].m_aSpriteMuzzles[IteX]) + { + float OffsetY = -g_pData->m_Weapons.m_aId[CurrentWeapon].m_Muzzleoffsety; + QuadOffset = IteX * 2 + (Direction.x < 0 ? 1 : 0); + if(Direction.x < 0) + OffsetY = -OffsetY; + + vec2 DirY(-Dir.y, Dir.x); + vec2 MuzzlePos = WeaponPosition + Dir * g_pData->m_Weapons.m_aId[CurrentWeapon].m_Muzzleoffsetx + DirY * OffsetY; + Graphics()->TextureSet(GameClient()->m_GameSkin.m_SpriteWeaponsMuzzles[CurrentWeapon][IteX]); + Graphics()->RenderQuadContainerAsSprite(m_WeaponSpriteMuzzleQuadContainerIndex[CurrentWeapon], QuadOffset, MuzzlePos.x, MuzzlePos.y); + } + } + } + Graphics()->SetColor(1.0f, 1.0f, 1.0f, 1.0f); + Graphics()->QuadsSetRotation(0); + + switch(Player.m_Weapon) + { + case WEAPON_GUN: RenderHand(&RenderInfo, WeaponPosition, Direction, -3 * pi / 4, vec2(-15, 4), Alpha); break; + case WEAPON_SHOTGUN: RenderHand(&RenderInfo, WeaponPosition, Direction, -pi / 2, vec2(-5, 4), Alpha); break; + case WEAPON_GRENADE: RenderHand(&RenderInfo, WeaponPosition, Direction, -pi / 2, vec2(-4, 7), Alpha); break; + } } } // render the "shadow" tee if(Local && ((g_Config.m_Debug && g_Config.m_ClUnpredictedShadow >= 0) || g_Config.m_ClUnpredictedShadow == 1)) { - vec2 GhostPosition = Position; + vec2 ShadowPosition = Position; if(ClientID >= 0) - GhostPosition = mix( + ShadowPosition = mix( vec2(m_pClient->m_Snap.m_aCharacters[ClientID].m_Prev.m_X, m_pClient->m_Snap.m_aCharacters[ClientID].m_Prev.m_Y), vec2(m_pClient->m_Snap.m_aCharacters[ClientID].m_Cur.m_X, m_pClient->m_Snap.m_aCharacters[ClientID].m_Cur.m_Y), Client()->IntraGameTick(g_Config.m_ClDummy)); - CTeeRenderInfo Ghost = RenderInfo; - RenderTools()->RenderTee(&State, &Ghost, Player.m_Emote, Direction, GhostPosition, 0.5f); // render ghost + CTeeRenderInfo Shadow = RenderInfo; + RenderTools()->RenderTee(&State, &Shadow, Player.m_Emote, Direction, ShadowPosition, 0.5f); // render ghost } RenderTools()->RenderTee(&State, &RenderInfo, Player.m_Emote, Direction, Position, Alpha); + float TeeAnimScale, TeeBaseSize; + RenderTools()->GetRenderTeeAnimScaleAndBaseSize(&State, &RenderInfo, TeeAnimScale, TeeBaseSize); + vec2 BodyPos = Position + vec2(State.GetBody()->m_X, State.GetBody()->m_Y) * TeeAnimScale; + if(RenderInfo.m_TeeRenderFlags & TEE_EFFECT_FROZEN) + { + GameClient()->m_Effects.FreezingFlakes(BodyPos, vec2(32, 32)); + } + int QuadOffsetToEmoticon = NUM_WEAPONS * 2 + 2 + 2; if((Player.m_PlayerFlags & PLAYERFLAG_CHATTING) && !m_pClient->m_aClients[ClientID].m_Afk) { @@ -725,7 +724,12 @@ void CPlayers::OnRender() for(int i = 0; i < MAX_CLIENTS; ++i) { m_aRenderInfo[i] = m_pClient->m_aClients[i].m_RenderInfo; - m_aRenderInfo[i].m_ShineDecoration = m_pClient->m_aClients[i].m_LiveFrozen; + m_aRenderInfo[i].m_TeeRenderFlags = 0; + if(m_pClient->m_aClients[i].m_FreezeEnd != 0) + m_aRenderInfo[i].m_TeeRenderFlags |= TEE_EFFECT_FROZEN | TEE_NO_WEAPON; + if(m_pClient->m_aClients[i].m_LiveFrozen) + m_aRenderInfo[i].m_TeeRenderFlags |= TEE_EFFECT_FROZEN; + CGameClient::CSnapState::CCharacterInfo &CharacterInfo = m_pClient->m_Snap.m_aCharacters[i]; if((CharacterInfo.m_Cur.m_Weapon == WEAPON_NINJA || (CharacterInfo.m_HasExtendedData && CharacterInfo.m_ExtendedData.m_FreezeEnd != 0)) && g_Config.m_ClShowNinja) { diff --git a/src/game/client/render.h b/src/game/client/render.h index bafb279be..0cd61a6b5 100644 --- a/src/game/client/render.h +++ b/src/game/client/render.h @@ -19,7 +19,7 @@ public: m_ColorFeet = ColorRGBA(1, 1, 1); m_Size = 1.0f; m_GotAirJump = 1; - m_ShineDecoration = 0; + m_TeeRenderFlags = 0; }; CSkin::SSkinTextures m_OriginalRenderSkin; @@ -34,7 +34,14 @@ public: ColorRGBA m_ColorFeet; float m_Size; int m_GotAirJump; - int m_ShineDecoration; + int m_TeeRenderFlags; +}; + +// Tee Render Flags +enum +{ + TEE_EFFECT_FROZEN = 1, + TEE_NO_WEAPON = 2, }; // sprite renderings @@ -58,7 +65,6 @@ class CRenderTools int m_TeeQuadContainerIndex; - void GetRenderTeeAnimScaleAndBaseSize(class CAnimState *pAnim, CTeeRenderInfo *pInfo, float &AnimScale, float &BaseSize); void GetRenderTeeBodyScale(float BaseSize, float &BodyScale); void GetRenderTeeFeetScale(float BaseSize, float &FeetScaleWidth, float &FeetScaleHeight); @@ -102,6 +108,7 @@ public: // larger rendering methods void GetRenderTeeBodySize(class CAnimState *pAnim, CTeeRenderInfo *pInfo, vec2 &BodyOffset, float &Width, float &Height); void GetRenderTeeFeetSize(class CAnimState *pAnim, CTeeRenderInfo *pInfo, vec2 &FeetOffset, float &Width, float &Height); + void GetRenderTeeAnimScaleAndBaseSize(class CAnimState *pAnim, CTeeRenderInfo *pInfo, float &AnimScale, float &BaseSize); // returns the offset to use, to render the tee with @see RenderTee exactly in the mid void GetRenderTeeOffsetToRenderedTee(class CAnimState *pAnim, CTeeRenderInfo *pInfo, vec2 &TeeOffsetToMid);