From 6c371a9a57774988bcd7f886fae72b928b93298e Mon Sep 17 00:00:00 2001 From: Learath Date: Sat, 27 Apr 2019 01:11:15 +0300 Subject: [PATCH] Even more refactoring --- src/engine/client/graphics_threaded.cpp | 45 ++++++++++--------- src/engine/client/graphics_threaded.h | 27 +++++------ src/engine/graphics.h | 7 ++- src/game/client/components/items.cpp | 4 +- src/game/client/components/maplayers.cpp | 30 ++++++------- src/game/client/components/maplayers.h | 36 +++++++-------- src/game/client/components/menus.cpp | 4 +- src/game/client/components/menus_browser.cpp | 14 +----- src/game/client/components/menus_settings.cpp | 4 +- src/game/client/components/scoreboard.cpp | 4 +- src/game/client/components/spectator.cpp | 4 +- src/game/client/render.cpp | 2 +- src/game/client/render.h | 12 ++--- src/game/client/render_map.cpp | 20 ++++----- src/game/editor/editor.cpp | 4 +- src/game/editor/editor.h | 2 +- src/game/editor/layer_tiles.cpp | 2 +- 17 files changed, 110 insertions(+), 111 deletions(-) diff --git a/src/engine/client/graphics_threaded.cpp b/src/engine/client/graphics_threaded.cpp index 2c5d31cef..f1d0f0ac9 100644 --- a/src/engine/client/graphics_threaded.cpp +++ b/src/engine/client/graphics_threaded.cpp @@ -51,11 +51,11 @@ void CGraphics_Threaded::FlushVertices(bool KeepVertices) { if(m_NumVertices == 0) return; - + size_t VertSize = sizeof(CCommandBuffer::SVertex); int NumVerts = m_NumVertices; - + if(!KeepVertices) m_NumVertices = 0; @@ -140,7 +140,7 @@ void CGraphics_Threaded::FlushTextVertices(int TextureSize, int TextTextureIndex mem_copy(Cmd.m_aTextOutlineColor, pOutlineTextColor, sizeof(Cmd.m_aTextOutlineColor)); Cmd.m_QuadNum = NumVerts / 4; - + Cmd.m_pVertices = (CCommandBuffer::SVertex *)m_pCommandBuffer->AllocData(VertSize*NumVerts); if(Cmd.m_pVertices == 0x0) { @@ -191,7 +191,7 @@ void CGraphics_Threaded::Rotate(const CCommandBuffer::SPoint &rCenter, CCommandB float s = sinf(m_Rotation); float x, y; int i; - + CCommandBuffer::SVertex *pVertices = pPoints; for(i = 0; i < NumPoints; i++) { @@ -394,14 +394,14 @@ int CGraphics_Threaded::LoadTextureRawSub(int TextureID, int x, int y, int Width void *pTmpData = malloc(MemSize); mem_copy(pTmpData, pData, MemSize); Cmd.m_pData = pTmpData; - + // check if we have enough free memory in the commandbuffer if(!m_pCommandBuffer->AddCommand(Cmd)) { // kick command buffer and try again KickCommandBuffer(); m_pCommandBuffer->AddCommand(Cmd); - } + } return 0; } @@ -668,7 +668,7 @@ void CGraphics_Threaded::SetColor(float r, float g, float b, float a) g *= 255.f; b *= 255.f; a *= 255.f; - + for(int i = 0; i < 4; ++i) { m_aColor[i].r = (unsigned char)(r); @@ -678,6 +678,11 @@ void CGraphics_Threaded::SetColor(float r, float g, float b, float a) } } +void CGraphics_Threaded::SetColor(ColorRGBA rgb) +{ + SetColor(rgb.r, rgb.g, rgb.b, rgb.a); +} + void CGraphics_Threaded::ChangeColorOfCurrentQuadVertices(float r, float g, float b, float a) { clampf(r, 0.f, 1.f); @@ -985,7 +990,7 @@ void CGraphics_Threaded::RenderTileLayer(int BufferContainerIndex, float *pColor { if(NumIndicesOffet == 0) return; - + //add the VertexArrays and draw CCommandBuffer::SCommand_RenderTileLayer Cmd; Cmd.m_State = m_State; @@ -1007,7 +1012,7 @@ void CGraphics_Threaded::RenderTileLayer(int BufferContainerIndex, float *pColor { // kick command buffer and try again KickCommandBuffer(); - + void *Data = m_pCommandBuffer->AllocData((sizeof(char*) + sizeof(unsigned int))*NumIndicesOffet); if(Data == 0x0) { @@ -1017,7 +1022,7 @@ void CGraphics_Threaded::RenderTileLayer(int BufferContainerIndex, float *pColor } Cmd.m_pIndicesOffsets = (char**)Data; Cmd.m_pDrawCount = (unsigned int*)(((char*)Data) + (sizeof(char*)*NumIndicesOffet)); - + // check if we have enough free memory in the commandbuffer if(!m_pCommandBuffer->AddCommand(Cmd)) { @@ -1040,10 +1045,10 @@ void CGraphics_Threaded::RenderTileLayer(int BufferContainerIndex, float *pColor } } - + mem_copy(Cmd.m_pIndicesOffsets, pOffsets, sizeof(char*)*NumIndicesOffet); mem_copy(Cmd.m_pDrawCount, IndicedVertexDrawNum, sizeof(unsigned int)*NumIndicesOffet); - + //todo max indices group check!! } @@ -1070,7 +1075,7 @@ void CGraphics_Threaded::RenderBorderTiles(int BufferContainerIndex, float *pCol Cmd.m_pIndicesOffset = pIndexBufferOffset; Cmd.m_JumpIndex = JumpIndex; - + Cmd.m_Offset[0] = pOffset[0]; Cmd.m_Offset[1] = pOffset[1]; Cmd.m_Dir[0] = pDir[0]; @@ -1160,7 +1165,7 @@ void CGraphics_Threaded::RenderQuadLayer(int BufferContainerIndex, SQuadRenderIn dbg_msg("graphics", "failed to allocate data for the quad info"); return; } - + if(!m_pCommandBuffer->AddCommand(Cmd)) { dbg_msg("graphics", "failed to allocate memory for render quad command"); @@ -1388,7 +1393,7 @@ void CGraphics_Threaded::RenderQuadContainer(int ContainerIndex, int QuadOffset, if((int)Container.m_Quads.size() < QuadOffset + QuadDrawNum || QuadDrawNum == 0) return; - + if(m_UseOpenGL3_3) { if(Container.m_QuadBufferContainerIndex == -1) @@ -1644,7 +1649,7 @@ void CGraphics_Threaded::RenderQuadContainerAsSpriteMultiple(int ContainerIndex, } void* CGraphics_Threaded::AllocCommandBufferData(unsigned AllocSize) { - void* pData = m_pCommandBuffer->AllocData(AllocSize); + void* pData = m_pCommandBuffer->AllocData(AllocSize); if(pData == 0x0) { // kick command buffer and try again @@ -1838,7 +1843,7 @@ void CGraphics_Threaded::CopyBufferObject(int WriteBufferIndex, int ReadBufferIn Cmd.m_pWriteOffset = WriteOffset; Cmd.m_pReadOffset = ReadOffset; Cmd.m_CopySize = CopyDataSize; - + // check if we have enough free memory in the commandbuffer if(!m_pCommandBuffer->AddCommand(Cmd)) { @@ -1938,7 +1943,7 @@ void CGraphics_Threaded::DeleteBufferContainer(int ContainerIndex, bool DestroyA CCommandBuffer::SCommand_DeleteBufferContainer Cmd; Cmd.m_BufferContainerIndex = ContainerIndex; Cmd.m_DestroyAllBO = DestroyAllBO; - + // check if we have enough free memory in the commandbuffer if(!m_pCommandBuffer->AddCommand(Cmd)) { @@ -2028,7 +2033,7 @@ void CGraphics_Threaded::IndicesNumRequiredNotify(unsigned int RequiredIndicesCo { // kick command buffer and try again KickCommandBuffer(); - + if(!m_pCommandBuffer->AddCommand(Cmd)) { dbg_msg("graphics", "failed to allocate memory for indcies required count notify command"); @@ -2069,7 +2074,7 @@ int CGraphics_Threaded::InitWindow() if(IssueInit() == 0) return 0; } - + // try using old opengl context if(g_Config.m_GfxOpenGL3) { diff --git a/src/engine/client/graphics_threaded.h b/src/engine/client/graphics_threaded.h index f5dda08ba..66218ecd9 100644 --- a/src/engine/client/graphics_threaded.h +++ b/src/engine/client/graphics_threaded.h @@ -85,7 +85,7 @@ public: // rendering CMD_CLEAR, CMD_RENDER, - + //opengl 3.3 commands CMD_CREATE_BUFFER_OBJECT, // create vbo CMD_RECREATE_BUFFER_OBJECT, // recreate vbo @@ -108,7 +108,7 @@ public: CMD_RENDER_QUAD_CONTAINER, // render a quad buffer container CMD_RENDER_QUAD_CONTAINER_SPRITE, // render a quad buffer container as sprite CMD_RENDER_QUAD_CONTAINER_SPRITE_MULTIPLE, // render a quad buffer container as sprite multiple times - + // swap CMD_SWAP, @@ -300,22 +300,22 @@ public: unsigned int m_RequiredIndicesNum; }; - + struct SCommand_RenderTileLayer : public SCommand { SCommand_RenderTileLayer() : SCommand(CMD_RENDER_TILE_LAYER) {} SState m_State; SColorf m_Color; //the color of the whole tilelayer -- already envelopped - + //the char offset of all indices that should be rendered, and the amount of renders char** m_pIndicesOffsets; unsigned int *m_pDrawCount; - + int m_IndicesDrawNum; int m_BufferContainerIndex; int m_LOD; }; - + struct SCommand_RenderBorderTile : public SCommand { SCommand_RenderBorderTile() : SCommand(CMD_RENDER_BORDER_TILE) {} @@ -325,12 +325,12 @@ public: unsigned int m_DrawNum; int m_BufferContainerIndex; int m_LOD; - + float m_Offset[2]; float m_Dir[2]; int m_JumpIndex; }; - + struct SCommand_RenderBorderTileLine : public SCommand { SCommand_RenderBorderTileLine() : SCommand(CMD_RENDER_BORDER_TILE_LINE) {} @@ -341,7 +341,7 @@ public: unsigned int m_DrawNum; int m_BufferContainerIndex; int m_LOD; - + float m_Offset[2]; float m_Dir[2]; }; @@ -376,7 +376,7 @@ public: { SCommand_RenderTextStream() : SCommand(CMD_RENDER_TEXT_STREAM) {} SState m_State; - + SVertex *m_pVertices; int m_QuadNum; @@ -590,7 +590,7 @@ public: virtual void RunBuffer(CCommandBuffer *pBuffer) = 0; virtual bool IsIdle() const = 0; virtual void WaitForIdle() = 0; - + virtual bool IsOpenGL3_3() { return false; } }; @@ -740,11 +740,12 @@ public: virtual void SetColorVertex(const CColorVertex *pArray, int Num); virtual void SetColor(float r, float g, float b, float a); + virtual void SetColor(ColorRGBA rgb); // go through all vertices and change their color (only works for quads) virtual void ChangeColorOfCurrentQuadVertices(float r, float g, float b, float a); virtual void ChangeColorOfQuadVertices(int QuadOffset, unsigned char r, unsigned char g, unsigned char b, unsigned char a); - + void SetColor(CCommandBuffer::SVertex *pVertex, int ColorIndex); virtual void QuadsSetSubset(float TlU, float TlV, float BrU, float BrV); @@ -824,7 +825,7 @@ public: virtual void InsertSignal(semaphore *pSemaphore); virtual bool IsIdle(); virtual void WaitForIdle(); - + virtual bool IsBufferingEnabled() { return m_UseOpenGL3_3; } }; diff --git a/src/engine/graphics.h b/src/engine/graphics.h index 0d0fb8a5d..9f825f32e 100644 --- a/src/engine/graphics.h +++ b/src/engine/graphics.h @@ -5,6 +5,8 @@ #include "kernel.h" +#include + #include #define GRAPHICS_TYPE_UNSIGNED_BYTE 0x1401 #define GRAPHICS_TYPE_UNSIGNED_SHORT 0x1403 @@ -155,7 +157,7 @@ public: virtual void RenderBorderTileLines(int BufferContainerIndex, float *pColor, char *pIndexBufferOffset, float *pOffset, float *pDir, unsigned int IndexDrawNum, unsigned int RedrawNum) = 0; virtual void RenderQuadLayer(int BufferContainerIndex, SQuadRenderInfo *pQuadInfo, int QuadNum) = 0; virtual void RenderText(int BufferContainerIndex, int TextQuadNum, int TextureSize, int TextureTextIndex, int TextureTextOutlineIndex, float *pTextColor, float *pTextoutlineColor) = 0; - + // opengl 3.3 functions virtual int CreateBufferObject(size_t UploadDataSize, void *pUploadData) = 0; virtual void RecreateBufferObject(int BufferIndex, size_t UploadDataSize, void *pUploadData) = 0; @@ -190,7 +192,7 @@ public: virtual void QuadsSetRotation(float Angle) = 0; virtual void QuadsSetSubset(float TopLeftU, float TopLeftV, float BottomRightU, float BottomRightV) = 0; virtual void QuadsSetSubsetFree(float x0, float y0, float x1, float y1, float x2, float y2, float x3, float y3) = 0; - + struct CQuadItem { float m_X, m_Y, m_Width, m_Height; @@ -240,6 +242,7 @@ public: }; virtual void SetColorVertex(const CColorVertex *pArray, int Num) = 0; virtual void SetColor(float r, float g, float b, float a) = 0; + virtual void SetColor(ColorRGBA rgb) = 0; virtual void ChangeColorOfCurrentQuadVertices(float r, float g, float b, float a) = 0; virtual void ChangeColorOfQuadVertices(int QuadOffset, unsigned char r, unsigned char g, unsigned char b, unsigned char a) = 0; diff --git a/src/game/client/components/items.cpp b/src/game/client/components/items.cpp index 7ead6ce7a..940622072 100644 --- a/src/game/client/components/items.cpp +++ b/src/game/client/components/items.cpp @@ -226,7 +226,7 @@ void CItems::RenderLaser(const struct CNetObj_Laser *pCurrent, bool IsPredicted) // do outline RGB = color_cast(ColorHSLA(g_Config.m_ClLaserOutlineCol)); - vec4 OuterColor(RGB.r, RGB.g, RGB.b, 1.0f); + ColorRGBA OuterColor(RGB.r, RGB.g, RGB.b, 1.0f); Graphics()->SetColor(OuterColor.r, OuterColor.g, OuterColor.b, 1.0f); Out = vec2(Dir.y, -Dir.x) * (7.0f*Ia); @@ -239,7 +239,7 @@ void CItems::RenderLaser(const struct CNetObj_Laser *pCurrent, bool IsPredicted) // do inner RGB = color_cast(ColorHSLA(g_Config.m_ClLaserInnerCol)); - vec4 InnerColor(RGB.r, RGB.g, RGB.b, 1.0f); + ColorRGBA InnerColor(RGB.r, RGB.g, RGB.b, 1.0f); Out = vec2(Dir.y, -Dir.x) * (5.0f*Ia); Graphics()->SetColor(InnerColor.r, InnerColor.g, InnerColor.b, 1.0f); // center diff --git a/src/game/client/components/maplayers.cpp b/src/game/client/components/maplayers.cpp index fa40ebbf3..3fdc255b8 100644 --- a/src/game/client/components/maplayers.cpp +++ b/src/game/client/components/maplayers.cpp @@ -996,7 +996,7 @@ void CMapLayers::OnMapLoad() } } -void CMapLayers::RenderTileLayer(int LayerIndex, vec4* pColor, CMapItemLayerTilemap* pTileLayer, CMapItemGroup* pGroup) +void CMapLayers::RenderTileLayer(int LayerIndex, ColorRGBA* pColor, CMapItemLayerTilemap* pTileLayer, CMapItemGroup* pGroup) { STileLayerVisuals& Visuals = *m_TileLayerVisuals[LayerIndex]; if(Visuals.m_BufferContainerIndex == -1) @@ -1113,7 +1113,7 @@ void CMapLayers::RenderTileBorderCornerTiles(int WidthOffsetToOrigin, int Height Graphics()->RenderBorderTiles(BufferContainerIndex, pColor, IndexBufferOffset, pOffset, pDir, CountX, Count); } -void CMapLayers::RenderTileBorder(int LayerIndex, vec4* pColor, CMapItemLayerTilemap* pTileLayer, CMapItemGroup* pGroup, int BorderX0, int BorderY0, int BorderX1, int BorderY1, int ScreenWidthTileCount, int ScreenHeightTileCount) +void CMapLayers::RenderTileBorder(int LayerIndex, ColorRGBA* pColor, CMapItemLayerTilemap* pTileLayer, CMapItemGroup* pGroup, int BorderX0, int BorderY0, int BorderX1, int BorderY1, int ScreenWidthTileCount, int ScreenHeightTileCount) { STileLayerVisuals& Visuals = *m_TileLayerVisuals[LayerIndex]; @@ -1265,7 +1265,7 @@ void CMapLayers::RenderTileBorder(int LayerIndex, vec4* pColor, CMapItemLayerTil } } -void CMapLayers::RenderKillTileBorder(int LayerIndex, vec4* pColor, CMapItemLayerTilemap* pTileLayer, CMapItemGroup* pGroup) +void CMapLayers::RenderKillTileBorder(int LayerIndex, ColorRGBA* pColor, CMapItemLayerTilemap* pTileLayer, CMapItemGroup* pGroup) { STileLayerVisuals& Visuals = *m_TileLayerVisuals[LayerIndex]; if(Visuals.m_BufferContainerIndex == -1) return; //no visuals were created @@ -1729,11 +1729,11 @@ void CMapLayers::OnRender() if(Size >= pTMap->m_Width*pTMap->m_Height*sizeof(CTile)) { - vec4 Color = vec4(pTMap->m_Color.r/255.0f, pTMap->m_Color.g/255.0f, pTMap->m_Color.b/255.0f, pTMap->m_Color.a/255.0f); + ColorRGBA Color = ColorRGBA(pTMap->m_Color.r/255.0f, pTMap->m_Color.g/255.0f, pTMap->m_Color.b/255.0f, pTMap->m_Color.a/255.0f); if(IsGameLayer && g_Config.m_ClOverlayEntities) - Color = vec4(pTMap->m_Color.r/255.0f, pTMap->m_Color.g/255.0f, pTMap->m_Color.b/255.0f, pTMap->m_Color.a/255.0f*g_Config.m_ClOverlayEntities/100.0f); + Color = ColorRGBA(pTMap->m_Color.r/255.0f, pTMap->m_Color.g/255.0f, pTMap->m_Color.b/255.0f, pTMap->m_Color.a/255.0f*g_Config.m_ClOverlayEntities/100.0f); else if(!IsGameLayer && g_Config.m_ClOverlayEntities && !(m_Type == TYPE_BACKGROUND_FORCE)) - Color = vec4(pTMap->m_Color.r/255.0f, pTMap->m_Color.g/255.0f, pTMap->m_Color.b/255.0f, pTMap->m_Color.a/255.0f*(100-g_Config.m_ClOverlayEntities)/100.0f); + Color = ColorRGBA(pTMap->m_Color.r/255.0f, pTMap->m_Color.g/255.0f, pTMap->m_Color.b/255.0f, pTMap->m_Color.a/255.0f*(100-g_Config.m_ClOverlayEntities)/100.0f); if(!Graphics()->IsBufferingEnabled()) { Graphics()->BlendNone(); @@ -1747,11 +1747,11 @@ void CMapLayers::OnRender() { // slow blinking to hint that it's not a part of the map double Seconds = time_get()/(double)time_freq(); - vec4 ColorHint = vec4(1.0f, 1.0f, 1.0f, 0.3f + 0.7f*(1.0+sin(2.0f*pi*Seconds/3.f))/2.0f); + ColorRGBA ColorHint = ColorRGBA(1.0f, 1.0f, 1.0f, 0.3f + 0.7f*(1.0+sin(2.0f*pi*Seconds/3.f))/2.0f); RenderTools()->RenderTileRectangle(-201, -201, pTMap->m_Width+402, pTMap->m_Height+402, 0, TILE_DEATH, // display air inside, death outside - 32.0f, Color*ColorHint, TILERENDERFLAG_EXTEND|LAYERRENDERFLAG_TRANSPARENT, + 32.0f, Color.v4()*ColorHint.v4(), TILERENDERFLAG_EXTEND|LAYERRENDERFLAG_TRANSPARENT, EnvelopeEval, this, pTMap->m_ColorEnv, pTMap->m_ColorEnvOffset); } @@ -1765,9 +1765,9 @@ void CMapLayers::OnRender() { // slow blinking to hint that it's not a part of the map double Seconds = time_get() / (double)time_freq(); - vec4 ColorHint = vec4(1.0f, 1.0f, 1.0f, 0.3f + 0.7f*(1.0 + sin(2.0f*pi*Seconds / 3.f)) / 2.0f); + ColorRGBA ColorHint = ColorRGBA(1.0f, 1.0f, 1.0f, 0.3f + 0.7f*(1.0 + sin(2.0f*pi*Seconds / 3.f)) / 2.0f); - vec4 ColorKill(Color.x*ColorHint.x,Color.y*ColorHint.y,Color.z*ColorHint.z,Color.w*ColorHint.w); + ColorRGBA ColorKill(Color.x*ColorHint.x,Color.y*ColorHint.y,Color.z*ColorHint.z,Color.w*ColorHint.w); RenderKillTileBorder(TileLayerCounter-1, &ColorKill, pTMap, pGroup); } RenderTileLayer(TileLayerCounter-1, &Color, pTMap, pGroup); @@ -1825,7 +1825,7 @@ void CMapLayers::OnRender() if(Size >= pTMap->m_Width*pTMap->m_Height*sizeof(CTile)) { - vec4 Color = vec4(pTMap->m_Color.r/255.0f, pTMap->m_Color.g/255.0f, pTMap->m_Color.b/255.0f, pTMap->m_Color.a/255.0f*g_Config.m_ClOverlayEntities/100.0f); + ColorRGBA Color = ColorRGBA(pTMap->m_Color.r/255.0f, pTMap->m_Color.g/255.0f, pTMap->m_Color.b/255.0f, pTMap->m_Color.a/255.0f*g_Config.m_ClOverlayEntities/100.0f); if(!Graphics()->IsBufferingEnabled()) { Graphics()->BlendNone(); @@ -1852,7 +1852,7 @@ void CMapLayers::OnRender() if(Size >= pTMap->m_Width*pTMap->m_Height*sizeof(CSwitchTile)) { - vec4 Color = vec4(pTMap->m_Color.r/255.0f, pTMap->m_Color.g/255.0f, pTMap->m_Color.b/255.0f, pTMap->m_Color.a/255.0f*g_Config.m_ClOverlayEntities/100.0f); + ColorRGBA Color = ColorRGBA(pTMap->m_Color.r/255.0f, pTMap->m_Color.g/255.0f, pTMap->m_Color.b/255.0f, pTMap->m_Color.a/255.0f*g_Config.m_ClOverlayEntities/100.0f); if(!Graphics()->IsBufferingEnabled()) { Graphics()->BlendNone(); @@ -1885,7 +1885,7 @@ void CMapLayers::OnRender() if(Size >= pTMap->m_Width*pTMap->m_Height*sizeof(CTeleTile)) { - vec4 Color = vec4(pTMap->m_Color.r/255.0f, pTMap->m_Color.g/255.0f, pTMap->m_Color.b/255.0f, pTMap->m_Color.a/255.0f*g_Config.m_ClOverlayEntities/100.0f); + ColorRGBA Color = ColorRGBA(pTMap->m_Color.r/255.0f, pTMap->m_Color.g/255.0f, pTMap->m_Color.b/255.0f, pTMap->m_Color.a/255.0f*g_Config.m_ClOverlayEntities/100.0f); if(!Graphics()->IsBufferingEnabled()) { Graphics()->BlendNone(); @@ -1916,7 +1916,7 @@ void CMapLayers::OnRender() if(Size >= pTMap->m_Width*pTMap->m_Height*sizeof(CSpeedupTile)) { - vec4 Color = vec4(pTMap->m_Color.r/255.0f, pTMap->m_Color.g/255.0f, pTMap->m_Color.b/255.0f, pTMap->m_Color.a/255.0f*g_Config.m_ClOverlayEntities/100.0f); + ColorRGBA Color = ColorRGBA(pTMap->m_Color.r/255.0f, pTMap->m_Color.g/255.0f, pTMap->m_Color.b/255.0f, pTMap->m_Color.a/255.0f*g_Config.m_ClOverlayEntities/100.0f); if(!Graphics()->IsBufferingEnabled()) { Graphics()->BlendNone(); @@ -1954,7 +1954,7 @@ void CMapLayers::OnRender() if(Size >= pTMap->m_Width*pTMap->m_Height*sizeof(CTuneTile)) { - vec4 Color = vec4(pTMap->m_Color.r/255.0f, pTMap->m_Color.g/255.0f, pTMap->m_Color.b/255.0f, pTMap->m_Color.a/255.0f*g_Config.m_ClOverlayEntities/100.0f); + ColorRGBA Color = ColorRGBA(pTMap->m_Color.r/255.0f, pTMap->m_Color.g/255.0f, pTMap->m_Color.b/255.0f, pTMap->m_Color.a/255.0f*g_Config.m_ClOverlayEntities/100.0f); if(!Graphics()->IsBufferingEnabled()) { Graphics()->BlendNone(); diff --git a/src/game/client/components/maplayers.h b/src/game/client/components/maplayers.h index b76189032..d26f8b74e 100644 --- a/src/game/client/components/maplayers.h +++ b/src/game/client/components/maplayers.h @@ -27,33 +27,33 @@ class CMapLayers : public CComponent bool m_EnvelopeUpdate; void MapScreenToGroup(float CenterX, float CenterY, CMapItemGroup *pGroup, float Zoom = 1.0f); - + struct STileLayerVisuals { - STileLayerVisuals() : m_TilesOfLayer(NULL), m_BorderTop(NULL), m_BorderLeft(NULL), m_BorderRight(NULL), m_BorderBottom(NULL) + STileLayerVisuals() : m_TilesOfLayer(NULL), m_BorderTop(NULL), m_BorderLeft(NULL), m_BorderRight(NULL), m_BorderBottom(NULL) { m_Width = 0; m_Height = 0; m_BufferContainerIndex = -1; m_IsTextured = false; - } - + } + bool Init(unsigned int Width, unsigned int Height); - - ~STileLayerVisuals(); - + + ~STileLayerVisuals(); + struct STileVisual { STileVisual() : m_IndexBufferByteOffset(0) { } private: offset_ptr32 m_IndexBufferByteOffset; public: - bool DoDraw() + bool DoDraw() { return (m_IndexBufferByteOffset&0x00000001) != 0; } - void Draw(bool SetDraw) + void Draw(bool SetDraw) { m_IndexBufferByteOffset = (SetDraw ? 0x00000001 : (offset_ptr32)0) | (m_IndexBufferByteOffset & 0xFFFFFFFE); } @@ -74,19 +74,19 @@ class CMapLayers : public CComponent } }; STileVisual* m_TilesOfLayer; - + STileVisual m_BorderTopLeft; STileVisual m_BorderTopRight; STileVisual m_BorderBottomRight; STileVisual m_BorderBottomLeft; - + STileVisual m_BorderKillTile; //end of map kill tile -- game layer only - + STileVisual* m_BorderTop; STileVisual* m_BorderLeft; STileVisual* m_BorderRight; STileVisual* m_BorderBottom; - + unsigned int m_Width; unsigned int m_Height; int m_BufferContainerIndex; @@ -112,7 +112,7 @@ class CMapLayers : public CComponent bool m_IsTextured; }; std::vector m_QuadLayerVisuals; - + void LayersOfGroupCount(CMapItemGroup* pGroup, int& TileLayerCount, int& QuadLayerCount, bool& PassedGameLayer); void RenderTileBorderCornerTiles(int WidthOffsetToOrigin, int HeightOffsetToOrigin, int TileCountWidth, int TileCountHeight, int BufferContainerIndex, float *pColor, offset_ptr_size IndexBufferOffset, float *pOffset, float *pDir); @@ -128,10 +128,10 @@ public: virtual void OnInit(); virtual void OnRender(); virtual void OnMapLoad(); - - void RenderTileLayer(int LayerIndex, vec4* pColor, CMapItemLayerTilemap* pTileLayer, CMapItemGroup* pGroup); - void RenderTileBorder(int LayerIndex, vec4* pColor, CMapItemLayerTilemap* pTileLayer, CMapItemGroup* pGroup, int BorderX0, int BorderY0, int BorderX1, int BorderY1, int ScreenWidthTileCount, int ScreenHeightTileCount); - void RenderKillTileBorder(int LayerIndex, vec4* pColor, CMapItemLayerTilemap* pTileLayer, CMapItemGroup* pGroup); + + void RenderTileLayer(int LayerIndex, ColorRGBA* pColor, CMapItemLayerTilemap* pTileLayer, CMapItemGroup* pGroup); + void RenderTileBorder(int LayerIndex, ColorRGBA* pColor, CMapItemLayerTilemap* pTileLayer, CMapItemGroup* pGroup, int BorderX0, int BorderY0, int BorderX1, int BorderY1, int ScreenWidthTileCount, int ScreenHeightTileCount); + void RenderKillTileBorder(int LayerIndex, ColorRGBA* pColor, CMapItemLayerTilemap* pTileLayer, CMapItemGroup* pGroup); void RenderQuadLayer(int LayerIndex, CMapItemLayerQuads* pQuadLayer, CMapItemGroup* pGroup, bool ForceRender = false); void EnvelopeUpdate(); diff --git a/src/game/client/components/menus.cpp b/src/game/client/components/menus.cpp index 6677fcb11..6e08f4baa 100644 --- a/src/game/client/components/menus.cpp +++ b/src/game/client/components/menus.cpp @@ -1842,8 +1842,8 @@ void CMenus::RenderBackground() // render background color Graphics()->TextureSet(-1); Graphics()->QuadsBegin(); - vec4 Bottom(ms_GuiColor.r, ms_GuiColor.g, ms_GuiColor.b, 1.0f); - vec4 Top(ms_GuiColor.r, ms_GuiColor.g, ms_GuiColor.b, 1.0f); + ColorRGBA Bottom(ms_GuiColor.r, ms_GuiColor.g, ms_GuiColor.b, 1.0f); + ColorRGBA Top(ms_GuiColor.r, ms_GuiColor.g, ms_GuiColor.b, 1.0f); IGraphics::CColorVertex Array[4] = { IGraphics::CColorVertex(0, Top.r, Top.g, Top.b, Top.a), IGraphics::CColorVertex(1, Top.r, Top.g, Top.b, Top.a), diff --git a/src/game/client/components/menus_browser.cpp b/src/game/client/components/menus_browser.cpp index 6c4acbfe6..3758f564d 100644 --- a/src/game/client/components/menus_browser.cpp +++ b/src/game/client/components/menus_browser.cpp @@ -762,11 +762,7 @@ void CMenus::RenderServerbrowserFilters(CUIRect View) ServerBrowser()->Refresh(ServerBrowser()->GetCurrentType()); } - vec4 Color(1.0f, 1.0f, 1.0f, 1.0f); - - if(!Active) - Color.a = 0.2f; - TextRender()->TextColor(Color.r, Color.g, Color.b, Color.a); + TextRender()->TextColor(1.0f, 1.0f, 1.0f, Active ? 1.0f : 0.2f); UI()->DoLabelScaled(&Rect, pName, FontSize, 0); TextRender()->TextColor(1.0, 1.0, 1.0, 1.0f); } @@ -777,8 +773,6 @@ void CMenus::RenderServerbrowserFilters(CUIRect View) char *pFilterExcludeCountries = Network == IServerBrowser::NETWORK_DDNET ? g_Config.m_BrFilterExcludeCountries : g_Config.m_BrFilterExcludeCountriesKoG; ServerFilter.HSplitTop(17.0f, &ServerFilter, &ServerFilter); - vec4 Color(1.0f, 1.0f, 1.0f, 1.0f); - const float FlagWidth = 40.0f; const float FlagHeight = 20.0f; @@ -844,11 +838,7 @@ void CMenus::RenderServerbrowserFilters(CUIRect View) ServerBrowser()->Refresh(ServerBrowser()->GetCurrentType()); } - ColorRGBA Color(1.0f, 1.0f, 1.0f, 1.0f); - - if(!Active) - Color.a = 0.2f; - + ColorRGBA Color(1.0f, 1.0f, 1.0f, Active ? 1.0f : 0.2f); m_pClient->m_pCountryFlags->Render(FlagID, &Color, Pos.x, Pos.y, FlagWidth, FlagHeight); } } diff --git a/src/game/client/components/menus_settings.cpp b/src/game/client/components/menus_settings.cpp index a50f915cf..589e0722a 100644 --- a/src/game/client/components/menus_settings.cpp +++ b/src/game/client/components/menus_settings.cpp @@ -1892,7 +1892,7 @@ void CMenus::RenderSettingsHUD(CUIRect MainView) // do outline RGB = color_cast(ColorHSLA(g_Config.m_ClLaserOutlineCol)); - vec4 OuterColor(RGB.r, RGB.g, RGB.b, 1.0f); + ColorRGBA OuterColor(RGB.r, RGB.g, RGB.b, 1.0f); Graphics()->SetColor(RGB.r, RGB.g, RGB.b, 1.0f); // outline Out = vec2(0.0f, -1.0f) * (3.15f); @@ -1905,7 +1905,7 @@ void CMenus::RenderSettingsHUD(CUIRect MainView) // do inner RGB = color_cast(ColorHSLA(g_Config.m_ClLaserInnerCol)); - vec4 InnerColor(RGB.r, RGB.g, RGB.b, 1.0f); + ColorRGBA InnerColor(RGB.r, RGB.g, RGB.b, 1.0f); Out = vec2(0.0f, -1.0f) * (2.25f); Graphics()->SetColor(InnerColor.r, InnerColor.g, InnerColor.b, 1.0f); // center diff --git a/src/game/client/components/scoreboard.cpp b/src/game/client/components/scoreboard.cpp index d76532cf3..494a5d621 100644 --- a/src/game/client/components/scoreboard.cpp +++ b/src/game/client/components/scoreboard.cpp @@ -367,8 +367,8 @@ void CScoreboard::RenderScoreboard(float x, float y, float w, int Team, const ch { Graphics()->TextureSet(-1); Graphics()->QuadsBegin(); - ColorRGBA rgb = color_cast(ColorHSLA(DDTeam / 64.0f, 1.0f, 0.5f)); - Graphics()->SetColor(rgb.r, rgb.g, rgb.b, 0.5f); + ColorRGBA rgb = color_cast(ColorHSLA(DDTeam / 64.0f, 1.0f, 0.5f, 0.5f)); + Graphics()->SetColor(rgb); int Corners = 0; diff --git a/src/game/client/components/spectator.cpp b/src/game/client/components/spectator.cpp index a509fa3f8..7fd91137e 100644 --- a/src/game/client/components/spectator.cpp +++ b/src/game/client/components/spectator.cpp @@ -327,8 +327,8 @@ void CSpectator::OnRender() { Graphics()->TextureSet(-1); Graphics()->QuadsBegin(); - ColorRGBA rgb = color_cast(ColorHSLA(DDTeam / 64.0f, 1.0f, 0.5f)); - Graphics()->SetColor(rgb.r, rgb.g, rgb.b, 0.5f); + ColorRGBA rgb = color_cast(ColorHSLA(DDTeam / 64.0f, 1.0f, 0.5f, 0.5f)); + Graphics()->SetColor(rgb); int Corners = 0; diff --git a/src/game/client/render.cpp b/src/game/client/render.cpp index c005ea11d..4aeb77f8c 100644 --- a/src/game/client/render.cpp +++ b/src/game/client/render.cpp @@ -290,7 +290,7 @@ void CRenderTools::DrawUIRect(const CUIRect *r, ColorRGBA Color, int Corners, fl // TODO: FIX US Graphics()->QuadsBegin(); - Graphics()->SetColor(Color.r, Color.g, Color.b, Color.a); + Graphics()->SetColor(Color); DrawRoundRectExt(r->x,r->y,r->w,r->h,Rounding*UI()->Scale(), Corners); Graphics()->QuadsEnd(); } diff --git a/src/game/client/render.h b/src/game/client/render.h index 5aa88da25..1d5475dac 100644 --- a/src/game/client/render.h +++ b/src/game/client/render.h @@ -84,11 +84,11 @@ public: static void RenderEvalEnvelope(CEnvPoint *pPoints, int NumPoints, int Channels, float Time, float *pResult); void RenderQuads(CQuad *pQuads, int NumQuads, int Flags, ENVELOPE_EVAL pfnEval, void *pUser); void ForceRenderQuads(CQuad *pQuads, int NumQuads, int Flags, ENVELOPE_EVAL pfnEval, void *pUser, float Alpha = 1.0f); - void RenderTilemap(CTile *pTiles, int w, int h, float Scale, vec4 Color, int RenderFlags, ENVELOPE_EVAL pfnEval, void *pUser, int ColorEnv, int ColorEnvOffset); + void RenderTilemap(CTile *pTiles, int w, int h, float Scale, ColorRGBA Color, int RenderFlags, ENVELOPE_EVAL pfnEval, void *pUser, int ColorEnv, int ColorEnvOffset); // render a rectangle made of IndexIn tiles, over a background made of IndexOut tiles // the rectangle include all tiles in [RectX, RectX+RectW-1] x [RectY, RectY+RectH-1] - void RenderTileRectangle(int RectX, int RectY, int RectW, int RectH, unsigned char IndexIn, unsigned char IndexOut, float Scale, vec4 Color, int RenderFlags, ENVELOPE_EVAL pfnEval, void *pUser, int ColorEnv, int ColorEnvOffset); + void RenderTileRectangle(int RectX, int RectY, int RectW, int RectH, unsigned char IndexIn, unsigned char IndexOut, float Scale, ColorRGBA Color, int RenderFlags, ENVELOPE_EVAL pfnEval, void *pUser, int ColorEnv, int ColorEnvOffset); // helpers void MapscreenToWorld(float CenterX, float CenterY, float ParallaxX, float ParallaxY, @@ -100,10 +100,10 @@ public: void RenderSpeedupOverlay(CSpeedupTile *pTele, int w, int h, float Scale, float Alpha=1.0f); void RenderSwitchOverlay(CSwitchTile *pSwitch, int w, int h, float Scale, float Alpha=1.0f); void RenderTuneOverlay(CTuneTile *pTune, int w, int h, float Scale, float Alpha=1.0f); - void RenderTelemap(CTeleTile *pTele, int w, int h, float Scale, vec4 Color, int RenderFlags); - void RenderSpeedupmap(CSpeedupTile *pTele, int w, int h, float Scale, vec4 Color, int RenderFlags); - void RenderSwitchmap(CSwitchTile *pSwitch, int w, int h, float Scale, vec4 Color, int RenderFlags); - void RenderTunemap(CTuneTile *pTune, int w, int h, float Scale, vec4 Color, int RenderFlags); + void RenderTelemap(CTeleTile *pTele, int w, int h, float Scale, ColorRGBA Color, int RenderFlags); + void RenderSpeedupmap(CSpeedupTile *pTele, int w, int h, float Scale, ColorRGBA Color, int RenderFlags); + void RenderSwitchmap(CSwitchTile *pSwitch, int w, int h, float Scale, ColorRGBA Color, int RenderFlags); + void RenderTunemap(CTuneTile *pTune, int w, int h, float Scale, ColorRGBA Color, int RenderFlags); }; #endif diff --git a/src/game/client/render_map.cpp b/src/game/client/render_map.cpp index 01eaa5566..6af37d6ff 100644 --- a/src/game/client/render_map.cpp +++ b/src/game/client/render_map.cpp @@ -178,7 +178,7 @@ void CRenderTools::ForceRenderQuads(CQuad *pQuads, int NumQuads, int RenderFlags void CRenderTools::RenderTileRectangle(int RectX, int RectY, int RectW, int RectH, unsigned char IndexIn, unsigned char IndexOut, - float Scale, vec4 Color, int RenderFlags, + float Scale, ColorRGBA Color, int RenderFlags, ENVELOPE_EVAL pfnEval, void *pUser, int ColorEnv, int ColorEnvOffset) { float ScreenX0, ScreenY0, ScreenX1, ScreenY1; @@ -254,7 +254,7 @@ void CRenderTools::RenderTileRectangle(int RectX, int RectY, int RectW, int Rect Graphics()->MapScreen(ScreenX0, ScreenY0, ScreenX1, ScreenY1); } -void CRenderTools::RenderTilemap(CTile *pTiles, int w, int h, float Scale, vec4 Color, int RenderFlags, +void CRenderTools::RenderTilemap(CTile *pTiles, int w, int h, float Scale, ColorRGBA Color, int RenderFlags, ENVELOPE_EVAL pfnEval, void *pUser, int ColorEnv, int ColorEnvOffset) { float ScreenX0, ScreenY0, ScreenX1, ScreenY1; @@ -619,7 +619,7 @@ void CRenderTools::RenderTuneOverlay(CTuneTile *pTune, int w, int h, float Scale Graphics()->MapScreen(ScreenX0, ScreenY0, ScreenX1, ScreenY1); } -void CRenderTools::RenderTelemap(CTeleTile *pTele, int w, int h, float Scale, vec4 Color, int RenderFlags) +void CRenderTools::RenderTelemap(CTeleTile *pTele, int w, int h, float Scale, ColorRGBA Color, int RenderFlags) { float ScreenX0, ScreenY0, ScreenX1, ScreenY1; Graphics()->GetScreen(&ScreenX0, &ScreenY0, &ScreenX1, &ScreenY1); @@ -630,7 +630,7 @@ void CRenderTools::RenderTelemap(CTeleTile *pTele, int w, int h, float Scale, ve float FinalTilesetScale = FinalTileSize/TilePixelSize; Graphics()->QuadsBegin(); - Graphics()->SetColor(Color.r, Color.g, Color.b, Color.a); + Graphics()->SetColor(Color); int StartY = (int)(ScreenY0/Scale)-1; int StartX = (int)(ScreenX0/Scale)-1; @@ -710,7 +710,7 @@ void CRenderTools::RenderTelemap(CTeleTile *pTele, int w, int h, float Scale, ve Graphics()->MapScreen(ScreenX0, ScreenY0, ScreenX1, ScreenY1); } -void CRenderTools::RenderSpeedupmap(CSpeedupTile *pSpeedupTile, int w, int h, float Scale, vec4 Color, int RenderFlags) +void CRenderTools::RenderSpeedupmap(CSpeedupTile *pSpeedupTile, int w, int h, float Scale, ColorRGBA Color, int RenderFlags) { //Graphics()->TextureSet(img_get(tmap->image)); float ScreenX0, ScreenY0, ScreenX1, ScreenY1; @@ -723,7 +723,7 @@ void CRenderTools::RenderSpeedupmap(CSpeedupTile *pSpeedupTile, int w, int h, fl float FinalTilesetScale = FinalTileSize/TilePixelSize; Graphics()->QuadsBegin(); - Graphics()->SetColor(Color.r, Color.g, Color.b, Color.a); + Graphics()->SetColor(Color); int StartY = (int)(ScreenY0/Scale)-1; int StartX = (int)(ScreenX0/Scale)-1; @@ -803,7 +803,7 @@ void CRenderTools::RenderSpeedupmap(CSpeedupTile *pSpeedupTile, int w, int h, fl Graphics()->MapScreen(ScreenX0, ScreenY0, ScreenX1, ScreenY1); } -void CRenderTools::RenderSwitchmap(CSwitchTile *pSwitchTile, int w, int h, float Scale, vec4 Color, int RenderFlags) +void CRenderTools::RenderSwitchmap(CSwitchTile *pSwitchTile, int w, int h, float Scale, ColorRGBA Color, int RenderFlags) { //Graphics()->TextureSet(img_get(tmap->image)); float ScreenX0, ScreenY0, ScreenX1, ScreenY1; @@ -816,7 +816,7 @@ void CRenderTools::RenderSwitchmap(CSwitchTile *pSwitchTile, int w, int h, float float FinalTilesetScale = FinalTileSize/TilePixelSize; Graphics()->QuadsBegin(); - Graphics()->SetColor(Color.r, Color.g, Color.b, Color.a); + Graphics()->SetColor(Color); int StartY = (int)(ScreenY0/Scale)-1; int StartX = (int)(ScreenX0/Scale)-1; @@ -939,7 +939,7 @@ void CRenderTools::RenderSwitchmap(CSwitchTile *pSwitchTile, int w, int h, float Graphics()->MapScreen(ScreenX0, ScreenY0, ScreenX1, ScreenY1); } -void CRenderTools::RenderTunemap(CTuneTile *pTune, int w, int h, float Scale, vec4 Color, int RenderFlags) +void CRenderTools::RenderTunemap(CTuneTile *pTune, int w, int h, float Scale, ColorRGBA Color, int RenderFlags) { float ScreenX0, ScreenY0, ScreenX1, ScreenY1; Graphics()->GetScreen(&ScreenX0, &ScreenY0, &ScreenX1, &ScreenY1); @@ -950,7 +950,7 @@ void CRenderTools::RenderTunemap(CTuneTile *pTune, int w, int h, float Scale, ve float FinalTilesetScale = FinalTileSize/TilePixelSize; Graphics()->QuadsBegin(); - Graphics()->SetColor(Color.r, Color.g, Color.b, Color.a); + Graphics()->SetColor(Color); int StartY = (int)(ScreenY0/Scale)-1; int StartX = (int)(ScreenX0/Scale)-1; diff --git a/src/game/editor/editor.cpp b/src/game/editor/editor.cpp index f8e7c9c3e..69069f369 100644 --- a/src/game/editor/editor.cpp +++ b/src/game/editor/editor.cpp @@ -639,7 +639,7 @@ int CEditor::DoButton_Editor(const void *pID, const char *pText, int Checked, co return DoButton_Editor_Common(pID, pText, Checked, pRect, Flags, pToolTip); } -int CEditor::DoButton_Env(const void *pID, const char *pText, int Checked, const CUIRect *pRect, const char *pToolTip, vec3 BaseColor) +int CEditor::DoButton_Env(const void *pID, const char *pText, int Checked, const CUIRect *pRect, const char *pToolTip, ColorRGBA BaseColor) { float Bright = Checked ? 1.0f : 0.5f; float Alpha = UI()->HotItem() == pID ? 1.0f : 0.75f; @@ -4906,7 +4906,7 @@ void CEditor::RenderEnvelopeEditor(CUIRect View) static int sEnvelopeEditorID = 0; static int s_ActiveChannels = 0xf; - vec3 aColors[] = {vec3(1,0.2f,0.2f), vec3(0.2f,1,0.2f), vec3(0.2f,0.2f,1), vec3(1,1,0.2f)}; + ColorRGBA aColors[] = {ColorRGBA(1,0.2f,0.2f), ColorRGBA(0.2f,1,0.2f), ColorRGBA(0.2f,0.2f,1), ColorRGBA(1,1,0.2f)}; if(pEnvelope) { diff --git a/src/game/editor/editor.h b/src/game/editor/editor.h index 041cc355c..2e48883d2 100644 --- a/src/game/editor/editor.h +++ b/src/game/editor/editor.h @@ -936,7 +936,7 @@ public: void DoMapBorder(); int DoButton_Editor_Common(const void *pID, const char *pText, int Checked, const CUIRect *pRect, int Flags, const char *pToolTip); int DoButton_Editor(const void *pID, const char *pText, int Checked, const CUIRect *pRect, int Flags, const char *pToolTip); - int DoButton_Env(const void *pID, const char *pText, int Checked, const CUIRect *pRect, const char *pToolTip, vec3 Color); + int DoButton_Env(const void *pID, const char *pText, int Checked, const CUIRect *pRect, const char *pToolTip, ColorRGBA Color); int DoButton_Tab(const void *pID, const char *pText, int Checked, const CUIRect *pRect, int Flags, const char *pToolTip); int DoButton_Ex(const void *pID, const char *pText, int Checked, const CUIRect *pRect, int Flags, const char *pToolTip, int Corners, float FontSize=10.0f); diff --git a/src/game/editor/layer_tiles.cpp b/src/game/editor/layer_tiles.cpp index 06b0fb2e8..839479766 100644 --- a/src/game/editor/layer_tiles.cpp +++ b/src/game/editor/layer_tiles.cpp @@ -85,7 +85,7 @@ void CLayerTiles::Render(bool Tileset) if(m_Image >= 0 && m_Image < m_pEditor->m_Map.m_lImages.size()) m_TexID = m_pEditor->m_Map.m_lImages[m_Image]->m_TexID; Graphics()->TextureSet(m_TexID); - vec4 Color = vec4(m_Color.r/255.0f, m_Color.g/255.0f, m_Color.b/255.0f, m_Color.a/255.0f); + ColorRGBA Color = ColorRGBA(m_Color.r/255.0f, m_Color.g/255.0f, m_Color.b/255.0f, m_Color.a/255.0f); Graphics()->BlendNone(); m_pEditor->RenderTools()->RenderTilemap(m_pTiles, m_Width, m_Height, 32.0f, Color, LAYERRENDERFLAG_OPAQUE, m_pEditor->EnvelopeEval, m_pEditor, m_ColorEnv, m_ColorEnvOffset);