Example #1
0
        public CListBox(OBJScene _objScene, Game feel, int width, int height, int itemHeight, int xPos, int yPos,
                        string fontName, int fontSize, System.Drawing.FontStyle fontStyle, Color fontColor, Color backColor, Color selFontColor,
                        Color selFontBackColor, SortType sortType, TextAlign textAlign, bool disableStars)
        {
            _listBox           = new List <RomDesc>();
            _x                 = xPos;
            _y                 = yPos;
            _starLabelWidth    = (int)Utils.LoadSpriteFont(feel, "wingdings", fontSize, System.Drawing.FontStyle.Regular).MeasureString("«««««").X + 8;
            _rect              = new Rectangle(0, 0, width, height);
            _fontColor         = fontColor;
            _backColor         = backColor;
            _fontSize          = fontSize;
            _selFontColor      = selFontColor;
            _selFontBackColor  = selFontBackColor;
            _selFontBackColorL = _selFontBackColor;
            _backColorL        = _backColor;
            _disableStars      = disableStars;

            _starsForeColor    = _disableStars ? Color.TransparentBlack : new Color(255, 220, 66, 80);
            _starsBackColor    = Color.TransparentBlack;
            _selStarsForeColor = _disableStars ? Color.TransparentBlack : new Color(255, 220, 66, _selFontColor.A);
            _selStarsBackColor = _disableStars ? Color.TransparentBlack : new Color(_selFontBackColorL, (byte)(_selFontBackColorL.A * .9));

            _rowSize     = itemHeight;
            _rowCount    = height / _rowSize;
            _rect.Height = _rowCount * _rowSize;
            Labels       = new List <CLabel>();
            StarLabels   = new List <CLabel>();
            for (var i = 0; i < _rowCount; i++)
            {
                Labels.Add(_objScene.CreateLabel("RomListLabel_" + i, 0, 0, _rect.Width, _rowSize, "",
                                                 fontName, fontSize, fontStyle, _fontColor, _backColor, textAlign, true, true));
                StarLabels.Add(_objScene.CreateStarLabel("RomListStarLabel_" + i, 0, 0, _starLabelWidth, _rowSize, "",
                                                         fontSize, fontStyle, _starsForeColor, _starsBackColor, true));
            }
            _sortType = sortType;
            Sort();
            UpdatePosition();
        }
