private ObjectDef makeObjectDef(LocalObject localObj) {
   ObjectDef def = new ObjectDef();
   def.objectName = localObj.objectName;
   def.objectId = localObj.objectId;
   def.methods = localObj.methods;
   return def;
 }
Beispiel #2
0
 public static void method173(Stream stream, OnDemandFetcher class42_sub1) {
   label0:
   {
     int i = -1;
     do {
       int j = stream.method422();
       if (j == 0) break label0;
       i += j;
       ObjectDef class46 = ObjectDef.forID(i);
       class46.method574(class42_sub1);
       do {
         int k = stream.method422();
         if (k == 0) break;
         stream.readUnsignedByte();
       } while (true);
     } while (true);
   }
 }
  @Override
  public void generate(DB[] dbs) throws IOException, GeneratorException, MergeException {

    // Use the latest database for retrieving package names
    DB db = dbs[dbs.length - 1];

    //
    //  Create SDOLibrary.java classes...
    //
    for (ObjectDef currentObj : db.getObjects()) {
      if (currentObj.isTopic()) {
        //  Generate the package-specific SDOLibrary classes...
        String dir = fDir + "mappings" + File.separator + currentObj.fPackage;

        File md = new File(dir);
        md.mkdirs();

        String fName = dir + File.separator + currentObj.getName() + ".xml";
        Map<String, String> enums = new HashMap<String, String>();
        System.out.println("- Generating: " + fName);
        PrintWriter out = new PrintWriter(new FileWriter(fName), true);
        out.println("<mappings id=\"Default\">");
        out.println("<!-- ============================== -->");
        out.println("<!-- Mappings for " + currentObj.getName() + " -->");
        out.println("<!-- ============================== -->");
        out.println("<object object=\"" + currentObj.getName() + "\">");
        printMappings(db, currentObj, out, null, null, enums);
        out.println("</object>");
        out.println();

        for (String key : enums.keySet()) {
          EnumDef def = db.getEnum(key);
          if (def != null) {
            writeValueSet(def, out, enums.get(key));
          }
        }

        out.println("</mappings>");
        out.close();
      }
    }
  }
Beispiel #4
0
 public static boolean method189(
     int i, byte[] is, int i_250_) // xxx bad method, decompiled with JODE
     {
   boolean bool = true;
   Stream stream = new Stream(is);
   int i_252_ = -1;
   for (; ; ) {
     int i_253_ = stream.method422();
     if (i_253_ == 0) break;
     i_252_ += i_253_;
     int i_254_ = 0;
     boolean bool_255_ = false;
     for (; ; ) {
       if (bool_255_) {
         int i_256_ = stream.method422();
         if (i_256_ == 0) break;
         stream.readUnsignedByte();
       } else {
         int i_257_ = stream.method422();
         if (i_257_ == 0) break;
         i_254_ += i_257_ - 1;
         int i_258_ = i_254_ & 0x3f;
         int i_259_ = i_254_ >> 6 & 0x3f;
         int i_260_ = stream.readUnsignedByte() >> 2;
         int i_261_ = i_259_ + i;
         int i_262_ = i_258_ + i_250_;
         if (i_261_ > 0 && i_262_ > 0 && i_261_ < 103 && i_262_ < 103) {
           ObjectDef class46 = ObjectDef.forID(i_252_);
           if (i_260_ != 22 || !lowMem || class46.hasActions || class46.aBoolean736) {
             bool &= class46.method579();
             bool_255_ = true;
           }
         }
       }
     }
   }
   return bool;
 }
Beispiel #5
0
 public void load() {
   try {
     System.out.println("----- REGION_MANAGER -----");
     long start = System.nanoTime();
     ObjectDef.loadConfig();
     File f = new File("./Data/world/map_index");
     byte[] buffer = new byte[(int) f.length()];
     DataInputStream dis = new DataInputStream(new FileInputStream(f));
     dis.readFully(buffer);
     dis.close();
     ByteStream in = new ByteStream(buffer);
     int size = in.length() / 7;
     regions = new Region[size];
     int[] regionIds = new int[size];
     int[] mapGroundFileIds = new int[size];
     int[] mapObjectsFileIds = new int[size];
     boolean[] isMembers = new boolean[size];
     for (int i = 0; i < size; i++) {
       regionIds[i] = in.getUShort();
       mapGroundFileIds[i] = in.getUShort();
       mapObjectsFileIds[i] = in.getUShort();
       isMembers[i] = in.getUByte() == 0;
     }
     for (int i = 0; i < size; i++) {
       regions[i] = new Region(regionIds[i], isMembers[i]);
     }
     for (int i = 0; i < size; i++) {
       byte[] file1 = getBuffer(new File("./Data/world/map/" + mapObjectsFileIds[i] + ".gz"));
       byte[] file2 = getBuffer(new File("./Data/world/map/" + mapGroundFileIds[i] + ".gz"));
       if (file1 == null || file2 == null) {
         continue;
       }
       try {
         loadMaps(regionIds[i], new ByteStream(file1), new ByteStream(file2));
       } catch (Exception e) {
         System.out.println("Error loading map region: " + regionIds[i]);
       }
     }
     System.out.println("\tMaps loaded in " + ((System.nanoTime() - start) / 1000000) + " ms");
     start = System.nanoTime();
     WalkingCheck.load();
     System.out.println("\tClipping loaded in " + ((System.nanoTime() - start) / 1000000) + " ms");
   } catch (Exception e) {
     e.printStackTrace();
   }
 }
Beispiel #6
0
 public final void method183(
     Class11 aclass11[],
     WorldController worldController,
     int i,
     int j,
     int k,
     int l,
     byte abyte0[],
     int i1,
     int j1,
     int k1) {
   label0:
   {
     Stream stream = new Stream(abyte0);
     int l1 = -1;
     do {
       int i2 = stream.method422();
       if (i2 == 0) break label0;
       l1 += i2;
       int j2 = 0;
       do {
         int k2 = stream.method422();
         if (k2 == 0) break;
         j2 += k2 - 1;
         int l2 = j2 & 0x3f;
         int i3 = j2 >> 6 & 0x3f;
         int j3 = j2 >> 12;
         int k3 = stream.readUnsignedByte();
         int l3 = k3 >> 2;
         int i4 = k3 & 3;
         if (j3 == i && i3 >= i1 && i3 < i1 + 8 && l2 >= k && l2 < k + 8) {
           ObjectDef class46 = ObjectDef.forID(l1);
           int j4 = j + Class4.method157(j1, class46.anInt761, i3 & 7, l2 & 7, class46.anInt744);
           int k4 = k1 + Class4.method158(l2 & 7, class46.anInt761, j1, class46.anInt744, i3 & 7);
           if (j4 > 0 && k4 > 0 && j4 < 103 && k4 < 103) {
             int l4 = j3;
             if ((aByteArrayArrayArray149[1][j4][k4] & 2) == 2) l4--;
             Class11 class11 = null;
             if (l4 >= 0) class11 = aclass11[l4];
             method175(k4, worldController, class11, l3, l, j4, l1, i4 + j1 & 3);
           }
         }
       } while (true);
     } while (true);
   }
 }
