/// <summary> /// Create a new physical sprite from data /// </summary> /// <param name="pd">data from which to construct unit</param> protected PhysicalUnit(PhysicalData pd) { _unitName = pd.Name; _sprite = new Sprite(_unitName); if (pd.MovementParticleEffectName != null) { _movementParticleEffect = new ParticleEffect(pd.MovementParticleEffectName); } _burningParticleEffect = new ParticleEffect("Burning"); _mass = pd.Mass; _moveForce = pd.MoveForce; _maxSpeed = pd.MaxSpeed; _maxHealth = pd.Health; _health = _maxHealth; _decelerationFactor = pd.DecelerationFactor; _lifeState = LifeState.Dormant; //not yet spawned _hitRect = new Rectangle(0, 0, (int)_sprite.Width, (int)_sprite.Height); Position = Vector2.Zero; MoveDirection = Vector2.Zero; LookDirection = Vector2.Zero; _statusEffects = new StatEffect(0, 0, 0); _statusResist = new StatEffect(pd.FireResist, pd.CryoResist, pd.ShockResist); _fragments = new IceFragment[ICE_DIVISIONS, ICE_DIVISIONS]; }
TimeSpan _panicTimer; //time till next direction switch #endregion Fields #region Constructors /// <summary> /// Create a new physical sprite from data /// </summary> /// <param name="pd">data from which to construct unit</param> protected PhysicalUnit(PhysicalData pd) : base(pd, Sprite.SpriteType.Unit) { MoveDirection = Vector2.Zero; LookDirection = Vector2.Zero; if (pd.MovementParticleEffectName != null) _movementParticleEffect = new ParticleEffect(pd.MovementParticleEffectName); }
/// <summary> /// Create a new physical sprite from data /// </summary> /// <param name="pd">data from which to construct unit</param> protected PhysicalUnit(PhysicalData pd) { _unitName = pd.Name; _sprite = new Sprite(_unitName); if (pd.MovementParticleEffectName != null) _movementParticleEffect = new ParticleEffect(pd.MovementParticleEffectName); _burningParticleEffect = new ParticleEffect("Burning"); _mass = pd.Mass; _moveForce = pd.MoveForce; _maxSpeed = pd.MaxSpeed; _maxHealth = pd.Health; _health = _maxHealth; _decelerationFactor = pd.DecelerationFactor; _lifeState = LifeState.Dormant; //not yet spawned _hitRect = new Rectangle(0, 0, (int)_sprite.Width, (int)_sprite.Height); Position = Vector2.Zero; MoveDirection = Vector2.Zero; LookDirection = Vector2.Zero; _statusEffects = new StatEffect(0, 0, 0); _statusResist = new StatEffect(pd.FireResist, pd.CryoResist, pd.ShockResist); _fragments = new IceFragment[ICE_DIVISIONS, ICE_DIVISIONS]; }
/// <summary> /// Create a new physical sprite from data /// </summary> /// <param name="pd">data from which to construct unit</param> protected PhysicalBody(PhysicalData pd, Sprite.SpriteType spriteType) { _unitName = pd.Name; if (spriteType == Sprite.SpriteType.Unit) { _sprite = new UnitSprite(pd.Name, (PhysicalUnit)this); } else { _sprite = new Sprite(pd.Name, spriteType); } _burningParticleEffect = new ParticleEffect("Burning"); _mass = pd.Mass; _gravitySensitivity = pd.GravitySensitivity; _moveForce = pd.MoveForce; _maxSpeed = pd.MaxSpeed; _maxHealth = pd.Health; _health = _maxHealth; _decelerationFactor = pd.DecelerationFactor; _lifeState = LifeState.Dormant; //not yet spawned _hitRect = new Rectangle(0, 0, (int)_sprite.Width, (int)_sprite.Height); Position = Vector2.Zero; _statusEffects = new StatEffect(0, 0, 0); _statusResist = new StatEffect(pd.FireResist, pd.CryoResist, pd.ShockResist); _fragments = new IceFragment[c_shatterDivisions, c_shatterDivisions]; }