Initial Leaderboard Scene

This commit is contained in:
sillysagiri 2024-10-22 00:38:01 +07:00
parent a9c2d781bb
commit bfa6e37001
6 changed files with 159 additions and 7 deletions

View File

@ -0,0 +1,4 @@
Network fees may occur.
1. Continue
2. Cancel
Connecting

View File

@ -6,7 +6,8 @@ import javax.microedition.midlet.MIDlet;
import sillysagiri.Sagiri; import sillysagiri.Sagiri;
import sillysagiri.scene.Instruction; import sillysagiri.scene.Instruction;
import sillysagiri.scene.MainMenu; import sillysagiri.scene.Intro;
import sillysagiri.scene.Leaderboard;
import sillysagiri.scene.MainMenu; import sillysagiri.scene.MainMenu;
public class DotHack extends MIDlet implements Runnable { public class DotHack extends MIDlet implements Runnable {
@ -27,7 +28,7 @@ public class DotHack extends MIDlet implements Runnable {
thread.setPriority(Thread.MAX_PRIORITY); thread.setPriority(Thread.MAX_PRIORITY);
thread.start(); thread.start();
sagiri.Set_Scene(new Instruction()); sagiri.Set_Scene(new Leaderboard());
} }
public void pauseApp() {} public void pauseApp() {}

View File

@ -38,8 +38,7 @@ public class Sagiri
public static Sagiri _instance = null; public static Sagiri _instance = null;
public Input input; public Input input;
public int fps = 20;
public int fps = 10;
private Scene _scene_current = null; private Scene _scene_current = null;
public long time_begin = 0; public long time_begin = 0;

View File

@ -24,8 +24,8 @@ public class Instruction extends Scene {
private BMF bmf_blue; private BMF bmf_blue;
private Image img_loop; private Image img_loop;
private Image img_keypad;
private Image img_out; private Image img_out;
private Image img_keypad;
private Image img_arrow; private Image img_arrow;
private String[] str_list1; private String[] str_list1;
@ -209,6 +209,11 @@ public class Instruction extends Scene {
state_page = 0; state_page = 0;
if (state_tab < 0) state_tab = 3; if (state_tab < 0) state_tab = 3;
} }
if (sagiri.input.IsKeyDown(Sagiri.KEY_CENTER) || sagiri.input.IsKeyDown(Sagiri.KEY_RIGHT_SOFT))
{
sagiri.Set_Scene(new MainMenu());
}
} }
} }

View File

