protected override int ExecInternal() { if (ArgNum < 2) { throw new EventErrorException(this, "ColorFilterコマンドの引数の数が違います"); } var late_refresh = false; Map.MapDrawIsMapOnly = false; var trans_par = 0.5d; for (var i = 3; i <= ArgNum; i++) { var buf = GetArgAsString(i); switch (buf ?? "") { case "非同期": { late_refresh = true; break; } case "マップ限定": { Map.MapDrawIsMapOnly = true; break; } default: { if (Strings.Right(buf, 1) == "%" && Information.IsNumeric(Strings.Left(buf, Strings.Len(buf) - 1))) { trans_par = GeneralLib.MaxDbl( 0d, GeneralLib.MinDbl(1d, Conversions.ToDouble(Strings.Left(buf, Strings.Len(buf) - 1)) / 100d)); } else { throw new EventErrorException(this, "ColorFilterコマンドに不正なオプション「" + buf + "」が使われています"); } break; } } } Color filter_color; { var buf = GetArgAsString(2); if (!ColorExtension.TryFromHexString(buf, out filter_color)) { throw new EventErrorException(this, "ColorFilterコマンドのカラー指定が不正です"); } } // マウスカーソルを砂時計に GUI.ChangeStatus(GuiStatus.WaitCursor); GUI.SetupBackground("フィルタ", "非同期", filter_color, trans_par); GUI.RedrawScreen(late_refresh); // マウスカーソルを元に戻す GUI.ChangeStatus(GuiStatus.Default); return(EventData.NextID); }