예제 #1
0
 public virtual void Render(Renderer renderer, Vector2D Pos)
 {
     sprite.SetPosition(Pos.X, Pos.Y);
     renderer.DrawSprite(sprite);
     foreach (CollisionComponent c in AttackComponents)
     {
         c.Render(renderer);
     }
 }
예제 #2
0
        public TextTestState(TextureManager textureManager)
        {
            _text.Texture = textureManager.Get("Font");
            _textFont     = new TextFont(textureManager);
            spr           = _textFont.GetAci("终");
            spr.SetPosition(-50, 50);
            spr.SetHeight(14); spr.SetWidth(14);

            _text.SetUVs(new Point(0.0547f * 2, 0.0547f), new Point(0.0547f * 3, 0.0547f * 2));
            _text.SetWidth(14);
            _text.SetHeight(14);
        }
예제 #3
0
        public RedButterfly(TextureManager texturemanager, float orix, float oriy, float speed = 180)
        {
            this.speed   = speed;
            max_distance = speed * max_percent;
            min_distance = speed * min_percent;
            sprites      = new Sprite[bodycount];
            positions    = new Vector2D[bodycount];
            multiSprites = new MultiSprite[2];
            speeds       = new float[bodycount];
            Texture texture = texturemanager.Get("enemys1");
            float   percent = 1;

            for (int i = 0; i < bodycount; i++)
            {
                percent            = (float)i / (bodycount - 1);
                speeds[i]          = speed - percent * speed * divide_percent;
                percent            = 1 - percent;
                percent           *= percent;
                sprites[i]         = new Sprite();
                sprites[i].Texture = texture;
                sprites[i].SetWidth(percent * 32);
                sprites[i].SetHeight(percent * 32);
                sprites[i].SetUVs(0, 0, 0, 0);
                sprites[i].SetPosition(orix, oriy);
                positions[i] = new Vector2D(orix, oriy);
            }
            sprite         = new Sprite();
            sprite.Texture = texture;
            sprite.SetWidth(32);
            sprite.SetHeight(32);
            sprite.SetPosition(orix, oriy);
            multiSprites[1] = new MultiSprite(sprites);        //身体(球),导入整个数组进入
            multiSprites[1].changeinterval = 0.15f;
            multiSprites[0] = new MultiSprite(sprite);         //头部(蝴蝶)
            multiSprites[0].changeinterval = 0.05f;
            multiSprite = multiSprites[0];

            RecTangleF[] rects = new RecTangleF[4];
            for (int i = 0; i < 4; i++)
            {
                rects[i] = new RecTangleF(16 * per_512 + i * per_512 * 4, 20 * per_512,
                                          16 * per_512 + (i + 1) * 4 * per_512, 24 * per_512);
            }
            multiSprites[0].RegeditState(0, rects);
            rects = new RecTangleF[4];
            for (int i = 0; i < 4; i++)
            {
                rects[i] = new RecTangleF(32 * per_512 + i * per_512 * 4, 20 * per_512,
                                          32 * per_512 + (i + 1) * 4 * per_512, 24 * per_512);
            }
            multiSprites[1].RegeditState(0, rects);
            effect = new StartEffect_Red(Stage1State._textureManager);
        }
예제 #4
0
        public TextTestState(TextureManager textureManager)
        {
            _text.Texture = textureManager.Get("Font");
            _textFont = new TextFont(textureManager);
            spr = _textFont.GetAci("终");
            spr.SetPosition(-50, 50);
            spr.SetHeight(14);spr.SetWidth(14);

            _text.SetUVs(new Point(0.0547f*2, 0.0547f), new Point(0.0547f * 3, 0.0547f * 2));
            _text.SetWidth(14);
            _text.SetHeight(14);
        }
예제 #5
0
        public AboutLura(TextureManager textureManager, SoundManagerEx sd)
        {
            _textureManager = textureManager;
            soundmanager    = sd;

            _testSprite.Texture = _textureManager.Get("lura1");
            _testSprite.SetWidth(512);
            _testSprite.SetHeight(512);

            _testSprite.SetPosition(new Vector(0, 0, 0));

            // soundmanager.Play("rj");
        }
예제 #6
0
 // 坐标,文字,宽度, 透明值,间距,行数,每行长度
 //从右到左(例如“    1”,“   11”,“  111”,“ 1111”,“11111” )
 public void DrawText2D2(Point position, string text, int width = 14, float Alpha = 1,
     int dw = 9, int rows = 1, int length = 20)
 {
     int len = text.Length;
     Sprite spr;
     for (int i = 0; i < len; i++)
     {
         spr = _textFont.GetAci(text.Substring(i, 1));
         spr.SetWidth(width); spr.SetHeight(width);
         spr.SetPosition(new Vector(position.X - width / 2 - (len-1-i)* dw, position.Y - width / 2, 0));
         spr.SetColor(new Color(1, 1, 1, Alpha));
         _renderer.DrawSprite(spr);
     }
 }
