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

📄 advancecollisiongroup.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.collision;

import com.golden.gamedev.object.Sprite;
import com.golden.gamedev.object.SpriteGroup;
import com.golden.gamedev.util.Utility;
import java.util.*;

// Referenced classes of package com.golden.gamedev.object.collision:
//            PreciseCollisionGroup

public abstract class AdvanceCollisionGroup extends PreciseCollisionGroup
    implements Comparator
{

    private final Map b = new HashMap();
    private Sprite c;
    static Class a;

    public AdvanceCollisionGroup()
    {
    }

    public void checkCollision()
    {
        b.clear();
        SpriteGroup spritegroup = getGroup1();
        SpriteGroup spritegroup1 = getGroup2();
        Sprite asprite4[];
        if(spritegroup.isActive() && spritegroup1.isActive())
        {
            Sprite asprite[] = spritegroup.getSprites();
            Sprite asprite1[] = spritegroup1.getSprites();
            int i = spritegroup.getSize();
            int j = spritegroup1.getSize();
            for(int k = 0; k < i; k++)
            {
                Sprite sprite;
                CollisionShape collisionshape;
                if((sprite = asprite[k]).isActive() && (collisionshape = getCollisionShape1(sprite)) != null)
                {
                    for(int l = 0; l < j; l++)
                    {
                        Sprite sprite1;
                        CollisionShape collisionshape1;
                        if((sprite1 = asprite1[l]).isActive() && sprite != sprite1 && (collisionshape1 = getCollisionShape2(sprite1)) != null && isCollide(sprite, sprite1, collisionshape, collisionshape1))
                        {
                            Sprite asprite2[];
                            asprite4 = (Sprite[])Utility.expand((Sprite[])b.get(sprite), 1, true, a != null ? a : (a = a("com.golden.gamedev.object.Sprite")));
                            asprite2 = asprite4;
                            asprite4[asprite4.length - 1] = sprite1;
                            b.put(sprite, asprite2);
                        }
                    }

                }
            }

            for(Iterator iterator = b.keySet().iterator(); iterator.hasNext();)
            {
                Sprite sprite2 = (Sprite)iterator.next();
                Sprite asprite3[];
                if((asprite3 = (Sprite[])b.get(sprite2)).length == 1)
                {
                    collided(sprite2, asprite3[0]);
                } else
                {
                    c = sprite2;
                    if(sort(c))
                        Arrays.sort(asprite3, this);
                    for(int i1 = 0; i1 < asprite3.length; i1++)
                    {
                        if(!sprite2.isActive())
                            break;
                        if(asprite3[i1].isActive() && isCollide(sprite2, asprite3[i1], getCollisionShape1(sprite2), getCollisionShape2(asprite3[i1])))
                            collided(sprite2, asprite3[i1]);
                    }

                }
            }

        }
    }

    protected boolean sort(Sprite sprite)
    {
        return true;
    }

    public int compare(Object obj, Object obj1)
    {
        Sprite sprite = (Sprite)obj;
        Sprite sprite1 = (Sprite)obj1;
        if(c.getHorizontalSpeed() != 0.0D && sprite.getX() != sprite1.getX())
            if(c.getHorizontalSpeed() >= 0.0D)
                return (int)Math.floor(sprite.getX() - sprite1.getX());
            else
                return (int)Math.floor(sprite1.getX() - sprite.getX());
        if(c.getVerticalSpeed() >= 0.0D)
            return (int)Math.floor(sprite.getY() - sprite1.getY());
        else
            return (int)Math.floor(sprite1.getY() - sprite.getY());
    }

    protected Sprite getSourceSprite()
    {
        return c;
    }

    public Map getStorage()
    {
        return b;
    }

    static Class a(String s)
    {
        return Class.forName(s);
        ClassNotFoundException classnotfoundexception;
        classnotfoundexception;
        throw new NoClassDefFoundError(classnotfoundexception.getMessage());
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -