📄 spritegroup.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.util.Arrays;
import java.util.Comparator;
// Referenced classes of package com.golden.gamedev.object:
// Background, Sprite, Timer
public class SpriteGroup {
private int a;
private Timer timer;
private String c;
private boolean d;
private Background e;
private Comparator f;
private Sprite g[];
private int h;
public SpriteGroup(String s) {
a = 20;
timer = new Timer(15000);
d = true;
c = s;
e = Background.getDefaultBackground();
g = new Sprite[a];
}
public void add(Sprite sprite) {
g[h] = sprite;
sprite.setBackground(e);
if (++h >= g.length)
g = (Sprite[]) Utility.expand(g, a);
}
public void add(int i, Sprite sprite) {
if (i > h)
i = h;
if (i == h) {
add(sprite);
return;
}
System.arraycopy(g, i, g, i + 1, h - i);
g[i] = sprite;
sprite.setBackground(e);
if (++h >= g.length)
g = (Sprite[]) Utility.expand(g, a);
}
public Sprite remove(int i) {
Sprite sprite = g[i];
int j;
if ((j = h - i - 1) > 0)
System.arraycopy(g, i + 1, g, i, j);
g[--h] = null;
return sprite;
}
public boolean remove(Sprite sprite) {
for (int i = 0; i < h; i++)
if (g[i] == sprite) {
remove(i);
return true;
}
return false;
}
public void clear() {
h = 0;
}
public void reset() {
g = null;
g = new Sprite[a];
h = 0;
}
public void update(long l1) {
for (int i = 0; i < h; i++)
if (g[i].isActive())
g[i].update(l1);
if (timer.action(l1))
removeInactiveSprites();
}
public void removeInactiveSprites() {
k(false);
}
public void removeImmutableSprites() {
k(true);
}
private void k(boolean flag) {
int i = 0;
int j = 0;
for (; i < h; i++) {
if (!flag)
for (; i + j < h && !g[i + j].isActive()
&& !g[i + j].isImmutable(); j++)
;
else
for (; i + j < h && !g[i + j].isActive(); j++)
;
if (j > 0) {
l(i, i + j);
j = 0;
}
}
if (g.length > h + (a << 1)) {
Sprite asprite[] = new Sprite[h + a];
System.arraycopy(g, 0, asprite, 0, h);
g = asprite;
}
}
private void l(int i, int j) {
int i1 = h - j;
System.arraycopy(g, j, g, i, i1);
for (int j1 = h - (j - i); h != j1;)
g[--h] = null;
}
public void render(Graphics2D graphics2d) {
if (f != null)
sort(f);
for (int i = 0; i < h; i++)
if (g[i].isActive())
g[i].render(graphics2d);
}
public void sort(Comparator comparator) {
Arrays.sort(g, 0, h, comparator);
}
public String getName() {
return c;
}
public void setName(String s) {
c = s;
}
public Background getBackground() {
return e;
}
public void setBackground(Background background) {
e = background;
if (e == null)
e = Background.getDefaultBackground();
for (int i = 0; i < h; i++)
g[i].setBackground(e);
}
public boolean isActive() {
return d;
}
public void setActive(boolean flag) {
d = flag;
}
public Comparator getComparator() {
return f;
}
public void setComparator(Comparator comparator) {
f = comparator;
}
public Sprite getActiveSprite() {
for (int i = 0; i < h; i++)
if (g[i].isActive())
return g[i];
return null;
}
public Sprite getInactiveSprite() {
for (int i = 0; i < h; i++)
if (!g[i].isActive()) {
g[i].setActive(true);
return g[i];
}
return null;
}
public Sprite[] getSprites() {
return g;
}
public int getSize() {
return h;
}
public int getExpandFactor() {
return a;
}
public void setExpandFactor(int i) {
a = i;
}
public Timer getScanFrequence() {
return timer;
}
public String toString() {
return super.toString() + " " + "[name=" + c + ", active=" + getSize()
+ ", total=" + g.length + ", member=" + getActiveSprite()
+ ", background=" + e + "]";
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -