Android Open Source - gameengine Loaded Level Actions Module






From Project

Back to project page gameengine.

License

The source code is released under:

Apache License

If you think the Android project gameengine listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

package com.garrapeta.gameengine.module;
/* ww w .j a  v a2  s .c  om*/
import java.util.ArrayList;
import java.util.List;
import java.util.Random;

import android.util.SparseArray;

public abstract class LoadedLevelActionsModule<K, V, P> {

    private final SparseArray<ResourceData> mResourceDatas;
    private final short mMinimumLevel;
    private Random mRandom;

    /**
     * Constructor
     * 
     * @param minimumLevel
     */
    public LoadedLevelActionsModule(short minimumLevel) {
        mResourceDatas = new SparseArray<ResourceData>();
        mMinimumLevel = minimumLevel;
    }

    public final ResourceData create(short level, short key) {
        if (mResourceDatas.get(key) != null) {
            throw new IllegalStateException("Already exising: " + key);
        }

        ResourceData resourceData = new ResourceData(level);
        mResourceDatas.put(key, resourceData);
        return resourceData;
    }

    protected final int getCount(short key) {
        ResourceData resourceData = mResourceDatas.get(key);
        if (resourceData != null) {
            return resourceData.getCount();
        }
        return 0;
    }

    protected abstract V obtain(K key);

    public final boolean executeOverOneResourceForKey(short key) {
        return executeOverOneResourceForKey(key, (P[]) null);
    }

    public final boolean executeOverOneResourceForKey(short key, P... params) {
        ResourceData resourceData = mResourceDatas.get(key);
        if (resourceData == null) {
            throw new IllegalStateException("No resource loaded for: " + key);
        }
        return resourceData.executeOverOne(params);
    }

    public final boolean executeOverAllResourcesForKey(short key) {
        return executeOverAllResourcesForKey(key, (P[]) null);
    }

    public final boolean executeOverAllResourcesForKey(short key, P... params) {
        ResourceData data = mResourceDatas.get(key);
        if (data == null) {
            throw new IllegalStateException("No resource loaded for: " + key);
        }
        return executeOverAllResources(data, params);
    }

    public final void executeOverAllResources() {
        executeOverAllResources((P[]) null);
    }

    public final void executeOverAllResources(P... params) {
        if (mResourceDatas != null) {
            for (int i = 0; i < mResourceDatas.size(); i++) {
                int key = mResourceDatas.keyAt(i);
                ResourceData data = mResourceDatas.get(key);
                executeOverAllResources(data, params);
            }
        }
    }

    private final boolean executeOverAllResources(ResourceData data, P... params) {
        return data.executeOverAll(params);
    }

    private final boolean shouldBeExecuted(short level) {
        return level >= mMinimumLevel;
    }

    /**
     * Frees resources
     */
    public final void releaseAll() {
        if (mResourceDatas != null) {
            for (int i = 0; i < mResourceDatas.size(); i++) {
                int key = mResourceDatas.keyAt(i);
                ResourceData data = mResourceDatas.get(key);
                data.release();
            }
            mResourceDatas.clear();
        }
    }

    protected abstract void onExecute(V resource, P... params);

    protected abstract void onRelease(V mResource);

    public final class ResourceData {
        private final short mLevel;
        private V mResource;
        private List<V> mResources;

        private ResourceData(short level) {
            super();
            mLevel = level;
        }

        public final ResourceData add(K key) {
            V resource = null;
            if (shouldBeExecuted(mLevel)) {
                resource = obtain(key);
                addResource(resource);
            }
            return this;

        }

        void addResource(V resource) {
            if (mResource == null && mResources == null) {
                mResource = resource;
            } else {
                if (mResources == null) {
                    mResources = new ArrayList<V>();
                    mResources.add(mResource);
                    mResource = null;
                    mRandom = new Random();
                }
                mResources.add(resource);
            }
        }

        public final int getCount() {
            if (mResource != null) {
                return 1;
            } else if (mResources != null) {
                return mResources.size();
            } else {
                return 0;
            }
        }

        private V getOneResource() {
            if (mResource != null) {
                return mResource;
            } else {
                final int idx = mRandom.nextInt(mResources.size());
                return mResources.get(idx);
            }
        }

        private boolean executeOverOne(P[] params) {
            if (shouldBeExecuted(mLevel)) {
                V resource = getOneResource();
                onExecute(resource, params);
                return true;
            }
            return false;
        }

        private boolean executeOverAll(P[] params) {
            if (shouldBeExecuted(mLevel)) {
                if (mResource != null) {
                    onExecute(mResource, params);
                } else if (mResources != null) {
                    for (V resource : mResources) {
                        onExecute(resource, params);
                    }
                }
                return true;
            }
            return false;
        }

        private void release() {
            if (mResource != null) {
                LoadedLevelActionsModule.this.onRelease(mResource);
                mResource = null;
            }
            if (mResources != null) {
                for (V resource : mResources) {
                    if (resource != null) {
                        LoadedLevelActionsModule.this.onRelease(resource);
                    }
                }
                mResources.clear();
                mResources = null;
            }
        }
    }

}




Java Source Code List

