⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mapcanvas.java

📁 手机游戏rpg引擎
💻 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 + -