public static double GetHasSources(ISourceAll source) { int sourceToChange = map.CanChangeSourcesFor(source); double hasSourcesDesirability = 1.0 - ((sourceToChange > 100) ? 100 : sourceToChange) / 100.0; return hasSourcesDesirability; }
public RaiseSources(IMapController map, ISourceAll source, int depth) : base(map, depth, "Raise sources") { List<ISourceAll> sourceList = new List<ISourceAll>(); sourceList.Add(source); this.source = sourceList; Init(); }
String title; // item title #endregion Fields #region Constructors public PromptItem(String title, String description, ISourceAll source, bool isSourceCost, bool showZeroSources, Texture2D icon) { this.title = title; this.description = description; this.cost = source; this.icon = icon; this.isSourceCost = isSourceCost; this.showZeroSources = showZeroSources; }
public void PayForSomething(ISourceAll cost) { SourceAll sourceCost = (SourceAll)cost; ChangeSources(-sourceCost.GetWood(), -sourceCost.GetStone(), -sourceCost.GetCorn(), -sourceCost.GetMeat(), -sourceCost.GetOre()); sumSpentSources = sumSpentSources + sourceCost; source = source - sourceCost; }
public bool ChangeSourcesFor(ISourceAll source) { if (CanChangeSourcesFor(source) < 0) { SetLastError(Strings.ERROR_NOT_ENOUGHT_FROM_SOURCE); return false; } Player player = gm.GetActivePlayer(); if (source.HasPlayerSources(player)) return true; SourceAll source2 = (SourceAll)source; SourceAll delta = (SourceAll) player.GetSource() - source2; SourceAll collectSources = (SourceAll) player.GetCollectSourcesNormal(); SourceKind[] kindOrdered = collectSources.Order(); int plusSources = 0; for (int plus = 4; plus >= 0; plus--) { if (delta[(int) kindOrdered[plus]] > 0) { for (int minus = 0; minus < 5; minus++) { if (delta[minus] < 0) { plusSources = delta[(int)kindOrdered[plus]] / player.GetConversionRate(kindOrdered[plus]); if (plusSources > -delta[minus]) { if (ChangingSourcesError.OK == ChangeSources(kindOrdered[plus], (SourceKind)minus, -delta[minus] * player.GetConversionRate(kindOrdered[plus]))) { delta[(int)kindOrdered[plus]] += delta[minus] * player.GetConversionRate(kindOrdered[plus]); delta[minus] = 0; } else { throw new Exception("Clever changing sources is not as clever as developers thought."); } } else { if (ChangingSourcesError.OK == ChangeSources(kindOrdered[plus], (SourceKind)minus, plusSources * player.GetConversionRate(kindOrdered[plus]))) { delta[(int)kindOrdered[plus]] -= plusSources * player.GetConversionRate(kindOrdered[plus]); delta[minus] += plusSources; } else { throw new Exception("Clever changing sources is not as clever as developers thought."); } } } } } } return true; }
public int CanChangeSourcesFor(ISourceAll source) { SourceAll source2 = (SourceAll) source; Player player = gm.GetActivePlayer(); //if (source.HasPlayerSources(player)) // return 0; SourceAll delta = (SourceAll) player.GetSource() - source2; int minusSources = 0; int plusSources = 0; for (int loop1 = 0; loop1 < 5; loop1++) { if (delta[loop1] < 0) minusSources += -delta[loop1]; else plusSources += delta[loop1] / player.GetConversionRate((SourceKind)loop1); } if (minusSources > plusSources) return -1; return minusSources; }
public PlayerPromptItem(Player player, String title, String description, ISourceAll source, bool isSourceCost, Texture2D icon) : base(title, description, source, isSourceCost, true, icon) { this.player = player; }