the whole game

This commit is contained in:
2026-03-02 22:04:18 +03:00
parent 816e9060b4
commit f0617a5d22
2069 changed files with 581500 additions and 0 deletions

View File

@@ -0,0 +1,83 @@
#include "HumanoidMobRenderer.h"
#include "EntityRenderDispatcher.h"
#include "../ItemInHandRenderer.h"
#include "../TileRenderer.h"
#include "../../model/HumanoidModel.h"
#include "../../../world/level/tile/Tile.h"
#include "../../../world/entity/player/Player.h"
#include "../../../world/entity/player/Inventory.h"
#include "../../../world/item/ItemInstance.h"
#include "../../../world/item/Item.h"
#include "../../../world/item/BowItem.h"
HumanoidMobRenderer::HumanoidMobRenderer(HumanoidModel* humanoidModel, float shadow)
: super(humanoidModel, shadow),
humanoidModel(humanoidModel)
{
}
void HumanoidMobRenderer::renderHand() {
humanoidModel->attackTime = 0;
humanoidModel->setupAnim(0, 0, 0, 0, 0, 1 / 16.0f);
//@attn @cuberender @enableClientState @vertexarray
glEnableClientState2(GL_VERTEX_ARRAY);
glEnableClientState2(GL_TEXTURE_COORD_ARRAY);
//glEnableClientState2(GL_COLOR_ARRAY);
humanoidModel->arm0.render(1 / 16.0f);
glDisableClientState2(GL_VERTEX_ARRAY);
glDisableClientState2(GL_TEXTURE_COORD_ARRAY);
//glDisableClientState2(GL_COLOR_ARRAY);
}
void HumanoidMobRenderer::additionalRendering(Mob* mob, float a) {
ItemInstance* item = mob->getCarriedItem();
if (item != NULL && item->count > 0) {
glPushMatrix2();
humanoidModel->arm0.translateTo(1 / 16.0f);
glTranslatef2(-1.0f / 16.0f, 7.0f / 16.0f, 1.0f / 16.0f);
if (item->id < 256 && TileRenderer::canRender(Tile::tiles[item->id]->getRenderShape())) {
float s = 8.0f / 16.0f;
glTranslatef2(0.0f, 3.0f / 16.0f, -5 / 16.0f);
s *= 0.75f;
glRotatef2(20.0f, 1.0f, 0.0f, 0.0f);
glRotatef2(45.0f, 0.0f, 1.0f, 0.0f);
glScalef2(s, -s, s);
} else if (item->id == Item::bow->id) {
const float s = 10.0f / 16.0f;
glTranslatef2(0 / 16.0f, 2 / 16.0f, 5 / 16.0f);
glRotatef2(-20, 0, 1, 0);
glScalef2(s, -s, s);
glRotatef2(-100, 1, 0, 0);
glRotatef2(45, 0, 1, 0);
} else if (Item::items[item->id]->isHandEquipped()) {
float s = 10.0f / 16.0f;
glTranslatef2(0.0f, 3.0f / 16.0f, 0.0f);
glScalef2(s, -s, s);
glRotatef2(-100.0f, 1.0f, 0.0f, 0.0f);
glRotatef2(45.0f, 0.0f, 1.0f, 0.0f);
} else {
float s = 6 / 16.0f;
glTranslatef2(+4 / 16.0f, +3 / 16.0f, -3 / 16.0f);
glScalef2(s, s, s);
glRotatef2(60.0f, 0.0f, 0.0f, 1.0f);
glRotatef2(-90.0f, 1.0f, 0.0f, 0.0f);
glRotatef2(20.0f, 0.0f, 0.0f, 1.0f);
}
entityRenderDispatcher->itemInHandRenderer->renderItem(mob, item);
glPopMatrix2();
}
}
void HumanoidMobRenderer::render( Entity* mob_, float x, float y, float z, float rot, float a ) {
Mob* mob = (Mob*)mob_;
ItemInstance* carriedItem = mob->getCarriedItem();
if(carriedItem != NULL)
humanoidModel->holdingRightHand = true;
humanoidModel->sneaking = mob->isSneaking();
super::render(mob_, x, y, z, rot, a);
humanoidModel->holdingRightHand = false;
}