public void HandleCoins() { if (Voxels == null || Coins == null) { return; } if (Voxels.Count == 0) { foreach (Body component in Coins) { KillCoins(component); } Coins.Clear(); } int numCoins = (int)Math.Ceiling(Math.Min(Math.Max((float)(decimal)Money / (float)(decimal)MoneyPerPile, 1.0f), (float)Voxels.Count)); if (Money == 0m) { numCoins = 0; } if (Coins.Count > numCoins) { for (int i = Coins.Count - 1; i >= numCoins; i--) { KillCoins(Coins[i]); Coins.RemoveAt(i); } } else if (Coins.Count < numCoins) { for (int i = Coins.Count; i < numCoins; i++) { CreateCoins(Voxels[i].WorldPosition + VertexNoise.GetNoiseVectorFromRepeatingTexture(Voxels[i].WorldPosition)); } } for (int i = 0; i < Coins.Count - 1; i++) { var fixture = Coins[i].GetRoot().GetComponent <CoinPileFixture>(); fixture.SetFullness(1.0f); fixture.Name = MoneyPerPile.ToString(); } DwarfBux remainder = Money - (Coins.Count - 1) * MoneyPerPile; if (Coins.Count > 0) { var fixture = Coins.Last().GetRoot().GetComponent <CoinPileFixture>(); fixture.SetFullness((float)(decimal)remainder / (float)(decimal)MoneyPerPile); fixture.Name = remainder.ToString(); } if (IsFull() && Faction.Treasurys.Count(t => !t.IsFull()) == 0 && Voxels.Count > 0) { Faction.World.MakeAnnouncement("Our treasury is full! Build more treasuries to store more money."); } }
public GetMoneyAct(CreatureAI agent, DwarfBux money, Faction faction = null) : base(agent) { Name = "Get paid " + money.ToString(); Money = money; if (faction == null) { Faction = Creature.Faction; } else { Faction = faction; } }
public GetMoneyAct(CreatureAI agent, DwarfBux money) : base(agent) { Name = "Get paid " + money.ToString(); Money = money; }