📄 camera.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)
// Source File Name: Camera.java
package se.southend.drops.scene;
// Referenced classes of package se.southend.drops.scene:
// Node
public class Camera
{
public Camera()
{
setTargetSpeed(64);
setCameraSpeed(4);
setCenter(Node.SCREEN_WIDTH >> 1, Node.SCREEN_HEIGHT >> 1);
resetBounds();
}
public final int getX()
{
return xCam >> 8;
}
public final int getY()
{
return yCam >> 8;
}
public final int getWorldX()
{
return xCam;
}
public final int getWorldY()
{
return yCam;
}
public final int getLeft()
{
return (xCam >> 8) - (Node.SCREEN_WIDTH >> 1);
}
public final int getRight()
{
return (xCam >> 8) + (Node.SCREEN_WIDTH >> 1);
}
public final int getTop()
{
return (yCam >> 8) - (Node.SCREEN_HEIGHT >> 1);
}
public final int getBottom()
{
return (yCam >> 8) + (Node.SCREEN_HEIGHT >> 1);
}
public final int getScreenX(int xWorld)
{
return (xWorld - xCam >> 8) + xCenter;
}
public final int getScreenY(int yWorld)
{
return (yWorld - yCam >> 8) + yCenter;
}
public final void resetBounds()
{
xMin = 0x80000000;
yMin = 0x80000000;
xMax = 0x7fffffff;
yMax = 0x7fffffff;
}
public final void setBounds(int left, int top, int right, int bottom)
{
xMin = left;
yMin = top;
xMax = right < left ? left : right;
yMax = bottom < top ? top : bottom;
}
public final void setCenter(int x, int y)
{
xCenter = x;
yCenter = y;
}
public final void setCameraSpeed(int speed)
{
speedCam = speed;
}
public final void setTargetSpeed(int speed)
{
speedTgt = speed;
}
public final boolean onTarget()
{
return distanceFromTarget() < 256;
}
public final int distanceFromTarget()
{
int xDist = xCam - xTgt;
int yDist = yCam - yTgt;
if(xDist < 0)
xDist = -xDist;
if(yDist < 0)
yDist = -yDist;
return xDist <= yDist ? yDist : xDist;
}
public final void setWorldPosition(int x, int y)
{
xTgt = xWay = xCam = x;
yTgt = yWay = yCam = y;
}
public final void setTargetPosition(int x, int y)
{
xTgt = x;
yTgt = y;
}
public void process()
{
xWay += (xTgt - xWay) * speedTgt >> 6;
yWay += (yTgt - yWay) * speedTgt >> 6;
if(xWay < xMin)
{
xWay = xMin;
xTgt = xMin;
} else
if(xWay > xMax)
{
xWay = xMax;
xTgt = xMax;
}
if(yWay < yMin)
{
yWay = yMin;
yTgt = yMin;
} else
if(yWay > yMax)
{
yWay = yMax;
yTgt = yMax;
}
xCam += (xWay - xCam) * speedCam >> 6;
yCam += (yWay - yCam) * speedCam >> 6;
}
public static final int INSTANT = 64;
private int xCam;
private int yCam;
private int xWay;
private int yWay;
private int xTgt;
private int yTgt;
private int speedCam;
private int speedTgt;
private int xCenter;
private int yCenter;
private int xMin;
private int yMin;
private int xMax;
private int yMax;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -