private int remapGlobalGoalIndex(int index) { AppEngine canvas = AppEngine.getCanvas(); int taskCount = canvas.getSimData().getTaskCount(); int numGoalsDiscovered = canvas.getNumGoalsDiscovered(); int numGoalsComplete = canvas.getNumGoalsComplete(); int num1 = 0; int num2 = 0; for (int dream = 0; dream < taskCount; ++dream) { if (!canvas.isDreamDiscovered(dream) && index >= numGoalsDiscovered) { return(dream); } if (canvas.isDreamDiscovered(dream)) { if (canvas.isGoalCompleted(dream)) { if (num1 == index) { return(dream); } ++num1; } else { if (num2 == index - numGoalsComplete && index >= numGoalsComplete) { return(dream); } ++num2; } } } AppEngine.ASSERT(false, "no dreams! (shouldn't happen)"); return(-1); }
private static bool drawNormalAnimFrameExt( Graphics g, int animID, int frameID, int x, int y, int extraAnimId, int extraIndex, int[] firepoint) { int clipX = g.getClipX(); int clipY = g.getClipY(); int clipWidth = g.getClipWidth(); int clipHeight = g.getClipHeight(); AnimationManagerData animManData = AppEngine.getCanvas().getAnimManData(); bool flag = false; int num1 = extraAnimId >= 0 ? (int)animManData.animFrameOffset[extraAnimId] : -1; int index1 = (int)animManData.animFrameOffset[animID] + frameID; int primitiveIndex = animManData.framePrimitiveOffset[index1]; int frameNumPrimitive1 = (int)animManData.frameNumPrimitives[index1]; for (int index2 = 0; index2 != frameNumPrimitive1; ++index2) { short num2 = animManData.primitiveData[primitiveIndex]; switch (num2) { case 0: case 11: int x1 = x + (int)animManData.primitiveData[primitiveIndex + 1]; int y1 = y + (int)animManData.primitiveData[primitiveIndex + 2]; int index3 = (int)animManData.primitiveData[primitiveIndex + 3]; short[] subImage1 = animManData.m_subImages[index3]; int index4 = (int)subImage1[0]; Image image1 = animManData.m_animImageArray[animManData.m_curBank][index4]; g.clipRect(x1, y1, (int)subImage1[3], (int)subImage1[4]); g.drawImage(image1, (float)(x1 - (int)subImage1[1]), (float)(y1 - (int)subImage1[2]), 9); g.setClip(clipX, clipY, clipWidth, clipHeight); if (num1 >= 0) { int animNumFrame = (int)animManData.animNumFrames[extraAnimId]; short[] primitiveData = animManData.primitiveData; for (int index5 = 0; index5 < animNumFrame; ++index5) { int index6 = animManData.framePrimitiveOffset[num1 + index5]; AppEngine.ASSERT(primitiveData[index6] == (short)0, "non-sprite in extras anim"); int num3 = (int)primitiveData[index6 + 3] & (int)ushort.MaxValue; if (index3 == num3) { int num4 = (int)primitiveData[index6 + 1]; int num5 = (int)primitiveData[index6 + 2]; int frameNumPrimitive2 = (int)animManData.frameNumPrimitives[num1 + index5]; if (firepoint != null) { flag = true; int index7 = index6; int num6 = frameNumPrimitive2 - 1; for (int index8 = 0; index8 < num6; ++index8) { int primitiveType = (int)primitiveData[index7]; index7 += AnimationManager.getNumAttributes(primitiveType); } AppEngine.ASSERT(primitiveData[index7] == (short)7, "non-firepoint at end of extras anim"); firepoint[0] = x1 + (int)primitiveData[index7 + 1] - num4; firepoint[1] = y1 + (int)primitiveData[index7 + 2] - num5; } if (extraIndex < frameNumPrimitive2 - 1) { for (int index7 = 0; index7 < extraIndex; ++index7) { int primitiveType = (int)primitiveData[index6]; index6 += AnimationManager.getNumAttributes(primitiveType); } int x2 = (int)primitiveData[index6 + 1] - num4; int y2 = (int)primitiveData[index6 + 2] - num5; short[] subImage2 = animManData.m_subImages[(int)primitiveData[index6 + 3]]; int index8 = (int)subImage2[0] & (int)ushort.MaxValue; Image image2 = animManData.m_animImageArray[animManData.m_curBank][index8]; if (image1 != null) { g.clipRect(x2, y2, (int)subImage2[3], (int)subImage2[4]); g.drawImage(image2, (float)(x2 - (int)subImage2[1]), (float)(y2 - (int)subImage2[2]), 9); g.setClip(clipX, clipY, clipWidth, clipHeight); break; } break; } break; } } goto case 2; } else { goto case 2; } case 2: case 7: primitiveIndex += AnimationManager.getNumAttributes((int)num2); continue; default: AnimationManager.drawPrimitive(g, x, y, primitiveIndex, (int)num2); goto case 2; } } g.setClip(clipX, clipY, clipWidth, clipHeight); return(flag); }
public static void setBank(int bank) { AppEngine.ASSERT(bank >= 0 && bank < 1, "invalid bank"); AppEngine.getCanvas().getAnimManData().m_curBank = bank; }