📄 playfield.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;
import com.golden.gamedev.util.Utility;
import java.awt.Graphics2D;
import java.io.PrintStream;
import java.util.Arrays;
import java.util.Comparator;
// Referenced classes of package com.golden.gamedev.object:
// Background, CollisionManager, Sprite, SpriteGroup
public class PlayField
{
private SpriteGroup a[];
private Background b;
private CollisionManager c[];
private Sprite d[];
private Comparator e;
public PlayField(Background background)
{
b = background;
SpriteGroup spritegroup;
(spritegroup = new SpriteGroup("Extra Group")).setBackground(background);
a = new SpriteGroup[1];
a[0] = spritegroup;
c = new CollisionManager[0];
d = new Sprite[0];
}
public PlayField()
{
this(Background.getDefaultBackground());
}
public void add(Sprite sprite)
{
a[a.length - 1].add(sprite);
}
public SpriteGroup addGroup(SpriteGroup spritegroup)
{
SpriteGroup spritegroup1 = a[a.length - 1];
a = (SpriteGroup[])Utility.cut(a, a.length - 1);
a = (SpriteGroup[])Utility.expand(a, 2);
spritegroup.setBackground(b);
a[a.length - 2] = spritegroup;
a[a.length - 1] = spritegroup1;
return spritegroup;
}
public boolean removeGroup(SpriteGroup spritegroup)
{
for(int i = 0; i < a.length - 1; i++)
if(a[i] == spritegroup)
{
a = (SpriteGroup[])Utility.cut(a, i);
CollisionManager collisionmanager;
if((collisionmanager = getCollisionGroup(spritegroup)) != null)
do
removeCollisionGroup(collisionmanager);
while((collisionmanager = getCollisionGroup(spritegroup)) != null);
return true;
}
return false;
}
public SpriteGroup getGroup(String s)
{
for(int i = 0; i < a.length; i++)
if(a[i].getName().equals(s))
return a[i];
return null;
}
public SpriteGroup[] getGroups()
{
return a;
}
public SpriteGroup getExtraGroup()
{
return a[a.length - 1];
}
public void clearPlayField()
{
for(int i = 0; i < a.length; i++)
a[i].clear();
}
public void addCollisionGroup(SpriteGroup spritegroup, SpriteGroup spritegroup1, CollisionManager collisionmanager)
{
if(getCollisionGroup(spritegroup, spritegroup1) != null)
{
System.err.println("WARNING: " + spritegroup.getName() + " <-> " + spritegroup1.getName() + " already have a CollisionManager");
System.err.println("CollisionGroup insertions operation continued");
}
c = (CollisionManager[])Utility.expand(c, 1);
collisionmanager.setCollisionGroup(spritegroup, spritegroup1);
c[c.length - 1] = collisionmanager;
}
public boolean removeCollisionGroup(CollisionManager collisionmanager)
{
for(int i = 0; i < c.length; i++)
if(c[i] == collisionmanager)
{
c = (CollisionManager[])Utility.cut(c, i);
return true;
}
return false;
}
public CollisionManager getCollisionGroup(SpriteGroup spritegroup, SpriteGroup spritegroup1)
{
for(int i = 0; i < c.length; i++)
if(c[i].getGroup1() == spritegroup && c[i].getGroup2() == spritegroup1)
return c[i];
return null;
}
public CollisionManager getCollisionGroup(SpriteGroup spritegroup)
{
for(int i = 0; i < c.length; i++)
if(c[i].getGroup1() == spritegroup || c[i].getGroup2() == spritegroup)
return c[i];
return null;
}
public CollisionManager[] getCollisionGroups()
{
return c;
}
public void update(long l)
{
updateSpriteGroups(l);
updateBackground(l);
checkCollisions();
}
protected void updateBackground(long l)
{
b.update(l);
}
protected void updateSpriteGroups(long l)
{
for(int i = 0; i < a.length; i++)
if(a[i].isActive())
a[i].update(l);
}
protected void checkCollisions()
{
for(int i = 0; i < c.length; i++)
if(c[i].isActive())
c[i].checkCollision();
}
public void render(Graphics2D graphics2d)
{
renderBackground(graphics2d);
if(e == null)
{
renderSpriteGroups(graphics2d);
return;
} else
{
renderSpriteGroups(graphics2d, e);
return;
}
}
protected void renderBackground(Graphics2D graphics2d)
{
b.render(graphics2d);
}
protected void renderSpriteGroups(Graphics2D graphics2d)
{
for(int i = 0; i < a.length; i++)
if(a[i].isActive())
a[i].render(graphics2d);
}
protected void renderSpriteGroups(Graphics2D graphics2d, Comparator comparator)
{
int i = 0;
int j;
if((j = d.length) == 0)
{
d = new Sprite[100];
j = d.length;
}
for(int k = 0; k < a.length; k++)
if(a[k].isActive())
{
Sprite asprite[] = a[k].getSprites();
int i1 = a[k].getSize();
for(int j1 = 0; j1 < i1; j1++)
if(asprite[j1].isActive() && asprite[j1].isOnScreen())
{
if(i >= j)
{
d = (Sprite[])Utility.expand(d, 20);
j = d.length;
}
d[i++] = asprite[j1];
}
}
Arrays.sort(d, 0, i, comparator);
for(int l = 0; l < i; l++)
d[l].render(graphics2d);
}
public void clearCache()
{
d = null;
d = new Sprite[0];
}
public Background getBackground()
{
return b;
}
public void setBackground(Background background)
{
b = background;
if(b == null)
b = Background.getDefaultBackground();
for(int i = 0; i < a.length; i++)
a[i].setBackground(background);
}
public Comparator getComparator()
{
return e;
}
public void setComparator(Comparator comparator)
{
e = comparator;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -