/// <summary> /// 装備情報作成 /// </summary> /// <param name="ware">ベースとなるウェア情報</param> /// <returns>装備情報</returns> public IWare Build(IWare ware) { if (!ware.Tags.Contains("equipment")) { throw new ArgumentException(); } if (_Equipments.TryGetValue(ware.ID, out var item)) { var tags = _EquipmentTagsManager.Get(ware.ID); var ret = new Equipment( ware, item.MacroName, X4Database.Instance.EquipmentType.Get(item.EquipmentTypeID), item.Hull, item.HullIntegrated, item.Mk, X4Database.Instance.Race.TryGet(item.MakerRace ?? ""), tags, tags.Select(x => X4Database.Instance.X4Size.TryGet(x)).FirstOrDefault(x => x is not null) ); return(ret.EquipmentType.EquipmentTypeID switch { "engines" => _EngineBuilder.Build(ret), "shields" => _ShieldBuilder.Build(ret), "thrusters" => _ThrusterBuilder.Build(ret), _ => ret, });
/// <summary> /// 艦船情報作成 /// </summary> /// <param name="ware">ベースとなるウェア情報</param> /// <returns>艦船情報</returns> public IShip Build(IWare ware) { if (!ware.Tags.Contains("ship")) { throw new ArgumentException(); } var item = _Ships[ware.ID]; return(new Ship( ware, _ShipTypes[item.ShipTypeID], item.Macro, X4Database.Instance.X4Size.Get(item.SizeID), item.Mass, new Drag(item.DragForward, item.DragReverse, item.DragHorizontal, item.DragVertical, item.DragPitch, item.DragYaw, item.DragRoll), new Inertia(item.InertiaPitch, item.InertiaYaw, item.InertiaRoll), item.Hull, item.People, item.MissileStorage, item.DroneStorage, item.CargoSize, _ShipHangerManager.Get(ware.ID), _ShipLoadoutManager.Get(ware.ID), _WareEquipmentManager.Get(ware.ID).ToDictionary(x => x.ConnectionName) )); }
/// <summary> /// コンストラクタ /// </summary> /// <param name="ware">ウェア情報</param> /// <param name="shipType">艦船種別</param> /// <param name="macro">マクロ名</param> /// <param name="size">サイズ</param> /// <param name="mass">質量</param> /// <param name="drag">抗力</param> /// <param name="inertia">慣性</param> /// <param name="hull">船体強度</param> /// <param name="people">船員数</param> /// <param name="missileStorage">ミサイル搭載量</param> /// <param name="droneStorage">ドローン搭載量</param> /// <param name="cargoSize">カーゴサイズ</param> /// <param name="shipHanger">艦船のハンガー情報</param> /// <param name="loadouts">ロードアウト情報</param> /// <param name="equipments">装備一覧</param> public Ship( IWare ware, IShipType shipType, string macro, IX4Size size, double mass, Drag drag, Inertia inertia, long hull, long people, long missileStorage, long droneStorage, long cargoSize, IReadOnlyDictionary <string, IShipHanger> shipHanger, IReadOnlyDictionary <string, IReadOnlyList <IShipLoadout> > loadouts, IReadOnlyDictionary <string, IWareEquipment> equipments ) { ID = ware.ID; Name = ware.Name; WareGroup = ware.WareGroup; TransportType = ware.TransportType; Description = ware.Description; Volume = ware.Volume; MinPrice = ware.MinPrice; AvgPrice = ware.AvgPrice; MaxPrice = ware.MaxPrice; Owners = ware.Owners; Productions = ware.Productions; Resources = ware.Resources; Tags = ware.Tags; WareEffects = ware.WareEffects; ShipType = shipType; MacroName = macro; Size = size; Mass = mass; Drag = drag; Inertia = inertia; Hull = hull; People = people; MissileStorage = missileStorage; DroneStorage = droneStorage; CargoSize = cargoSize; ShipHanger = shipHanger; Loadouts = loadouts; Equipments = equipments; }
/// <summary> /// 检查高库存预警状态 /// </summary> /// <param name="wareHouse"></param> /// <returns></returns> public bool CheckStockHighWarning(string wareHouse) { bool result = false; string condition = string.Format("WareHouse='{0}' ", wareHouse); IWare dal = baseDal as IWare; List <WareInfo> stockList = dal.Find(condition); foreach (WareInfo info in stockList) { if (info.HighAmountWarning > 0 && info.Amount >= info.HighAmountWarning) { result = true; } } return(result); }
/// <summary> /// モジュール情報作成 /// </summary> /// <param name="ware">ベースとなるウェア情報</param> /// <returns>モジュール情報</returns> public IX4Module Builld(IWare ware) { if (!ware.Tags.Contains("module")) { throw new ArgumentException(); } var item = _Modules[ware.ID]; return(new Module( ware, item.Macro, _ModuleTypes[item.ModuleTypeID], item.MaxWorkers, item.WorkersCapacity, item.NoBlueprint, _ModuleProductManager.Get(ware.ID), _StorageManager.Get(ware.ID), _WareEquipmentManager.Get(ware.ID).ToDictionary(x => x.ConnectionName) )); }
/// <summary> /// コンストラクタ /// </summary> /// <param name="ware">ウェア情報</param> /// <param name="macro">マクロ名</param> /// <param name="equipmentType">装備種別</param> /// <param name="hull">船体値</param> /// <param name="hullIntegrated">船体値が統合されているか</param> /// <param name="mk">Mk</param> /// <param name="makerRace">製造種族</param> /// <param name="equipmentTags">タグ情報</param> /// <param name="size">サイズ</param> public Equipment( IWare ware, string macro, IEquipmentType equipmentType, long hull, bool hullIntegrated, long mk, IRace?makerRace, HashSet <string> equipmentTags, IX4Size?size ) { ID = ware.ID; Name = ware.Name; WareGroup = ware.WareGroup; TransportType = ware.TransportType; Description = ware.Description; Volume = ware.Volume; MinPrice = ware.MinPrice; AvgPrice = ware.AvgPrice; MaxPrice = ware.MaxPrice; Owners = ware.Owners; Productions = ware.Productions; Resources = ware.Resources; Tags = ware.Tags; WareEffects = ware.WareEffects; MacroName = macro; EquipmentType = equipmentType; Hull = hull; HullIntegrated = hullIntegrated; Mk = mk; MakerRace = makerRace; EquipmentTags = equipmentTags; Size = size; }
/// <summary> /// コンストラクタ /// </summary> /// <param name="ware">ウェア情報</param> /// <param name="macro">マクロ名</param> /// <param name="moduleType">モジュール種別</param> /// <param name="maxWorkers">従業員数</param> /// <param name="workersCapacity">最大収容人数</param> /// <param name="noBluePrint">設計図が無いか</param> /// <param name="products">モジュールの製品</param> /// <param name="storage">保管庫情報</param> /// <param name="equipments">装備一覧</param> public Module( IWare ware, string macro, IModuleType moduleType, long maxWorkers, long workersCapacity, bool noBluePrint, IReadOnlyList <IModuleProduct> products, IModuleStorage storage, IReadOnlyDictionary <string, IWareEquipment> equipments ) { ID = ware.ID; Name = ware.Name; WareGroup = ware.WareGroup; TransportType = ware.TransportType; Description = ware.Description; Volume = ware.Volume; MinPrice = ware.MinPrice; AvgPrice = ware.AvgPrice; MaxPrice = ware.MaxPrice; Owners = ware.Owners; Productions = ware.Productions; Resources = ware.Resources; Tags = ware.Tags; WareEffects = ware.WareEffects; MacroName = macro; ModuleType = moduleType; MaxWorkers = maxWorkers; WorkersCapacity = workersCapacity; NoBluePrint = noBluePrint; Products = products; Storage = storage; Equipments = equipments; }
/// <summary> /// 增加库存 /// </summary> /// <param name="ItemNo">备件编号</param> /// <param name="itemName">备件名称</param> /// <param name="quantity">库存属类</param> /// <returns></returns> public bool AddStockQuantiy(string ItemNo, string itemName, int quantity, Int32 wareHouseId) { IWare dal = baseDal as IWare; return(dal.AddStockQuantiy(ItemNo, itemName, quantity, wareHouseId)); }
/// <summary> /// 初始化库房信息 /// </summary> /// <param name="detailInfo">备件详细信息</param> /// <param name="quantity">期初数量</param> /// <param name="wareHouse">库房名称</param> /// <returns></returns> public bool InitStockQuantity(ItemDetailInfo detailInfo, int quantity, Int32 wareHouseId) { IWare dal = baseDal as IWare; return(dal.InitStockQuantity(detailInfo, quantity, wareHouseId)); }
/// <summary> /// 获取当期库存报表的记录数量 /// </summary> /// <param name="condition"></param> /// <returns></returns> public int GetCurrentStockReportCount(string condition) { IWare dal = baseDal as IWare; return(dal.GetCurrentStockReportCount(condition)); }
/// <summary> /// 获取当前库存报表 /// </summary> /// <param name="condition"></param> /// <returns></returns> public DataTable GetCurrentStockReport(string condition) { IWare dal = baseDal as IWare; return(dal.GetCurrentStockReport(condition)); }
/// <summary> /// 获取备件名称的库存数量列表 /// </summary> /// <param name="condition"></param> /// <returns></returns> public DataTable GetItemStockQuantityReport(string condition, string fieldName) { IWare dal = baseDal as IWare; return(dal.GetItemStockQuantityReport(condition, fieldName)); }
/// <summary> /// コンストラクタ /// </summary> /// <param name="ware">表示対象ウェア</param> public WaresGridItem(IWare ware) { _Ware = ware; }
/// <summary> /// 比較 /// </summary> /// <param name="other"></param> /// <returns></returns> public virtual bool Equals(IWare other) => ID == other.ID;
/// <summary> /// This method copy's each database field which is in the <paramref name="includedColumns"/> /// from the <paramref name="source"/> interface to this data row. /// </summary> public void Copy_From_But_TakeOnly(IWare source, params string[] includedColumns) { if (includedColumns.Contains(WarenTable.IdCol)) this.Id = source.Id; if (includedColumns.Contains(WarenTable.NameIdCol)) this.NameId = source.NameId; if (includedColumns.Contains(WarenTable.TextCol)) this.Text = source.Text; if (includedColumns.Contains(WarenTable.MengeCol)) this.Menge = source.Menge; if (includedColumns.Contains(WarenTable.PreisCol)) this.Preis = source.Preis; if (includedColumns.Contains(WarenTable.WGNameIdCol)) this.WGNameId = source.WGNameId; if (includedColumns.Contains(WarenTable.SortOrderCol)) this.SortOrder = source.SortOrder; if (includedColumns.Contains(WarenTable.LayoutCol)) this.Layout = source.Layout; }
/// <summary> This method copy's each database field from the <paramref name="source"/> interface to this data row.</summary> public void Copy_From(IWare source, bool includePrimaryKey = false) { if (includePrimaryKey) this.Id = source.Id; this.NameId = source.NameId; this.Text = source.Text; this.Menge = source.Menge; this.Preis = source.Preis; this.WGNameId = source.WGNameId; this.SortOrder = source.SortOrder; this.Layout = source.Layout; }
/// <summary> This method copy's each database field into the <paramref name="target"/> interface. </summary> public void Copy_To(IWare target, bool includePrimaryKey = false) { if (includePrimaryKey) target.Id = this.Id; target.NameId = this.NameId; target.Text = this.Text; target.Menge = this.Menge; target.Preis = this.Preis; target.WGNameId = this.WGNameId; target.SortOrder = this.SortOrder; target.Layout = this.Layout; }