亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? ui.cs

?? 說明如何使用托管 Direct3D Mobile 創建一個簡單的二維游戲。
?? CS
字號:
//---------------------------------------------------------------------
//  This file is part of the Microsoft .NET Framework SDK Code Samples.
// 
//  Copyright (C) Microsoft Corporation.  All rights reserved.
// 
//This source code is intended only as a supplement to Microsoft
//Development Tools and/or on-line documentation.  See these other
//materials for detailed information regarding Microsoft code samples.
// 
//THIS CODE AND INFORMATION ARE PROVIDED AS IS WITHOUT WARRANTY OF ANY
//KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
//IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
//PARTICULAR PURPOSE.
//---------------------------------------------------------------------

using System;
using System.Collections;
using System.Data;
using System.Diagnostics;
using System.Drawing;
using System.Globalization;
using GraphicsLibrary;

namespace GameApp
{
    /// <summary>
    /// Implements the user interface for the gameplay portion of the game.
    /// </summary>
    public class UserInterface : IDisposable
    {
        /// <summary>
        /// A UI panel is a UI image on the screen.
        /// </summary>
        private class UIPanel : IDisposable
        {
            /// <summary>
            /// Bitmap associated with this panel
            /// </summary>
            private IBitmap bmp = null;

            /// <summary>
            /// Screen x coordinate at which to display this panel
            /// </summary>
            private int x = 0;

            /// <summary>
            /// Screen y coordinate at which to display this panel
            /// </summary>
            private int y = 0;

            /// <summary>
            /// Rectangle uses to define the panel source region for
            /// drawing.
            /// </summary>
            private Rectangle src = new Rectangle();

            /// <summary>
            /// Initialize a panel with the data contained in the DataRow.
            /// </summary>
            /// <param name="dr">DataRow that defines the panel</param>
            /// <param name="graphics">Graphics instance</param>
            public UIPanel(DataRow dr, IGraphics graphics)
            {
                Debug.Assert(dr != null,
                    "UIPanel.UIPanel: Invalid DataTable");

                x = int.Parse((string)dr["X"], CultureInfo.InvariantCulture);
                y = int.Parse((string)dr["Y"], CultureInfo.InvariantCulture);

                string fullName = GameMain.GetFullPath(
                    @"Data\UI\" + (string)dr["FileName"]);

                bmp = graphics.CreateBitmap(fullName, false);
                Debug.Assert(bmp != null,
                    "UIPanel.UIPanel: Failed to initialize UI panel bitmap");
            }

            /// <summary>
            /// Update the UI panel.  For the demo, this does nothing.
            /// </summary>
            public void Update()
            {
            }

            /// <summary>
            /// Draw the panel.
            /// </summary>
            /// <param name="graphics">Graphics instance</param>
            public void Draw(IGraphics graphics)
            {
                src.X = 0;
                src.Y = 0;
                src.Width = bmp.Width;
                src.Height = bmp.Height;

                graphics.DrawBitmap(x, y, src, bmp);
            }

            /// <summary>
            /// Free any resources allocated for the panel.
            /// </summary>
            public void Dispose()
            {
                if (bmp != null)
                    bmp.Dispose();
            }
        }

        /// <summary>
        /// List of panels that make the UI
        /// </summary>
        private ArrayList panels = new ArrayList();

        /// <summary>
        /// Gets the Font used for UI in the game.
        /// </summary>
        public IFont Font { get { return fontValue; } }
        private IFont fontValue = null;

        /// <summary>
        /// X screen coordinate of misfire text
        /// </summary>
        int misfireX;

        /// <summary>
        /// Y screen coordinate of misfire text
        /// </summary>
        int misfireY;

        /// <summary>
        /// Misfire text which is displayed when the player misfires.
        /// </summary>
        string misfireText = "";

        /// <summary>
        /// Length of time left for misfire to be displayed.
        /// </summary>
        private float misfireTime = 0.0F;

        /// <summary>
        /// Fill area of the player's shot bar.
        /// </summary>
        private Rectangle shotBarGreen = new Rectangle(0, 0, 0, 0);

        /// <summary>
        /// Outline of the player's shot bar.
        /// </summary>
        private Rectangle shotBarOutline = new Rectangle(0, 0, 0, 0);

