NScumm.Sky.Screen.DoSprites C# (CSharp) Méthode

DoSprites() private méthode

private DoSprites ( byte layer ) : void
layer byte
Résultat void
        private void DoSprites(byte layer)
        {
            ushort drawListNum = Logic.DRAW_LIST_NO;
            while (Logic.ScriptVariables[drawListNum] != 0)
            {
                // std sp loop
                var idNum = Logic.ScriptVariables[drawListNum];
                drawListNum++;

                var drawList = new UShortAccess(_skyCompact.FetchCptRaw((ushort)idNum), 0);
                while (drawList[0] != 0)
                {
                    // new_draw_list:
                    while ((drawList[0] != 0) && (drawList[0] != 0xFFFF))
                    {
                        // back_loop:
                        // not_new_list
                        var spriteData = _skyCompact.FetchCpt(drawList[0]);
                        drawList.Offset += 2;
                        if (((spriteData.Core.status & (1 << layer)) != 0) &&
                            (spriteData.Core.screen == Logic.ScriptVariables[Logic.SCREEN]))
                        {
                            var toBeDrawn = SkyEngine.ItemList[spriteData.Core.frame >> 6];
                            if (toBeDrawn == null)
                            {
                                // TODO: debug(9, "Spritedata %d not loaded", spriteData.frame >> 6);
                                spriteData.Core.status = 0;
                            }
                            else
                            {
                                DrawSprite(toBeDrawn, spriteData);
                                if (layer == Back)
                                    VerticalMask();
                                if ((spriteData.Core.status & 8) != 0)
                                    VectorToGame(0x81);
                                else
                                    VectorToGame(1);
                            }
                        }
                    }
                    while (drawList[0] == 0xFFFF)
                        drawList = new UShortAccess(_skyCompact.FetchCptRaw(drawList[1]), 0);
                }
            }
        }