📄 abstractisometricbackground.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 + -