static BattleEffectInfo CreateSimpleEffect(IRenderView renderView, uint tile, CombatGraphicIndex graphicIndex,
                                                   Character[] battleField, uint duration, Func <bool, int> yOffsetProvider = null, float scale = 1.0f, bool ground = false)
        {
            var info     = renderView.GraphicProvider.GetCombatGraphicInfo(graphicIndex);
            var position = GetCenterPosition(renderView, tile, battleField, yOffsetProvider?.Invoke(battleField[tile] is Monster) ?? 0);

            scale *= GetScaleFromRow(renderView, tile, battleField);

            if (ground && battleField[tile] is Monster)
            {
                var offsetY         = yOffsetProvider?.Invoke(true) ?? 0;
                var groundPositionY = Layout.GetMonsterCombatGroundPosition(renderView, (int)tile).Y + offsetY;
                int effectHeight    = Util.Round(scale * info.GraphicInfo.Height);
                position.Y = groundPositionY - effectHeight / 2;
            }

            return(new BattleEffectInfo
            {
                StartPosition = position,
                EndPosition = position,
                StartScale = scale,
                EndScale = scale,
                StartTextureIndex = Graphics.CombatGraphicOffset + (uint)graphicIndex,
                FrameSize = new Size(info.GraphicInfo.Width, info.GraphicInfo.Height),
                FrameCount = info.FrameCount,
                Duration = duration,
                InitialDisplayLayer = (byte)Math.Min(255, (tile / 6) * 60 + 60), // display over the given row
                EndDisplayLayer = (byte)Math.Min(255, (tile / 6) * 60 + 60),     // display over the given row
                MirrorX = false
            });
        }
Exemple #2
0
        public Popup(Game game, IRenderView renderView, Position position, int columns, int rows, bool transparent,
                     byte displayLayerOffset = 0)
        {
            if (columns < 3 || rows < 3)
            {
                throw new AmbermoonException(ExceptionScope.Application, "Popups must at least have 3 columns and 3 rows.");
            }

            DisplayLayer    = (byte)Math.Min(255, BaseDisplayLayer + displayLayerOffset);
            this.game       = game;
            this.renderView = renderView;
            textureAtlas    = TextureAtlasManager.Instance.GetOrCreate(Layer.UI);

            void AddBorder(PopupFrame frame, int column, int row)
            {
                var sprite = renderView.SpriteFactory.Create(16, 16, true, DisplayLayer) as ILayerSprite;

                sprite.Layer = renderView.GetLayer(Layer.UI);
                sprite.TextureAtlasOffset = textureAtlas.GetOffset(Graphics.GetPopupFrameGraphicIndex(frame));
                sprite.PaletteIndex       = game.UIPaletteIndex;
                sprite.X       = position.X + column * 16;
                sprite.Y       = position.Y + row * 16;
                sprite.Visible = true;
                borders.Add(sprite);
            }

            if (!transparent)
            {
                // 4 corners
                AddBorder(PopupFrame.FrameUpperLeft, 0, 0);
                AddBorder(PopupFrame.FrameUpperRight, columns - 1, 0);
                AddBorder(PopupFrame.FrameLowerLeft, 0, rows - 1);
                AddBorder(PopupFrame.FrameLowerRight, columns - 1, rows - 1);

                // top and bottom border
                for (int i = 0; i < columns - 2; ++i)
                {
                    AddBorder(PopupFrame.FrameTop, i + 1, 0);
                    AddBorder(PopupFrame.FrameBottom, i + 1, rows - 1);
                }

                // left and right border
                for (int i = 0; i < rows - 2; ++i)
                {
                    AddBorder(PopupFrame.FrameLeft, 0, i + 1);
                    AddBorder(PopupFrame.FrameRight, columns - 1, i + 1);
                }

                // fill
                // TODO: use named palette color
                fill = renderView.ColoredRectFactory.Create((columns - 2) * 16, (rows - 2) * 16,
                                                            game.GetUIColor(28), DisplayLayer);
                fill.Layer   = renderView.GetLayer(Layer.UI);
                fill.X       = position.X + 16;
                fill.Y       = position.Y + 16;
                fill.Visible = true;

                ContentArea = new Rect(fill.X, fill.Y, fill.Width, fill.Height);
            }
        }