com.badlogic.gdx.math.MathUtils.java
com.badlogic.gdx.math.Matrix3.java
com.badlogic.gdx.math.Matrix4.java
com.badlogic.gdx.math.Quaternion.java
com.badlogic.gdx.math.Vector2.java
com.badlogic.gdx.math.Vector3.java
com.badlogic.gdx.physics.box2d.BodyDef.java
com.badlogic.gdx.physics.box2d.Body.java
com.badlogic.gdx.physics.box2d.ChainShape.java
com.badlogic.gdx.physics.box2d.CircleShape.java
com.badlogic.gdx.physics.box2d.ContactFilter.java
com.badlogic.gdx.physics.box2d.ContactImpulse.java
com.badlogic.gdx.physics.box2d.ContactListener.java
com.badlogic.gdx.physics.box2d.Contact.java
com.badlogic.gdx.physics.box2d.DestructionListener.java
com.badlogic.gdx.physics.box2d.EdgeShape.java
com.badlogic.gdx.physics.box2d.Filter.java
com.badlogic.gdx.physics.box2d.FixtureDef.java
com.badlogic.gdx.physics.box2d.Fixture.java
com.badlogic.gdx.physics.box2d.JointDef.java
com.badlogic.gdx.physics.box2d.JointEdge.java
com.badlogic.gdx.physics.box2d.Joint.java
com.badlogic.gdx.physics.box2d.Manifold.java
com.badlogic.gdx.physics.box2d.MassData.java
com.badlogic.gdx.physics.box2d.PolygonShape.java
com.badlogic.gdx.physics.box2d.QueryCallback.java
com.badlogic.gdx.physics.box2d.RayCastCallback.java
com.badlogic.gdx.physics.box2d.Shape.java
com.badlogic.gdx.physics.box2d.Transform.java
com.badlogic.gdx.physics.box2d.WorldManifold.java
com.badlogic.gdx.physics.box2d.World.java
com.badlogic.gdx.physics.box2d.joints.DistanceJointDef.java
com.badlogic.gdx.physics.box2d.joints.DistanceJoint.java
com.badlogic.gdx.physics.box2d.joints.FrictionJointDef.java
com.badlogic.gdx.physics.box2d.joints.FrictionJoint.java
com.badlogic.gdx.physics.box2d.joints.GearJointDef.java
com.badlogic.gdx.physics.box2d.joints.GearJoint.java
com.badlogic.gdx.physics.box2d.joints.MouseJointDef.java
com.badlogic.gdx.physics.box2d.joints.MouseJoint.java
com.badlogic.gdx.physics.box2d.joints.PrismaticJointDef.java
com.badlogic.gdx.physics.box2d.joints.PrismaticJoint.java
com.badlogic.gdx.physics.box2d.joints.PulleyJointDef.java
com.badlogic.gdx.physics.box2d.joints.PulleyJoint.java
com.badlogic.gdx.physics.box2d.joints.RevoluteJointDef.java
com.badlogic.gdx.physics.box2d.joints.RevoluteJoint.java
com.badlogic.gdx.physics.box2d.joints.RopeJointDef.java
com.badlogic.gdx.physics.box2d.joints.RopeJoint.java
com.badlogic.gdx.physics.box2d.joints.WeldJointDef.java
com.badlogic.gdx.physics.box2d.joints.WeldJoint.java
com.badlogic.gdx.physics.box2d.joints.WheelJointDef.java
com.badlogic.gdx.physics.box2d.joints.WheelJoint.java
com.badlogic.gdx.utils.Array.java
com.badlogic.gdx.utils.ComparableTimSort.java
com.badlogic.gdx.utils.Disposable.java
com.badlogic.gdx.utils.GdxRuntimeException.java
com.badlogic.gdx.utils.LongArray.java
com.badlogic.gdx.utils.LongMap.java
com.badlogic.gdx.utils.NumberUtils.java
com.badlogic.gdx.utils.Pool.java
com.badlogic.gdx.utils.Sort.java
com.badlogic.gdx.utils.StringBuilder.java
com.badlogic.gdx.utils.TimSort.java
com.garrapeta.MathUtils.java
com.garrapeta.gameengine.Actor.java
com.garrapeta.gameengine.AsyncGameMessage.java
com.garrapeta.gameengine.BitmapManager.java
com.garrapeta.gameengine.Box2DActor.java
com.garrapeta.gameengine.Box2DWorld.java
com.garrapeta.gameengine.GameMessage.java
com.garrapeta.gameengine.GameView.java
com.garrapeta.gameengine.GameWorld.java
com.garrapeta.gameengine.ShapeDrawer.java
com.garrapeta.gameengine.SyncGameMessage.java
com.garrapeta.gameengine.Viewport.java
com.garrapeta.gameengine.actor.Box2DAtomicActor.java
com.garrapeta.gameengine.actor.Box2DCircleActor.java
com.garrapeta.gameengine.actor.Box2DEdgeActor.java
com.garrapeta.gameengine.actor.Box2DLoopActor.java
com.garrapeta.gameengine.actor.Box2DOpenChainActor.java
com.garrapeta.gameengine.actor.Box2DPolygonActor.java
com.garrapeta.gameengine.actor.IAtomicActor.java
com.garrapeta.gameengine.actor.SimpleActor.java
com.garrapeta.gameengine.module.LevelActionsModule.java
com.garrapeta.gameengine.module.LoadedLevelActionsModule.java
com.garrapeta.gameengine.module.SoundModule.java
com.garrapeta.gameengine.module.VibrationModule.java
com.garrapeta.gameengine.utils.IOUtils.java
com.garrapeta.gameengine.utils.LogX.java
com.garrapeta.gameengine.utils.PhysicsUtils.java
com.garrapeta.gameengine.utils.Pool.java