| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117 |
- using System;
- using System.Collections.Generic;
- namespace Ships.API
- {
- public class ShopPlatform
- {
- public readonly ShopPlatformSpacingType Type;
- public readonly string Title;
- internal List<ShopPlatformEntry> Entries = new List<ShopPlatformEntry>();
- internal static Dictionary<string, ShopPlatform> ShopPlatforms = new Dictionary<string, ShopPlatform>();
- public static ShopPlatform DefaultObjects
- {
- get => ShopPlatforms["DefaultObjects"];
- }
- public static ShopPlatform DefaultBlocks
- {
- get => ShopPlatforms["DefaultBlocks"];
- }
- public static ShopPlatform DefaultWalls
- {
- get => ShopPlatforms["DefaultWalls"];
- }
- public ShopPlatform(string title, ShopPlatformSpacingType spacingType = ShopPlatformSpacingType.Normal)
- {
- this.Type = spacingType;
- this.Title = title;
- }
- public virtual ShopPlatform Register()
- {
- return Register(this.Title);
- }
- public virtual ShopPlatform Register(string id)
- {
- if (ShopPlatforms.ContainsKey(id))
- ShopPlatforms.Remove(id);
- ShopPlatforms.Add(id, this);
- return this;
- }
- public ShopPlatformSpacingType GetShopPlatformSpacingType()
- {
- return Type;
- }
- public void AddShopPlatformEntry(ShopPlatformEntry row)
- {
- foreach (var e in Entries)
- if (e.CurrencyItemID == row.CurrencyItemID
- && e.ItemID == row.ItemID
- && e.Quantity == row.Quantity
- && e.Price == row.Price)
- return;
- Entries.Add(row);
- }
- public void RemoveShopPlatformEntry(ShopPlatformEntry row)
- {
- Entries.Remove(row);
- }
- public ShopPlatformEntry[] GetShopPlatformEntries()
- {
- return Entries.ToArray();
- }
- public static ShopPlatform[] GetShopPlatforms()
- {
- return new List<ShopPlatform>(ShopPlatforms.Values).ToArray();
- }
- internal int GetSpacesPerRow()
- {
- int spaces = 0;
- switch (Type)
- {
- case ShopPlatformSpacingType.Normal:
- spaces = 7;
- break;
- case ShopPlatformSpacingType.Near:
- spaces = 13;
- break;
- case ShopPlatformSpacingType.Far:
- spaces = 3;
- break;
- }
- return spaces;
- }
- internal int GetRowsNeeded()
- {
- return ((Entries.Count - 1) / GetSpacesPerRow()) + 1;
- }
- internal static void Reset()
- {
- ShopPlatforms = new Dictionary<string, ShopPlatform>();
- }
- }
- public enum ShopPlatformSpacingType
- {
- Normal,
- Near,
- Far
- }
- }
|