Ejemplo n.º 1
0
    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);
    }
Ejemplo n.º 2
0
    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);
    }
Ejemplo n.º 3
0
 public static void setBank(int bank)
 {
     AppEngine.ASSERT(bank >= 0 && bank < 1, "invalid bank");
     AppEngine.getCanvas().getAnimManData().m_curBank = bank;
 }