feat: TU19 (Dec 2014) Features & Content (#155)

* try to resolve merge conflict

* feat: TU19 (Dec 2014) Features & Content (#32)

* December 2014 files

* Working release build

* Fix compilation issues

* Add sound to Windows64Media

* Add DLC content and force Tutorial DLC

* Revert "Add DLC content and force Tutorial DLC"

This reverts commit 97a4399472.

* Disable broken light packing

* Disable breakpoint during DLC texture map load

Allows DLC loading but the DLC textures are still broken

* Fix post build not working

* ...

* fix vs2022 build

* fix cmake build

---------

Co-authored-by: Loki <lokirautio@gmail.com>
This commit is contained in:
daoge
2026-03-03 03:04:10 +08:00
committed by GitHub
parent 84c31a2331
commit b3feddfef3
2069 changed files with 264842 additions and 139522 deletions

View File

@@ -4,18 +4,20 @@
#include "Tesselator.h"
#include "Lighting.h"
#include "EnderDragonRenderer.h"
#include "BossMobGuiInfo.h"
shared_ptr<EnderDragon> EnderDragonRenderer::bossInstance;
int EnderDragonRenderer::currentModel;
ResourceLocation EnderDragonRenderer::DRAGON_EXPLODING_LOCATION = ResourceLocation(TN_MOB_ENDERDRAGON_SHUFFLE);
ResourceLocation EnderDragonRenderer::CRYSTAL_BEAM_LOCATION = ResourceLocation(TN_MOB_ENDERDRAGON_BEAM);
ResourceLocation EnderDragonRenderer::DRAGON_EYES_LOCATION = ResourceLocation(TN_MOB_ENDERDRAGON_ENDEREYES);
ResourceLocation EnderDragonRenderer::DRAGON_LOCATION = ResourceLocation(TN_MOB_ENDERDRAGON);
EnderDragonRenderer::EnderDragonRenderer() : MobRenderer(new DragonModel(0), 0.5f)
{
currentModel = 0;
dragonModel = (DragonModel *) model;
this->setArmor(model);
setArmor(model); // TODO: Make second constructor that assigns this.
}
void EnderDragonRenderer::setupRotations(shared_ptr<Mob> _mob, float bob, float bodyRot, float a)
void EnderDragonRenderer::setupRotations(shared_ptr<LivingEntity> _mob, float bob, float bodyRot, float a)
{
// 4J - dynamic cast required because we aren't using templates/generics in our version
shared_ptr<EnderDragon> mob = dynamic_pointer_cast<EnderDragon>(_mob);
@@ -46,7 +48,7 @@ void EnderDragonRenderer::setupRotations(shared_ptr<Mob> _mob, float bob, float
}
}
void EnderDragonRenderer::renderModel(shared_ptr<Entity> _mob, float wp, float ws, float bob, float headRotMinusBodyRot, float headRotx, float scale)
void EnderDragonRenderer::renderModel(shared_ptr<LivingEntity> _mob, float wp, float ws, float bob, float headRotMinusBodyRot, float headRotx, float scale)
{
// 4J - dynamic cast required because we aren't using templates/generics in our version
shared_ptr<EnderDragon> mob = dynamic_pointer_cast<EnderDragon>(_mob);
@@ -57,7 +59,7 @@ void EnderDragonRenderer::renderModel(shared_ptr<Entity> _mob, float wp, float w
glDepthFunc(GL_LEQUAL);
glEnable(GL_ALPHA_TEST);
glAlphaFunc(GL_GREATER, tt);
bindTexture(mob->customTextureUrl, TN_MOB_ENDERDRAGON_SHUFFLE); // 4J was "/mob/enderdragon/shuffle.png"
bindTexture(&DRAGON_EXPLODING_LOCATION); // 4J was "/mob/enderdragon/shuffle.png"
model->render(mob, wp, ws, bob, headRotMinusBodyRot, headRotx, scale, true);
glAlphaFunc(GL_GREATER, 0.1f);
@@ -65,7 +67,7 @@ void EnderDragonRenderer::renderModel(shared_ptr<Entity> _mob, float wp, float w
}
bindTexture(mob->customTextureUrl, mob->getTexture());
bindTexture(mob);
model->render(mob, wp, ws, bob, headRotMinusBodyRot, headRotx, scale, true);
if (mob->hurtTime > 0)
@@ -91,12 +93,7 @@ void EnderDragonRenderer::render(shared_ptr<Entity> _mob, double x, double y, do
{
// 4J - dynamic cast required because we aren't using templates/generics in our version
shared_ptr<EnderDragon> mob = dynamic_pointer_cast<EnderDragon>(_mob);
EnderDragonRenderer::bossInstance = mob;
if (currentModel != DragonModel::MODEL_ID)
{
model = new DragonModel(0);
currentModel = DragonModel::MODEL_ID;
}
BossMobGuiInfo::setBossHealth(mob, false);
MobRenderer::render(mob, x, y, z, rot, a);
if (mob->nearestCrystal != NULL)
{
@@ -135,7 +132,7 @@ void EnderDragonRenderer::render(shared_ptr<Entity> _mob, double x, double y, do
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_DST_ALPHA);
bindTexture(TN_MOB_ENDERDRAGON_BEAM); // 4J was "/mob/enderdragon/beam.png"
bindTexture(&CRYSTAL_BEAM_LOCATION); // 4J was "/mob/enderdragon/beam.png"
glShadeModel(GL_SMOOTH);
@@ -167,7 +164,12 @@ void EnderDragonRenderer::render(shared_ptr<Entity> _mob, double x, double y, do
}
}
void EnderDragonRenderer::additionalRendering(shared_ptr<Mob> _mob, float a)
ResourceLocation *EnderDragonRenderer::getTextureLocation(shared_ptr<Entity> mob)
{
return &DRAGON_LOCATION;
}
void EnderDragonRenderer::additionalRendering(shared_ptr<LivingEntity> _mob, float a)
{
// 4J - dynamic cast required because we aren't using templates/generics in our version
shared_ptr<EnderDragon> mob = dynamic_pointer_cast<EnderDragon>(_mob);
@@ -227,7 +229,7 @@ void EnderDragonRenderer::additionalRendering(shared_ptr<Mob> _mob, float a)
}
int EnderDragonRenderer::prepareArmor(shared_ptr<Mob> _mob, int layer, float a)
int EnderDragonRenderer::prepareArmor(shared_ptr<LivingEntity> _mob, int layer, float a)
{
// 4J - dynamic cast required because we aren't using templates/generics in our version
shared_ptr<EnderDragon> mob = dynamic_pointer_cast<EnderDragon>(_mob);
@@ -238,7 +240,7 @@ int EnderDragonRenderer::prepareArmor(shared_ptr<Mob> _mob, int layer, float a)
}
if (layer != 0) return -1;
bindTexture(TN_MOB_ENDERDRAGON_ENDEREYES); // 4J was "/mob/enderdragon/ender_eyes.png"
bindTexture(&DRAGON_EYES_LOCATION); // 4J was "/mob/enderdragon/ender_eyes.png"
float br = 1;
glEnable(GL_BLEND);
// 4J Stu - We probably don't need to do this on 360 either (as we force it back on the renderer)