/// <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,
                });
Beispiel #2
0
        /// <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)
                       ));
        }
Beispiel #3
0
        /// <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;
        }
Beispiel #4
0
        /// <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);
        }
Beispiel #5
0
        /// <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)
                       ));
        }
Beispiel #6
0
        /// <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;
        }
Beispiel #8
0
        /// <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));
        }
Beispiel #9
0
        /// <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));
        }
Beispiel #10
0
        /// <summary>
        /// 获取当期库存报表的记录数量
        /// </summary>
        /// <param name="condition"></param>
        /// <returns></returns>
        public int GetCurrentStockReportCount(string condition)
        {
            IWare dal = baseDal as IWare;

            return(dal.GetCurrentStockReportCount(condition));
        }
Beispiel #11
0
        /// <summary>
        /// 获取当前库存报表
        /// </summary>
        /// <param name="condition"></param>
        /// <returns></returns>
        public DataTable GetCurrentStockReport(string condition)
        {
            IWare dal = baseDal as IWare;

            return(dal.GetCurrentStockReport(condition));
        }
Beispiel #12
0
        /// <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;
 }
Beispiel #14
0
 /// <summary>
 /// 比較
 /// </summary>
 /// <param name="other"></param>
 /// <returns></returns>
 public virtual bool Equals(IWare other) => ID == other.ID;
Beispiel #15
0
		///	<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;
		}
Beispiel #16
0
		///	<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;
		}
Beispiel #17
0
		///	<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;
		}