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

📄 abstractisometricbackground.java

📁 一个java的免费游戏引擎,里面有文档,和例子
💻 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 

package com.golden.gamedev.object.background.abstraction;

import com.golden.gamedev.object.Background;
import java.awt.*;

public abstract class AbstractIsometricBackground extends Background
{

    private int a;
    private int b;
    private int c;
    private int d;
    private int e;
    private int f;
    private int g;
    private int h;
    private int i;
    private int j;
    private int k;
    private Point l;
    private Point m;

    public AbstractIsometricBackground(int i1, int j1, int k1, int l1, int i2, int j2)
    {
        super((i1 + j1) * (k1 / 2), (i1 + j1) * ((l1 - i2) / 2) + j2);
        l = new Point();
        m = new Point();
        a = k1;
        b = l1 - i2;
        e = i2;
        c = k1 / 2;
        d = b / 2;
        j = i1;
        k = j1;
        f = (j1 - 1) * c;
        g = j2;
        h = i = 0;
    }

    public AbstractIsometricBackground(int i1, int j1, int k1, int l1)
    {
        this(i1, j1, k1, l1, 0, 0);
    }

    public void render(Graphics2D graphics2d, int i1, int j1, int k1, int l1, int i2, int j2)
    {
        int k2 = (k1 - i1) + f;
        int l2 = ((l1 - j1) + g) - e;
        int k3 = k1 + i2;
        int l3 = l1 + j2;
        int j4 = -1;
        int k4 = h;
        do
        {
            int j3 = l2;
            j4++;
            int i3 = k2;
            int i4;
            if((i4 = --k4) < -1)
                i4 = -1;
            i3 += (i4 + 1) * c;
            j3 += (i4 + 1) * d;
            if(i3 + a <= k1)
            {
                int l4 = (k1 - (i3 + a)) / c + 1;
                i4 += l4;
                i3 += l4 * c;
                j3 += l4 * d;
            }
            for(; i3 < k3 && j3 < l3 && i4 < j - 1; j3 += d)
            {
                i4++;
                if(i3 + a > k1)
                    renderTile(graphics2d, i4, j4, i3, j3);
                i3 += c;
            }

            if(j4 < k - 1)
            {
                k2 -= c;
                l2 += d;
            } else
            {
                return;
            }
        } while(true);
    }

    public abstract void renderTile(Graphics2D graphics2d, int i1, int j1, int k1, int l1);

    public void setLocation(double d1, double d2)
    {
        int i1 = (int)getX();
        int j1 = (int)getY();
        super.setLocation(d1, d2);
        int k1 = (int)getX();
        int l1 = (int)getY();
        if(k1 != i1 || l1 != j1)
        {
            h = (l1 - g) / d;
            if(--h < 0)
                h = 0;
            i = k1 / c;
        }
    }

    public void setTileLocation(int i1, int j1)
    {
        Point point = getCoordinateAt(i1, j1);
        setLocation(point.x, point.y);
    }

    public int getTileX()
    {
        return h;
    }

    public int getTileY()
    {
        return i;
    }

    public Point getTileAt(double d1, double d2)
    {
        if(d1 < (double)getClip().x || d1 > (double)(getClip().x + getClip().width) || d2 < (double)getClip().y || d2 > (double)(getClip().y + getClip().height))
            return null;
        d1 += getX() - (double)getClip().x;
        d2 += getY() - (double)getClip().y - (double)g;
        d1 -= k * c;
        l.x = (int)(d2 / (double)b + d1 / (double)a);
        l.y = (int)(d2 / (double)b - d1 / (double)a);
        if(l.x < 0 || l.x > j - 1 || l.y < 0 || l.y > k - 1)
            return null;
        else
            return l;
    }

    public Point getCoordinateAt(int i1, int j1)
    {
        m.x = f + (i1 - j1) * c;
        m.y = (j1 + i1) * d + g;
        return m;
    }

    public int getTileWidth()
    {
        return a;
    }

    public int getTileHeight()
    {
        return b;
    }

    public int getOffsetTileHeight()
    {
        return e;
    }

    protected void setTileSize(int i1, int j1, int k1)
    {
        a = i1;
        b = j1 - k1;
        e = k1;
        c = i1 / 2;
        d = b / 2;
        super.setSize((j + k) * c, (j + k) * d + g);
    }

    public int getStartY()
    {
        return g;
    }

    public void setStartY(int i1)
    {
        g = i1;
    }

    public int getTotalHorizontalTiles()
    {
        return j;
    }

    public int getTotalVerticalTiles()
    {
        return k;
    }

    public void setSize(int i1, int j1)
    {
        j = i1;
        k = j1;
        super.setSize((i1 + j1) * c, (i1 + j1) * d + g);
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -