From b691c43c44ff180d10e7d4a9afc83b98551ff586 Mon Sep 17 00:00:00 2001 From: daoge_cmd <3523206925@qq.com> Date: Sun, 1 Mar 2026 12:16:08 +0800 Subject: Initial commit --- Minecraft.Client/AchievementPopup.cpp | 151 ++++++++++++++++++++++++++++++++++ 1 file changed, 151 insertions(+) create mode 100644 Minecraft.Client/AchievementPopup.cpp (limited to 'Minecraft.Client/AchievementPopup.cpp') diff --git a/Minecraft.Client/AchievementPopup.cpp b/Minecraft.Client/AchievementPopup.cpp new file mode 100644 index 00000000..04f822ab --- /dev/null +++ b/Minecraft.Client/AchievementPopup.cpp @@ -0,0 +1,151 @@ +#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 +} \ No newline at end of file -- cgit v1.2.3