Example #1
0
        // 各單位累計盈餘與罰金計算
        public GameSettlement GetSettlement(string RoomID)
        {
            //取得成本資料
            CostSettingModel costSet = GetCostSet();

            // 盈餘 => 出貨 - 成本 (出貨數量*該項目賣出金額) - (進貨數量*該項目成本金額)
            // 罰金 => (超出庫存數量 + 短缺數量)*該項目罰金金額 
            GameSettlement data = new GameSettlement();

            foreach (var item in GameRecordList.Where(p => p.RoomId == RoomID).ToList())
            {
                string[] storageNameList = { "Manufacturer", "Distribution", "Wholesale", "Retailer" };
                foreach (var storageName in storageNameList)
                {
                    string[] pArray = { "dumpling", "riceball", "salad" };
                    foreach (var pName in pArray)
                    {
                        ((SettlementItem)data[storageName]).income +=
                            (((RecordDataItem)((RecordData)item[storageName])[pName]).income * (int)((StorageSetting)costSet[storageName]).income[pName]) -
                            (((RecordDataItem)((RecordData)item[storageName])[pName]).cost * (int)((StorageSetting)costSet[storageName]).cost[pName]);

                        ((SettlementItem)data[storageName]).fine +=
                            (
                                ((RecordDataItem)((RecordData)item[storageName])[pName]).overrun +
                                ((RecordDataItem)((RecordData)item[storageName])[pName]).lack
                            ) * (int)((StorageSetting)costSet[storageName]).fine[pName];
                    }
                }
            }
            return(data);
        }
Example #2
0
        //遊戲資料更新 USed!
        public bool Game_Update(UserModel user, StorageData Storage_data, int WeekNum)
        {
            var StorageItgem = StorageList.Where(p => p.RoomId == user.RoomID).FirstOrDefault();

            if (StorageItgem != null)
            {
                switch (Storage_data.Role)
                {
                case "Manufacturer":
                    StorageItgem.Manufacturer          = Storage_data;
                    StorageItgem.Manufacturer.IsUpdate = true;
                    break;

                case "Distribution":
                    StorageItgem.Distribution          = Storage_data;
                    StorageItgem.Distribution.IsUpdate = true;
                    break;

                case "Wholesale":
                    StorageItgem.Wholesale          = Storage_data;
                    StorageItgem.Wholesale.IsUpdate = true;
                    break;

                case "Retailer":
                    StorageItgem.Retailer          = Storage_data;
                    StorageItgem.Retailer.IsUpdate = true;
                    break;
                }
            }
            else
            {
                return(false);
            }

            //等待所有人資料更新
            if (StorageItgem.Manufacturer.IsUpdate &&
                StorageItgem.Distribution.IsUpdate &&
                StorageItgem.Wholesale.IsUpdate &&
                StorageItgem.Retailer.IsUpdate
                )
            {
                //改回待更新狀態
                StorageItgem.Manufacturer.IsUpdate = false;
                StorageItgem.Distribution.IsUpdate = false;
                StorageItgem.Wholesale.IsUpdate    = false;
                StorageItgem.Retailer.IsUpdate     = false;

                //修改 Retailer 的資料
                RetailerItemHandle(user.RoomID, WeekNum);
                //更新所有人資料
                //Clients.All.UpdateClienData(StorageItgem);
                Clients.Group(user.RoomID).UpdateClienData(StorageItgem);
                //結算 累計盈餘與累計罰金
                GameSettlement SettlementData = GetSettlement(user.RoomID);
                //Clients.All.UpdateClienSettlement(SettlementData);
                Clients.Group(user.RoomID).UpdateClienSettlement(SettlementData);
            }

            return(true);
        }