Exemple #3
0
 public OutroFactory(IRenderView renderView, OutroData outroData, Font outroFont, Font outroFontLarge)
 {
     this.renderView     = renderView;
     this.outroData      = outroData;
     this.outroFont      = outroFont;
     this.outroFontLarge = outroFontLarge;
 }
        public RenderMap2D(Game game, Map map, IMapManager mapManager, IRenderView renderView,
                           uint initialScrollX = 0, uint initialScrollY = 0)
        {
            this.game       = game;
            this.mapManager = mapManager;
            this.renderView = renderView;

            var spriteFactory = renderView.SpriteFactory;

            for (int row = 0; row < NUM_VISIBLE_TILES_Y; ++row)
            {
                for (int column = 0; column < NUM_VISIBLE_TILES_X; ++column)
                {
                    var backgroundSprite = spriteFactory.CreateAnimated(TILE_WIDTH, TILE_HEIGHT, 0, 1);
                    var foregroundSprite = spriteFactory.CreateAnimated(TILE_WIDTH, TILE_HEIGHT, 0, 1);

                    backgroundSprite.Visible = true;
                    backgroundSprite.X       = Global.Map2DViewX + column * TILE_WIDTH;
                    backgroundSprite.Y       = Global.Map2DViewY + row * TILE_HEIGHT;
                    foregroundSprite.Visible = false;
                    foregroundSprite.X       = Global.Map2DViewX + column * TILE_WIDTH;
                    foregroundSprite.Y       = Global.Map2DViewY + row * TILE_HEIGHT;

                    backgroundTileSprites.Add(backgroundSprite);
                    foregroundTileSprites.Add(foregroundSprite);
                }
            }

            SetMap(map, initialScrollX, initialScrollY);
        }
        static BattleEffectInfo CreateFlyingEffect(IRenderView renderView, uint sourceTile, uint targetTile,
                                                   CombatGraphicIndex graphicIndex, Character[] battleField, float baseScale = 1.0f)
        {
            var info          = renderView.GraphicProvider.GetCombatGraphicInfo(graphicIndex);
            var startPosition = GetProjectileTargetPosition(renderView, sourceTile, battleField);
            var endPosition   = GetProjectileTargetPosition(renderView, targetTile, battleField);
            var sourceScale   = GetScaleFromRow(renderView, sourceTile, battleField);
            var targetScale   = GetScaleFromRow(renderView, targetTile, battleField);
            int maxY          = Global.CombatBackgroundArea.Bottom;

            if (startPosition.Y > maxY)
            {
                startPosition.Y = maxY;
            }
            if (endPosition.Y > maxY)
            {
                endPosition.Y = maxY;
            }

            return(new BattleEffectInfo
            {
                StartPosition = startPosition,
                EndPosition = endPosition,
                StartScale = sourceScale * baseScale,
                EndScale = targetScale * baseScale,
                StartTextureIndex = Graphics.CombatGraphicOffset + (uint)graphicIndex,
                FrameSize = new Size(info.GraphicInfo.Width, info.GraphicInfo.Height),
                FrameCount = info.FrameCount,
                Duration = GetFlyDuration(sourceTile, targetTile),
                InitialDisplayLayer = (byte)Math.Min(255, (sourceTile / 6) * 60 + 60), // display over the given row
                EndDisplayLayer = (byte)Math.Min(255, (targetTile / 6) * 60 + 60),     // display over the given row
                MirrorX = battleField[(int)sourceTile] is Monster ? startPosition.X <endPosition.X : startPosition.X> endPosition.X
            });
        }
Exemple #6
0
        public Text(IRenderView renderView, Layer layer, string text, IReadOnlyDictionary <char, Glyph> glyphs,
                    List <char> characters, byte displayLayer, int spaceWidth, bool upperOnly, uint textureAtlasIndexOffset)
        {
            totalWidth = 0;
            var textureAtlas = TextureAtlasManager.Instance.GetOrCreate(layer);

            if (upperOnly)
            {
                text = text.ToUpper();
            }

            foreach (char ch in text)
            {
                if (ch == ' ')
                {
                    totalWidth += spaceWidth;
                }
                else if (glyphs.TryGetValue(ch, out var glyph))
                {
                    var sprite = renderView.SpriteFactory.Create(glyph.Graphic.Width, glyph.Graphic.Height, true, displayLayer) as ILayerSprite;
                    sprite.TextureAtlasOffset = textureAtlas.GetOffset((uint)characters.IndexOf(ch) + textureAtlasIndexOffset);
                    sprite.X            = totalWidth;
                    sprite.Y            = 0;
                    sprite.Layer        = renderView.GetLayer(layer);
                    sprite.PaletteIndex = (byte)(renderView.GraphicProvider.PrimaryUIPaletteIndex - 1);
                    sprite.Visible      = false;
                    renderGlyphs.Add(sprite);
                    totalWidth += glyph.Advance;
                }
            }
        }
