📄 spcurve.java
字号:
// Decompiled by Jad v1.5.7f. Copyright 2000 Pavel Kouznetsov.
// Jad home page: http://www.geocities.com/SiliconValley/Bridge/8617/jad.html
// Decompiler options: packimports(3)
// Source File Name: SPCurve.java
package ladyconf;
import com.siemens.mp.game.ExtendedImage;
import java.util.Calendar;
import java.util.Date;
import javax.microedition.lcdui.*;
// Referenced classes of package ladyconf:
// SPMonth, SPKernel
public class SPCurve extends Canvas
implements CommandListener
{
public SPCurve(SPKernel spk)
{
OKCmd = new Command("\u786E\u5B9A", 4, 0);
DetailCmd = new Command("\u8BE6\u7EC6\u63CF\u8FF0", 4, 0);
BackCmd = new Command("\u8FD4\u56DE", 4, 1);
ExitCmd = new Command("\u9000\u51FA", 7, 2);
day = Calendar.getInstance();
DHEIGHT = getHeight();
ExScreenImg = new ExtendedImage(Image.createImage(104, DHEIGHT));
Exg = ExScreenImg.getImage().getGraphics();
pInput = new Form("\u751F\u7269\u8282\u5F8B\u8BA1\u7B97");
lastdate = new DateField("\u8BF7\u8F93\u5165\u60A8\u7684\u751F\u65E5\n(\u65E5\u6708\u5E74):", 1);
lastdate.setDate(new Date(System.currentTimeMillis()));
pInput.append(lastdate);
pInput.addCommand(OKCmd);
pInput.addCommand(BackCmd);
pInput.addCommand(ExitCmd);
addCommand(DetailCmd);
addCommand(BackCmd);
addCommand(ExitCmd);
pKernel = spk;
}
public void activate(Display disp)
{
display = disp;
pInput.setCommandListener(this);
display.setCurrent(pInput);
}
public void show()
{
setCommandListener(this);
display.setCurrent(this);
}
public void setDate(Date sdate)
{
day.setTime(sdate);
day.set(10, 0);
day.set(12, 0);
day.set(13, 0);
birthday = day.getTime().getTime();
day.setTime(new Date(System.currentTimeMillis()));
thisYear = day.get(1);
thisMonth = day.get(2) + 1;
thisDay = day.get(5);
CalcDate();
}
private void CalcDate()
{
day.set(1, thisYear);
day.set(2, thisMonth - 1);
day.set(5, 1);
day.set(10, 0);
day.set(12, 0);
day.set(13, 0);
firstday = day.getTime().getTime();
lifedate = (firstday - birthday) / (long)0x5265c00;
if(thisMonth == 12)
{
day.set(1, thisYear + 1);
day.set(2, 0);
} else
{
day.set(2, thisMonth);
}
long msdate = day.getTime().getTime();
msdate -= 0x5265c00;
day.setTime(new Date(msdate));
DateCount = day.get(5);
if(thisDay > DateCount)
thisDay = DateCount;
}
protected void paint(Graphics grap)
{
if(type == 0)
DrawCurve();
redraw();
}
private void redraw()
{
ExScreenImg.blitToScreen(0, 0);
}
private void DrawCurve()
{
ExScreenImg.clear((byte)0);
int left = 8;
int top = 39;
int space = 3;
int height = 20;
height = (DHEIGHT - 38) / 2;
top = DHEIGHT / 2 - 1;
Exg.setFont(SPMonth.BoldFont);
Exg.drawString(String.valueOf(String.valueOf((new StringBuffer(String.valueOf(String.valueOf(thisYear)))).append("\u5E74").append(thisMonth).append("\u6708").append(thisDay).append("\u65E5"))), 0, 0, 20);
Exg.setFont(SPMonth.SysFont);
int sx = left + (thisDay - 1) * space;
Exg.drawLine(sx, top - height - 2, sx, top - height - 2);
Exg.drawLine(sx - 1, top - height - 3, sx + 1, top - height - 3);
Exg.drawLine(sx - 2, top - height - 4, sx + 2, top - height - 4);
Exg.drawLine(sx - 3, top - height - 5, sx + 3, top - height - 5);
Exg.drawLine(sx, top + height + 2, sx, top + height + 2);
Exg.drawLine(sx - 1, top + height + 3, sx + 1, top + height + 3);
Exg.drawLine(sx - 2, top + height + 4, sx + 2, top + height + 4);
Exg.drawLine(sx - 3, top + height + 5, sx + 3, top + height + 5);
Exg.setStrokeStyle(1);
Exg.drawLine(1, DHEIGHT - 12, 1, DHEIGHT - 1);
Exg.setStrokeStyle(0);
Exg.drawLine(33, DHEIGHT - 12, 33, DHEIGHT - 9);
Exg.drawLine(33, DHEIGHT - 4, 33, DHEIGHT - 1);
Exg.drawLine(65, DHEIGHT - 12, 65, DHEIGHT - 1);
Exg.drawString("\u4F53\u529B", 4, DHEIGHT, 36);
Exg.drawString("\u60C5\u7EEA", 36, DHEIGHT, 36);
Exg.drawString("\u667A\u529B", 68, DHEIGHT, 36);
Exg.setFont(SPMonth.SmallFont);
Exg.drawString("+", 0, top - height - 4, 20);
Exg.drawString("0", 0, top - 4, 20);
Exg.drawString("-", 0, (top + height) - 4, 20);
Exg.setFont(SPMonth.SysFont);
Exg.drawLine(left, top - height, left, top + height);
Exg.drawLine(left + (DateCount - 1) * space, top - height, left + (DateCount - 1) * space, top + height);
Exg.drawLine(left, top, left + (DateCount - 1) * space, top);
int index = (int)(lifedate % (long)23);
if(index < 0)
index += 23;
int sy = top - (int)((getThew(index++) * (long)height) / (long)10000);
boolean d = true;
for(int i = 0; i < DateCount - 1; i++)
{
if(index >= 23)
index = 0;
int ey = top - (int)((getThew(index++) * (long)height) / (long)10000);
if(d)
Exg.drawLine(left + i * space, sy, left + (i + 1) * space, ey);
d = !d;
sy = ey;
}
Exg.setStrokeStyle(1);
index = (int)(lifedate % (long)28);
if(index < 0)
index += 28;
sy = top - (int)((getEmotion(index++) * (long)height) / (long)10000);
for(int i = 0; i < DateCount - 1; i++)
{
if(index >= 28)
index = 0;
int ey = top - (int)((getEmotion(index++) * (long)height) / (long)10000);
Exg.drawLine(left + i * space, sy, left + (i + 1) * space, ey);
sy = ey;
}
Exg.setStrokeStyle(0);
index = (int)(lifedate % (long)33);
if(index < 0)
index += 33;
sy = top - (int)((getIntelligence(index++) * (long)height) / (long)10000);
for(int i = 0; i < DateCount - 1; i++)
{
if(index >= 33)
index = 0;
int ey = top - (int)((getIntelligence(index++) * (long)height) / (long)10000);
Exg.drawLine(left + i * space, sy, left + (i + 1) * space, ey);
sy = ey;
}
}
private void DrawDetail()
{
Exg.setColor(0xffffff);
Exg.fillRect(3, 13, 94, 48);
Exg.setColor(0);
Exg.drawRect(3, 13, 94, 48);
day.set(1, thisYear);
day.set(2, thisMonth - 1);
day.set(5, thisDay);
day.set(10, 0);
day.set(12, 0);
day.set(13, 0);
long cdate = (day.getTime().getTime() - birthday) / (long)0x5265c00;
int index = (int)(cdate % (long)23);
if(index < 0)
index += 23;
String showstr;
if(index > 6 && index < 19)
showstr = ",\u4E0B\u964D\u671F";
else
showstr = ",\u4E0A\u5347\u671F";
long tmp = getThew(index) / (long)1000;
String pn;
if(tmp < (long)0)
{
pn = "-";
tmp = -tmp;
} else
{
pn = "+";
}
Exg.drawString(String.valueOf(String.valueOf((new StringBuffer("\u4F53\u529B")).append(pn).append(tmp / (long)10).append(".").append(tmp % (long)10).append(showstr))), 50, 18, 17);
index = (int)(cdate % (long)28);
if(index < 0)
index += 28;
if(index > 6 && index < 21)
showstr = ",\u4E0B\u964D\u671F";
else
showstr = ",\u4E0A\u5347\u671F";
tmp = getEmotion(index) / (long)1000;
if(tmp < (long)0)
{
pn = "-";
tmp = -tmp;
} else
{
pn = "+";
}
Exg.drawString(String.valueOf(String.valueOf((new StringBuffer("\u60C5\u7EEA")).append(pn).append(tmp / (long)10).append(".").append(tmp % (long)10).append(showstr))), 50, 31, 17);
index = (int)(cdate % (long)33);
if(index < 0)
index += 33;
if(index > 8 && index < 26)
showstr = ",\u4E0B\u964D\u671F";
else
showstr = ",\u4E0A\u5347\u671F";
tmp = getIntelligence(index) / (long)1000;
if(tmp < (long)0)
{
pn = "-";
tmp = -tmp;
} else
{
pn = "+";
}
Exg.drawString(String.valueOf(String.valueOf((new StringBuffer("\u667A\u529B")).append(pn).append(tmp / (long)10).append(".").append(tmp % (long)10).append(showstr))), 50, 44, 17);
}
protected void keyPressed(int keycode)
{
if(type == 1)
{
type = 0;
addCommand(DetailCmd);
addCommand(BackCmd);
addCommand(ExitCmd);
DrawCurve();
redraw();
return;
}
if(keycode == -1 || keycode == 53)
{
type = 1;
removeCommand(BackCmd);
removeCommand(DetailCmd);
removeCommand(ExitCmd);
DrawDetail();
redraw();
} else
if(keycode == -59 || keycode == 50)
{
if(thisMonth - 1 < 1)
{
thisYear--;
thisMonth = 12;
} else
{
thisMonth--;
}
CalcDate();
DrawCurve();
redraw();
} else
if(keycode == -60 || keycode == 56)
{
if(thisMonth + 1 > 12)
{
thisYear++;
thisMonth = 1;
} else
{
thisMonth++;
}
CalcDate();
DrawCurve();
redraw();
} else
if(keycode == -61 || keycode == 52)
{
thisDay--;
if(thisDay < 1)
thisDay = DateCount;
DrawCurve();
redraw();
} else
if(keycode == -62 || keycode == 56)
{
thisDay++;
if(thisDay > DateCount)
thisDay = 1;
DrawCurve();
redraw();
} else
if(keycode == -12)
pKernel.ShowSelect();
}
public void keyRepeated(int kcode)
{
if(kcode >= -62 && kcode <= -59)
keyPressed(kcode);
}
public void commandAction(Command cmd, Displayable obj)
{
if(cmd == OKCmd)
{
type = 0;
setDate(lastdate.getDate());
show();
} else
if(cmd == DetailCmd)
keyPressed(-1);
else
if(cmd == BackCmd)
keyPressed(-12);
else
if(cmd == ExitCmd)
pKernel.Exit();
}
private long getThew(int index)
{
if(index < 12)
return getTdata(index);
else
return -getTdata(23 - index);
}
private long getTdata(int index)
{
switch(index)
{
case 0: // '\0'
return 0L;
case 1: // '\001'
return 2698L;
case 2: // '\002'
return 5195L;
case 3: // '\003'
return 7308L;
case 4: // '\004'
return 8879L;
case 5: // '\005'
return 9791L;
case 6: // '\006'
return 9977L;
case 7: // '\007'
return 9423L;
case 8: // '\b'
return 8170L;
case 9: // '\t'
return 6311L;
case 10: // '\n'
return 3894L;
case 11: // '\013'
return 1362L;
}
return 0L;
}
private long getEmotion(int index)
{
if(index < 8)
return getEdata(index);
if(index < 15)
return getEdata(14 - index);
if(index < 22)
return -getEdata(index - 14);
else
return -getEdata(28 - index);
}
private long getEdata(int index)
{
switch(index)
{
case 0: // '\0'
return 0L;
case 1: // '\001'
return 2225L;
case 2: // '\002'
return 4339L;
case 3: // '\003'
return 6235L;
case 4: // '\004'
return 7818L;
case 5: // '\005'
return 9010L;
case 6: // '\006'
return 9749L;
case 7: // '\007'
return 10000L;
}
return 0L;
}
private long getIntelligence(int index)
{
if(index < 17)
return getIdata(index);
else
return -getIdata(33 - index);
}
private long getIdata(int index)
{
switch(index)
{
case 0: // '\0'
return 0L;
case 1: // '\001'
return 1893L;
case 2: // '\002'
return 3717L;
case 3: // '\003'
return 5406L;
case 4: // '\004'
return 6901L;
case 5: // '\005'
return 8146L;
case 6: // '\006'
return 9096L;
case 7: // '\007'
return 9718L;
case 8: // '\b'
return 9989L;
case 9: // '\t'
return 9898L;
case 10: // '\n'
return 9450L;
case 11: // '\013'
return 8660L;
case 12: // '\f'
return 7557L;
case 13: // '\r'
return 6182L;
case 14: // '\016'
return 4582L;
case 15: // '\017'
return 2817L;
case 16: // '\020'
return 951L;
}
return 0L;
}
private SPKernel pKernel;
private Display display;
private ExtendedImage ExScreenImg;
private Graphics Exg;
private Command OKCmd;
private Command DetailCmd;
private Command BackCmd;
private Command ExitCmd;
private DateField lastdate;
private Form pInput;
private Calendar day;
private int DHEIGHT;
private int thisYear;
private int thisMonth;
private int thisDay;
private int DateCount;
private long birthday;
private long firstday;
private long lifedate;
private int type;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -