⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 spritegroup.java

📁 一个java的免费游戏引擎,里面有文档,和例子
💻 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 + -