Exemple #1
0
 public ObjectPart(Point2D position, SpritePart sprite, Gob gob, ISpriteEffect effect, int szo)
 {
     X      = position.X;
     Y      = position.Y;
     Sprite = sprite;
     Gob    = gob;
     Effect = effect;
     Z      = sprite.Z;
     SubZ   = sprite.SubZ + szo;
 }
Exemple #2
0
        public void Update()
        {
            speeches.Clear();
            spriteList.Clear();

            foreach (var gob in session.Objects)
            {
                var sprite = gob.Sprite;
                if (sprite == null)
                {
                    continue;
                }

                ISpriteEffect effect = null;
                if (gob.Health != null)
                {
                    effect = gob.Health.Effect;
                }

                int szo = 0;
                if (gob.Following != null)
                {
                    szo = gob.Following.Szo;
                }

                var p = Geometry.MapToScreen(gob.Position);

                spriteList.AddRange(sprite.Parts.Select(part => new ObjectPart(p, part, gob, effect, szo)));

                foreach (var overlay in gob.Overlays)
                {
                    if (overlay.Sprite.Value != null)
                    {
                        spriteList.AddRange(overlay.Sprite.Value.Parts.Select(part => new ObjectPart(p, part, gob, null, szo)));
                    }
                }

                if (gob.Speech != null)
                {
                    speeches.Add(Tuple.Create(p, gob.Speech));
                }
            }

            spriteList.Sort(CompareParts);
        }
Exemple #3
0
 public GobHealth(int hp)
 {
     this.hp     = hp;
     this.effect = new GobHealthEffect(this);
 }