the game where you go into mines and start crafting! but for consoles (forked directly from smartcmd's github)
1#include "stdafx.h"
2#include "Tesselator.h"
3#include "Textures.h"
4#include "ProgressRenderer.h"
5#include "..\Minecraft.World\System.h"
6
7CRITICAL_SECTION ProgressRenderer::s_progress;
8
9ProgressRenderer::ProgressRenderer(Minecraft *minecraft)
10{
11 status = -1;
12 title = -1;
13 lastTime = System::currentTimeMillis();
14 noAbort = false;
15 this->minecraft = minecraft;
16 this->m_eType=eProgressStringType_ID;
17}
18
19void ProgressRenderer::progressStart(int title)
20{
21 noAbort = false;
22 _progressStart(title);
23}
24
25void ProgressRenderer::progressStartNoAbort(int string)
26{
27 noAbort = true;
28 _progressStart(string);
29}
30
31void ProgressRenderer::_progressStart(int title)
32{
33 // 4J Stu - Removing all progressRenderer rendering. This will be replaced on the xbox
34 if (!minecraft->running)
35 {
36 if (noAbort) return;
37// throw new StopGameException(); // 4J - removed
38 }
39
40 EnterCriticalSection( &ProgressRenderer::s_progress );
41 lastPercent = 0;
42 this->title = title;
43 LeaveCriticalSection( &ProgressRenderer::s_progress );
44
45#if 0
46 ScreenSizeCalculator ssc(minecraft->options, minecraft->width, minecraft->height);
47
48 glClear(GL_DEPTH_BUFFER_BIT);
49 glMatrixMode(GL_PROJECTION);
50 glLoadIdentity();
51 glOrtho(0, (float)ssc.rawWidth, (float)ssc.rawHeight, 0, 100, 300);
52 glMatrixMode(GL_MODELVIEW);
53 glLoadIdentity();
54 glTranslatef(0, 0, -200);
55#endif
56}
57
58void ProgressRenderer::progressStage(int status)
59{
60 if (!minecraft->running)
61 {
62 if (noAbort) return;
63// throw new StopGameException(); // 4J - removed
64 }
65
66
67 lastTime = 0;
68 EnterCriticalSection( &ProgressRenderer::s_progress );
69 setType(eProgressStringType_ID);
70 this->status = status;
71 LeaveCriticalSection( &ProgressRenderer::s_progress );
72 progressStagePercentage(-1);
73 lastTime = 0;
74}
75
76void ProgressRenderer::progressStagePercentage(int i)
77{
78 // 4J Stu - Removing all progressRenderer rendering. This will be replaced on the xbox
79 EnterCriticalSection( &ProgressRenderer::s_progress );
80 lastPercent = i;
81 LeaveCriticalSection( &ProgressRenderer::s_progress );
82
83#if 0
84 if (!minecraft->running)
85 {
86 if (noAbort) return;
87// throw new StopGameException(); // 4J - removed
88 }
89
90
91 __int64 now = System::currentTimeMillis();
92 if (now - lastTime < 20) return;
93 lastTime = now;
94
95 ScreenSizeCalculator ssc(minecraft->options, minecraft->width, minecraft->height);
96 int screenWidth = ssc.getWidth();
97 int screenHeight = ssc.getHeight();
98
99 glClear(GL_DEPTH_BUFFER_BIT);
100 glMatrixMode(GL_PROJECTION);
101 glLoadIdentity();
102 glOrtho(0, (float)ssc.rawWidth, (float)ssc.rawHeight, 0, 100, 300);
103 glMatrixMode(GL_MODELVIEW);
104 glLoadIdentity();
105 glTranslatef(0, 0, -200);
106
107 glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
108
109 Tesselator *t = Tesselator::getInstance();
110 int id = minecraft->textures->loadTexture(L"/gui/background.png");
111 glBindTexture(GL_TEXTURE_2D, id);
112 float s = 32;
113 t->begin();
114 t->color(0x404040);
115 t->vertexUV((float)(0), (float)( screenHeight), (float)( 0), (float)( 0), (float)( screenHeight / s));
116 t->vertexUV((float)(screenWidth), (float)( screenHeight), (float)( 0), (float)( screenWidth / s), (float)( screenHeight / s));
117 t->vertexUV((float)(screenWidth), (float)( 0), (float)( 0), (float)( screenWidth / s), (float)( 0));
118 t->vertexUV((float)(0), (float)( 0), (float)( 0), (float)( 0), (float)( 0));
119 t->end();
120
121 if (i >= 0)
122 {
123 int w = 100;
124 int h = 2;
125 int x = screenWidth / 2 - w / 2;
126 int y = screenHeight / 2 + 16;
127
128 glDisable(GL_TEXTURE_2D);
129 t->begin();
130 t->color(0x808080);
131 t->vertex((float)(x), (float)( y), (float)( 0));
132 t->vertex((float)(x), (float)( y + h), (float)( 0));
133 t->vertex((float)(x + w), (float)( y + h), (float)( 0));
134 t->vertex((float)(x + w), (float)( y), (float)( 0));
135
136 t->color(0x80ff80);
137 t->vertex((float)(x), (float)( y), (float)( 0));
138 t->vertex((float)(x), (float)( y + h), (float)( 0));
139 t->vertex((float)(x + i), (float)( y + h), (float)( 0));
140 t->vertex((float)(x + i), (float)( y), (float)( 0));
141 t->end();
142 glEnable(GL_TEXTURE_2D);
143 }
144
145 minecraft->font->drawShadow(title, (screenWidth - minecraft->font->width(title)) / 2, screenHeight / 2 - 4 - 16, 0xffffff);
146 minecraft->font->drawShadow(status, (screenWidth - minecraft->font->width(status)) / 2, screenHeight / 2 - 4 + 8, 0xffffff);
147 Display::update();
148
149 /* // 4J - removed
150 try {
151 Thread.yield();
152 } catch (Exception e) {
153 }
154 */
155#endif
156}
157
158int ProgressRenderer::getCurrentPercent()
159{
160 int returnValue = 0;
161 EnterCriticalSection( &ProgressRenderer::s_progress );
162 returnValue = lastPercent;
163 LeaveCriticalSection( &ProgressRenderer::s_progress );
164 return returnValue;
165}
166
167int ProgressRenderer::getCurrentTitle()
168{
169 EnterCriticalSection( &ProgressRenderer::s_progress );
170 int returnValue = title;
171 LeaveCriticalSection( &ProgressRenderer::s_progress );
172 return returnValue;
173}
174
175int ProgressRenderer::getCurrentStatus()
176{
177 EnterCriticalSection( &ProgressRenderer::s_progress );
178 int returnValue = status;
179 LeaveCriticalSection( &ProgressRenderer::s_progress );
180 return returnValue;
181}
182
183ProgressRenderer::eProgressStringType ProgressRenderer::getType()
184{
185 EnterCriticalSection( &ProgressRenderer::s_progress );
186 eProgressStringType returnValue = m_eType;
187 LeaveCriticalSection( &ProgressRenderer::s_progress );
188 return returnValue;
189}
190
191void ProgressRenderer::setType(eProgressStringType eType)
192{
193 EnterCriticalSection( &ProgressRenderer::s_progress );
194 m_eType=eType;
195 LeaveCriticalSection( &ProgressRenderer::s_progress );
196}
197
198void ProgressRenderer::progressStage(wstring &wstrText)
199{
200 EnterCriticalSection( &ProgressRenderer::s_progress );
201 m_wstrText=wstrText;
202 setType(eProgressStringType_String);
203 LeaveCriticalSection( &ProgressRenderer::s_progress );
204}
205
206wstring& ProgressRenderer::getProgressString(void)
207{
208 EnterCriticalSection( &ProgressRenderer::s_progress );
209 wstring &temp=m_wstrText;
210 LeaveCriticalSection( &ProgressRenderer::s_progress );
211 return temp;
212}
213
214