📄 mapcanvas.java
字号:
// Decompiled by Jad v1.5.7g. Copyright 2000 Pavel Kouznetsov.
// Jad home page: http://www.geocities.com/SiliconValley/Bridge/8617/jad.html
// Decompiler options: packimports(3) fieldsfirst ansi
// Source File Name: MapCanvas.java
package mobileRPG.client;
import java.io.PrintStream;
import javax.microedition.lcdui.*;
// Referenced classes of package mobileRPG.client:
// Main, Entity, ConfigFile, ImageSet
public class MapCanvas extends Canvas
implements Runnable
{
private Display display;
private Thread thread;
private int backgroundcolor;
private int foregroundcolor;
private Entity entity;
private Image layer[][];
private boolean needsRefresh[][];
private int xSize;
private int ySize;
private boolean refresh;
public MapCanvas(Main main, String mapfile)
{
backgroundcolor = 0xffffff;
foregroundcolor = 0;
loadImages(main.getImageSet(), mapfile);
entity = new Entity(16, 16, 16, 16, main.getImageSet(), "/res/BlackMage.ent", this);
refresh = true;
display = Display.getDisplay(main);
thread = new Thread(this);
thread.start();
}
public void loadImages(ImageSet imageset, String file)
{
ConfigFile cf = new ConfigFile(file);
int d[] = cf.readIntArrayLine();
xSize = d[0];
ySize = d[1];
layer = new Image[xSize][ySize];
needsRefresh = new boolean[xSize][ySize];
for(int y = 0; y < ySize; y++)
{
d = cf.readIntArrayLine();
for(int x = 0; x < xSize; x++)
{
layer[x][y] = imageset.getImage(d[x]);
needsRefresh[x][y] = true;
}
}
}
public void run()
{
do
{
entity.run();
repaint();
try
{
Thread.sleep(50L);
}
catch(Exception e)
{
System.err.println(e.toString());
}
} while(true);
}
public void setNeedsRefresh(int x, int y)
{
needsRefresh[x][y] = true;
}
protected void update(Graphics g)
{
g.drawString("update", 16, 16, 20);
paint(g);
}
protected void paint(Graphics g)
{
if(refresh)
{
paintBGFull(g);
refresh = false;
}
g.setColor(foregroundcolor);
for(int y = 0; y < ySize; y++)
{
for(int x = 0; x < xSize; x++)
if(needsRefresh[x][y])
paintTile(g, x, y);
}
entity.paint(g);
}
protected void paintTile(Graphics g, int x, int y)
{
g.drawImage(layer[x][y], x * 16, y * 16, 20);
needsRefresh[x][y] = false;
}
protected void paintBGFull(Graphics g)
{
g.setColor(backgroundcolor);
g.fillRect(0, 0, getWidth(), getHeight());
g.setColor(foregroundcolor);
for(int y = 0; y < ySize; y++)
{
for(int x = 0; x < xSize; x++)
paintTile(g, x, y);
}
}
protected void keyPressed(int keyCode)
{
entity.move(keyCode);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -