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

FnFadeUp() public méthode

public FnFadeUp ( uint palNum, uint scroll ) : void
palNum uint
scroll uint
Résultat void
        public void FnFadeUp(uint palNum, uint scroll)
        {
            //_currentScreen points to new screen,
            //_scrollScreen points to graphic showing old room
            if ((scroll != 123) && (scroll != 321))
                scroll = 0;

            if ((scroll == 0) || SystemVars.Instance.SystemFlags.HasFlag(SystemFlags.NoScroll))
            {
                var palette = _skyCompact.FetchCptRaw((ushort)palNum);
                if (palette == null)
                    throw new NotSupportedException(string.Format("Screen::fnFadeUp: can't fetch compact {0:X2}", palNum));
                //# ifdef SCUMM_BIG_ENDIAN
                //                byte tmpPal[VGA_COLORS * 3];
                //                for (uint16 cnt = 0; cnt < VGA_COLORS * 3; cnt++)
                //                    tmpPal[cnt] = palette[cnt ^ 1];
                //                paletteFadeUp(tmpPal);
                //#else
                PaletteFadeUp(palette);
                //#endif
            }
            else if (scroll == 123)
            {
                // scroll left (going right)
                System.Diagnostics.Debug.Assert(Current != null && _scrollScreen != null);
                for (var scrollCnt = 0; scrollCnt < GameScreenWidth / ScrollJump - 1; scrollCnt++)
                {
                    var scrNewPtr = scrollCnt * ScrollJump;
                    var scrOldPtr = 0;
                    for (var lineCnt = 0; lineCnt < GameScreenHeight; lineCnt++)
                    {
                        Buffer.BlockCopy(_scrollScreen, scrOldPtr + ScrollJump, _scrollScreen, scrOldPtr,
                            GameScreenWidth - ScrollJump);
                        Buffer.BlockCopy(Current, scrNewPtr, _scrollScreen, scrOldPtr + GameScreenWidth - ScrollJump,
                            GameScreenWidth - ScrollJump);
                        scrNewPtr += GameScreenWidth;
                        scrOldPtr += GameScreenWidth;
                    }
                    ShowScreen(_scrollScreen);
                    WaitForTick();
                }
                ShowScreen(Current);
            }
            else if (scroll == 321)
            {
                // scroll right (going left)
                System.Diagnostics.Debug.Assert(Current != null && _scrollScreen != null);
                for (var scrollCnt = 0; scrollCnt < GameScreenWidth / ScrollJump - 1; scrollCnt++)
                {
                    var scrNewPtr = GameScreenWidth - (scrollCnt + 1) * ScrollJump;
                    var scrOldPtr = 0;
                    for (var lineCnt = 0; lineCnt < GameScreenHeight; lineCnt++)
                    {
                        Buffer.BlockCopy(_scrollScreen, scrOldPtr + ScrollJump, _scrollScreen, scrOldPtr,
                            GameScreenWidth - ScrollJump);
                        Buffer.BlockCopy(Current, scrNewPtr, _scrollScreen, scrOldPtr, ScrollJump);
                        scrNewPtr += GameScreenWidth;
                        scrOldPtr += GameScreenWidth;
                    }
                    ShowScreen(_scrollScreen);
                    WaitForTick();
                }
                ShowScreen(Current);
            }

            _scrollScreen = null;
        }