Welcome, guest! Login / Register - Why register?
Psst.. new poll here.
Psst.. new forums here.
Microsoft is blocking us again (TY IP Reputation!) so just use oauth login instead. :)

Paste

Pasted as Java by ObjectManager ( 14 years ago )
package game.clip;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/*
 * Project Insanity - Evolved v.3
 * ObjectManager.java
 */

public class ObjectManager {

 private static List<StateObject> stateChanges = new ArrayList<StateObject>();
 private static Map<Integer, CachedObject> cachedObjects = new HashMap<Integer, CachedObject>();
 private static Map<Integer, int[]> objectSizes = new HashMap<Integer, int[]>();
 private static List<VariableObject> varObjects = new ArrayList<VariableObject>();

 public static void appendStateChange(final int objectType, final int objectX, final int objectY, final int objectHeight, final int objectFace, final int objectChangeState, final int objectVType) {
  ObjectManager.stateChanges.add(new StateObject(objectType, objectX, objectY, objectFace, objectHeight, objectChangeState, objectVType));
 }

 public static void appendVarObject(final int objectType, final int objectX, final int objectY, final int objectHeight, final int objectFace) {
  ObjectManager.varObjects.add(new VariableObject(objectType, objectX, objectY, objectFace, objectHeight));
 }

 public static void changeOrientation(final int objectX, final int objectY, final int objectHeight, final int newO) {
  if(ObjectManager.cachedObjects.size() == 0) {
   ObjectManager.loadCachedObjects();
  }
  final int key = (objectHeight << 30) + (objectX << 15) + objectY;
  if(ObjectManager.cachedObjects.get(key) != null) {
   ObjectManager.cachedObjects.get(key).changeOrientation(newO);
  }
 }

 public static int getOrientation(final int objectX, final int objectY, final int objectHeight) {
  if(ObjectManager.cachedObjects.size() == 0) {
   ObjectManager.loadCachedObjects();
  }
  final int key = (objectHeight << 30) + (objectX << 15) + objectY;
  return ObjectManager.cachedObjects.get(key) != null ? ObjectManager.cachedObjects.get(key).getOrientation() : 0;
 }

 public static StateObject getStateObject(final int objectX, final int objectY, final int objectHeight, final int objectId) {
  for (final StateObject so : ObjectManager.stateChanges) {
   if(so == null) {
    continue;
   }
   if(so.getHeight() != objectHeight) {
    continue;
   }
   if(so.getStatedObject() == objectId && so.getX() == objectX && so.getY() == objectY) {
    return so;
   }
  }
  return null;
 }

 public static int getType(final int objectX, final int objectY, final int objectHeight) {
  if(ObjectManager.cachedObjects.size() == 0) {
   ObjectManager.loadCachedObjects();
  }
  final int key = (objectHeight << 30) + (objectX << 15) + objectY;
  return ObjectManager.cachedObjects.get(key) != null ? ObjectManager.cachedObjects.get(key).getType() : 10;
 }

 public static boolean isCachedObject(final int objectX, final int objectY, final int objectHeight, final int objectId) {
  for (final StateObject so : ObjectManager.stateChanges) {
   if(so == null) {
    continue;
   }
   if(so.getHeight() != objectHeight) {
    continue;
   }
   if(so.getStatedObject() == objectId && so.getX() == objectX && so.getY() == objectY) {
    return true;
   }
  }
  return false;
 }

 private static void loadCachedObjects() {

  try {
   final java.io.File f = new java.io.File&#40;"./Data/object_data"&#41;;
   final java.io.DataInputStream dis = new java.io.DataInputStream(new java.io.FileInputStream(f));
   final int length = (int) f.length() / 8;
   for (int index = 0; index < length; index++) {
    ObjectManager.cachedObjects.put(dis.readInt(), new CachedObject(dis.readUnsignedShort(), dis.readByte(), dis.readByte()));
   }
   dis.close();
   int key = (0 << 30) + (2658 << 15) + 2639;
   ObjectManager.cachedObjects.put(key, new CachedObject(14315, 10, 0));
   key = (0 << 30) + (3091 << 15) + 3504;
   ObjectManager.cachedObjects.put(key, new CachedObject(4388, 10, 0));
   key = (0 << 30) + (3094 << 15) + 3504;
   ObjectManager.cachedObjects.put(key, new CachedObject(4408, 10, 0));
   key = (0 << 30) + (3097 << 15) + 3504;
   ObjectManager.cachedObjects.put(key, new CachedObject(2387, 10, 0));
   key = (0 << 30) + (3092 << 15) + 3487;
   ObjectManager.cachedObjects.put(key, new CachedObject(6552, 10, 0));
  } catch(final Exception e) {
   e.printStackTrace();
  }
 
 }