Exemple #7
0
        public Outro(IRenderView renderView, OutroData outroData, Font outroFont, Font outroFontLarge, Action finishAction)
        {
            this.finishAction    = finishAction;
            this.outroData       = outroData;
            this.outroFont       = outroFont;
            this.outroFontLarge  = outroFontLarge;
            this.renderView      = renderView;
            renderLayer          = renderView.GetLayer(Layer.OutroGraphics);
            picture              = renderView.SpriteFactory.Create(160, 128, true, 1) as ILayerSprite;
            picture.Layer        = renderLayer;
            picture.PaletteIndex = paletteOffset = renderView.GraphicProvider.FirstOutroPaletteIndex;
            picture.Visible      = false;
            renderTextFactory    = renderView.RenderTextFactory;
            textProcessor        = renderView.TextProcessor;

            fadeArea         = renderView.ColoredRectFactory.Create(Global.VirtualScreenWidth, Global.VirtualScreenHeight, Color.Black, 255);
            fadeArea.Layer   = renderView.GetLayer(Layer.Effects);
            fadeArea.X       = 0;
            fadeArea.Y       = 0;
            fadeArea.Visible = false;

            graphicInfos = outroData.GraphicInfos;

            EnsureTextures(renderView, outroData, outroFont, outroFontLarge);
        }
        static float GetScaleFromRow(IRenderView renderView, uint tile, Character[] battleField)
        {
            if (battleField[(int)tile]?.Type == CharacterType.PartyMember)
            {
                return(2.0f);
            }

            return(renderView.GraphicProvider.GetMonsterRowImageScaleFactor((MonsterRow)(tile / 6)));
        }
 static Position GetProjectileTargetPosition(IRenderView renderView, uint tile, Character[] battleField)
 {
     if (battleField[(int)tile] is Monster monster)
     {
         return(Layout.GetMonsterCombatCenterPosition(renderView, (int)tile, monster));
     }
     else
     {
         return(Layout.GetPlayerSlotTargetPosition((int)tile % 6) - new Position(0, 6));
     }
 }
Exemple #10
0
        readonly List <SpriteInfo> characterSpritesNew    = new List <SpriteInfo>(); // shared by all texts

        public TextRenderer(IRenderView renderView)
        {
            spriteFactory = renderView.SpriteFactory;
            layerLegacy   = renderView.GetLayer(Layer.Gui);
            layerNewFont  = renderView.GetLayer(Layer.GuiFont);

            // original size is 8x8 pixels
            characterSizeLegacy = new Size(8, 8);
            // new font uses a different size
            characterSizeNew = new Size(Global.UIFontCharacterWidth, Global.UIFontCharacterHeight);
        }
Exemple #11
0
 /// <summary>
 /// Returns the number of pixels per unit on the near plane.
 /// ISSUE: Does not consider ClippingWindow of projection
 /// </summary>
 public static V2d PixelsPerUnitOnNearPlane(this IRenderView rv)
 {
     if (rv.Projection is ICameraProjectionPerspective)
     {
         var unitsOnNearPlane = Fun.Tan(((ICameraProjectionPerspective)rv.Projection).HorizontalFieldOfViewInDegrees.RadiansFromDegrees() * 0.5) * 2 * rv.Projection.Near;
         return((V2d)rv.Region.Size / new V2d(unitsOnNearPlane, unitsOnNearPlane / rv.Projection.AspectRatio));
     }
     else
     {
         return((V2d)rv.Region.Size / rv.Projection.ClippingWindow.Size);
     }
 }
        static Position GetCenterPosition(IRenderView renderView, uint tile, Character[] battleField, int yOffset = 0)
        {
            var offset = new Position(0, yOffset);

            if (battleField[(int)tile] is Monster monster)
            {
                return(Layout.GetMonsterCombatCenterPosition(renderView, (int)tile, monster) + offset);
            }
            else
            {
                return(Layout.GetPlayerSlotTargetPosition((int)tile % 6) + offset);
            }
        }