        /// <summary>
        /// Initialize UI from the specified DataSet.
        /// </summary>
        /// <param name="ds">DataSet containing UI definition</param>
        /// <param name="graphics">Graphics instance</param>
        /// <param name="lev">Current level</param>
        public UserInterface(DataSet ds, IGraphics graphics, Level lev)
        {
            DataTable dt = ds.Tables["General"];
            Debug.Assert(dt != null && dt.Rows != null,
                "UI.UI: Invalid General DataTable");


            string fontName = (string)dt.Rows[0]["Font"];
            fontValue = graphics.CreateFont(GameMain.GetFullPath(fontName));
            Debug.Assert(fontValue != null,
                "UI.UI: Failed to initialize UI font");

            shotBarOutline.X = int.Parse((string)dt.Rows[0]["ShotBarX"], 
                CultureInfo.InvariantCulture);
            shotBarOutline.Y = int.Parse((string)dt.Rows[0]["ShotBarY"], 
                CultureInfo.InvariantCulture);
            shotBarOutline.Width = int.Parse(
                (string)dt.Rows[0]["ShotBarWidth"], 
                CultureInfo.InvariantCulture);
            shotBarOutline.Height = int.Parse(
                (string)dt.Rows[0]["ShotBarHeight"], 
                CultureInfo.InvariantCulture);

            misfireX = int.Parse((string)dt.Rows[0]["MisFireX"], 
                CultureInfo.InvariantCulture);
            misfireY = int.Parse((string)dt.Rows[0]["MisFireY"], 
                CultureInfo.InvariantCulture);

            dt = ds.Tables["Panel"];
            Debug.Assert(dt != null && dt.Rows != null,
                "UI.UI: Invalid Panel DataTable");

            foreach (DataRow dr in dt.Rows)
            {
                UIPanel p = new UIPanel(dr, graphics);
                Debug.Assert(p != null,
                    "UI.UI: Failed to initialize UIPanel");

                panels.Add(p);
            }

            shotBarGreen.X = shotBarOutline.X + 1;
            shotBarGreen.Y = shotBarOutline.Y + 1;
            shotBarGreen.Height = shotBarOutline.Height - 2;
        }

        /// <summary>
        /// Upate the game UI.
        /// </summary>
        /// <param name="lev">Current level</param>
        public void Update(Level lev)
        {
            foreach (UIPanel p in panels)
            {
                p.Update();
            }

            if (lev.Player.Misfire)
            {
                misfireTime = 0.5F;
                misfireText = "Misfire";
            }
            else if (misfireTime <= 0.0F)
            {
                misfireText = "";
            }

            misfireTime -= GameMain.SecondsPerFrame;

            shotBarGreen.Width =
                (int)((float)(shotBarOutline.Width - 2) *
                lev.Player.CurrentShotBarPercent);
        }

        /// <summary>
        /// Draw the UI to the back buffer.
        /// </summary>
        /// <param name="graphics">Graphics instance</param>
        public void Draw(IGraphics graphics)
        {
            foreach (UIPanel p in panels)
            {
                p.Draw(graphics);
            }

            graphics.DrawFilledRect(shotBarGreen, Color.Green);

            if (misfireText.Length > 0)
                graphics.DrawText(misfireX, misfireY, misfireText,
                    Color.Red, fontValue, FontDrawOptions.DrawTextCenter);
        }