Beispiel #7
0
 public void addObject(int objectId, int x, int y, int height, int type, int direction) {
   ObjectDef def = ObjectDef.getObjectDef(objectId);
   if (def == null) {
     return;
   }
   int xLength;
   int yLength;
   if (direction != 1 && direction != 3) {
     xLength = def.xLength();
     yLength = def.yLength();
   } else {
     xLength = def.yLength();
     yLength = def.xLength();
   }
   if (type == 22) {
     if (def.hasActions() && def.solid()) {
       addClipping(x, y, height, 0x200000);
     }
   } else if (type >= 9) {
     if (def.solid()) {
       addClippingForSolidObject(x, y, height, xLength, yLength, def.solidd());
     }
   } else if (type >= 0 && type <= 3) {
     if (def.solid()) {
       addClippingForVariableObject(x, y, height, type, direction, def.solidd());
     }
   }
 }
  private void printMappings(
      DB db,
      ObjectDef def,
      PrintWriter out,
      String xPath,
      String parentTag,
      Map<String, String> enums) {

    if (xPath == null) {
      xPath = "";
    }

    if (def.getValueType() != null) {
      // This object has a text value (It's an element that has simple content)
      System.out.println("        - Simple Content");
    }

    FieldDef[] fields = def.getAllFields();
    for (int i = 0; i < fields.length; i++) {
      FieldDef field = fields[i];
      if ((field.fFlags & FieldDef.FLAG_ATTRIBUTE) > 0) {
        System.out.println("    " + field.fName + " - Attribute");
        printFieldDesc(field, out);
        out.print(
            "   <field name=\""
                + (parentTag == null ? "" : parentTag.toUpperCase() + "_")
                + field.getTag().toUpperCase()
                + "\"");

        if (field.getFieldType().isEnum()) {
          String enumName = field.getFieldType().getEnum();
          String valueSetName = (parentTag == null ? "" : parentTag + "_") + field.getTag();
          out.print(" valueset=\"" + valueSetName + "\"");
          enums.put(enumName, valueSetName);
        }
        out.println(">" + xPath + "@" + field.getTag() + "</field>");
      } else {
        FieldType ft = field.getFieldType();
        if (ft.getDataType() == ADKDataType.COMPLEX) {

          System.out.println(field.fName + " - Structure (Complex Elements)");
          ObjectDef fieldObj = db.getObject(ft.getClassType());
          if (fieldObj != null) {
            if (field.isRepeatable()) {
              FieldDef[] key = fieldObj.getKey(null);
              if (key != null && key.length == 1 && (key[0].fFlags & FieldDef.FLAG_ATTRIBUTE) > 0) {
                String newPath = xPath + field.getTag() + "[@" + key[0].getTag() + "='ZZZZ']/";
                if (fieldObj.getValueType() == null) {
                  printMappings(db, fieldObj, out, newPath, field.getTag(), enums);
                } else {
                  printOutFieldMapping(
                      fieldObj.getValueDef(null), out, newPath, field.getTag(), enums);
                }
                continue;
              }
            }
            printMappings(db, fieldObj, out, xPath + field.getTag() + "/", field.getTag(), enums);
          }
        } else {
          printOutFieldMapping(field, out, xPath, parentTag, enums);
        }
      }

      if (field.isRepeatable()) {}
    }

    if (def.isTopic()) {
      // ADK Metadata doesn't include SIF_ExtendedElements or SIF_Metadata. Add these counts in
      ObjectDef o = db.getObject("SIF_ExtendedElements");
      if (o != null) {
        printMappings(db, o, out, "SIF_ExtendedElements", "SIF_ExtendedElements", enums);
      }

      //			o = db.getObject( "SIF_Metadata" );
      //			if( o != null ){
      //				printMappings( db, o, out, "SIF_Metadata/" );
      //			}
    }
  }
