mirror of
https://github.com/4jcraft/4jcraft.git
synced 2026-04-24 15:43:38 +00:00
126 lines
2.8 KiB
C++
126 lines
2.8 KiB
C++
#include "../../../Minecraft.World/Platform/stdafx.h"
|
|
#include "Linux_UIController.h"
|
|
|
|
// Temp
|
|
#include "../../Minecraft.h"
|
|
#include "../../Textures/Textures.h"
|
|
|
|
// GDraw GL backend for Linux
|
|
#include "Iggy/gdraw/gdraw_glfw.h"
|
|
|
|
#define _ENABLEIGGY
|
|
|
|
ConsoleUIController ui;
|
|
|
|
void ConsoleUIController::init(S32 w, S32 h)
|
|
{
|
|
#ifdef _ENABLEIGGY
|
|
// Shared init
|
|
preInit(w, h);
|
|
|
|
//init
|
|
gdraw_funcs = gdraw_GL_CreateContext(w, h, 0);
|
|
|
|
if (!gdraw_funcs)
|
|
{
|
|
app.DebugPrintf("Failed to initialise GDraw GL!\n");
|
|
fprintf(stderr, "[Linux_UIController] Failed to initialise GDraw GL!\n");
|
|
// nott fatal for now
|
|
}
|
|
else
|
|
{
|
|
|
|
gdraw_GL_SetResourceLimits(GDRAW_GL_RESOURCE_vertexbuffer, 5000, 16 * 1024 * 1024);
|
|
gdraw_GL_SetResourceLimits(GDRAW_GL_RESOURCE_texture, 5000, 128 * 1024 * 1024);
|
|
gdraw_GL_SetResourceLimits(GDRAW_GL_RESOURCE_rendertarget, 10, 32 * 1024 * 1024);
|
|
|
|
IggySetGDraw(gdraw_funcs);
|
|
}
|
|
|
|
postInit();
|
|
#endif
|
|
}
|
|
|
|
void ConsoleUIController::render()
|
|
{
|
|
#ifdef _ENABLEIGGY
|
|
if (!gdraw_funcs)
|
|
return;
|
|
|
|
gdraw_GL_SetTileOrigin(0, 0, 0);
|
|
|
|
// render
|
|
renderScenes();
|
|
|
|
gdraw_GL_NoMoreGDrawThisFrame();
|
|
#endif
|
|
}
|
|
|
|
void ConsoleUIController::beginIggyCustomDraw4J(IggyCustomDrawCallbackRegion *region, CustomDrawData *customDrawRegion)
|
|
{
|
|
gdraw_GL_BeginCustomDraw_4J(region, customDrawRegion->mat);
|
|
}
|
|
|
|
CustomDrawData *ConsoleUIController::setupCustomDraw(UIScene *scene, IggyCustomDrawCallbackRegion *region)
|
|
{
|
|
CustomDrawData *customDrawRegion = new CustomDrawData();
|
|
customDrawRegion->x0 = region->x0;
|
|
customDrawRegion->x1 = region->x1;
|
|
customDrawRegion->y0 = region->y0;
|
|
customDrawRegion->y1 = region->y1;
|
|
|
|
|
|
gdraw_GL_BeginCustomDraw_4J(region, customDrawRegion->mat);
|
|
|
|
setupCustomDrawGameStateAndMatrices(scene, customDrawRegion);
|
|
|
|
return customDrawRegion;
|
|
}
|
|
|
|
CustomDrawData *ConsoleUIController::calculateCustomDraw(IggyCustomDrawCallbackRegion *region)
|
|
{
|
|
CustomDrawData *customDrawRegion = new CustomDrawData();
|
|
customDrawRegion->x0 = region->x0;
|
|
customDrawRegion->x1 = region->x1;
|
|
customDrawRegion->y0 = region->y0;
|
|
customDrawRegion->y1 = region->y1;
|
|
|
|
gdraw_GL_CalculateCustomDraw_4J(region, customDrawRegion->mat);
|
|
|
|
return customDrawRegion;
|
|
}
|
|
|
|
void ConsoleUIController::endCustomDraw(IggyCustomDrawCallbackRegion *region)
|
|
{
|
|
endCustomDrawGameStateAndMatrices();
|
|
|
|
gdraw_GL_EndCustomDraw(region);
|
|
}
|
|
|
|
void ConsoleUIController::setTileOrigin(S32 xPos, S32 yPos)
|
|
{
|
|
gdraw_GL_SetTileOrigin(xPos, yPos, 0);
|
|
}
|
|
|
|
GDrawTexture *ConsoleUIController::getSubstitutionTexture(int textureId)
|
|
{
|
|
// todo impl
|
|
return nullptr;
|
|
}
|
|
|
|
void ConsoleUIController::destroySubstitutionTexture(void *destroyCallBackData, GDrawTexture *handle)
|
|
{
|
|
if (handle)
|
|
gdraw_GL_WrappedTextureDestroy(handle);
|
|
}
|
|
|
|
void ConsoleUIController::shutdown()
|
|
{
|
|
#ifdef _ENABLEIGGY
|
|
if (gdraw_funcs)
|
|
{
|
|
gdraw_GL_DestroyContext();
|
|
gdraw_funcs = nullptr;
|
|
}
|
|
#endif
|
|
} |