Example #2
0
        /* LED LAYOUT
         * //                       28  29  30  31
         * //
         * //          03 04 05 06                  17 18 19 20
         * //                        11                           25
         * // 13  02   07 08 09 10             16   21 22 23 24       27
         * //                        12                           26
         * //          00  01                       14  15
         */

        /*
         * HYBRID MODE
         * ===========
         * PLAYER 1
         * d6 = start
         * d7 = joy
         * d8 = button 1
         * d9 = button 2
         * d10 = button 3
         * d11 = button 4
         *
         * PLAYER 2
         * d18 = start
         * d19 = joy
         * d20 = button 1
         * d21 = button 2
         * d22 = button 3
         * d23 = button 4
         *
         * DEDICATED MODE
         * ==============
         * PLAYER 1
         * e1a = start
         * e1b = coindoor
         * e2a = joy
         * e2b..d7 = button 1..8
         * d8 = spinner
         * d9 = trackball
         *
         * PLAYER 2
         * e3a = start
         * e3b = coindoor
         * e4a = joy
         * e4b..d19 = button 1..8
         * d20 = spinner
         * d21 = trackball
         */

        public static void Initialize(OBJScene scene, string name, bool debugMode, SmartAsdMode wiringMode)
        {
            _smartAsd     = IntPtr.Zero;
            _scene        = scene;
            _smartAsdName = name;
            _wiringMode   = wiringMode;
            _debugMode    = debugMode;

            var xOffset = scene.screenResX - 380;
            var yOffset = scene.screenResY - 90;

            var dedicatedMode = _wiringMode == SmartAsdMode.Dedicated || _wiringMode == SmartAsdMode.Dedicated6Buttons ? 1 : 0;

            _background = _scene.CreateImage(OBJScene.ImageType.Led, null, 400, 130, xOffset - 20, yOffset - 40, string.Empty, false, true, true, true);
            _background.StartTransition(CDrawable.Transition.Freeze);

            var ledIndex = 0;

            for (var iPlayers = 0; iPlayers < 2; iPlayers++)
            {
                // start [0]
                _ledImages[ledIndex] = _scene.CreateImage(OBJScene.ImageType.Led, "*start", 20, 20, xOffset + 50 + iPlayers * 180, yOffset + 60, string.Empty, false, true, false, true);
                _ledImages[ledIndex].StartTransition(CDrawable.Transition.Freeze);
                ledIndex++;
                // coindoor [1]
                _ledImages[ledIndex] = _scene.CreateImage(OBJScene.ImageType.Led, "*coindoor", 30 * dedicatedMode, 30 * dedicatedMode, xOffset + 90 + iPlayers * 180, yOffset + 55, string.Empty, false, true, false, true);
                _ledImages[ledIndex].StartTransition(CDrawable.Transition.Freeze);
                ledIndex++;
                // joy [2]
                _ledImages[ledIndex] = _scene.CreateImage(OBJScene.ImageType.Led, "*joy", 30, 30, xOffset + 15 + iPlayers * 180, yOffset + 15, string.Empty, false, true, false, true);
                _ledImages[ledIndex].StartTransition(CDrawable.Transition.Freeze);
                ledIndex++;
                // buttons 1..4 [3-6]
                for (var iLoop = 0; iLoop < 4; iLoop++)
                {
                    var size = 20;
                    if (iLoop == 3 && _wiringMode == SmartAsdMode.Dedicated6Buttons)
                    {
                        size = 0;
                    }
                    _ledImages[ledIndex] = _scene.CreateImage(OBJScene.ImageType.Led, "*button", size, size, xOffset + 50 + iLoop * 20 + iPlayers * 180, yOffset + 10, string.Empty, false, true, false, true);
                    _ledImages[ledIndex].StartTransition(CDrawable.Transition.Freeze);
                    ledIndex++;
                }
                // buttons 5..8 [7-10]
                for (var iLoop = 0; iLoop < 4; iLoop++)
                {
                    var size = 20;
                    if (iLoop == 3 && _wiringMode == SmartAsdMode.Dedicated6Buttons)
                    {
                        size = 0;
                    }
                    _ledImages[ledIndex] = _scene.CreateImage(OBJScene.ImageType.Led, "*button", size * dedicatedMode, size * dedicatedMode, xOffset + 50 + iLoop * 20 + iPlayers * 180, yOffset + 30, string.Empty, false, true, false, true);
                    _ledImages[ledIndex].StartTransition(CDrawable.Transition.Freeze);
                    ledIndex++;
                }
                // spinner [11]
                _ledImages[ledIndex] = _scene.CreateImage(OBJScene.ImageType.Led, "*spinner", 30 * dedicatedMode, 30 * dedicatedMode, xOffset + 135 + iPlayers * 180, yOffset + 0, string.Empty, false, true, false, true);
                _ledImages[ledIndex].StartTransition(CDrawable.Transition.Freeze);
                ledIndex++;
                // trackball [12]
                _ledImages[ledIndex] = _scene.CreateImage(OBJScene.ImageType.Led, "*trackball", 40 * dedicatedMode, 40 * dedicatedMode, xOffset + 130 + iPlayers * 180, yOffset + 30, string.Empty, false, true, false, true);
                _ledImages[ledIndex].StartTransition(CDrawable.Transition.Freeze);
                ledIndex++;
                // side button [13]
                _ledImages[ledIndex] = _scene.CreateImage(OBJScene.ImageType.Led, "*button", 20 * dedicatedMode, 20 * dedicatedMode, xOffset - 10 + iPlayers * 360, yOffset + 20, string.Empty, false, true, false, true);
                _ledImages[ledIndex].StartTransition(CDrawable.Transition.Freeze);
                ledIndex++;
            }
            // extra buttons 1..4 [28-31]
            for (var iLoop = 0; iLoop < 4; iLoop++)
            {
                _ledImages[ledIndex] = _scene.CreateImage(OBJScene.ImageType.Led, "*button", 20 * dedicatedMode, 20 * dedicatedMode, xOffset + 120 + iLoop * 30, yOffset - 30, string.Empty, false, true, false, true);
                _ledImages[ledIndex].StartTransition(CDrawable.Transition.Freeze);
                ledIndex++;
            }

            // initialize "none" transition frames
            noneFrames[0] = 0xffffffff;

            // initialize "wake-up" and "reverse-wake-up" transition frames
            for (var frame = 0; frame < 14; frame++)
            {
                for (var led = 0; led < 14; led++)
                {
                    wakeUpFrames[frame] |= led <= frame ? 1u << led : 0u;
                    wakeUpFrames[frame] |= led <= frame ? 1u << led + 14 : 0u;
                }
                reverseWakeUpFrames[frame]  = ReverseWord(wakeUpFrames[frame] & 0xFFFF);
                reverseWakeUpFrames[frame] |= ReverseWord(wakeUpFrames[frame] >> 16) << 16;
            }
            for (var frame = 14; frame < 17; frame++)
            {
                for (var led = 0; led < 32; led++)
                {
                    wakeUpFrames[frame] |= led <= frame + 14 ? 1u << led : 0u;
                }
                reverseWakeUpFrames[frame]  = ReverseWord(wakeUpFrames[frame] & 0xFFFF);
                reverseWakeUpFrames[frame] |= ReverseWord(wakeUpFrames[frame] >> 16) << 16;
            }

            // initialize "chase" transition frames
            for (var frame = 0; frame < 14; frame++)
            {
                for (var led = 0; led < 14; led++)
                {
                    chaseFrames[frame] |= led == frame ? 1u << led - 1: 0u;
                    //chaseFrames[frame] |= led == frame ? 1u << led + 14 : 0u;
                    chaseFrames[frame] |= led == 14 - frame ? 1u << led + 13 : 0u;
                }
            }
            for (var frame = 14; frame < 26; frame++)
            {
                for (var led = 0; led < 14; led++)
                {
                    chaseFrames[frame] |= led == 14 - (frame - 14) ? 1u << led - 1 : 0u;
                    //chaseFrames[frame] |= led == 14 - (frame - 14) ? 1u << led + 14: 0u;
                    chaseFrames[frame] |= led == frame - 14 ? 1u << led + 13 : 0u;
                }
            }

            // initialize "curtain" transition frames
            if (_wiringMode == SmartAsdMode.Dedicated6Buttons)
            {
                curtainFrames = new uint[] {
                    0xFEEFFBBF, 0xFEEFFBBF,
                    0xFEEFFBBF, 0xFEEFFBBF,
                    0x9EEEE3BF, 0x9EEEE3BF,
                    0x0ECCA19D, 0x0ECCA19D,
                    0x0E88208C, 0x0E88208C,
                    0x0E002004, 0x0E002004,
                    0x08002000, 0x08002000,
                    0x00000000, 0x00000000,
                    0x00000000, 0x00000000,
                    0x08002000, 0x08002000,
                    0x0E002004, 0x0E002004,
                    0x0E88208C, 0x0E88208C,
                    0x0ECCA19D, 0x0ECCA19D,
                    0x9EEEE3BF, 0x9EEEE3BF,
                    0xFEEFFBBF, 0xFEEFFBBF,
                    0xFEEFFBBF, 0xFEEFFBBF,
                }
            }
            ;
            // dungeonmaster's version
            //curtainFrames = new uint[] {
            //    0x00000000, 0x00000000,
            //    0x00000000, 0x00000000,
            //    0x00884089, 0x00884089,
            //    0x90440110, 0x90440110,
            //    0x60220220, 0x60220220,
            //    0x08012004, 0x08012004,
            //    0x60220220, 0x60220220,
            //    0x90440110, 0x90440110,
            //    0x00884089, 0x00884089
            //};
            else
            {
                curtainFrames = new uint[] {
                    0x00000000, 0x00000000,
                    0x00000000, 0x00000000,
                    0x08002000, 0x08002000,
                    0x0E002004, 0x0E002004,
                    0x0F10208C, 0x0F10208C,
                    0x0F98A19D, 0x0F98A19D,
                    0x0FDCE3BF, 0x0FDCE3BF,
                    0x9FFEE7FF, 0x9FFEE7FF,
                    0xFFFFFFFF, 0xFFFFFFFF,
                    0xFFFFFFFF, 0xFFFFFFFF
                };

                curtainFrames = new uint[] {
                    0xFFFFFFFF, 0xFFFFFFFF,
                    0xFFFFFFFF, 0xFFFFFFFF,
                    0x9FFFFFFF, 0x9FFFFFFF,
                    0x0FFFFFFF, 0x0FFFFFFF,
                    0x0FFEE7FF, 0x0FFEE7FF,
                    0x0FDCE3BF, 0x0FDCE3BF,
                    0x0F98A19D, 0x0F98A19D,
                    0x0F10208C, 0x0F10208C,
                    0x0E002004, 0x0E002004,
                    0x08002000, 0x08002000,
                    0x00000000, 0x00000000,
                    0x00000000, 0x00000000,
                    0x08002000, 0x08002000,
                    0x0E002004, 0x0E002004,
                    0x0F10208C, 0x0F10208C,
                    0x0F98A19D, 0x0F98A19D,
                    0x0FDCE3BF, 0x0FDCE3BF,
                    0x9FFEE7FF, 0x9FFEE7FF,
                    0xFFFFFFFF, 0xFFFFFFFF
                };
            }

            _curFETransition     = FETransition.None;
            _curTransitionFrames = noneFrames;
            ResetLed(false);
        }