Merge pull request #7309 from infclass/kaffeine/merge-client-data-structs

Extract client 'six' data types and use them for 'seven' data
This commit is contained in:
Dennis Felsing 2023-10-10 21:55:55 +00:00 committed by GitHub
commit 60fa51ff13
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
10 changed files with 26 additions and 45 deletions

View file

@ -1801,6 +1801,7 @@ add_custom_command(OUTPUT ${PROJECT_BINARY_DIR}/src/game/generated/git_revision.
)
generate_source("src/game/generated/client_data.cpp" "client_content_source")
generate_source("src/game/generated/client_data.h" "client_content_header")
generate_source("src/game/generated/data_types.h" "content_types_header")
generate_source("src/game/generated/protocol.cpp" "network_source")
generate_source("src/game/generated/protocol.h" "network_header")
generate_source("src/game/generated/server_data.cpp" "server_content_source")
@ -2022,6 +2023,7 @@ foreach(s ${GAME_SHARED})
endforeach()
list(REMOVE_ITEM GAME_SHARED ${ENGINE_UUID_SHARED})
set(GAME_GENERATED_SHARED
src/game/generated/data_types.h
src/game/generated/git_revision.cpp
src/game/generated/protocol.h
src/game/generated/protocol7.h

View file

@ -365,7 +365,7 @@ void RegisterGameUuids(CUuidManager *pManager)
print(line)
def gen_common_content_header():
def gen_common_content_types_header():
# print some includes
print('#include <engine/graphics.h>')
@ -380,6 +380,11 @@ def gen_common_content_header():
for name in order:
EmitTypeDeclaration(content.__dict__[name])
def gen_common_content_header():
# print some includes
print('#include "data_types.h"')
# the container pointer
print('extern CDataContainer *g_pData;')
@ -392,6 +397,14 @@ def gen_common_content_source():
EmitDefinition(content.container, "datacontainer")
print('CDataContainer *g_pData = &datacontainer;')
def gen_content_types_header():
print("#ifndef CONTENT_TYPES_HEADER")
print("#define CONTENT_TYPES_HEADER")
gen_common_content_types_header()
print("#endif")
def gen_client_content_header():
print("#ifndef CLIENT_CONTENT_HEADER")
print("#define CLIENT_CONTENT_HEADER")
@ -423,6 +436,7 @@ def main():
FUNCTION_MAP = {
'network_header': gen_network_header,
'network_source': gen_network_source,
'content_types_header': gen_content_types_header,
'client_content_header': gen_client_content_header,
'client_content_source': gen_client_content_source,
'server_content_header': gen_server_content_header,

View file

@ -16,10 +16,11 @@ class SoundSet(Struct):
self.sounds.Add(Sound(filename))
class Image(Struct):
def __init__(self, name="", filename=""):
def __init__(self, name="", filename="", linear_mapping=0):
Struct.__init__(self, "CDataImage")
self.name = String(name)
self.filename = String(filename)
self.flag = Int(linear_mapping)
self.id = TextureHandle()
class SpriteSet(Struct):

View file

@ -1,5 +1,5 @@
import sys
from .datatypes import EmitDefinition, EmitTypeDeclaration
from .datatypes import EmitDefinition
from . import content # pylint: disable=no-name-in-module
from . import network # pylint: disable=no-name-in-module
@ -60,20 +60,9 @@ def main():
if gen_client_content_header or gen_server_content_header:
# print some includes
print('#include <engine/graphics.h>')
print('#include <engine/sound.h>')
print('#include "data_types.h"')
print("namespace client_data7 {")
# emit the type declarations
with open("datasrc/content.py", "rb") as f:
contentlines = f.readlines()
order = []
for line in contentlines:
line = line.strip()
if line[:6] == "class ".encode() and "(Struct)".encode() in line:
order += [line.split()[1].split("(".encode())[0].decode("ascii")]
for name in order:
EmitTypeDeclaration(content.__dict__[name])
# the container pointer
print('extern CDataContainer *g_pData;')

View file

@ -1,9 +1,9 @@
from .datatypes import Array, Float, Int, Pointer, SampleHandle, String, Struct, TextureHandle
from .datatypes import Array, Float, Int, Pointer, String, Struct, TextureHandle
class Sound(Struct):
def __init__(self, filename=""):
Struct.__init__(self, "CDataSound")
self.id = SampleHandle()
self.id = Int(0)
self.filename = String(filename)
class SoundSet(Struct):

View file

@ -382,17 +382,6 @@ IGraphics::CTextureHandle CGraphics_Threaded::LoadSpriteTexture(CImageInfo &From
return LoadSpriteTextureImpl(FromImageInfo, x, y, w, h);
}
IGraphics::CTextureHandle CGraphics_Threaded::LoadSpriteTexture(CImageInfo &FromImageInfo, client_data7::CDataSprite *pSprite)
{
int imggx = FromImageInfo.m_Width / pSprite->m_pSet->m_Gridx;
int imggy = FromImageInfo.m_Height / pSprite->m_pSet->m_Gridy;
int x = pSprite->m_X * imggx;
int y = pSprite->m_Y * imggy;
int w = pSprite->m_W * imggx;
int h = pSprite->m_H * imggy;
return LoadSpriteTextureImpl(FromImageInfo, x, y, w, h);
}
bool CGraphics_Threaded::IsImageSubFullyTransparent(CImageInfo &FromImageInfo, int x, int y, int w, int h)
{
if(FromImageInfo.m_Format == CImageInfo::FORMAT_SINGLE_COMPONENT || FromImageInfo.m_Format == CImageInfo::FORMAT_RGBA)
@ -414,7 +403,7 @@ bool CGraphics_Threaded::IsImageSubFullyTransparent(CImageInfo &FromImageInfo, i
return false;
}
bool CGraphics_Threaded::IsSpriteTextureFullyTransparent(CImageInfo &FromImageInfo, client_data7::CDataSprite *pSprite)
bool CGraphics_Threaded::IsSpriteTextureFullyTransparent(CImageInfo &FromImageInfo, CDataSprite *pSprite)
{
int imggx = FromImageInfo.m_Width / pSprite->m_pSet->m_Gridx;
int imggy = FromImageInfo.m_Height / pSprite->m_pSet->m_Gridy;

View file

@ -976,10 +976,9 @@ public:
CTextureHandle LoadSpriteTextureImpl(CImageInfo &FromImageInfo, int x, int y, size_t w, size_t h);
CTextureHandle LoadSpriteTexture(CImageInfo &FromImageInfo, struct CDataSprite *pSprite) override;
CTextureHandle LoadSpriteTexture(CImageInfo &FromImageInfo, struct client_data7::CDataSprite *pSprite) override;
bool IsImageSubFullyTransparent(CImageInfo &FromImageInfo, int x, int y, int w, int h) override;
bool IsSpriteTextureFullyTransparent(CImageInfo &FromImageInfo, struct client_data7::CDataSprite *pSprite) override;
bool IsSpriteTextureFullyTransparent(CImageInfo &FromImageInfo, struct CDataSprite *pSprite) override;
// simple uncompressed RGBA loaders
IGraphics::CTextureHandle LoadTexture(const char *pFilename, int StorageType, int Flags = 0) override;

View file

@ -228,10 +228,6 @@ typedef STWGraphicGPU TTWGraphicsGPUList;
typedef std::function<void()> WINDOW_RESIZE_FUNC;
typedef std::function<void()> WINDOW_PROPS_CHANGED_FUNC;
namespace client_data7 {
struct CDataSprite; // NOLINT(bugprone-forward-declaration-namespace)
}
typedef std::function<bool(uint32_t &Width, uint32_t &Height, CImageInfo::EImageFormat &Format, std::vector<uint8_t> &vDstData)> TGLBackendReadPresentedImageData;
class IGraphics : public IInterface
@ -351,10 +347,9 @@ public:
virtual bool UpdateTextTexture(CTextureHandle TextureID, int x, int y, size_t Width, size_t Height, const void *pData) = 0;
virtual CTextureHandle LoadSpriteTexture(CImageInfo &FromImageInfo, struct CDataSprite *pSprite) = 0;
virtual CTextureHandle LoadSpriteTexture(CImageInfo &FromImageInfo, struct client_data7::CDataSprite *pSprite) = 0;
virtual bool IsImageSubFullyTransparent(CImageInfo &FromImageInfo, int x, int y, int w, int h) = 0;
virtual bool IsSpriteTextureFullyTransparent(CImageInfo &FromImageInfo, struct client_data7::CDataSprite *pSprite) = 0;
virtual bool IsSpriteTextureFullyTransparent(CImageInfo &FromImageInfo, struct CDataSprite *pSprite) = 0;
virtual void FlushVertices(bool KeepVertices = false) = 0;
virtual void FlushVerticesTex3D() = 0;

View file

@ -90,13 +90,6 @@ void CRenderTools::SelectSprite(int Id, int Flags, int sx, int sy)
SelectSprite(&g_pData->m_aSprites[Id], Flags, sx, sy);
}
void CRenderTools::GetSpriteScale(client_data7::CDataSprite *pSprite, float &ScaleX, float &ScaleY)
{
int w = pSprite->m_W;
int h = pSprite->m_H;
GetSpriteScaleImpl(w, h, ScaleX, ScaleY);
}
void CRenderTools::GetSpriteScale(struct CDataSprite *pSprite, float &ScaleX, float &ScaleY)
{
int w = pSprite->m_W;

View file

@ -134,7 +134,6 @@ public:
void SelectSprite(CDataSprite *pSprite, int Flags = 0, int sx = 0, int sy = 0);
void SelectSprite(int Id, int Flags = 0, int sx = 0, int sy = 0);
void GetSpriteScale(client_data7::CDataSprite *pSprite, float &ScaleX, float &ScaleY);
void GetSpriteScale(CDataSprite *pSprite, float &ScaleX, float &ScaleY);
void GetSpriteScale(int Id, float &ScaleX, float &ScaleY);
void GetSpriteScaleImpl(int Width, int Height, float &ScaleX, float &ScaleY);