// 各單位累計盈餘與罰金計算 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); }
//遊戲資料更新 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); }