Files
MinecraftConsoles/Minecraft.Client/AchievementPopup.cpp
Loki Rautio 087b7e7abf Revert "Project modernization (#630)"
This code was not tested and breaks in Release builds, reverting to restore
functionality of the nightly. All in-game menus do not work and generating
a world crashes.

This reverts commit a9be52c41a.
2026-03-07 21:12:22 -06:00

151 lines
3.5 KiB
C++

#include "stdafx.h"
#include "AchievementPopup.h"
#include "ItemRenderer.h"
#include "Font.h"
#include "Textures.h"
#include "Lighting.h"
#include "..\Minecraft.World\System.h"
#include "..\Minecraft.World\net.minecraft.locale.h"
#include "..\Minecraft.World\net.minecraft.stats.h"
#include "..\Minecraft.World\SharedConstants.h"
AchievementPopup::AchievementPopup(Minecraft *mc)
{
// 4J - added initialisers
width = 0;
height = 0;
ach = NULL;
startTime = 0;
isHelper = false;
this->mc = mc;
ir = new ItemRenderer();
}
void AchievementPopup::popup(Achievement *ach)
{
title = I18n::get(L"achievement.get");
desc = ach->name;
startTime = System::currentTimeMillis();
this->ach = ach;
isHelper = false;
}
void AchievementPopup::permanent(Achievement *ach)
{
title = ach->name;
desc = ach->getDescription();
startTime = System::currentTimeMillis() - 2500;
this->ach = ach;
isHelper = true;
}
void AchievementPopup::prepareWindow()
{
glViewport(0, 0, mc->width, mc->height);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
this->width = mc->width;
this->height = mc->height;
ScreenSizeCalculator ssc(mc->options, mc->width, mc->height);
width = ssc.getWidth();
height = ssc.getHeight();
glClear(GL_DEPTH_BUFFER_BIT);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(0, (float)width, (float)height, 0, 1000, 3000);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glTranslatef(0, 0, -2000);
}
void AchievementPopup::render()
{
// 4J Unused
#if 0
if (Minecraft::warezTime > 0)
{
glDisable(GL_DEPTH_TEST);
glDepthMask(false);
Lighting::turnOff();
prepareWindow();
wstring title = L"Minecraft " + SharedConstants::VERSION_STRING + L" Unlicensed Copy :(";
wstring msg1 = L"(Or logged in from another location)";
wstring msg2 = L"Purchase at minecraft.net";
mc->font->drawShadow(title, 2, 2 + 9 * 0, 0xffffff);
mc->font->drawShadow(msg1, 2, 2 + 9 * 1, 0xffffff);
mc->font->drawShadow(msg2, 2, 2 + 9 * 2, 0xffffff);
glDepthMask(true);
glEnable(GL_DEPTH_TEST);
}
if (ach == NULL || startTime == 0) return;
double time = (System::currentTimeMillis() - startTime) / 3000.0;
if (isHelper)
{
}
else if (!isHelper && (time < 0 || time > 1))
{
startTime = 0;
return;
}
prepareWindow();
glDisable(GL_DEPTH_TEST);
glDepthMask(false);
double yo = time * 2;
if (yo > 1) yo = 2 - yo;
yo = yo * 4;
yo = 1 - yo;
if (yo < 0) yo = 0;
yo = yo * yo;
yo = yo * yo;
int xx = width - 160;
int yy = 0 - (int) (yo * 36);
int tex = mc->textures->loadTexture(L"/achievement/bg.png");
glColor4f(1, 1, 1, 1);
glEnable(GL_TEXTURE_2D);
glBindTexture(GL_TEXTURE_2D, tex);
glDisable(GL_LIGHTING);
blit(xx, yy, 96, 202, 160, 32);
if (isHelper)
{
mc->font->drawWordWrap(desc, xx + 30, yy + 7, 120, 0xffffffff);
}
else
{
mc->font->draw(title, xx + 30, yy + 7, 0xffffff00);
mc->font->draw(desc, xx + 30, yy + 18, 0xffffffff);
}
glPushMatrix();
glRotatef(180, 1, 0, 0);
Lighting::turnOn();
glPopMatrix();
glDisable(GL_LIGHTING);
glEnable(GL_RESCALE_NORMAL);
glEnable(GL_COLOR_MATERIAL);
glEnable(GL_LIGHTING);
ir->renderGuiItem(mc->font, mc->textures, ach->icon, xx + 8, yy + 8);
glDisable(GL_LIGHTING);
glDepthMask(true);
glEnable(GL_DEPTH_TEST);
#endif
}