Exemple #13
0
 static void EnsureTextures(IRenderView renderView, OutroData outroData, Font outroFont, Font outroFontLarge)
 {
     if (textureAtlas == null)
     {
         TextureAtlasManager.Instance.AddFromGraphics(Layer.OutroGraphics,
                                                      outroData.Graphics.Select((g, i) => new { Graphic = g, Index = i }).ToDictionary(g => (uint)g.Index, g => g.Graphic));
         textureAtlas = TextureAtlasManager.Instance.GetOrCreate(Layer.OutroGraphics);
         renderView.GetLayer(Layer.OutroGraphics).Texture = textureAtlas.Texture;
         TextureAtlasManager.Instance.AddFromGraphics(Layer.OutroText, outroFont.GlyphGraphics);
         TextureAtlasManager.Instance.AddFromGraphics(Layer.OutroText, outroFontLarge.GlyphGraphics);
         renderView.GetLayer(Layer.OutroText).Texture = TextureAtlasManager.Instance.GetOrCreate(Layer.OutroText).Texture;
     }
 }
Exemple #14
0
        public ButtonGrid(IRenderView renderView)
        {
            area = new Rect(Global.ButtonGridX, Global.ButtonGridY, 3 * Button.Width, 3 * Button.Height);

            for (int i = 0; i < 9; ++i)
            {
                buttons[i] = new Button
                             (
                    renderView,
                    new Position(Global.ButtonGridX + (i % 3) * Button.Width, Global.ButtonGridY + (i / 3) * Button.Height)
                             );
            }
        }
 private MapCharacter2D(Game game, IRenderView renderView, Layer layer, IMapManager mapManager,
                        RenderMap2D map, uint characterIndex, Map.CharacterReference characterReference)
     : base(game, renderView.GetLayer(layer), TextureAtlasManager.Instance.GetOrCreate(layer),
            renderView.SpriteFactory, () => AnimationProvider(game, map.Map, mapManager,
                                                              characterReference, renderView.GraphicProvider), map, GetStartPosition(characterReference),
            () => Math.Max(1, map.Map.PaletteIndex) - 1, () => NullOffset)
 {
     this.game               = game;
     this.map                = map.Map;
     tileset                 = mapManager.GetTilesetForMap(this.map);
     this.characterIndex     = characterIndex;
     this.characterReference = characterReference;
     lastTimeSlot            = game.GameTime.TimeSlot;
 }
Exemple #16
0
        ListBox(IRenderView renderView, Game game, Popup popup, List <KeyValuePair <string, Action <int, string> > > items,
                Rect area, Position itemBasePosition, int itemHeight, int hoverBoxWidth, Position relativeHoverBoxOffset,
                bool withIndex, int maxItems, char?fallbackChar = null, bool canEdit = false,
                Func <string, TextColor> colorProvider          = null)
        {
            this.game                   = game;
            this.renderView             = renderView;
            this.items                  = items;
            this.relativeHoverBoxOffset = relativeHoverBoxOffset;
            this.maxItems               = maxItems;
            this.canEdit                = canEdit;
            this.colorProvider          = colorProvider;

            popup.AddSunkenBox(area);
            hoverBox = popup.FillArea(new Rect(itemBasePosition + relativeHoverBoxOffset, new Size(hoverBoxWidth, itemHeight)),
                                      game.GetTextColor(TextColor.Bright), 3);
            hoverBox.Visible = false;

            for (int i = 0; i < Util.Min(maxItems, items.Count); ++i)
            {
                var color = items[i].Value == null ? TextColor.Disabled
                    : colorProvider?.Invoke(items[i].Key) ?? TextColor.Bright;

                if (withIndex)
                {
                    int y = itemBasePosition.Y + i * itemHeight;
                    itemIndices.Add(popup.AddText(new Position(itemBasePosition.X, y), $"{i + 1,2}", color, true, 4));
                    itemTexts.Add(popup.AddText(new Position(itemBasePosition.X + 17, y), items[i].Key, color, true, 4, fallbackChar));
                }
                else
                {
                    itemTexts.Add(popup.AddText(new Position(itemBasePosition.X, itemBasePosition.Y + i * itemHeight),
                                                items[i].Key, color, true, 4, fallbackChar));
                }
                itemAreas.Add(new Rect(itemBasePosition.X, itemBasePosition.Y + i * itemHeight, area.Right - itemBasePosition.X - 1, itemHeight));
            }

            if (canEdit && itemTexts.Count != 0)
            {
                editInput = new TextInput(game, renderView, new Position(), (itemTexts[0].Width / Global.GlyphWidth) - 1,
                                          (byte)(popup.DisplayLayer + 6), TextInput.ClickAction.Submit, TextInput.ClickAction.Abort, TextAlign.Left)
                {
                    ClearOnNewInput     = false,
                    DigitsOnly          = false,
                    ReactToGlobalClicks = true
                };
                editInput.InputSubmitted += _ => CommitEdit();
            }
        }