예제 #7
0
 public override void Render()
 {
     if (!disposing)
     {
         bulletbody.sprite.SetPosition(Position.X, Position.Y);
         Stage1State._renderer.DrawSprite(bulletbody.sprite, (float)Position.X, (float)Position.Y, 90);
     }
     else
     {
         RedEsc.SetPosition(Position.X, Position.Y);
         RedEsc.SetColor(new Color(1, 1, 1, _alpha * 0.5f));
         Stage1State._renderer.DrawSprite(RedEsc, (float)Position.X, (float)Position.Y, angle + 90);
     }
 }
예제 #8
0
        //从右到左(例如“    1”,“   11”,“  111”,“ 1111”,“11111” )
        public void DrawText2D2(Point position, string text, int width = 14, float Alpha = 1,
                                int dw = 9, int rows = 1, int length = 20)
        // 坐标,文字,宽度, 透明值,间距,行数,每行长度
        {
            int    len = text.Length;
            Sprite spr;

            for (int i = 0; i < len; i++)
            {
                spr = _textFont.GetAci(text.Substring(i, 1));
                spr.SetWidth(width); spr.SetHeight(width);
                spr.SetPosition(new Vector(position.X - width / 2 - (len - 1 - i) * dw, position.Y - width / 2, 0));
                spr.SetColor(new Color(1, 1, 1, Alpha));
                _renderer.DrawSprite(spr);
            }
        }
예제 #9
0
        public void Update(double elapsedTime)
        {
            time_caculate += elapsedTime;
            double rdiu = (time_caculate / 1) * angle_speed;   //每秒转动角度: angle_speed

            _testSprite2.SetPosition(0 + rd * Math.Cos((rdiu / 180) * PI),
                                     0 + rd * Math.Sin((rdiu / 180) * PI));

            _testSprite3.SetPosition(0 + rd * 1.5 * Math.Cos((rdiu / 180) * PI),
                                     0 + rd * 1.5 * Math.Sin((rdiu / 180) * PI));

            _testSprite4.SetPosition(0 + rd * 2 * Math.Cos((rdiu / 180) * PI),
                                     0 + rd * 2 * Math.Sin((rdiu / 180) * PI));

            _testSprite5.SetPosition(0 + rd * 3 * Math.Cos((rdiu / 180) * PI),
                                     0 + rd * 3 * Math.Sin((rdiu / 180) * PI));
        }
예제 #10
0
        /// <summary>
        /// 提供一个分数参数,将其画下来
        /// </summary>
        /// <param name="isc">Score参数</param>
        /// <param name="distance">数字间的距离</param>
        public void DrawNumber(Renderer _renderer, IScore isc, float distance)
        {
            float    alpha = isc.alpha;
            Vector2D vct   = new Vector2D(isc.Position.X, isc.Position.Y);
            string   num   = isc.Score.ToString();

            char[] arr    = num.ToArray <char>();
            int    length = arr.Length;
            int    len2   = length / 2;

            for (int i = 0; i < length; i++)
            {
                Sprite sp = score_number.GetNumber(arr[i].ToString());
                sp.SetPosition(vct.X + (i - len2) * distance, vct.Y);              //数字居中显示
                sp.SetColor(new Color(1, 1, 1, alpha * 0.5f));
                _renderer.DrawSprite(sp);
            }
        }
예제 #11
0
 public override void Render()
 {
     if (working)
     {
         float ag = Direction.getcurve();
         bulletbody.sprite.SetPosition(Position.X, Position.Y);
         bulletbody.sprite.SetColor(new Color(1, 1, 1, 0.3f));
         Stage1State._renderer.DrawSprite(bulletbody.sprite, (float)Position.X, (float)Position.Y, ag + 90);
     }
     else if (disposing)
     {
         BlueEsc.SetWidth(32 * (1 * (1 - _alpha) + 1));
         BlueEsc.SetHeight(32 * (1 * (1 - _alpha) + 1));
         BlueEsc.SetColor(new Color(1, 1, 1, _alpha * 0.6f));
         BlueEsc.SetPosition(Position.X, Position.Y);
         Stage1State._renderer.DrawSprite(BlueEsc, (float)Position.X, (float)Position.Y, angle + 90);
     }
 }