Beispiel #9
0
 public static void method188(
     WorldController worldController,
     int i,
     int j,
     int k,
     int l,
     Class11 class11,
     int ai[][][],
     int i1,
     int j1,
     int k1) {
   int l1 = ai[l][i1][j];
   int i2 = ai[l][i1 + 1][j];
   int j2 = ai[l][i1 + 1][j + 1];
   int k2 = ai[l][i1][j + 1];
   int l2 = l1 + i2 + j2 + k2 >> 2;
   ObjectDef class46 = ObjectDef.forID(j1);
   int i3 = i1 + (j << 7) + (j1 << 14) + 0x40000000;
   if (!class46.hasActions) i3 += 0x80000000;
   byte byte1 = (byte) ((i << 6) + k);
   if (k == 22) {
     Object obj;
     if (class46.anInt781 == -1 && class46.childrenIDs == null)
       obj = class46.method578(22, i, l1, i2, j2, k2, -1);
     else obj = new Animable_Sub5(j1, i, 22, i2, j2, l1, k2, class46.anInt781, true);
     worldController.method280(k1, l2, j, ((Animable) (obj)), byte1, i3, i1);
     if (class46.aBoolean767 && class46.hasActions) class11.method213(j, i1);
     return;
   }
   if (k == 10 || k == 11) {
     Object obj1;
     if (class46.anInt781 == -1 && class46.childrenIDs == null)
       obj1 = class46.method578(10, i, l1, i2, j2, k2, -1);
     else obj1 = new Animable_Sub5(j1, i, 10, i2, j2, l1, k2, class46.anInt781, true);
     if (obj1 != null) {
       int j5 = 0;
       if (k == 11) j5 += 256;
       int k4;
       int i5;
       if (i == 1 || i == 3) {
         k4 = class46.anInt761;
         i5 = class46.anInt744;
       } else {
         k4 = class46.anInt744;
         i5 = class46.anInt761;
       }
       worldController.method284(i3, byte1, l2, i5, ((Animable) (obj1)), k4, k1, j5, j, i1);
     }
     if (class46.aBoolean767)
       class11.method212(class46.aBoolean757, class46.anInt744, class46.anInt761, i1, j, i);
     return;
   }
   if (k >= 12) {
     Object obj2;
     if (class46.anInt781 == -1 && class46.childrenIDs == null)
       obj2 = class46.method578(k, i, l1, i2, j2, k2, -1);
     else obj2 = new Animable_Sub5(j1, i, k, i2, j2, l1, k2, class46.anInt781, true);
     worldController.method284(i3, byte1, l2, 1, ((Animable) (obj2)), 1, k1, 0, j, i1);
     if (class46.aBoolean767)
       class11.method212(class46.aBoolean757, class46.anInt744, class46.anInt761, i1, j, i);
     return;
   }
   if (k == 0) {
     Object obj3;
     if (class46.anInt781 == -1 && class46.childrenIDs == null)
       obj3 = class46.method578(0, i, l1, i2, j2, k2, -1);
     else obj3 = new Animable_Sub5(j1, i, 0, i2, j2, l1, k2, class46.anInt781, true);
     worldController.method282(
         anIntArray152[i], ((Animable) (obj3)), i3, j, byte1, i1, null, l2, 0, k1);
     if (class46.aBoolean767) class11.method211(j, i, i1, k, class46.aBoolean757);
     return;
   }
   if (k == 1) {
     Object obj4;
     if (class46.anInt781 == -1 && class46.childrenIDs == null)
       obj4 = class46.method578(1, i, l1, i2, j2, k2, -1);
     else obj4 = new Animable_Sub5(j1, i, 1, i2, j2, l1, k2, class46.anInt781, true);
     worldController.method282(
         anIntArray140[i], ((Animable) (obj4)), i3, j, byte1, i1, null, l2, 0, k1);
     if (class46.aBoolean767) class11.method211(j, i, i1, k, class46.aBoolean757);
     return;
   }
   if (k == 2) {
     int j3 = i + 1 & 3;
     Object obj11;
     Object obj12;
     if (class46.anInt781 == -1 && class46.childrenIDs == null) {
       obj11 = class46.method578(2, 4 + i, l1, i2, j2, k2, -1);
       obj12 = class46.method578(2, j3, l1, i2, j2, k2, -1);
     } else {
       obj11 = new Animable_Sub5(j1, 4 + i, 2, i2, j2, l1, k2, class46.anInt781, true);
       obj12 = new Animable_Sub5(j1, j3, 2, i2, j2, l1, k2, class46.anInt781, true);
     }
     worldController.method282(
         anIntArray152[i],
         ((Animable) (obj11)),
         i3,
         j,
         byte1,
         i1,
         ((Animable) (obj12)),
         l2,
         anIntArray152[j3],
         k1);
     if (class46.aBoolean767) class11.method211(j, i, i1, k, class46.aBoolean757);
     return;
   }
   if (k == 3) {
     Object obj5;
     if (class46.anInt781 == -1 && class46.childrenIDs == null)
       obj5 = class46.method578(3, i, l1, i2, j2, k2, -1);
     else obj5 = new Animable_Sub5(j1, i, 3, i2, j2, l1, k2, class46.anInt781, true);
     worldController.method282(
         anIntArray140[i], ((Animable) (obj5)), i3, j, byte1, i1, null, l2, 0, k1);
     if (class46.aBoolean767) class11.method211(j, i, i1, k, class46.aBoolean757);
     return;
   }
   if (k == 9) {
     Object obj6;
     if (class46.anInt781 == -1 && class46.childrenIDs == null)
       obj6 = class46.method578(k, i, l1, i2, j2, k2, -1);
     else obj6 = new Animable_Sub5(j1, i, k, i2, j2, l1, k2, class46.anInt781, true);
     worldController.method284(i3, byte1, l2, 1, ((Animable) (obj6)), 1, k1, 0, j, i1);
     if (class46.aBoolean767)
       class11.method212(class46.aBoolean757, class46.anInt744, class46.anInt761, i1, j, i);
     return;
   }
   if (class46.aBoolean762)
     if (i == 1) {
       int k3 = k2;
       k2 = j2;
       j2 = i2;
       i2 = l1;
       l1 = k3;
     } else if (i == 2) {
       int l3 = k2;
       k2 = i2;
       i2 = l3;
       l3 = j2;
       j2 = l1;
       l1 = l3;
     } else if (i == 3) {
       int i4 = k2;
       k2 = l1;
       l1 = i2;
       i2 = j2;
       j2 = i4;
     }
   if (k == 4) {
     Object obj7;
     if (class46.anInt781 == -1 && class46.childrenIDs == null)
       obj7 = class46.method578(4, 0, l1, i2, j2, k2, -1);
     else obj7 = new Animable_Sub5(j1, 0, 4, i2, j2, l1, k2, class46.anInt781, true);
     worldController.method283(
         i3, j, i * 512, k1, 0, l2, ((Animable) (obj7)), i1, byte1, 0, anIntArray152[i]);
     return;
   }
   if (k == 5) {
     int j4 = 16;
     int l4 = worldController.method300(k1, i1, j);
     if (l4 > 0) j4 = ObjectDef.forID(l4 >> 14 & 0x7fff).anInt775;
     Object obj13;
     if (class46.anInt781 == -1 && class46.childrenIDs == null)
       obj13 = class46.method578(4, 0, l1, i2, j2, k2, -1);
     else obj13 = new Animable_Sub5(j1, 0, 4, i2, j2, l1, k2, class46.anInt781, true);
     worldController.method283(
         i3,
         j,
         i * 512,
         k1,
         anIntArray137[i] * j4,
         l2,
         ((Animable) (obj13)),
         i1,
         byte1,
         anIntArray144[i] * j4,
         anIntArray152[i]);
     return;
   }
   if (k == 6) {
     Object obj8;
     if (class46.anInt781 == -1 && class46.childrenIDs == null)
       obj8 = class46.method578(4, 0, l1, i2, j2, k2, -1);
     else obj8 = new Animable_Sub5(j1, 0, 4, i2, j2, l1, k2, class46.anInt781, true);
     worldController.method283(i3, j, i, k1, 0, l2, ((Animable) (obj8)), i1, byte1, 0, 256);
     return;
   }
   if (k == 7) {
     Object obj9;
     if (class46.anInt781 == -1 && class46.childrenIDs == null)
       obj9 = class46.method578(4, 0, l1, i2, j2, k2, -1);
     else obj9 = new Animable_Sub5(j1, 0, 4, i2, j2, l1, k2, class46.anInt781, true);
     worldController.method283(i3, j, i, k1, 0, l2, ((Animable) (obj9)), i1, byte1, 0, 512);
     return;
   }
   if (k == 8) {
     Object obj10;
     if (class46.anInt781 == -1 && class46.childrenIDs == null)
       obj10 = class46.method578(4, 0, l1, i2, j2, k2, -1);
     else obj10 = new Animable_Sub5(j1, 0, 4, i2, j2, l1, k2, class46.anInt781, true);
     worldController.method283(i3, j, i, k1, 0, l2, ((Animable) (obj10)), i1, byte1, 0, 768);
   }
 }
