// 毎秒ごとの処理を行う private async void HelperTaskS() { if (SaveScreenshotFlg.Value) { // ズレ検出・修正処理 if (!ScreenShotProvider.CanGetScreenshot()) { // スクショが取得できなくなったのでその旨を通知する PutLog("エラー:ゲーム画面の位置ズレを検出しました"); await AutoGetGameWindowPositionAsync(); return; } // スクショから得られる情報を用いた修正 using (var screenShot = ScreenShotProvider.GetScreenshot()) { switch (SceneRecognition.JudgeGameScene(screenShot)) { case "戦闘中": MainModel.SetBattleBombTimer(screenShot, ref oldGauge, ref remainTime); break; case "委託": MainModel.SetConsignTimer(screenShot); break; case "戦術教室": MainModel.SetLectureTimer(screenShot); break; case "寮舎": MainModel.SetFoodTimer(screenShot); break; } } } else { // 常時座標認識 if (AutoSearchPositionFlg.Value) { GetGameWindowPosition(); } } }
// 定期的にスクリーンショットを取得し、そこに起因する処理を行う private void HelperTaskF() { if (!SaveScreenshotFlg.Value) { return; } using (var screenShot = ScreenShotProvider.GetScreenshot()) { // スクショが取得できるとscreenShotがnullにならない if (screenShot != null) { // シーン文字列を取得し、表示する string judgedScene = SceneRecognition.JudgeGameScene(screenShot); JudgedScene.Value = $"シーン判定 : {judgedScene}"; // 資材量を取得する // (戦闘中なら各種ボムの分量と残り秒数を読み取る) if (SupplyStore.SupplyListEachScene.ContainsKey(judgedScene)) { foreach (string supplyName in SupplyStore.SupplyListEachScene[judgedScene]) { if (SupplyStore.UpdateSupplyValue(screenShot, supplyName, AutoSupplyScreenShotFlg.Value, PutCharacterRecognitionFlg.Value)) { PutLog($"資材量追記:{supplyName}"); } } } // 戦闘中でなくなった場合、速やかにボムタイマーをリセットする if (judgedScene != "戦闘中" && judgedScene != "不明") { SettingsStore.BombChageTime1 = null; SettingsStore.BombChageTime2 = null; SettingsStore.BombChageTime3 = null; } } else { // スクショが取得できなくなったのでその旨を通知する PutLog("エラー:スクショが取得できなくなりました"); SaveScreenshotFlg.Value = false; } } }
protected void btnExport_Click(object sender, EventArgs e) { fromDate = GeneralUtility.ConvertSystemDateStringFormat(txtFromDate.Text); toDate = GeneralUtility.ConvertSystemDateStringFormat(txtToDate.Text); var branchcode = string.Empty; if (ddlCenterName.SelectedItem.Value != "All") { branchcode = ddlCenterName.SelectedValue.ToString(); } var probesList = new Probes { Criteria = new PPP_Project.Criteria.ImportJobsCriteria { CenterName = branchcode, FromDate = fromDate, ToDate = toDate, } }.FindProbesJobImportList(); // FindByCriteria(); // for Probes // #region "Probes" DataTable attTbl = new DataTable(); attTbl.Clear(); attTbl.Columns.Clear(); #endregion var pricingprobesList = new PricingProbes { Criteria = new PPP_Project.Criteria.ImportJobsCriteria { CenterName = branchcode, FromDate = fromDate, ToDate = toDate, } }.FindPricingProbesJobImportList(); //FindByCriteria(); // for PricingProbes var masksList = new Masks { Criteria = new PPP_Project.Criteria.ImportJobsCriteria { CenterName = branchcode, FromDate = fromDate, ToDate = toDate, } }.FindMasksJobImportList(); //FindByCriteria(); // for Masks var votesList = new Votes { Criteria = new PPP_Project.Criteria.ImportJobsCriteria { CenterName = branchcode, FromDate = fromDate, ToDate = toDate, } }.FindVotesJobImportList(); //FindByCriteria(); // for Votes var repricingList = new Repricing { Criteria = new PPP_Project.Criteria.ImportJobsCriteria { CenterName = branchcode, FromDate = fromDate, ToDate = toDate, } }.FindRepricingJobImportList(); //FindByCriteria(); // for repricing var scenesList = new Scenes { Criteria = new PPP_Project.Criteria.ImportJobsCriteria { CenterName = branchcode, FromDate = fromDate, ToDate = toDate, } }.FindScenesJobImportList(); //FindByCriteria(); // for scenes var scenerecognitionList = new SceneRecognition { Criteria = new PPP_Project.Criteria.ImportJobsCriteria { CenterName = branchcode, FromDate = fromDate, ToDate = toDate, } }.FindSceneRecognitionJobImport(); //.FindByCriteria(); // for scenerecognition var categoryexpertList = new CategoryExpert { Criteria = new PPP_Project.Criteria.ImportJobsCriteria { CenterName = branchcode, FromDate = fromDate, ToDate = toDate, } }.FindCategoryExpertJobImport(); //FindByCriteria(); // for categoryexpert #region "Currently No Need" //var smartstitchingList = new SmartStitching //{ // Criteria = new PPP_Project.Criteria.ImportJobsCriteria // { // CenterName = branchcode, // FromDate = fromDate, // ToDate = toDate, // } //}.FindSmartStitchingJobImportList(); //FindByCriteria(); // for smartstitching //var categoryexpertvotingList = new CategoryExpertVoting //{ // Criteria = new PPP_Project.Criteria.ImportJobsCriteria // { // CenterName = branchcode, // FromDate = fromDate, // ToDate = toDate, // } //}.FindCategoryExpertVotingJobImportList(); // for categoryexpert #endregion #region "For Probes" //if (ddlJobName.SelectedValue == "Probes") //{ // var probesList = new Probes // { // Criteria = new PPP_Project.Criteria.ImportJobsCriteria // { // CenterName = branchcode, // FromDate = fromDate, // ToDate = toDate, // } // }.FindByCriteria(); // DataTable attTbl = new DataTable(); // attTbl.Clear(); // attTbl.Columns.Clear(); // var result = (from dd in probesList // orderby dd.Center // select dd).ToList(); // // Convert to DataTable. // DataTable table = ConvertToDataTable(result); // //for (int i = table.Columns.Count - 1; i >= 0; i--) // table.Columns.Remove(table.Columns[0]); // table.Columns.Remove("TableName"); // if (result.Count() != 0) // { // for (int i = table.Columns.Count - 1; i >= 0; i--) // this is mean (table.Columns.Count - 1) last column count // { // DataRow row = table.Rows[table.Rows.Count - 1]; // //row["CreatedDate"] = GeneralUtility.ConvertDisplayDateStringFormat(Convert.ToDateTime(table.AsEnumerable().Last())); //(row["CreatedDate"]) // not good // int totalRows = table.Rows.Count; // int totalCols = table.Columns.Count; // string value = table.Rows[totalRows - 1][totalCols - 1].ToString(); // for (int j = 0; j < totalRows; j++) // { // table.Rows[j]["CreatedDate"] = GeneralUtility.ConvertDisplayDateStringFormat(value); // this is change to String Datetime to Display String Date in DataTable // table.AcceptChanges(); // } // } // } // //DataTable finalProbesdt2 = table.CopyToDataTable(); // DataTable finalProbesdt = SupressEmptyColumns(table); // //int sum = finalProbesdt.AsEnumerable().Sum(s => s.Field<int>("Total Probes")); // if (result.Count().Equals(0)) // { // MessageBox.MessageShow(GetType(), "No Export Data.!", ClientScript); // } // else // { // var fileName = "ProbesList_Export.xlsx"; // int count = 0; // Response.Clear(); // Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"; // //Response.AddHeader("content-disposition", "attachment;filename=" + HttpUtility.UrlEncode("Probes_List_Export.xlsx", System.Text.Encoding.UTF8)); // this.Response.AddHeader( // "content-disposition", // string.Format("attachment; filename={0}", fileName)); // ExcelPackage pkg = new ExcelPackage(); // using (pkg) // { // ExcelWorksheet ws = pkg.Workbook.Worksheets.Add("Probes"); // ws.Cells["A1"].LoadFromDataTable(finalProbesdt, true); // #region "No need region" // //ws.Cells["A1:MT"].Style.Font.Bold = true; // ////ws.Cells["A1"].Style.Font.Bold = true; // //using (ExcelRange rng = ws.Cells["A1:U" + (colcount - 1)]) // //{ // // rng.Style.Font.Bold = true; // //} // //var headerCell = ws.Cells["A5:MT"]; // //headerCell.Style.Fill.PatternType = ExcelFillStyle.Solid; // //headerCell.Style.Fill.BackgroundColor.SetColor(System.Drawing.Color.BurlyWood); // //var headerFont = headerCell.Style.Font; // //headerFont.Bold = true; // //ws.Cells[1, 30].Style.Fill.PatternType = ExcelFillStyle.Solid; // //ws.Cells[1, 30].Style.Fill.BackgroundColor.SetColor(System.Drawing.Color.LightBlue); // //ws.Cells[1, 30].Style.VerticalAlignment = ExcelVerticalAlignment.Center; // //ws.Cells[1, 30].Style.HorizontalAlignment = ExcelHorizontalAlignment.Center; // #endregion // if (result.Count() > 0) // { // count = result.Count() + 2; // // pkg.Workbook.Worksheets.FirstOrDefault().Cells[count, 3].Value = sum;//result.Sum(x => x.TotalProbes); // // pkg.Workbook.Worksheets.FirstOrDefault().Cells[count, 3].Style.Font.Bold = true; // // pkg.Workbook.Worksheets.FirstOrDefault().Cells[count, 3].Style.Font.UnderLine = true; // // pkg.Workbook.Worksheets.FirstOrDefault().Cells[count, 3].Style.Font.Color.SetColor(System.Drawing.Color.Blue); // // pkg.Workbook.Worksheets.FirstOrDefault().Cells[count, 3].Style.Border.BorderAround(ExcelBorderStyle.Thin); // } // pkg.Workbook.Worksheets.FirstOrDefault().DefaultColWidth = 20; // pkg.Workbook.Worksheets.FirstOrDefault().Row(1).Height = 25; // var modelTable = pkg.Workbook.Worksheets.FirstOrDefault().Cells["A1:MP" + (count - 1)]; //+ (count - 1) // var border = modelTable.Style.Border.Top.Style = modelTable.Style.Border.Left.Style = modelTable.Style.Border.Right.Style = modelTable.Style.Border.Bottom.Style = ExcelBorderStyle.Thin; // pkg.Workbook.Properties.Title = "Attempts"; // this.Response.BinaryWrite(pkg.GetAsByteArray()); // this.Response.End(); // } // } // End Probes Export Block //} #endregion // End Probes //MessageBox.MessageShow(this.GetType(), "Please Choose Job Name!.", ClientScript); }
// ゲーム画面の座標を取得する private async void GetGameWindowPosition() { PutLog("座標取得開始..."); try { // ゲーム画面の座標候補を検出する var rectList = await ScreenShotProvider.GetGameWindowPositionAsync().ConfigureAwait(false); // 候補数によって処理を分岐させる switch (rectList.Count) { case 0: { // 候補なしと表示する ScreenShotProvider.GameWindowRect = null; PutLog("座標取得 : 失敗"); SaveScreenshotFlg.Value = false; } break; case 1: { // 即座にその候補で確定させる ScreenShotProvider.GameWindowRect = rectList[0]; PutLog("座標取得 : 成功"); PutLog($"ゲーム座標 : {Utility.GetRectStr((Rectangle)ScreenShotProvider.GameWindowRect)}"); SaveScreenshotFlg.Value = true; } break; default: { // 各座標についてシーン認識を行い、認識可能だった座標が // 0個→従来通りの選択画面を表示する // 1個→その結果で確定させる // 2個以上→認識可能だった座標だけで選択画面を表示する var rectList2 = rectList.Where(rect => { var bitmap = ScreenShotProvider.GetScreenBitmap(rect); string scene = SceneRecognition.JudgeGameScene(bitmap); return(scene != "不明"); }).ToList(); switch (rectList2.Count) { case 0: { // 選択画面を表示する // http://blogs.wankuma.com/naka/archive/2009/02/12/168020.aspx var dispatcher = Application.Current.Dispatcher; if (dispatcher.CheckAccess()) { ShowSelectGameWindow(rectList); } else { dispatcher.Invoke(() => { ShowSelectGameWindow(rectList); }); } } break; case 1: { // 即座にその候補で確定させる ScreenShotProvider.GameWindowRect = rectList2[0]; PutLog("座標取得 : 成功"); PutLog($"ゲーム座標 : {Utility.GetRectStr((Rectangle)ScreenShotProvider.GameWindowRect)}"); SaveScreenshotFlg.Value = true; } break; default: { // 選択画面を表示する // http://blogs.wankuma.com/naka/archive/2009/02/12/168020.aspx var dispatcher = Application.Current.Dispatcher; if (dispatcher.CheckAccess()) { ShowSelectGameWindow(rectList2); } else { dispatcher.Invoke(() => { ShowSelectGameWindow(rectList2); }); } } break; } } break; } } catch (Exception) { PutLog($"座標取得 : 失敗"); } }