Exemple #17
0
        public Cursor(IRenderView renderView, IReadOnlyList <Position> cursorHotspots, TextureAtlasManager textureAtlasManager = null)
        {
            this.renderView     = renderView;
            textureAtlas        = (textureAtlasManager ?? TextureAtlasManager.Instance).GetOrCreate(Layer.Cursor);
            sprite              = renderView.SpriteFactory.Create(16, 16, true);
            sprite.PaletteIndex = 0;
            sprite.Layer        = renderView.GetLayer(Layer.Cursor);

            for (int i = 0; i < cursorHotspots.Count; ++i)
            {
                this.cursorHotspots.Add((CursorType)i, cursorHotspots[i]);
            }

            UpdateCursor();
        }
Exemple #18
0
        public Interface(IRenderView renderView, Audio.IAudioInterface audioInterface, Viewer viewer)
            : base(renderView, audioInterface)
        {
            RenderView     = renderView;
            AudioInterface = audioInterface;
            Viewer         = viewer;

            TextRenderer = new TextRenderer(renderView);

            displayed = true;
            config    = UserConfig.Game.Options;

            mapCursorSprites[0] = new SpriteLocation {
                Sprite = 31
            };
            mapCursorSprites[1] = new SpriteLocation {
                Sprite = 32
            };
            mapCursorSprites[2] = new SpriteLocation {
                Sprite = 32
            };
            mapCursorSprites[3] = new SpriteLocation {
                Sprite = 32
            };
            mapCursorSprites[4] = new SpriteLocation {
                Sprite = 32
            };
            mapCursorSprites[5] = new SpriteLocation {
                Sprite = 32
            };
            mapCursorSprites[6] = new SpriteLocation {
                Sprite = 32
            };

            cursorSprite         = renderView.SpriteFactory.Create(16, 16, 0, 0, false, false, 255);
            cursorSprite.Layer   = renderView.GetLayer(Freeserf.Layer.Cursor);
            cursorSprite.Visible = true;

            SetSize(640, 480); // original size

            Viewport = null;

            PanelBar = new PanelBar(this);
            AddChild(PanelBar, 0, 0, false);
            Layout();
        }
