Home | History | Annotate | Download | only in replicaisland
      1 /*
      2  * Copyright (C) 2010 The Android Open Source Project
      3  *
      4  * Licensed under the Apache License, Version 2.0 (the "License");
      5  * you may not use this file except in compliance with the License.
      6  * You may obtain a copy of the License at
      7  *
      8  *      http://www.apache.org/licenses/LICENSE-2.0
      9  *
     10  * Unless required by applicable law or agreed to in writing, software
     11  * distributed under the License is distributed on an "AS IS" BASIS,
     12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     13  * See the License for the specific language governing permissions and
     14  * limitations under the License.
     15  */
     16 
     17 package com.replica.replicaisland;
     18 
     19 import java.util.ArrayList;
     20 
     21 /**
     22  * The object registry manages a collection of global singleton objects.  However, it differs from
     23  * the standard singleton pattern in a few important ways:
     24  * - The objects managed by the registry have an undefined lifetime.  They may become invalid at
     25  *   any time, and they may not be valid at the beginning of the program.
     26  * - The only object that is always guaranteed to be valid is the ObjectRegistry itself.
     27  * - There may be more than one ObjectRegistry, and there may be more than one instance of any of
     28  *   the systems managed by ObjectRegistry allocated at once.  For example, separate threads may
     29  *   maintain their own separate ObjectRegistry instances.
     30  */
     31 public class ObjectRegistry extends BaseObject {
     32 
     33     public BufferLibrary bufferLibrary;
     34     public CameraSystem cameraSystem;
     35     public ChannelSystem channelSystem;
     36     public CollisionSystem collisionSystem;
     37     public ContextParameters contextParameters;
     38     public CustomToastSystem customToastSystem;
     39     public DebugSystem debugSystem;
     40     public DrawableFactory drawableFactory;
     41     public EventRecorder eventRecorder;
     42     public GameObjectCollisionSystem gameObjectCollisionSystem;
     43     public GameObjectFactory gameObjectFactory;
     44     public GameObjectManager gameObjectManager;
     45     public HitPointPool hitPointPool;
     46     public HotSpotSystem hotSpotSystem;
     47     public HudSystem hudSystem;
     48 	public InputGameInterface inputGameInterface;
     49     public InputSystem inputSystem;
     50     public LevelBuilder levelBuilder;
     51     public LevelSystem levelSystem;
     52     public OpenGLSystem openGLSystem;
     53     public SoundSystem soundSystem;
     54     public TextureLibrary shortTermTextureLibrary;
     55     public TextureLibrary longTermTextureLibrary;
     56     public TimeSystem timeSystem;
     57     public RenderSystem renderSystem;
     58     public VectorPool vectorPool;
     59     public VibrationSystem vibrationSystem;
     60 
     61     private ArrayList<BaseObject> mItemsNeedingReset = new ArrayList<BaseObject>();
     62 
     63     public ObjectRegistry() {
     64         super();
     65     }
     66 
     67     public void registerForReset(BaseObject object) {
     68     	final boolean contained = mItemsNeedingReset.contains(object);
     69     	assert !contained;
     70     	if (!contained) {
     71     		mItemsNeedingReset.add(object);
     72     	}
     73     }
     74 
     75     @Override
     76     public void reset() {
     77     	final int count = mItemsNeedingReset.size();
     78     	for (int x = 0; x < count; x++) {
     79     		mItemsNeedingReset.get(x).reset();
     80     	}
     81     }
     82 
     83 }
     84