diff --git a/raw/text/t_instructions.txt b/raw/text/t_instructions.txt new file mode 100644 index 0000000..4089c06 --- /dev/null +++ b/raw/text/t_instructions.txt @@ -0,0 +1,34 @@ +Keys +Movement +Items +Skill +Menu +Pause +Stats +Root Town ▶ Dungeon +Use the Chaos Gate. +Dungeon ▶ Root Town +Use an Ocarina. +HP Recovery +Health Drink (50%) +Healing Elixer (100%) +SP Recovery +Mage's Soul (50%) +Emperor's Soul (100%) +Noble Wine: +Restores HP+SP. +Antidote: +Poison Treatment. +Restorative: +Curse Treatment. +Resurrect: +Revive a player. +Ocarina: +Move to Root Town. +Attack Power UP +Ap Corv +Repth - One Player +La Repth - Everyone +Data Drain +Use on Boss monsters to weaken them. +Requirements Monster HP 50% Kite SP 100% \ No newline at end of file diff --git a/src/dothack/DotHack.java b/src/dothack/DotHack.java index a939215..34ead81 100644 --- a/src/dothack/DotHack.java +++ b/src/dothack/DotHack.java @@ -5,6 +5,7 @@ import javax.microedition.lcdui.Display; import javax.microedition.midlet.MIDlet; import sillysagiri.Sagiri; +import sillysagiri.scene.Instruction; import sillysagiri.scene.MainMenu; import sillysagiri.scene.MainMenu; @@ -26,7 +27,7 @@ public class DotHack extends MIDlet implements Runnable { thread.setPriority(Thread.MAX_PRIORITY); thread.start(); - sagiri.Set_Scene(new MainMenu()); + sagiri.Set_Scene(new Instruction()); } public void pauseApp() {} diff --git a/src/sillysagiri/Sagiri.java b/src/sillysagiri/Sagiri.java index a50b985..72acf3f 100644 --- a/src/sillysagiri/Sagiri.java +++ b/src/sillysagiri/Sagiri.java @@ -39,7 +39,7 @@ public class Sagiri public Input input; - public int fps = 60; + public int fps = 10; private Scene _scene_current = null; public long time_begin = 0; diff --git a/src/sillysagiri/scene/Instruction.java b/src/sillysagiri/scene/Instruction.java new file mode 100644 index 0000000..2e2896f --- /dev/null +++ b/src/sillysagiri/scene/Instruction.java @@ -0,0 +1,214 @@ +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 Instruction extends Scene { + + private final int STATE_TAB_KEYS = 0; + private final int STATE_TAB_MOVE = 1; + private final int STATE_TAB_ITEMS = 2; + private final int STATE_TAB_SKILL = 3; + + private byte state_tab = 0; + private byte state_page = 0; + + private BMF bmf_black; + private BMF bmf_lime; + private BMF bmf_blue; + + private Image img_loop; + private Image img_keypad; + private Image img_out; + private Image img_arrow; + + private String[] str_list1; + private String[] str_list2; + + public void Preload() { + try + { + bmf_black = BMF.Create("/silly/bmf/nds12_0.silly.gz", "/silly/bmf/nds12.fnt", 0xff000000); + bmf_lime = BMF.Create("/silly/bmf/nds12_0.silly.gz", "/silly/bmf/nds12.fnt", 0xffB6FF00); + bmf_blue = BMF.Create("/silly/bmf/onds12_0.silly.gz", "/silly/bmf/onds12.fnt", 0xff00dbff); + + img_loop = Image.createImage("/m_2.png"); + img_keypad = Image.createImage("/bH.png"); + img_out = Image.createImage("/out.png"); + img_arrow = Image.createImage("/i_0.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 3) state_tab = 0; + } + + if (sagiri.input.IsKeyDown(new int[]{Sagiri.KEY_LEFT, Sagiri.KEY_4})) + { + state_tab--; + state_page = 0; + if (state_tab < 0) state_tab = 3; + } + } + +} diff --git a/src/sillysagiri/scene/MainMenu.java b/src/sillysagiri/scene/MainMenu.java index ba7c46b..b2095d8 100644 --- a/src/sillysagiri/scene/MainMenu.java +++ b/src/sillysagiri/scene/MainMenu.java @@ -5,17 +5,30 @@ 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 MainMenu extends Scene { + private final int STATE_MENU_NEWGAME = 0; + private final int STATE_MENU_LOADGAME = 1; + private final int STATE_MENU_INSTRUCTION = 2; + private final int STATE_MENU_OPTIONS = 3; + private final int STATE_MENU_LEADERBOARD = 4; + private final int STATE_MENU_CREDITS = 5; + private final int STATE_MENU_EXITGAME = 6; + + public final int STATE_BANDAINAMCO = 0; + public final int STATE_MAINMENU = 1; + private long counter = 0; private int state = 0; + private int state_menu = 0; private BMF bmf_white; private BMF bmf_blue; - private Image img_bg; + private Image img_loop; private Image img_box; private Image img_bandai; private Image img_head1; @@ -31,17 +44,8 @@ public class MainMenu extends Scene { bmf_white = BMF.Create("/silly/bmf/onds12_0.silly.gz", "/silly/bmf/onds12.fnt", 0xffffffff); bmf_blue = BMF.Create("/silly/bmf/onds12_0.silly.gz", "/silly/bmf/onds12.fnt", 0xff00dbff); bmf_blue.lineHeight = (short)(bmf_blue.lineHeight*1.5); - Image img_loop = Image.createImage("/m_2.png"); img_bandai = Image.createImage("/c_0.png"); - - int loopCount = (int)Math.ceil((float)Utils.GetScreenHeight()/img_loop.getHeight()); - - img_bg = Image.createImage(img_loop.getWidth(), Utils.GetScreenHeight()); - Utils.Clear_Image(img_bg, 255, 108, 0); - Graphics g_bg = img_bg.getGraphics(); - - for (int i = 0; i 360) counter = 0; - padding = (int)(Math.sin((float)counter/200) * 3) + 3; - cursor = (int)(Utils.GetScreenHeight()*0.35); + cursor = (int)(Utils.GetScreenHeight()*0.35) + state_menu*bmf_blue.lineHeight; g.drawRegion( img_arrow, @@ -152,6 +149,68 @@ public class MainMenu extends Scene { Sprite.TRANS_NONE, (Utils.GetScreenWidth()/2) - (img_box.getWidth()/2)-padding, cursor, Graphics.RIGHT | Graphics.TOP); + + if (sagiri.input.IsKeyDown(new int[]{Sagiri.KEY_UP, Sagiri.KEY_LEFT, Sagiri.KEY_2, Sagiri.KEY_4})) + { + state_menu--; + if (state_menu < 0) state_menu = list_strmenu.length-1; + } + + if (sagiri.input.IsKeyDown(new int[]{Sagiri.KEY_DOWN, Sagiri.KEY_RIGHT, Sagiri.KEY_8, Sagiri.KEY_6})) + { + state_menu++; + if (state_menu > list_strmenu.length-1) state_menu = 0; + } + + + if (sagiri.input.IsKeyDown(new int[]{Sagiri.KEY_CENTER, Sagiri.KEY_5}) || sagiri.input.IsKeyDown(Sagiri.KEY_LEFT_SOFT)) + { + ProccedMenu(); + return; + } + } + break; + + default: break; + } + } + + private void ProccedMenu() + { + switch (state_menu) { + case STATE_MENU_NEWGAME: + { + } + break; + + case STATE_MENU_LOADGAME: + { + } + break; + + case STATE_MENU_INSTRUCTION: + { + sagiri.Set_Scene(new Instruction()); + } + break; + + case STATE_MENU_OPTIONS: + { + } + break; + + case STATE_MENU_LEADERBOARD: + { + } + break; + + case STATE_MENU_CREDITS: + { + } + break; + + case STATE_MENU_EXITGAME: + { } break;