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; }
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); }
public GobHealth(int hp) { this.hp = hp; this.effect = new GobHealthEffect(this); }