Exemple #19
0
        public BaseController()
        {
            PartialRenderer = this;
            ViewRenderer    = this;

            // Ensure user is in database
            //
            if (System.Web.HttpContext.Current.User.Identity.IsAuthenticated)
            {
                Repository db   = new Repository();
                MFUser     user = db.GetUserById(System.Web.HttpContext.Current.User.Identity.Name);
                if (user == null)
                {
                    user = db.CreateUser((Facebook.FacebookUser)System.Web.HttpContext.Current.User);
                    db.SaveChanges();
                }
            }
        }
 public static List <BattleEffectInfo> GetEffectInfo(IRenderView renderView, BattleEffect battleEffect, uint sourceTile, uint targetTile,
                                                     Character[] battleField, float scale = 1.0f)
 {
     return(battleEffect switch
     {
         BattleEffect.HurtMonster => Effects(CreateSimpleEffect(renderView, targetTile, CombatGraphicIndex.Blood, battleField, Game.TicksPerSecond / 3)),
         BattleEffect.HurtPlayer => Effects(CreateSimpleEffect(renderView, targetTile, CombatGraphicIndex.AttackClaw, battleField, Game.TicksPerSecond / 2, _ => - 28)),
         BattleEffect.MonsterArrowAttack => Effects(CreateFlyingEffect(renderView, sourceTile, targetTile, CombatGraphicIndex.ArrowGreenMonster, battleField)),
         BattleEffect.MonsterBoltAttack => Effects(CreateFlyingEffect(renderView, sourceTile, targetTile, CombatGraphicIndex.ArrowRedMonster, battleField)),
         BattleEffect.PlayerArrowAttack => Effects(CreateFlyingEffect(renderView, sourceTile, targetTile, CombatGraphicIndex.ArrowGreenHuman, battleField)),
         BattleEffect.PlayerBoltAttack => Effects(CreateFlyingEffect(renderView, sourceTile, targetTile, CombatGraphicIndex.ArrowRedHuman, battleField)),
         BattleEffect.SlingstoneAttack => Effects(CreateFlyingEffect(renderView, sourceTile, targetTile, CombatGraphicIndex.Slingstone, battleField)),
         BattleEffect.SlingdaggerAttack => Effects(CreateFlyingEffect(renderView, sourceTile, targetTile, CombatGraphicIndex.Slingdagger, battleField)),
         BattleEffect.SickleAttack => Effects(CreateFlyingEffect(renderView, sourceTile, targetTile, CombatGraphicIndex.FlyingSickle, battleField, 1.5f)),
         BattleEffect.Death => Effects(CreateSimpleEffect(renderView, targetTile, CombatGraphicIndex.DeathAnimation, battleField, Game.TicksPerSecond * 5 / 4, null, scale, true)),
         BattleEffect.BlockSpell => Effects(CreateSimpleEffect(renderView, targetTile, CombatGraphicIndex.SpellBlock, battleField, Game.TicksPerSecond / 2, monster => monster ? -32 : -46)),
         BattleEffect.PlayerAtack => Effects(CreateSimpleEffect(renderView, targetTile, CombatGraphicIndex.AttackSword, battleField, Game.TicksPerSecond / 4, _ => - 10)),
         _ => null
     });
        static BattleEffectInfo CreateSimpleEffect(IRenderView renderView, uint sourceTile, uint targetTile, CombatGraphicIndex graphicIndex,
                                                   Character[] battleField, uint duration, float startScale = 1.0f, float scaleChangePerY = 0.0f)
        {
            var   info          = renderView.GraphicProvider.GetCombatGraphicInfo(graphicIndex);
            var   startPosition = GetCenterPosition(renderView, sourceTile, battleField);
            var   endPosition   = GetCenterPosition(renderView, targetTile, battleField);
            float endScale      = startScale + (endPosition.Y - startPosition.Y) * scaleChangePerY;

            return(new BattleEffectInfo
            {
                StartPosition = startPosition,
                EndPosition = endPosition,
                StartScale = startScale,
                EndScale = endScale,
                StartTextureIndex = Graphics.CombatGraphicOffset + (uint)graphicIndex,
                FrameSize = new Size(info.GraphicInfo.Width, info.GraphicInfo.Height),
                FrameCount = info.FrameCount,
                Duration = duration,
                InitialDisplayLayer = (byte)Math.Min(255, (sourceTile / 6) * 60 + 60), // display over the given row
                EndDisplayLayer = (byte)Math.Min(255, (sourceTile / 6) * 60 + 60),     // display over the given row
                MirrorX = false
            });
        }
Exemple #22
0
        public Button(IRenderView renderView, Position position,
                      TextureAtlasManager textureAtlasManager = null)
        {
            Area = new Rect(position, new Size(Width, Height));
            byte paletteIndex = (byte)(renderView.GraphicProvider.PrimaryUIPaletteIndex - 1);

            frameSprite    = renderView.SpriteFactory.Create(Width, Height, true, 3) as ILayerSprite;
            disableOverlay = renderView.SpriteFactory.Create(Width, Height - 6, true, 5) as ILayerSprite;
            iconSprite     = renderView.SpriteFactory.Create(Width, Height - 4, true, 4) as ILayerSprite;

            var layer = renderView.GetLayer(Layer.UI);

            frameSprite.Layer    = layer;
            disableOverlay.Layer = layer;
            iconSprite.Layer     = layer;

            textureAtlas = (textureAtlasManager ?? TextureAtlasManager.Instance).GetOrCreate(Layer.UI);
            frameSprite.TextureAtlasOffset    = textureAtlas.GetOffset(Graphics.GetUIGraphicIndex(UIGraphic.ButtonFrame));
            disableOverlay.TextureAtlasOffset = textureAtlas.GetOffset(Graphics.GetUIGraphicIndex(UIGraphic.ButtonDisabledOverlay));
            iconSprite.TextureAtlasOffset     = textureAtlas.GetOffset(Graphics.GetButtonGraphicIndex(ButtonType.Empty));

            frameSprite.PaletteIndex    = paletteIndex;
            disableOverlay.PaletteIndex = paletteIndex;
            iconSprite.PaletteIndex     = paletteIndex;

            frameSprite.X    = position.X;
            frameSprite.Y    = position.Y;
            disableOverlay.X = position.X;
            disableOverlay.Y = position.Y + 3;
            iconSprite.X     = position.X;
            iconSprite.Y     = position.Y + 2;

            frameSprite.Visible    = true;
            disableOverlay.Visible = false;
            iconSprite.Visible     = true;
        }
Exemple #23
0
 public static ListBox CreateSpellListbox(IRenderView renderView, Game game, Popup popup,
                                          List <KeyValuePair <string, Action <int, string> > > items)
 {
     return(new ListBox(renderView, game, popup, items, new Rect(48, 56, 162, 115),
                        new Position(52, 58), 7, 159, new Position(-3, -1), false, 16));
 }
Exemple #24
0
 public static ListBox CreateDictionaryListbox(IRenderView renderView, Game game, Popup popup,
                                               List <KeyValuePair <string, Action <int, string> > > items, Func <string, TextColor> colorProvider)
 {
     return(new ListBox(renderView, game, popup, items, new Rect(48, 48, 130, 115),
                        new Position(52, 50), 7, 127, new Position(-3, -1), false, 16, null, false, colorProvider));
 }
Exemple #25
0
 public static ListBox CreateSavegameListbox(IRenderView renderView, Game game, Popup popup,
                                             List <KeyValuePair <string, Action <int, string> > > items, bool canEdit)
 {
     return(new ListBox(renderView, game, popup, items, new Rect(32, 85, 256, 73),
                        new Position(33, 87), 7, 237, new Position(16, -1), true, 10, '?', canEdit));
 }
Exemple #26
0
 public static ListBox CreateOptionsListbox(IRenderView renderView, Game game, Popup popup,
                                            List <KeyValuePair <string, Action <int, string> > > items)
 {
     return(new ListBox(renderView, game, popup, items, new Rect(64, 85, 191, 38), new Position(67, 87), 7, 189, new Position(-2, -1), false, 5));
 }
Exemple #27
0
 public static ListBox CreateSongListbox(IRenderView renderView, Game game, Popup popup,
                                         List <KeyValuePair <string, Action <int, string> > > items)
 {
     return(new ListBox(renderView, game, popup, items, new Rect(32, 50, 192, 115),
                        new Position(36, 52), 7, 189, new Position(-3, -1), false, 16));
 }
Exemple #28
0
 public RemoteInterface(IRenderView renderView, Audio.IAudioInterface audioInterface, Viewer viewer)
     : base(renderView, audioInterface, viewer)
 {
 }
Exemple #29
0
 public ServerInterface(IRenderView renderView, Audio.IAudioInterface audioInterface, Viewer viewer, Network.ILocalServer server)
     : base(renderView, audioInterface, viewer)
 {
     this.server = server;
 }
Exemple #30
0
        /// <summary>
        /// Project a point from world-space to a pixel position.
        /// </summary>
        public static PixelPosition ProjectPixel(this IRenderView rv, V3d point)
        {
            var ndcPoint = rv.Project(point);

            return(new PixelPosition(ndcPoint, rv.Region));
        }
Exemple #31
0
        protected override void OnInitialized(EventArgs e)
        {
            if (!IsD3D10Supported())
                return;

            var renderView = new RenderView();
            var renderer = new TileControl.RendererD3DSharpDX();
            renderer.RenderData = renderView.RenderData;

            m_renderer = renderer;
            m_renderView = renderView;

            SetRenderer(renderer);

            this.TileLayoutChanged += OnTileArrangementChanged;
            this.AboutToRender += OnAboutToRender;

            m_renderer.TileSet = GameData.Data.TileSet;
            GameData.Data.TileSetChanged += OnTileSetChanged;

            base.OnInitialized(e);
        }