Ejemplo n.º 1
0
        public override void Draw(GameTime gameTime)
        {
            if (!IsActive)
            {
                return;
            }

            ScreenManager.SpriteBatch.Begin();

            //corners
            ScreenManager.SpriteBatch.Draw(CornerLT, Position,
                                           null, Color * Alpha, 0, Vector2.Zero, 1f, SpriteEffects.None, 0); //lefttop
            ScreenManager.SpriteBatch.Draw(CornerRT, Position + new Vector2(Width - 4, 0),
                                           null, Color * Alpha, 0, Vector2.Zero, 1f, SpriteEffects.None, 0); //righttop
            ScreenManager.SpriteBatch.Draw(CornerLB, Position + new Vector2(0, Height - 4),
                                           null, Color * Alpha, 0, Vector2.Zero, 1f, SpriteEffects.None, 0); //leftbot
            ScreenManager.SpriteBatch.Draw(CornerRB, Position + new Vector2(Width - 4, Height - 4),
                                           null, Color * Alpha, 0, Vector2.Zero, 1f, SpriteEffects.None, 0); //rightbot

            Vector2 pos = Position;

            ScreenManager.SpriteBatch.Draw(Default,
                                           new Rectangle((int)pos.X + Default.Width, (int)pos.Y + Default.Height,
                                                         (int)Width - CornerRT.Width - Default.Width,
                                                         (int)Height - CornerRB.Height - Default.Height),
                                           Color * Alpha);

            pos = Position + new Vector2(CornerLT.Width, 0);
            //left to right

            ScreenManager.SpriteBatch.Draw(BorderT,
                                           new Rectangle((int)pos.X, (int)pos.Y,
                                                         (int)Width - CornerRT.Width - Default.Width,
                                                         BorderT.Height), Color * Alpha);

            ScreenManager.SpriteBatch.Draw(BorderB,
                                           new Rectangle((int)pos.X, (int)(pos.Y + Height - BorderB.Height),
                                                         (int)(Width - CornerRT.Width - Default.Width),
                                                         BorderB.Height), Color * Alpha);
            //top to bot
            pos = Position + new Vector2(0, CornerLT.Height);

            ScreenManager.SpriteBatch.Draw(BorderL,
                                           new Rectangle((int)pos.X, (int)pos.Y,
                                                         BorderL.Width,
                                                         (int)(Height - BorderL.Height - Default.Height)), Color * Alpha);

            ScreenManager.SpriteBatch.Draw(BorderR,
                                           new Rectangle((int)(pos.X + Width - CornerRT.Width), (int)pos.Y,
                                                         BorderR.Width,
                                                         (int)(Height - BorderR.Height - Default.Height)), Color * Alpha);


            ScreenManager.SpriteBatch.End();

            foreach (UITextureDemo tdemo in TexturesDemo)
            {
                tdemo.Draw(gameTime);
                if (tdemo.TextureTypeName == currentTextureType.ToString())
                {
                    ScreenManager.SpriteBatch.Begin();
                    ScreenManager.SpriteBatch.Draw(Frame, new Vector2(tdemo.Position.X + tdemo.Width / 2 - Frame.Width / 2, tdemo.Position.Y + 6),
                                                   null, Color.White * Alpha, 0, Vector2.Zero, 1.0f, SpriteEffects.None, 0);
                    ScreenManager.SpriteBatch.End();
                }
            }

            Font.Draw(gameTime);
            base.Draw(gameTime);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Изменение типа текстуры
        /// </summary>
        /// <param name="type">Тип текстуры</param>
        /// <param name="countTileTypes">Количество тайлов в один ряд (кол-во столбцов). Для рандомности выбора однотипной текстуры</param>
        public void ChangeType(MapEntryTextureType type, int countTileTypes = 5)
        {
            cntTileTypes = Math.Max(0, countTileTypes);

            switch (type)
            {
            //None (стираем всё)
            case MapEntryTextureType.None:
            default:
                CollidingTexture      = null;
                CollideTextureType    = MapEntryTextureType.None;
                NonCollidingTexture   = null;
                NonCollideTextureType = MapEntryTextureType.None;
                DecorateTexture       = null;
                DecorateTextureType   = MapEntryTextureType.None;
                break;

            //CollideTexture
            case MapEntryTextureType.Dirt:
            case MapEntryTextureType.Gold:
            case MapEntryTextureType.Grass:
            case MapEntryTextureType.Silver:
            case MapEntryTextureType.Stone:
                if (CollideTextureType != type)
                {
                    CollideTextureType = type;
                    TileStartPoint     = new Point(rnd.Next(0, cntTileTypes), 0);
                    TilesRow           = 0;
                    WatchNearbyCells   = false;
                    CollidingTexture   = TextureManager.GetTexture(TextureType.Tilesets, CollideTextureType.ToString());
                }
                break;

            //NonCollideTexture
            case MapEntryTextureType.BackDirt:
            case MapEntryTextureType.BackWall:
                if (NonCollideTextureType != type || CollidingTexture != null)
                {
                    NonCollideTextureType = type;
                    TileStartPoint        = new Point(rnd.Next(0, cntTileTypes), 0);
                    TilesRow            = 0;
                    WatchNearbyCells    = true;
                    NonCollidingTexture = TextureManager.GetTexture(TextureType.Tilesets, NonCollideTextureType.ToString());
                    CollideTextureType  = MapEntryTextureType.None;
                    CollidingTexture    = null;
                }
                break;
            }
        }