        /// <summary>
        /// Free any resources allocated for UI.
        /// </summary>
        public void Dispose()
        {
            foreach (UIPanel p in panels)
            {
                p.Dispose();
            }
        }
    }
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一道本成人在线| 国产婷婷色一区二区三区在线| 91黄色小视频| 日韩视频一区二区| 蜜桃视频一区二区三区| 国产精品综合二区| 欧美在线一二三四区| 欧美变态tickle挠乳网站| 中文字幕在线不卡一区二区三区| 丝袜诱惑制服诱惑色一区在线观看| 狠狠网亚洲精品| 欧美午夜精品免费| 国产色产综合产在线视频 | 欧美精品一二三区| 久久精品人人做| 午夜欧美电影在线观看| 国产成a人亚洲精品| 欧美网站大全在线观看| 国产精品美女久久久久久久久| 婷婷六月综合亚洲| 99国产精品久久| 久久久久久久性| 日韩成人精品在线| 91在线视频观看| 欧美国产禁国产网站cc| 蜜芽一区二区三区| 91浏览器入口在线观看| 国产午夜精品福利| 久久99九九99精品| 欧美日韩精品一区二区天天拍小说 | 亚洲精品ww久久久久久p站| 日本sm残虐另类| 在线观看免费视频综合| 亚洲视频综合在线| 国产精选一区二区三区| 精品捆绑美女sm三区| 日韩中文字幕区一区有砖一区| 色综合天天在线| 中文字幕在线免费不卡| 成人的网站免费观看| 国产亲近乱来精品视频| 国产精品自在欧美一区| 精品国产露脸精彩对白| 久久国内精品视频| 日韩欧美自拍偷拍| 麻豆精品在线看| 91麻豆精品91久久久久同性| 亚洲chinese男男1069| 欧美日韩一区在线| 午夜精品在线视频一区| 欧美日韩高清在线| 日韩精品欧美精品| 日韩一级完整毛片| 精品系列免费在线观看| 欧美tickling挠脚心丨vk| 日本少妇一区二区| 亚洲精品在线观看网站| 国产一区 二区 三区一级| 欧美精品一区二区久久久| 精品系列免费在线观看| 国产丝袜美腿一区二区三区| 成人激情小说网站| 亚洲人妖av一区二区| 欧美艳星brazzers| 国内久久婷婷综合| 中文字幕免费不卡| 91视频在线观看免费| 亚洲综合在线观看视频| 欧美丝袜自拍制服另类| 天堂蜜桃一区二区三区| 日韩欧美黄色影院| 国产ts人妖一区二区| 亚洲欧美日韩国产综合| 欧美性xxxxxxxx| 久久激情五月婷婷| 中文在线一区二区 | 欧美又粗又大又爽| 日韩中文字幕麻豆| 国产日本欧洲亚洲| 欧美性一级生活| 久久国产乱子精品免费女| 中文字幕不卡在线播放| 欧美日韩免费高清一区色橹橹 | 亚洲免费高清视频在线| 91精品国产91久久久久久最新毛片 | 免费在线视频一区| 国产精品久久久久久久久免费丝袜| 在线免费观看日韩欧美| 美女国产一区二区| 又紧又大又爽精品一区二区| 日韩欧美国产小视频| 91亚洲精品久久久蜜桃网站| 免费亚洲电影在线| 国产精品乱人伦一区二区| 欧美三级欧美一级| 国产成人激情av| 天天色天天爱天天射综合| 国产亚洲精品免费| 555www色欧美视频| av电影天堂一区二区在线 | 精品福利二区三区| 在线一区二区三区四区| 激情文学综合网| 亚洲国产美女搞黄色| 欧美国产精品一区二区三区| 91精品国产入口在线| 91一区二区三区在线观看| 精品一区二区在线视频| 亚洲一区二区免费视频| 中文乱码免费一区二区| 精品国产乱码久久久久久久久| 欧美日韩国产免费一区二区| 94-欧美-setu| 成人午夜看片网址| 激情综合色综合久久| 亚洲国产成人av| 亚洲精品国产精品乱码不99| 亚洲国产成人午夜在线一区| 久久综合久久鬼色中文字| 日韩一区二区三区免费看| 欧美在线免费播放| 91麻豆免费视频| 成人91在线观看| 成人免费毛片a| 成人网男人的天堂| 国产大陆精品国产| 国产精品综合在线视频| 九九**精品视频免费播放| 日日嗨av一区二区三区四区| 午夜视频一区在线观看| 亚洲一区在线观看免费| 亚洲精品成a人| 亚洲主播在线观看| 亚洲色欲色欲www| 日韩毛片一二三区| 中文字幕在线观看一区| 中文字幕中文乱码欧美一区二区| 国产精品日韩成人| 国产精品不卡一区| 亚洲免费观看高清完整版在线观看熊 | 精品日产卡一卡二卡麻豆| 欧美日韩国产综合久久| 欧美日韩精品专区| 欧美另类videos死尸| 欧美一级片在线观看| 日韩三级电影网址| 久久久久久久久99精品| 国产精品系列在线| 亚洲色图在线播放| 亚洲一线二线三线视频| 日本亚洲天堂网| 国产资源精品在线观看| 国产大陆亚洲精品国产| 91在线播放网址| 欧美人牲a欧美精品| 日韩免费性生活视频播放| 国产亚洲欧美日韩日本| 亚洲日本青草视频在线怡红院| 伊人一区二区三区| 丝袜诱惑亚洲看片| 国产一区二区三区久久久 | 在线电影欧美成精品| 欧美日韩另类国产亚洲欧美一级| 欧美一区二区三区电影| 国产日韩欧美综合一区| 亚洲品质自拍视频网站| kk眼镜猥琐国模调教系列一区二区| 成人深夜福利app| 欧美日韩一区二区三区四区五区| 日韩欧美久久一区| 国产精品久久久久久妇女6080 | 欧美伦理视频网站| 久久午夜国产精品| 亚洲精品国产成人久久av盗摄 | 怡红院av一区二区三区| 日本女人一区二区三区| 色婷婷一区二区| 欧美激情在线免费观看| 亚洲人成网站在线| 丝袜亚洲另类丝袜在线| 日韩一级免费观看| 337p粉嫩大胆色噜噜噜噜亚洲 | 欧美亚洲动漫制服丝袜| 欧美不卡一区二区三区四区| 中文字幕一区二区三区在线观看 | 精品三级在线观看| 亚洲欧美日韩久久| 黄色小说综合网站| 欧美日韩久久久久久| 国产精品久久一卡二卡| 成人国产精品免费| 欧美性色aⅴ视频一区日韩精品| 日韩欧美一级在线播放| 综合在线观看色| 国产在线不卡一卡二卡三卡四卡| 欧美亚洲一区二区在线观看| 国产欧美久久久精品影院| 婷婷六月综合亚洲| 91亚洲精品乱码久久久久久蜜桃| 日韩欧美国产wwwww|