예제 #12
0
        public Stage1State(StateSystem system, TextureManager texturemanager, SoundManagerEx soundmanager, Form1 form = null)
        {
            _system         = system;
            _textureManager = texturemanager;
            _soundmanager   = soundmanager;
            if (form != null)
            {
                this.form = form;
            }

            GamePlayer          = new Player();
            Datas.CurrentPlayer = GamePlayer;

            gameview = new GameView(texturemanager, soundmanager, 5, GamePlayer);         //中间层着色,注册角色
            GamePlayer.RegisteredRCharactors(Datas.Charactors[Datas.Fore_People_Select],
                                             Datas.Charactors[Datas.Fore_People_Select]); //  Form1.Charactors[Datas.Back_People_Select]);
            GamePlayer.Position.Y  = 30;
            GamePlayer.RenderSpeed = 0.075f;                                              //人物帧动画渲染速度

            foretable = new ForeTable(texturemanager, 10);                                //最前层着色

            foretable.HighScores   = 0;
            foretable.Power        = 0;
            foretable.Graze        = 0;
            foretable.CurrentPoint = 0;
            foretable.LevelPoint   = 1550;
            foretable.CurrentTims  = 0;
            foretable.TotleTims    = 6400;
            foretable.GameLevel    = 1;

            Logo         = new Sprite();
            Logo.Texture = texturemanager.Get("logo1");
            Logo.SetWidth(192);
            Logo.SetHeight(192);
            Logo.SetPosition(210, -130);

            test = new Extra.VariableSprite();
            test.BindSprite(Logo);
            test.SetAttribute(210, -130, 0, 192, 192);

            fonc       = new FontAciHuaKang(texturemanager);
            TextWriter = new FontWriterTool(fonc);
        }
예제 #13
0
        StateSystem _system; // 状态机

        #endregion Fields

        #region Constructors

        public Stage1State(StateSystem system , TextureManager texturemanager , SoundManagerEx soundmanager ,Form1 form = null)
        {
            _system = system;
            _textureManager = texturemanager;
            _soundmanager = soundmanager;
            if(form != null)
            this.form = form;

            GamePlayer = new Player();
            Datas.CurrentPlayer = GamePlayer;

            gameview = new GameView(texturemanager, soundmanager, 5 , GamePlayer); //中间层着色,注册角色
            GamePlayer.RegisteredRCharactors(Datas.Charactors[Datas.Fore_People_Select],
              Datas.Charactors[Datas.Fore_People_Select]);//  Form1.Charactors[Datas.Back_People_Select]);
            GamePlayer.Position.Y = 30;
            GamePlayer.RenderSpeed = 0.075f;                            //人物帧动画渲染速度

            foretable = new ForeTable(texturemanager, 10);          //最前层着色

            foretable.HighScores = 0;
            foretable.Power = 0;
            foretable.Graze = 0;
            foretable.CurrentPoint = 0;
            foretable.LevelPoint = 1550;
            foretable.CurrentTims = 0;
            foretable.TotleTims = 6400;
            foretable.GameLevel = 1;

            Logo = new Sprite();
            Logo.Texture = texturemanager.Get("logo1");
            Logo.SetWidth(192);
            Logo.SetHeight(192);
            Logo.SetPosition(210, -130);

            test = new Extra.VariableSprite();
            test.BindSprite(Logo);
            test.SetAttribute(210, -130, 0, 192, 192);

            fonc = new FontAciHuaKang(texturemanager);
            TextWriter = new FontWriterTool(fonc);
        }
예제 #14
0
파일: Enemy.cs 프로젝트: lm458180997/Touhou
        public RedButterfly(TextureManager texturemanager , float orix , float oriy, float speed =180)
        {
            this.speed = speed;
            max_distance = speed * max_percent;
            min_distance = speed * min_percent;
            sprites = new Sprite[bodycount];
            positions = new Vector2D[bodycount];
            multiSprites = new MultiSprite[2];
            speeds = new float[bodycount];
            Texture texture = texturemanager.Get("enemys1");
            float percent = 1;
            for (int i = 0; i < bodycount; i++)
            {
                percent = (float)i / (bodycount-1);
                speeds[i] = speed - percent * speed * divide_percent;
                 percent = 1 - percent;
                percent *= percent;
                sprites[i] = new Sprite();
                sprites[i].Texture = texture;
                sprites[i].SetWidth(percent *32);
                sprites[i].SetHeight(percent * 32);
                sprites[i].SetUVs(0, 0, 0, 0);
                sprites[i].SetPosition(orix, oriy);
                positions[i] = new Vector2D(orix, oriy);
            }
            sprite = new Sprite();
            sprite.Texture = texture;
            sprite.SetWidth(32);
            sprite.SetHeight(32);
            sprite.SetPosition(orix, oriy);
            multiSprites[1] = new MultiSprite(sprites);        //身体(球),导入整个数组进入
            multiSprites[1].changeinterval = 0.15f;
            multiSprites[0] = new MultiSprite(sprite);         //头部(蝴蝶)
            multiSprites[0].changeinterval = 0.05f;
            multiSprite = multiSprites[0];

            RecTangleF[] rects = new RecTangleF[4];
            for (int i = 0; i < 4; i++)
            {
                rects[i] = new RecTangleF(16*per_512+ i * per_512 * 4, 20*per_512,
                    16 * per_512 + (i + 1) * 4 * per_512, 24 * per_512);
            }
            multiSprites[0].RegeditState(0, rects);
            rects = new RecTangleF[4];
            for (int i = 0; i < 4; i++)
            {
                rects[i] = new RecTangleF(32 * per_512 + i * per_512 * 4, 20 * per_512,
                    32 * per_512 + (i + 1) * 4 * per_512, 24 * per_512);
            }
            multiSprites[1].RegeditState(0, rects);
            effect = new StartEffect_Red(Stage1State._textureManager);
        }