feat(gameui): add CGWorldFrame class skeleton

This commit is contained in:
VDm 2025-03-30 00:15:17 +04:00
parent 88e21b4a22
commit 41f4992ebe
8 changed files with 90 additions and 4 deletions

View File

@ -4,6 +4,7 @@
#include <common/DataStore.hpp>
#include "console/Line.hpp"
#include "world/World.hpp"
uint32_t s_newZoneID = 0;
@ -54,7 +55,7 @@ int32_t LoginVerifyWorldHandler(void* param, NETMESSAGE msgId, uint32_t time, CD
// return 0;
//}
//s_newMapname = *(_DWORD*)(v0 + 4);
//LoadNewWorld(0, 0);
LoadNewWorld();
}
return 1;
}

View File

@ -81,7 +81,7 @@ void ClientServices::GetCharacterList() {
}
void ClientServices::CharacterLogin(uint64_t id, const C3Vector& position) {
// TODO
ClientServices::s_currentConnection->CharacterLogin(id);
}
REALM_INFO* ClientServices::GetRealmInfoByIndex(int32_t index) {

View File

@ -4,6 +4,7 @@
#include <storm/Log.hpp>
#include "client/Client.hpp"
#include "gameui/CGWorldFrame.hpp"
#include "gx/Coordinate.hpp"
#include "gx/Device.hpp"
#include "ui/FrameScript.hpp"
@ -175,7 +176,7 @@ void CGGameUI::Initialize() {
}
void CGGameUI::RegisterFrameFactories() {
//FrameXML_RegisterFactory("WorldFrame", (int)CGWorldFrame::Create, 1);
FrameXML_RegisterFactory("WorldFrame", CGWorldFrame::Create, 1);
//FrameXML_RegisterFactory("GameTooltip", (int)CGTooltip::Create, 0);
//FrameXML_RegisterFactory("Cooldown", (int)sub_51A380, 0);
//FrameXML_RegisterFactory("Minimap", (int)CGMinimapFrame::Create, 0);

View File

@ -0,0 +1,51 @@
#include "gameui/CGWorldFrame.hpp"
#include "gx/Transform.hpp"
#include <storm/Memory.hpp>
#include <tempest/Matrix.hpp>
CGWorldFrame* CGWorldFrame::s_currentWorldFrame = nullptr;
CGWorldFrame::CGWorldFrame(CSimpleFrame* parent) : CSimpleFrame(parent) {
// TODO
s_currentWorldFrame = this;
}
void CGWorldFrame::OnFrameRender(CRenderBatch* batch, uint32_t layer) {
CSimpleFrame::OnFrameRender(batch, layer);
if (!layer) {
batch->QueueCallback(&CGWorldFrame::RenderWorld, this);
}
}
CSimpleFrame* CGWorldFrame::Create(CSimpleFrame* parent) {
// TODO: Data = CDataAllocator__GetData(0, ".?AVCGWorldFrame@@", -2);
auto m = SMemAlloc(sizeof(CGWorldFrame), __FILE__, __LINE__, 0);
return m ? (new (m) CGWorldFrame(parent)) : nullptr;
}
void CGWorldFrame::RenderWorld(void* param) {
C44Matrix saved_proj;
GxXformProjection(saved_proj);
C44Matrix saved_view;
GxXformView(saved_view);
CGWorldFrame::OnWorldUpdate();
CGWorldFrame::OnWorldRender();
//PlayerNameRenderWorldText();
GxXformSetProjection(saved_proj);
GxXformSetView(saved_view);
}
void CGWorldFrame::OnWorldUpdate() {
}
void CGWorldFrame::OnWorldRender() {
}

View File

@ -0,0 +1,22 @@
#ifndef GAME_UI_CGWORLDFRAME_HPP
#define GAME_UI_CGWORLDFRAME_HPP
#include "ui/CSimpleFrame.hpp"
#include "ui/CSimpleTop.hpp"
class CGWorldFrame : public CSimpleFrame {
public:
CGWorldFrame(CSimpleFrame* parent);
virtual void OnFrameRender(CRenderBatch* batch, uint32_t layer);
static CSimpleFrame* Create(CSimpleFrame* parent);
static void RenderWorld(void* param);
static void OnWorldUpdate();
static void OnWorldRender();
public:
static CGWorldFrame* s_currentWorldFrame;
};
#endif // GAME_UI_CGWORLDFRAME_HPP

View File

@ -150,7 +150,10 @@ void FrameScript_CreateEvents(const char* names[], uint32_t count) {
FrameScript::s_scriptEvents.SetCount(count);
for (int32_t i = 0; i < count; i++) {
auto event = FrameScript::s_scriptEventsHash.New(names[i], 0, 0);
FrameScript_EventObject* event = nullptr;
if (names[i]) {
event = FrameScript::s_scriptEventsHash.New(names[i], 0, 0);
}
FrameScript::s_scriptEvents[i] = event;
}
}

6
src/world/World.cpp Normal file
View File

@ -0,0 +1,6 @@
#include "world/World.hpp"
int32_t LoadNewWorld() {
return 1;
}

View File

@ -3,4 +3,6 @@
#include "world/CWorld.hpp"
int32_t LoadNewWorld();
#endif