 public static void loadObjectSizes() {
  try {
   final java.io.DataInputStream dis = new java.io.DataInputStream(new java.io.FileInputStream("./Data/object_size_config"));
   final int size = (int) (new java.io.File&#40;"./Data/object_size_config"&#41;.length() / 2);
   for (int index = 0; index < size; index++) {
    final int bitPart = dis.readShort();
    ObjectManager.objectSizes.put(index, new int[] { bitPart >> 8 & 0xff, bitPart & 0xff });
   }
   dis.close();
  } catch(final Exception e) {
   e.printStackTrace();
  }
 }

 public static boolean objectExists(final int objectX, final int objectY, final int objectHeight) {
  if(ObjectManager.cachedObjects.size() == 0) {
   ObjectManager.loadCachedObjects();
  }
  final int key = (objectHeight << 30) + (objectX << 15) + objectY;
  return ObjectManager.cachedObjects.get(key) != null;
 }

 public static boolean objectExists(final int objectX, final int objectY, final int objectHeight, final int objectId) {
  if(ObjectManager.cachedObjects.size() == 0) {
   ObjectManager.loadCachedObjects();
  }
  final int key = (objectHeight << 30) + (objectX << 15) + objectY;
  return ObjectManager.cachedObjects.get(key) != null ? ObjectManager.cachedObjects.get(key).getId() == objectId : false;
 }

 public static void removeStateChange(final int objectType, final int objectX, final int objectY, final int objectHeight) {
  for (int index = 0; index < ObjectManager.stateChanges.size(); index++)
  {
   final StateObject so = ObjectManager.stateChanges.get(index);
   if(so == null) {
    continue;
   }
   if(so.getX() == objectX && so.getY() == objectY && so.getHeight() == objectHeight && so.getType() == objectType || so.getStatedObject() == objectType)
   {
    ObjectManager.stateChanges.remove(index);
    break;
   }
  }
 }

 public static void removeVarObject(final int objectType, final int objectX, final int objectY, final int objectHeight) {
  for (int index = 0; index < ObjectManager.varObjects.size(); index++) {
   final VariableObject vo = ObjectManager.varObjects.get(index);
   if(vo == null) {
    continue;
   }
   if(vo.getType() == objectType && vo.getX() == objectX && vo.getY() == objectY && vo.getHeight() == objectHeight)
   {
    ObjectManager.varObjects.remove(index);
    break;
   }
  }
 }

 public static boolean stateHasChanged(final int objectType, final int objectX, final int objectY, final int objectHeight) {
  for (final StateObject so : ObjectManager.stateChanges) {
   if(so.getHeight() != objectHeight) {
    continue;
   }
   if(so.getX() == objectX && so.getY() == objectY && so.getType() == objectType) {
    return true;
   }
  }
  return false;
 }

 public static boolean varObjectExists(final int objectX, final int objectY, final int objectHeight) {
  for (final VariableObject vo : ObjectManager.varObjects) {
   if(vo.getHeight() != objectHeight) {
    continue;
   }
   if(vo.getX() == objectX && vo.getY() == objectY) {
    return true;
   }
  }
  return false;
 }

 public static boolean withinDoorRange(final int objectType, final int objectX, final int objectY, final int playerX, final int playerY, final int atHeight) {
  if(ObjectManager.objectSizes.size() == 0) {
   ObjectManager.loadObjectSizes();
  }
  final boolean isOpen = ObjectManager.isCachedObject(objectX, objectY, atHeight, objectType);
  if(isOpen) {
   final StateObject so = ObjectManager.getStateObject(objectX, objectY, atHeight, objectType);
   final int face = so.getFace();
   if(face == 1 || face == 3) {
    return playerX >= objectX - 1 && playerX <= objectX + 1 && playerY == objectY;
   } else {
    return playerY >= objectY - 1 && playerY <= objectY + 1 && playerX == objectX;
   }
  } else {
   final int face = ObjectManager.getOrientation(objectX, objectY, atHeight);
   if(face == 1 || face == 3) {
    return playerX >= objectX - 1 && playerX <= objectX + 1 && playerY == objectY;
   } else {
    return playerY >= objectY - 1 && playerY <= objectY + 1 && playerX == objectX;
   }
  }
 }

 public static boolean withinRange(final int objectType, final int objectX, final int objectY, final int playerX, final int playerY, final int atHeight) {
  if(ObjectManager.objectSizes.size() == 0) {
   ObjectManager.loadObjectSizes();
  }
  int sizeX = 1;
  int sizeY = 1;
  if(ObjectManager.objectSizes.get(objectType) != null) {
   sizeX = ObjectManager.objectSizes.get(objectType)[0];
   sizeY = ObjectManager.objectSizes.get(objectType)[1];
  }
  final int face = ObjectManager.getOrientation(objectX, objectY, atHeight);
  if(face == 1 || face == 3) {
   final int tempX = sizeX;
   sizeX = sizeY;
   sizeY = tempX;
  }
  final java.awt.Rectangle objectField = new java.awt.Rectangle(objectX, objectY, sizeX, sizeY);
  final java.awt.Rectangle playerField = new java.awt.Rectangle(objectX - 1, objectY - 1, sizeX + 2, sizeY + 2);
  return playerField.contains(playerX, playerY) && !objectField.contains(playerX, playerY);
 }

}

 

Revise this Paste

Your Name: Code Language: