예제 #1
0
        internal override void setSprite(ASprite sprite)
        {
            base.setSprite(sprite);
            this.target = isRelative ? Sprite.Position + this.target : this.target;
            vecOrient = (target - sprite.Position).GetNormalize();
            float length = (target - sprite.Position).Length();

            speedUpFrames = (int)Math.Round(frames * speedUpRate);
            speedDownFrames = (int)Math.Round(frames * speedDownRate);
            speedMaxFrames = (int)Math.Round(frames * (1 - speedUpRate - speedDownRate));
            float maxSpeed = length * 2 / ((2 - speedUpRate - speedDownRate) * frames);

            speedUpStep = speedUpFrames == 0 ? 0 : maxSpeed / speedUpFrames;
            speedDownStep = speedDownFrames == 0 ? 0 : maxSpeed / speedDownFrames;

            if (speedUpStep == 0)
                nowSpeed = maxSpeed;
            else
                nowSpeed = 0;
        }
예제 #2
0
 private void collectAllASprite(ASprite source, List<ASprite> target)
 {
     target.Add(source);
     if (source.Slaves != null && source.isShown)
         for (int i = 0; i < source.Slaves.Count; i++)
             collectAllASprite(source.Slaves[i], target);
 }
예제 #3
0
 private void addSlave(ASprite slave)
 {
     spriteList.Add(slave);
     if (slave.Slaves != null)
         foreach (ASprite slv in slave.Slaves)
             addSlave(slv);
 }
예제 #4
0
 public bool Remove(ASprite sprite)
 {
     if (spriteList.IndexOf(sprite) == -1)
         return false;
     for (int i = sprite.Slaves.Count - 1; i >= 0; i--)
         spriteList.Remove(sprite.Slaves[i]);
     spriteList.Remove(sprite);
     return true;
 }
예제 #5
0
 public void Add(ASprite sprite)
 {
     sprite.Manager = this;
     spriteList.Add(sprite);
     if (sprite.Slaves != null)
         foreach (ASprite slv in sprite.Slaves)
             addSlave(slv);
 }
예제 #6
0
 internal virtual void setSprite(ASprite sprite)
 {
     this._sprite = sprite;
 }
예제 #7
0
        public ASprite(ASprite sp)
        {
            Game = sp.Game;
            _manager = sp._manager;
            Owner = sp.Owner;

            Position = sp.Position;
            Depth = sp.Depth;
            Origin = sp.Origin;
            Color = sp.Color;
            Rotation = sp.Rotation;
            Scale = sp.Scale;
            SpriteEffect = sp.SpriteEffect;

            isActStoped = sp.isActStoped;
            isEnd = sp.isEnd;
            isShown = sp.isShown;
            isColli = sp.isColli;

            ColliOffset = sp.ColliOffset;
            ColliRect = sp.ColliRect;

            Tags = new Dictionary<string, object>(sp.Tags);

            _prePosition = sp._prePosition;
            _preRotation = sp._preRotation;

            MovedVlaue = sp.MovedVlaue;
            RotatedValue = sp.RotatedValue;

            isFirstFrame = sp.isFirstFrame;

            if (sp.Slaves != null)
            {
                this.Slaves = new List<ASprite>();
                foreach (Sprite slv in sp.Slaves)
                    this.Slaves.Add(slv.Copy());
            }
            if (sp.ActStoreList != null)
            {
                this.ActStoreList = new List<Act>();
                foreach (Act act in sp.ActStoreList)
                    this.ActStoreList.Add(act.Copy());
                this.ActPlayingList = new List<Act>();
                foreach (Act act in sp.ActPlayingList)
                    this.ActPlayingList.Add(act.Copy());
            }
        }
예제 #8
0
 private void addSlaveToManger(ASprite slave)
 {
     if (slave.Manager != null)
         Manager.Remove(slave);
     slave.Manager = this.Manager;
     if (Manager != null)
         Manager.Add(slave);
     if (slave.Slaves != null)
         foreach (ASprite sslave in slave.Slaves)
             addSlaveToManger(sslave);
 }
예제 #9
0
        public virtual void Initialize()
        {
            Scale = Vector2.One;
            Color = Color.White;
            Rotation = 0;
            SpriteEffect = SpriteEffects.None;
            Tags = new Dictionary<string, object>();

            isActStoped = false;
            isEnd = false;
            isShown = true;
            isColli = true;

            Owner = null;
            _prePosition = Position;
            _preRotation = Rotation;
            AttachToOwner = new Attach(true, true, false, true);
        }
예제 #10
0
 public void AddSlave(ASprite slave)
 {
     if (Slaves == null)
         Slaves = new List<ASprite>();
     slave.Owner = this;
     Slaves.Add(slave);
     addSlaveToManger(slave);
 }
예제 #11
0
 internal override void setSprite(ASprite sprite)
 {
     base.setSprite(sprite);
     step = (targetColor - sprite.Color.ToVector3()) / frames;
     trueColor = sprite.Color.ToVector3();
 }
예제 #12
0
 internal override void setSprite(ASprite sprite)
 {
     base.setSprite(sprite);
     trueAlpha = Sprite.Color.A;
     step = (isRelative ? targetAlpha : targetAlpha - Sprite.Color.A) / (float)frames;
 }