Beispiel #10
0
 public static boolean method178(int i, int j) {
   ObjectDef class46 = ObjectDef.forID(i);
   if (j == 11) j = 10;
   if (j >= 5 && j <= 8) j = 4;
   return class46.method577(j);
 }
Beispiel #11
0
 private void method175(
     int i,
     WorldController worldController,
     Class11 class11,
     int j,
     int k,
     int l,
     int i1,
     int j1) {
   /*int mX = clientInstance.MapX - 6;
   int mY = clientInstance.MapY - 6;
   int actualX = mX * 8 + l;
   int actualY = mY * 8 + i;
   int actualH = k;
   if(!(actualX >= 2630 && actualX <= 2639 && actualY >= 4680 && actualY <= 4690)//castle at starting point
   && !(actualX >= 2640 && actualX <= 2643 && actualY >= 4680 && actualY <= 4689)//castle at starting point
   && !(actualX >= 2630 && actualX <= 2636 && actualY >= 4676 && actualY <= 4689)//castle at starting point
   && !(actualX >= 2629 && actualX <= 2637 && actualY >= 4679 && actualY <= 4685)//castle at starting point
   && !(actualX >= 2637 && actualX <= 2638 && actualY >= 4691 && actualY <= 4692)//castle at starting point
   && !(actualX == 2635 && actualY == 4693) && !(actualX == 2634 && actualY == 4693)
   ) {*/
   if (lowMem && (aByteArrayArrayArray149[0][l][i] & 2) == 0) {
     if ((aByteArrayArrayArray149[k][l][i] & 0x10) != 0) return;
     if (method182(i, k, l) != anInt131) return;
   }
   if (k < anInt145) anInt145 = k;
   int k1 = anIntArrayArrayArray129[k][l][i];
   int l1 = anIntArrayArrayArray129[k][l + 1][i];
   int i2 = anIntArrayArrayArray129[k][l + 1][i + 1];
   int j2 = anIntArrayArrayArray129[k][l][i + 1];
   int k2 = k1 + l1 + i2 + j2 >> 2;
   ObjectDef class46 = ObjectDef.forID(i1);
   int l2 = l + (i << 7) + (i1 << 14) + 0x40000000;
   if (!class46.hasActions) l2 += 0x80000000;
   byte byte0 = (byte) ((j1 << 6) + j);
   if (j == 22) {
     if (lowMem && !class46.hasActions && !class46.aBoolean736) return;
     Object obj;
     if (class46.anInt781 == -1 && class46.childrenIDs == null)
       obj = class46.method578(22, j1, k1, l1, i2, j2, -1);
     else obj = new Animable_Sub5(i1, j1, 22, l1, i2, k1, j2, class46.anInt781, true);
     worldController.method280(k, k2, i, ((Animable) (obj)), byte0, l2, l);
     if (class46.aBoolean767 && class46.hasActions && class11 != null) class11.method213(i, l);
     return;
   }
   if (j == 10 || j == 11) {
     Object obj1;
     if (class46.anInt781 == -1 && class46.childrenIDs == null)
       obj1 = class46.method578(10, j1, k1, l1, i2, j2, -1);
     else obj1 = new Animable_Sub5(i1, j1, 10, l1, i2, k1, j2, class46.anInt781, true);
     if (obj1 != null) {
       int i5 = 0;
       if (j == 11) i5 += 256;
       int j4;
       int l4;
       if (j1 == 1 || j1 == 3) {
         j4 = class46.anInt761;
         l4 = class46.anInt744;
       } else {
         j4 = class46.anInt744;
         l4 = class46.anInt761;
       }
       if (worldController.method284(l2, byte0, k2, l4, ((Animable) (obj1)), j4, k, i5, i, l)
           && class46.aBoolean779) {
         Model model;
         if (obj1 instanceof Model) model = (Model) obj1;
         else model = class46.method578(10, j1, k1, l1, i2, j2, -1);
         if (model != null) {
           for (int j5 = 0; j5 <= j4; j5++) {
             for (int k5 = 0; k5 <= l4; k5++) {
               int l5 = model.anInt1650 / 4;
               if (l5 > 30) l5 = 30;
               if (l5 > aByteArrayArrayArray134[k][l + j5][i + k5])
                 aByteArrayArrayArray134[k][l + j5][i + k5] = (byte) l5;
             }
           }
         }
       }
     }
     if (class46.aBoolean767 && class11 != null)
       class11.method212(class46.aBoolean757, class46.anInt744, class46.anInt761, l, i, j1);
     return;
   }
   if (j >= 12) {
     Object obj2;
     if (class46.anInt781 == -1 && class46.childrenIDs == null)
       obj2 = class46.method578(j, j1, k1, l1, i2, j2, -1);
     else obj2 = new Animable_Sub5(i1, j1, j, l1, i2, k1, j2, class46.anInt781, true);
     worldController.method284(l2, byte0, k2, 1, ((Animable) (obj2)), 1, k, 0, i, l);
     if (j >= 12 && j <= 17 && j != 13 && k > 0) anIntArrayArrayArray135[k][l][i] |= 0x924;
     if (class46.aBoolean767 && class11 != null)
       class11.method212(class46.aBoolean757, class46.anInt744, class46.anInt761, l, i, j1);
     return;
   }
   if (j == 0) {
     Object obj3;
     if (class46.anInt781 == -1 && class46.childrenIDs == null)
       obj3 = class46.method578(0, j1, k1, l1, i2, j2, -1);
     else obj3 = new Animable_Sub5(i1, j1, 0, l1, i2, k1, j2, class46.anInt781, true);
     worldController.method282(
         anIntArray152[j1], ((Animable) (obj3)), l2, i, byte0, l, null, k2, 0, k);
     if (j1 == 0) {
       if (class46.aBoolean779) {
         aByteArrayArrayArray134[k][l][i] = 50;
         aByteArrayArrayArray134[k][l][i + 1] = 50;
       }
       if (class46.aBoolean764) anIntArrayArrayArray135[k][l][i] |= 0x249;
     } else if (j1 == 1) {
       if (class46.aBoolean779) {
         aByteArrayArrayArray134[k][l][i + 1] = 50;
         aByteArrayArrayArray134[k][l + 1][i + 1] = 50;
       }
       if (class46.aBoolean764) anIntArrayArrayArray135[k][l][i + 1] |= 0x492;
     } else if (j1 == 2) {
       if (class46.aBoolean779) {
         aByteArrayArrayArray134[k][l + 1][i] = 50;
         aByteArrayArrayArray134[k][l + 1][i + 1] = 50;
       }
       if (class46.aBoolean764) anIntArrayArrayArray135[k][l + 1][i] |= 0x249;
     } else if (j1 == 3) {
       if (class46.aBoolean779) {
         aByteArrayArrayArray134[k][l][i] = 50;
         aByteArrayArrayArray134[k][l + 1][i] = 50;
       }
       if (class46.aBoolean764) anIntArrayArrayArray135[k][l][i] |= 0x492;
     }
     if (class46.aBoolean767 && class11 != null)
       class11.method211(i, j1, l, j, class46.aBoolean757);
     if (class46.anInt775 != 16) worldController.method290(i, class46.anInt775, l, k);
     return;
   }
   if (j == 1) {
     Object obj4;
     if (class46.anInt781 == -1 && class46.childrenIDs == null)
       obj4 = class46.method578(1, j1, k1, l1, i2, j2, -1);
     else obj4 = new Animable_Sub5(i1, j1, 1, l1, i2, k1, j2, class46.anInt781, true);
     worldController.method282(
         anIntArray140[j1], ((Animable) (obj4)), l2, i, byte0, l, null, k2, 0, k);
     if (class46.aBoolean779)
       if (j1 == 0) aByteArrayArrayArray134[k][l][i + 1] = 50;
       else if (j1 == 1) aByteArrayArrayArray134[k][l + 1][i + 1] = 50;
       else if (j1 == 2) aByteArrayArrayArray134[k][l + 1][i] = 50;
       else if (j1 == 3) aByteArrayArrayArray134[k][l][i] = 50;
     if (class46.aBoolean767 && class11 != null)
       class11.method211(i, j1, l, j, class46.aBoolean757);
     return;
   }
   if (j == 2) {
     int i3 = j1 + 1 & 3;
     Object obj11;
     Object obj12;
     if (class46.anInt781 == -1 && class46.childrenIDs == null) {
       obj11 = class46.method578(2, 4 + j1, k1, l1, i2, j2, -1);
       obj12 = class46.method578(2, i3, k1, l1, i2, j2, -1);
     } else {
       obj11 = new Animable_Sub5(i1, 4 + j1, 2, l1, i2, k1, j2, class46.anInt781, true);
       obj12 = new Animable_Sub5(i1, i3, 2, l1, i2, k1, j2, class46.anInt781, true);
     }
     worldController.method282(
         anIntArray152[j1],
         ((Animable) (obj11)),
         l2,
         i,
         byte0,
         l,
         ((Animable) (obj12)),
         k2,
         anIntArray152[i3],
         k);
     if (class46.aBoolean764)
       if (j1 == 0) {
         anIntArrayArrayArray135[k][l][i] |= 0x249;
         anIntArrayArrayArray135[k][l][i + 1] |= 0x492;
       } else if (j1 == 1) {
         anIntArrayArrayArray135[k][l][i + 1] |= 0x492;
         anIntArrayArrayArray135[k][l + 1][i] |= 0x249;
       } else if (j1 == 2) {
         anIntArrayArrayArray135[k][l + 1][i] |= 0x249;
         anIntArrayArrayArray135[k][l][i] |= 0x492;
       } else if (j1 == 3) {
         anIntArrayArrayArray135[k][l][i] |= 0x492;
         anIntArrayArrayArray135[k][l][i] |= 0x249;
       }
     if (class46.aBoolean767 && class11 != null)
       class11.method211(i, j1, l, j, class46.aBoolean757);
     if (class46.anInt775 != 16) worldController.method290(i, class46.anInt775, l, k);
     return;
   }
   if (j == 3) {
     Object obj5;
     if (class46.anInt781 == -1 && class46.childrenIDs == null)
       obj5 = class46.method578(3, j1, k1, l1, i2, j2, -1);
     else obj5 = new Animable_Sub5(i1, j1, 3, l1, i2, k1, j2, class46.anInt781, true);
     worldController.method282(
         anIntArray140[j1], ((Animable) (obj5)), l2, i, byte0, l, null, k2, 0, k);
     if (class46.aBoolean779)
       if (j1 == 0) aByteArrayArrayArray134[k][l][i + 1] = 50;
       else if (j1 == 1) aByteArrayArrayArray134[k][l + 1][i + 1] = 50;
       else if (j1 == 2) aByteArrayArrayArray134[k][l + 1][i] = 50;
       else if (j1 == 3) aByteArrayArrayArray134[k][l][i] = 50;
     if (class46.aBoolean767 && class11 != null)
       class11.method211(i, j1, l, j, class46.aBoolean757);
     return;
   }
   if (j == 9) {
     Object obj6;
     if (class46.anInt781 == -1 && class46.childrenIDs == null)
       obj6 = class46.method578(j, j1, k1, l1, i2, j2, -1);
     else obj6 = new Animable_Sub5(i1, j1, j, l1, i2, k1, j2, class46.anInt781, true);
     worldController.method284(l2, byte0, k2, 1, ((Animable) (obj6)), 1, k, 0, i, l);
     if (class46.aBoolean767 && class11 != null)
       class11.method212(class46.aBoolean757, class46.anInt744, class46.anInt761, l, i, j1);
     return;
   }
   if (class46.aBoolean762)
     if (j1 == 1) {
       int j3 = j2;
       j2 = i2;
       i2 = l1;
       l1 = k1;
       k1 = j3;
     } else if (j1 == 2) {
       int k3 = j2;
       j2 = l1;
       l1 = k3;
       k3 = i2;
       i2 = k1;
       k1 = k3;
     } else if (j1 == 3) {
       int l3 = j2;
       j2 = k1;
       k1 = l1;
       l1 = i2;
       i2 = l3;
     }
   if (j == 4) {
     Object obj7;
     if (class46.anInt781 == -1 && class46.childrenIDs == null)
       obj7 = class46.method578(4, 0, k1, l1, i2, j2, -1);
     else obj7 = new Animable_Sub5(i1, 0, 4, l1, i2, k1, j2, class46.anInt781, true);
     worldController.method283(
         l2, i, j1 * 512, k, 0, k2, ((Animable) (obj7)), l, byte0, 0, anIntArray152[j1]);
     return;
   }
   if (j == 5) {
     int i4 = 16;
     int k4 = worldController.method300(k, l, i);
     if (k4 > 0) i4 = ObjectDef.forID(k4 >> 14 & 0x7fff).anInt775;
     Object obj13;
     if (class46.anInt781 == -1 && class46.childrenIDs == null)
       obj13 = class46.method578(4, 0, k1, l1, i2, j2, -1);
     else obj13 = new Animable_Sub5(i1, 0, 4, l1, i2, k1, j2, class46.anInt781, true);
     worldController.method283(
         l2,
         i,
         j1 * 512,
         k,
         anIntArray137[j1] * i4,
         k2,
         ((Animable) (obj13)),
         l,
         byte0,
         anIntArray144[j1] * i4,
         anIntArray152[j1]);
     return;
   }
   if (j == 6) {
     Object obj8;
     if (class46.anInt781 == -1 && class46.childrenIDs == null)
       obj8 = class46.method578(4, 0, k1, l1, i2, j2, -1);
     else obj8 = new Animable_Sub5(i1, 0, 4, l1, i2, k1, j2, class46.anInt781, true);
     worldController.method283(l2, i, j1, k, 0, k2, ((Animable) (obj8)), l, byte0, 0, 256);
     return;
   }
   if (j == 7) {
     Object obj9;
     if (class46.anInt781 == -1 && class46.childrenIDs == null)
       obj9 = class46.method578(4, 0, k1, l1, i2, j2, -1);
     else obj9 = new Animable_Sub5(i1, 0, 4, l1, i2, k1, j2, class46.anInt781, true);
     worldController.method283(l2, i, j1, k, 0, k2, ((Animable) (obj9)), l, byte0, 0, 512);
     return;
   }
   if (j == 8) {
     Object obj10;
     if (class46.anInt781 == -1 && class46.childrenIDs == null)
       obj10 = class46.method578(4, 0, k1, l1, i2, j2, -1);
     else obj10 = new Animable_Sub5(i1, 0, 4, l1, i2, k1, j2, class46.anInt781, true);
     worldController.method283(l2, i, j1, k, 0, k2, ((Animable) (obj10)), l, byte0, 0, 768);
   }
   // }
 }