public bool CreateNewManaSprite(Faction faction, Vector3 position, WorldManager world) { if (ManaSprite != null) { ManaSprite.Die(); world.ParticleManager.Trigger("star_particle", position, Color.White, 5); SoundManager.PlaySound(ContentPaths.Audio.wurp, position, true); ManaSprite = null; ReCreateTimer.Reset(); } if (ReCreateTimer.HasTriggered) { if (faction.RemoveResources( new List <ResourceAmount>() { new ResourceAmount(ResourceLibrary.ResourceType.Mana) }, position + Vector3.Up * 0.5f)) { ManaSprite = EntityFactory.CreateEntity <ResourceEntity>("Mana Resource", position); ManaSprite.Gravity = Vector3.Zero; ManaSprite.CollideMode = Physics.CollisionMode.None; ManaSprite.Tags.Clear(); return(true); } } return(false); }
public void Update(DwarfTime time, WorldManager world) { ChargeTimer.Update(time); if (ManaSprite != null && Charge > 0.0f && world.Master.Spells.Mana < world.Master.Spells.MaxMana) { if (ChargeTimer.HasTriggered) { SoundManager.PlaySound(ContentPaths.Audio.tinkle, ManaSprite.Position); IndicatorManager.DrawIndicator("+" + (int)ChargeRate + " M", ManaSprite.Position, 1.0f, Color.Green); world.ParticleManager.Trigger("star_particle", ManaSprite.Position, Color.White, 1); Charge -= ChargeRate; world.Master.Spells.Recharge(ChargeRate); } } else if (Charge <= 0.01f) { ReCreateTimer.Update(time); } }