📄 collisiongroup.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.collision;
import com.golden.gamedev.object.CollisionManager;
import com.golden.gamedev.object.Sprite;
import java.io.PrintStream;
// Referenced classes of package com.golden.gamedev.object.collision:
// BasicCollisionGroup, CollisionRect, CollisionShape
public abstract class CollisionGroup extends BasicCollisionGroup
{
public static final int LEFT_RIGHT_COLLISION = 1;
public static final int RIGHT_LEFT_COLLISION = 2;
public static final int TOP_BOTTOM_COLLISION = 4;
public static final int BOTTOM_TOP_COLLISION = 8;
protected Sprite sprite1;
protected Sprite sprite2;
protected int collisionSide;
protected double collisionX1;
protected double collisionY1;
protected double collisionX2;
protected double collisionY2;
public CollisionGroup()
{
}
public boolean isCollide(Sprite sprite, Sprite sprite3, CollisionShape collisionshape, CollisionShape collisionshape1)
{
if(super.isCollide(sprite, sprite3, collisionshape, collisionshape1))
{
sprite1 = sprite;
sprite2 = sprite3;
collisionSide = 0;
collisionX1 = sprite.getOldX();
collisionY1 = sprite.getOldY();
collisionX2 = sprite3.getOldX();
collisionY2 = sprite3.getOldY();
double d = sprite.getX() - collisionX1;
double d1 = sprite.getY() - collisionY1;
double d2 = sprite3.getX() - collisionX2;
double d3 = sprite3.getY() - collisionY2;
double d4 = collisionshape.getX();
double d5 = collisionshape.getY();
double d6 = collisionshape1.getX();
double d7 = collisionshape1.getY();
collisionshape.move(-(d / 2D), -(d1 / 2D));
collisionshape1.move(-(d2 / 2D), -(d3 / 2D));
if(!collisionshape.intersects(collisionshape1))
{
collisionshape.setLocation(d4, d5);
collisionshape1.setLocation(d6, d7);
collisionshape.move(-(d / 4D), -(d1 / 4D));
collisionshape1.move(-(d2 / 4D), -(d3 / 4D));
if(!collisionshape.intersects(collisionshape1))
{
collisionshape.setLocation(d4, d5);
collisionshape1.setLocation(d6, d7);
}
}
CollisionRect collisionrect;
if((collisionrect = CollisionManager.getIntersectionRect(collisionshape.getX(), collisionshape.getY(), collisionshape.getWidth(), collisionshape.getHeight(), collisionshape1.getX(), collisionshape1.getY(), collisionshape1.getWidth(), collisionshape1.getHeight())).width <= collisionrect.height)
collisionSide = collisionshape.getX() >= collisionshape1.getX() ? 1 : 2;
else
collisionSide = collisionshape.getY() >= collisionshape1.getY() ? 4 : 8;
return true;
} else
{
return false;
}
}
public void revertPosition1()
{
if((collisionSide & 0x1) != 0 || (collisionSide & 0x2) != 0)
sprite1.forceX(collisionX1);
if((collisionSide & 0x4) != 0 || (collisionSide & 0x8) != 0)
sprite1.forceY(collisionY1);
}
public void revertPosition2()
{
if((collisionSide & 0x1) != 0 || (collisionSide & 0x2) != 0)
sprite2.forceX(collisionX2);
if((collisionSide & 0x4) != 0 || (collisionSide & 0x8) != 0)
sprite2.forceY(collisionY2);
}
public Sprite getSprite1()
{
return sprite1;
}
public Sprite getSprite2()
{
return sprite2;
}
public int getCollisionSide()
{
return collisionSide;
}
public void printCollisionSide()
{
String s = "Collision Side ->";
if((collisionSide & 0x1) != 0)
s = s + " Left<->Right";
if((collisionSide & 0x2) != 0)
s = s + " Right<->Left";
if((collisionSide & 0x4) != 0)
s = s + " Top<->Bottom";
if((collisionSide & 0x8) != 0)
s = s + " Bottom<->Top";
System.out.println(s);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -