Example #1
0
        // 毎秒ごとの処理を行う
        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();
                }
            }
        }
Example #2
0
 // 定期的にスクリーンショットを取得し、そこに起因する処理を行う
 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;
         }
     }
 }
Example #3
0
        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);
        }
Example #4
0
        // ゲーム画面の座標を取得する
        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($"座標取得 : 失敗");
            }
        }