Пример #1
0
        public DrawingLayer(string s, Point Position, double ratio, SpritePosition spriteSize)
        {
            spriteTexture = Game1.content.Load <Texture2D>(s);
            SpriteSize    = new SpritePosition(spriteSize.X, spriteSize.Y);
            int SourceW = spriteTexture.Bounds.Width / (SpriteSize.X + 1);
            int SourceH = spriteTexture.Bounds.Height / (SpriteSize.Y + 1);

            SourceRect = new Rectangle(0, 0, SourceW, SourceH);
            Bound      = new Rectangle(Position, new Point((int)(SourceW * ratio), (int)(SourceH * ratio)));
            Ratio      = ratio;
        }
Пример #2
0
 public void GoNext(SpritePosition SpriteSize)
 {
     if (this.X == SpriteSize.X)
     {
         this.Jump();
     }
     else
     {
         this.Increase();
     }
 }
Пример #3
0
        public void SetSprite(string s, SpritePosition spriteSize)        //스프라이트를 바꾸면서 동시에 소스영역도 바꿉니다.
        {
            if (s.Equals(spriteTexture.ToString()))
            {
                return;
            }
            spriteTexture = Game1.content.Load <Texture2D>(s);
            int SourceW = spriteTexture.Bounds.Width / (SpriteSize.X + 1);
            int SourceH = spriteTexture.Bounds.Height / (SpriteSize.Y + 1);

            SourceRect = new Rectangle(0, 0, SourceW, SourceH);
        }
Пример #4
0
        public DrawingLayer(string s, Rectangle boundRect, SpritePosition spriteSize)
        {
            //스프라이트시트의 기본 상수들을 지정합니다.
            spriteTexture = Game1.content.Load <Texture2D>(s);
            SpriteSize    = new SpritePosition(spriteSize.X, spriteSize.Y);
            int SourceW = spriteTexture.Bounds.Width / (SpriteSize.X + 1);
            int SourceH = spriteTexture.Bounds.Height / (SpriteSize.Y + 1);

            SourceRect = new Rectangle(0, 0, SourceW, SourceH);

            //그림이 그려질 화면 영역을 지정합니다.
            Bound = boundRect;
        }
Пример #5
0
 /* 애니메이션*/
 public void LoopedAnimation(SpritePosition Frame_Start, SpritePosition Frame_End, int FrameRate)
 {
     if (FrameTimer > 0)
     {
         FrameTimer--;                //일하는 시간이 아닙니다.
         return;
     }
     else                                                  //종이 칩니다. 시간이 되었습니다. 일을 합시다.
     {
         FrameTimer = FrameRate;                           //다시 스톱워치를 맞춥니다.
         Frame.GoLoop(Frame_End, Frame_Start, SpriteSize); //애니메이션을 다음 프레임으로 이동시킵니다.
         return;                                           //애니메이터는 자러 갑니다.
     }
 }
Пример #6
0
        public void Animate(bool isLooped)
        {
            if (Actions.Count == 0)
            {
                return;
            }
            else
            {
                if (FrameTimer > 0)
                {
                    FrameTimer--;
                    return;
                }
                else
                {
                    FrameTimer = FrameRate;
                    string[] s = Actions[0].Split(' ');
                    switch (s[0])
                    {
                    case "/s":
                        SetSprite(Actions[0].Substring(3));
                        if (isLooped)
                        {
                            Actions.Add(Actions[0]);
                        }
                        Actions.RemoveAt(0);
                        break;

                    case "/sp":
                        SpritePosition Frame_Start = new SpritePosition(Int32.Parse(s[1].Split(',')[0]), Int32.Parse(s[1].Split(',')[1]));
                        SpritePosition Frame_End   = new SpritePosition(Int32.Parse(s[2].Split(',')[0]), Int32.Parse(s[2].Split(',')[1]));
                        Frame.GoLoop(Frame_Start, Frame_End, SpriteSize);
                        if (GetFrame() == Frame_End)
                        {
                            if (isLooped)
                            {
                                Actions.Add(Actions[0]);
                            }
                            Actions.RemoveAt(0);
                        }
                        break;
                    }
                }
            }
        }
Пример #7
0
 public void GoLoop(SpritePosition Max, SpritePosition Min, SpritePosition SpriteSize)
 {
     if (this < Min || this > Max)            //이상한 범위에 있을 경우
     {
         this.Set(Min.X, Min.Y);
         return;
     }
     if (this < Max)
     {
         this.GoNext(SpriteSize);
         return;
     }
     if (this == Max)
     {
         this.Set(Min.X, Min.Y);
         return;
     }
 }
Пример #8
0
 public void AttachAnimation(int Frame_rate, SpritePosition Frame_Start, SpritePosition Frame_End)
 {
     FrameRate = Frame_rate;
     Actions.Add("/sp " + Frame_Start.X + "," + Frame_Start.Y + " " + Frame_End.X + "," + Frame_End.Y);
 }