public float Get_Export_Price(Resource resource) { float multiplier = 1.0f; if (Exports.Contains(resource)) { multiplier = EXPORT_BASE_PRICE_MULTIPLIER; } else if (Expensive_Exports.Contains(resource)) { multiplier = EXPORT_EXPENSIVE_PRICE_MULTIPLIER; } else if (Cheap_Exports.Contains(resource)) { multiplier = EXPORT_CHEAP_PRICE_MULTIPLIER; } else { return(0.0f); } return(Discount.HasValue ? resource.Value * (multiplier - Discount.Value) : resource.Value *multiplier); }
public bool Insert_Export(Resource resource) { if (Cheap_Exports.Contains(resource) || Exports.Contains(resource) || Expensive_Exports.Contains(resource)) { return(false); } bool possible = false; foreach (Resource.ResourceTag tag in resource.Tags) { if (impossible_exports.Contains(tag)) { return(false); } if (possible_exports.Contains(tag)) { possible = true; } } if (!possible) { return(false); } int random = RNG.Instance.Next(0, 100); if (random < 35) { Cheap_Exports.Add(resource); } else if (random >= 35 && random < 65) { Exports.Add(resource); } else { Expensive_Exports.Add(resource); } return(true); }
private void Initialize_Exports(List <Resource.ResourceTag> main_exports, List <Resource.ResourceTag> rare_exports, List <Resource.ResourceTag> never_export) { Dictionary <Resource.ResourceRarity, int> base_export_chance = new Dictionary <Resource.ResourceRarity, int>() { { Resource.ResourceRarity.Common, 50 }, { Resource.ResourceRarity.Uncommon, 35 }, { Resource.ResourceRarity.Rare, 10 }, { Resource.ResourceRarity.Very_Rare, 5 } }; foreach (Resource resource in Resource.All) { if (Exports.Contains(resource) || Cheap_Exports.Contains(resource) || Expensive_Exports.Contains(resource) || resource.Rarity == Resource.ResourceRarity.Non_Tradeable) { continue; } int export_chance = base_export_chance[resource.Rarity]; bool is_main_export = false; bool is_rare_export = false; bool is_never_export = false; foreach (Resource.ResourceTag tag in resource.Tags) { if (never_export.Contains(tag)) { is_never_export = true; } if (main_exports.Contains(tag)) { is_main_export = true; } if (rare_exports.Contains(tag)) { is_rare_export = true; } } if (is_never_export) { is_main_export = false; is_rare_export = false; } if (is_main_export) { is_rare_export = false; } if (is_main_export || is_rare_export) { if (is_rare_export) { export_chance /= 5; } if (RNG.Instance.Next(0, 100) <= export_chance) { if (is_rare_export) { if (RNG.Instance.Next(0, 100) <= 75) { Expensive_Exports.Add(resource); } else { Exports.Add(resource); } } else { int random = RNG.Instance.Next(0, 100); if (random <= 25) { Expensive_Exports.Add(resource); } else if (random >= 75) { Cheap_Exports.Add(resource); } else { Exports.Add(resource); } } } } } }
private static bool CanAddItem(Type type) { return(!Exports.Contains(type) && !type.IsInterface && typeof(T).IsAssignableFrom(type)); }