@ -0,0 +1,144 @@
package sillysagiri.scene;
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.Image;
import javax.microedition.lcdui.game.Sprite;
import sillysagiri.BMF;
import sillysagiri.Sagiri;
import sillysagiri.Scene;
import sillysagiri.Utils;
public class Leaderboard extends Scene {
private BMF bmf_white;
private BMF bmf_blue;
private Image img_loop;
private Image img_out;
private Image img_head;
int state = 0;
public void Preload() {
try {
bmf_white = BMF.Create("/silly/bmf/nds12_0.silly.gz", "/silly/bmf/nds12.fnt", 0xffffffff);
bmf_blue = BMF.Create("/silly/bmf/onds12_0.silly.gz", "/silly/bmf/onds12.fnt", 0xff00dbff);
img_loop = Image.createImage("/m_2.png");
img_out = Image.createImage("/out.png");
img_head = Image.createImage("/s_1.png");
}
catch(Exception e)
{
sagiri.Set_Scene(new DeathError(e));
}
}
public void Destroy() {
}
public void Update(long dt, Graphics g) {
Utils.Clear_Screen(g, 255, 108, 0);
int loopCount = (int)Math.ceil((float)Utils.GetScreenHeight()/img_loop.getHeight());
for (int i = 0; i<loopCount; i++)
g.drawImage(img_loop, 0, i*img_loop.getHeight(), Graphics.LEFT | Graphics.TOP);
int size_header = (int)(bmf_blue.lineHeight*1.5);
g.setColor(109, 0, 0);
g.fillRect(5, 5, Utils.GetScreenWidth()-10, size_header);
bmf_blue.DrawEx(g, "Leaderboard", 10, (size_header/2)+5, Graphics.LEFT | Graphics.VCENTER);
g.drawImage(img_out, Utils.GetScreenWidth()-10, (size_header/2)+5, Graphics.RIGHT|Graphics.VCENTER);
int rect_w = (int)(Utils.GetScreenWidth()*0.8f);
int rect_h = (int)(Utils.GetScreenHeight()*0.7f);
int rect_x = (Utils.GetScreenWidth()-rect_w)/2;
int rect_y = size_header+30;
int rect_mid = (int)Math.floor(rect_w/(img_head.getWidth()-30));
g.setColor(0, 0, 0);
g.fillRect(rect_x, rect_y, rect_w, rect_h);
int cursorx = rect_x+16;
for(int i=0; i<rect_mid; i++)
{
int remaning = img_head.getWidth()-30;
if (i == rect_mid-1)
remaning = (rect_w-30) - ((rect_mid-1)*(img_head.getWidth()-30));
g.drawRegion(
img_head,
15, 0, remaning, 15,
Sprite.TRANS_NONE,
cursorx + i*(img_head.getWidth()-30), rect_y+1,
Graphics.TOP | Graphics.LEFT
);
}
g.drawRegion(
img_head,
0, 0, 15, 15,
Sprite.TRANS_NONE,
rect_x+1, rect_y+1,
Graphics.TOP | Graphics.LEFT
);
g.drawRegion(
img_head,
img_head.getWidth()-15, 0, 15, 15,
Sprite.TRANS_NONE,
rect_x+rect_w-1, rect_y+1,
Graphics.TOP | Graphics.RIGHT
);
g.setColor(182, 109, 0);
g.fillRect(rect_x+1, rect_y+19+(rect_h-36), rect_w-2, 15);
g.setColor(255, 182, 0);
g.drawLine(rect_x+1, rect_y+19+(rect_h-36), rect_x+rect_w-2, rect_y+19+(rect_h-36));
g.setColor(146, 73, 0);
g.drawLine(rect_x+1, rect_y+19+(rect_h-36)+15, rect_x+rect_w-2, rect_y+19+(rect_h-36)+15);
g.setColor(0, 36, 85);
g.fillRect(rect_x+1, rect_y+img_head.getHeight()+2, rect_w-2, rect_h-36);
int cursory = rect_y+img_head.getHeight()+2 + 5;
cursorx = rect_x+6;
switch (state) {
case 0:
{
bmf_white.Draw(g, "Network fees may occur.\n\n1. Continue\n2. Cancel", cursorx, cursory);
if (sagiri.input.IsKeyDown(new int[]{Sagiri.KEY_1, Sagiri.KEY_CENTER, Sagiri.KEY_5}) ||
sagiri.input.IsKeyDown(Sagiri.KEY_LEFT_SOFT))
{
state = 1;
}
if (sagiri.input.IsKeyDown(Sagiri.KEY_2))
{
sagiri.Set_Scene(new MainMenu());
return;
}
}
break;
case 1:
{
bmf_white.Draw(g, "Connection Failed\nSorry", cursorx, cursory);
}
default: break;
}
if (sagiri.input.IsKeyDown(new int[]{Sagiri.KEY_CENTER, Sagiri.KEY_5}) ||
sagiri.input.IsKeyDown(Sagiri.KEY_RIGHT_SOFT))
{
sagiri.Set_Scene(new MainMenu());
return;
}
}
}

View File

@ -57,8 +57,6 @@ public class MainMenu extends Scene {
list_strmenu[i] = list_strmenu[i].toUpperCase(); list_strmenu[i] = list_strmenu[i].toUpperCase();
} }
System.out.println(list_strmenu[maxlength]);
int boxw = (int)(bmf_blue.Measure(list_strmenu[maxlength])[0]+bmf_blue.lineHeight*1.4); int boxw = (int)(bmf_blue.Measure(list_strmenu[maxlength])[0]+bmf_blue.lineHeight*1.4);
int boxh = bmf_blue.lineHeight*(list_strmenu.length+1); int boxh = bmf_blue.lineHeight*(list_strmenu.length+1);
int[] temp = new int[boxw*boxh]; int[] temp = new int[boxw*boxh];
@ -201,6 +199,7 @@ public class MainMenu extends Scene {
case STATE_MENU_LEADERBOARD: case STATE_MENU_LEADERBOARD:
{ {
sagiri.Set_Scene(new Leaderboard());
} }
break; break;