Option Strict Off
Option Explicit On
Imports System.Windows.Forms
'------------------------------------ 2024/04/01 ------------------------------------
Public Class frmDlgOptionKana

#Region "宣言"
    Private mNew実行中 As Boolean = True
    Private mMe_gmDlgID As Integer = 0
    Private mDlgLoading As Boolean = False
    Private mpゲーム背景画像を表示 As Integer
    Private mpゲーム背景の明るさ As Integer
    Private mpカードスピード As Integer
    Private mpカード移動の軌跡を残す As Integer
    Private mpカードの明るさ As Single
    Private mpゲーム配色ひらがな As Integer
    Private mpゲーム配色カタカナ As Integer
    Private mpゲーム配色ウインド As Integer
    Private mpフォント名 As String
    Private mp現在のフォントボールド As Boolean
    Private mp現在のフォントサイズ倍数 As Single
    '**************************************************************************
    '宣言
    Private WithEvents o色見本 As 五clsColorSet2401 = Nothing
    Private flg_o色見本Loading As Boolean = True
    '**************************************************************************************************************************************
    Private WithEvents イベントgAppEventMaker As 五clsEventMaker
    '**************************************************************************************************************************************
    Event ダイアログの初期化をしてください(ByRef wIsOK As Boolean, ByRef wMe_gmDlgID As Integer)
    Event 他のウインドウが表示あるいは非表示になりました(ByVal rMe_gmDlgID As Integer, ByVal r表示変更ウインドウID As Integer, ByVal r表示True消去False As Boolean, ByRef wRet_rMe_gmDlgIDウインドウを消去しなさい As Boolean)
#End Region

#Region "AppIniFileOp"
    Private Function zzAppIniFileOp(ByVal Load_0_QueryUnload_1_Resize_2_DoIniSave_3 As Long) As Boolean
        '読出し時に　INI ファイルが存在しない場合は　False　を返します。
        If gggAppIniFile Is Nothing Then Return False
        Return gggAppIniFile.aaAppIniFileOp_フォームサイズと位置だけ_共通処理(Load_0_QueryUnload_1_Resize_2_DoIniSave_3, Me, "2531")
    End Function
#End Region

#Region "フォームイベント"
    '***********************************************************************
    Public Sub New()
        '*****************************************************************
        mNew実行中 = True '2023/01/24 コントロールの初期化で、プロパティが変更されるのを防ぐ
        '*****************************************************************
        ' この呼び出しは、Windows フォーム デザイナで必要です。
        InitializeComponent()
        ' InitializeComponent() 呼び出しの後で初期化を追加します。
    End Sub
    Private Sub frmDlgOptionKana_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        '---------------------------------------------------
        イベントgAppEventMaker = gAppEventMaker
        '---------------------------------------------------
        mNew実行中 = False
        mDlgLoading = True
        Dim wIsOK As Boolean = False
        RaiseEvent ダイアログの初期化をしてください(wIsOK, mMe_gmDlgID)
        If Not wIsOK Then GoTo EXIT_ON_ERROR
        '---------------------------------------------------
        Try
            With gmアプリ固有クラス
                '------------------------------------------------------
                Dim wFonts() As String = {""}
                cboフォント名.Items.Clear()
                gggint = Ⅹフォントコンボ簡易リスト作成(wFonts, cboフォント名, (.pフォント名), "", True)
                gggbol = zzコントロールすべてにデーター設定()
                '------------------------------------------------------
                mpゲーム背景画像を表示 = .pゲーム背景画像を表示
                mpゲーム背景の明るさ = .pゲーム背景の明るさ
                mpカードスピード = .pカードスピード
                mpカード移動の軌跡を残す = .pカード移動の軌跡を残す
                mpカードの明るさ = .pカードの明るさ
                mpゲーム配色ひらがな = .pゲーム配色ひらがな
                mpゲーム配色カタカナ = .pゲーム配色カタカナ
                mpゲーム配色ウインド = .pゲーム配色ウインド
                mpフォント名 = .pフォント名
                mp現在のフォントボールド = .p現在のフォントボールド
                mp現在のフォントサイズ倍数 = .p現在のフォントサイズ倍数
            End With
            '------------------------------------------------------
            o色見本 = New 五clsColorSet2401(flg_o色見本Loading, Me, lblColor)
        Catch
            MsgBox(ErrorToString)
            GoTo EXIT_ON_ERROR
        End Try
        '---------------------------------------------------
        mDlgLoading = False
        lstカラー設定.SelectedIndex = 0
        gggbol = zzEnabledSet()
        '---------------------------------------------------
        gggbol = ⅩForm_OwnerSet_IconSet_TextSet(Me, "オプション設定", Me.Owner)
        If Not zzAppIniFileOp(0) Then gggint = ⅩFormMove(gcoフォームをスクリーン中心に移動, Me) 'INI ファイルが存在しない場合に、このフォームを画面のセンターに表示するコード。
        gggbol = イベントgAppEventMaker.MakeEventフォームの表示消去(mMe_gmDlgID, True)
        Exit Sub
        '---------------------------------------------------
EXIT_ON_ERROR:
        Call ⅩMsgBox_OK_情報("frmDlgOptionKana_Load() 内でエラーが発生しました。")
        Me.Close()
    End Sub

    Private Sub frmDlgOptionKana_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
        'qqqqq("frmDlgOptionKana_FormClosing")
        o色見本.Dispose()
        If Me.Visible Then gggint = zzAppIniFileOp(2)
        gggint = zzAppIniFileOp(1)
        If イベントgAppEventMaker Is Nothing Then
            イベントgAppEventMaker = gAppEventMaker
        End If
        gggbol = イベントgAppEventMaker.MakeEventフォームの表示消去(mMe_gmDlgID, False)
    End Sub
    Private Sub mnu閉じる_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles mnu閉じる.Click
        Me.Close()
    End Sub
    Private Sub frmDlgOptionKana_Disposed(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Disposed
        qqqqq("frmDlgOptionKana_Disposed")
        Call gmアプリ固有クラス.aaオプション設定Dlg_Load_1_Disposed_2(2, Nothing)
    End Sub
    '***********************************************************************
#End Region

#Region "コントロール　イベント"
    '***********************************************************************
    Private Sub lst背景画像を表示_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles lst背景画像を表示.SelectedIndexChanged
        If mDlgLoading Then Return
        gmアプリ固有クラス.pゲーム背景画像を表示 = lst背景画像を表示.SelectedIndex
        Dim b As Boolean = gmアプリ固有クラス.pゲーム背景画像を表示BOOL
        lst背景の明るさ.Enabled = b
        gggbol = zz背景表示の選択変更の後処理()
        If b Then
            gggbol = gmアプリ固有クラス.aa描画用_pctBoxs_セットImage(frmMain, "", True, True)
            gggbol = gmアプリ固有クラス.aa背景の明るさを変更する(lst背景の明るさ)
        Else

        End If
        Call frmMain.aa_もしゲーム実行中ならば再描画(3, False, True)
        gggbol = zzEnabledSet()
        frmMain.Refresh()
    End Sub
    Private Sub lst背景の明るさ_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles lst背景の明るさ.SelectedIndexChanged
        If mNew実行中 Then Return
        If mDlgLoading Then Return
        If gmアプリ固有クラス.aa背景の明るさを変更する(lst背景の明るさ) Then
            Call frmMain.aa_もしゲーム実行中ならば再描画(3, False, True)
            gggbol = zzEnabledSet()
        End If
    End Sub
    Private Sub lstカードスピード_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles lstカードスピード.SelectedIndexChanged
        If mNew実行中 Then Return
        If mDlgLoading Then Return
        Call gmアプリ固有クラス.pカードスピードListBoxから読出し(lstカードスピード)
        gggbol = zzEnabledSet()
    End Sub
    Private Sub lstカード移動の軌跡を残す_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles lstカード移動の軌跡を残す.SelectedIndexChanged
        If mNew実行中 Then Return
        If mDlgLoading Then Return
        gmアプリ固有クラス.pカード移動の軌跡を残す = lstカード移動の軌跡を残す.SelectedIndex
        gggbol = zzEnabledSet()
    End Sub
    Private Sub lstカードの明るさ_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles lstカードの明るさ.SelectedIndexChanged
        If mNew実行中 Then Return
        If mDlgLoading Then Return
        gggbol = gmアプリ固有クラス.pカードの明るさListBox操作(0, lstカードの明るさ)
        gggbol = gmアプリ固有クラス.aaカードの配置と再描画(3, 0, False)
        gggbol = zzEnabledSet()
    End Sub
    Private Sub cboフォント名_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cboフォント名.SelectedIndexChanged
        If mNew実行中 Then Return
        If mDlgLoading Then Return
        Dim s As String = cboフォント名.SelectedItem
        If gmアプリ固有クラス.pフォント名 <> s Then
            gmアプリ固有クラス.pフォント名 = s
            gmアプリ固有クラス.aaカードの配置と再描画(3, 0, False)
        End If
        gggbol = zzEnabledSet()
    End Sub
    Private Sub chkフォントボールド_CheckStateChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles chkフォントボールド.CheckStateChanged
        If mNew実行中 Then Return
        If mDlgLoading Then Return
        Dim b As Boolean = chkフォントボールド.Checked
        If gmアプリ固有クラス.p現在のフォントボールド <> b Then
            gmアプリ固有クラス.p現在のフォントボールド = b
            gggbol = gmアプリ固有クラス.aaカードの配置と再描画(3, 0, False)
        End If
        gggbol = zzEnabledSet()
    End Sub
    Private Sub lst現在のフォントサイズ倍数_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles lst現在のフォントサイズ倍数.SelectedIndexChanged
        If mNew実行中 Then Return
        If mDlgLoading Then Return
        gggbol = gmアプリ固有クラス.p現在のフォントサイズ倍数ListBox操作(0, lst現在のフォントサイズ倍数)
        gggbol = gmアプリ固有クラス.aaカードの配置と再描画(3, 0, False)
        gggbol = zzEnabledSet()
    End Sub
    '***********************************************************************
    Private Sub lstカラー設定_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles lstカラー設定.SelectedIndexChanged
        gggbol = lstカラー設定_SelectedIndexChanged_COM(lstカラー設定.SelectedIndex, 0, False)
    End Sub
    Private Function lstカラー設定_SelectedIndexChanged_COM(ByVal Index As Integer, ByVal rCurColor As Integer, ByVal rEventMouseUp As Boolean) As Boolean
        If mNew実行中 Then Return False
        If mDlgLoading Then Return False
        If o色見本 Is Nothing Then Return False
        If flg_o色見本Loading Then Return False
        Dim ccc As Integer
        If Index >= 0 And Index < 3 Then
            With gmアプリ固有クラス
                Select Case Index
                    Case 0 : ccc = .pゲーム配色ひらがな
                    Case 1 : ccc = .pゲーム配色カタカナ
                    Case 2 : ccc = .pゲーム配色ウインド
                End Select
            End With
            o色見本.CurMainColor = ccc
        ElseIf Index < 0 Then
            Dim nnn As Integer = lstカラー設定.SelectedIndex
            If rCurColor >= 0 Then
                If rEventMouseUp Then
                    With gmアプリ固有クラス
                        Select Case nnn
                            Case 0 : .pゲーム配色ひらがな = rCurColor
                            Case 1 : .pゲーム配色カタカナ = rCurColor
                            Case 2 : .pゲーム配色ウインド = rCurColor
                        End Select
                    End With
                    gggbol = zzEnabledSet()
                End If
            End If
        End If
        Return True
    End Function
    '***********************************************************************
    Private Sub o色見本_OnColorChanged(ByVal rCurMainColor As Integer, ByVal rCurColor As Integer, ByVal rChangeMode As 五clsColorSet2401.ColorChangeMode, ByVal rEventMouseUp As Boolean) Handles o色見本.OnColorChanged
        '色見本イベントの処理
        If flg_o色見本Loading Then Exit Sub
        gggbol = lstカラー設定_SelectedIndexChanged_COM(-1, rCurColor, rEventMouseUp)
        gggbol = frmMain.aa_もしゲーム実行中ならば再描画(0, False, False)
        If ppゲーム実行中 = False Then frmMain.pctメイン.Refresh()
    End Sub
#End Region

#Region "メニューイベント"
    '***********************************************************************
    Private Sub mnuすべて元に戻す_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles mnuすべて元に戻す.Click
        gggbol = zzResEtData(True)
        gggbol = lstカラー設定_SelectedIndexChanged_COM(lstカラー設定.SelectedIndex, 0, False)
    End Sub
    Private Sub mnu規定値にリセット_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles mnu規定値にリセット.Click
        gggbol = zzResEtData(False)
        gggbol = lstカラー設定_SelectedIndexChanged_COM(lstカラー設定.SelectedIndex, 0, False)
    End Sub
    '***********************************************************************
#End Region

#Region "ローカルヘルパー"
    '***********************************************************************
    Private Function zz背景表示の選択変更の後処理() As Boolean
        Dim bbb As Boolean = gmアプリ固有クラス.pゲーム背景画像を表示BOOL
        With lstカラー設定.Items
            'mDlgLoading = True
            If (Not bbb) And .Count = 2 Then
                .Add("ゲームの背景の色")
                lstカラー設定.SelectedIndex = 2
            ElseIf bbb And .Count = 3 Then
                If lstカラー設定.SelectedIndex = 2 Then lstカラー設定.SelectedIndex = 0
                .RemoveAt(2)
            End If
            'mDlgLoading = False
        End With
        lst背景の明るさ.Enabled = bbb
    End Function
    Private Function zzコントロールすべてにデーター設定() As Boolean
        With gmアプリ固有クラス
            gggbol = .pカード移動の軌跡を残す_ListBox初期化(lstカード移動の軌跡を残す)
            '------------------------------------------------------
            lst背景画像を表示.SelectedIndex = .pゲーム背景画像を表示
            gggbol = zz背景表示の選択変更の後処理()
            '------------------------------------------------------
            Call .pゲーム背景の明るさListBoxに設定(lst背景の明るさ)
            Call .pカードスピードListBoxに設定(lstカードスピード)
            lstカード移動の軌跡を残す.SelectedIndex = .pカード移動の軌跡を残す
            gggbol = .pカードの明るさListBox操作(1, lstカードの明るさ)
            '------------------------------------------------------
            gggint = Ⅹコンボボックスで文を探し存在すればそれを選択(cboフォント名, (.pフォント名), True)
            '------------------------------------------------------
            chkフォントボールド.Checked = .p現在のフォントボールド
            gggbol = .p現在のフォントサイズ倍数ListBox操作(1, lst現在のフォントサイズ倍数)
            '------------------------------------------------------
        End With
        Return True
    End Function
    Private Function zzResEtData(ByVal 元に戻す_True_規定値にリセット_False As Boolean) As Boolean
        Dim bol As Boolean = 元に戻す_True_規定値にリセット_False
        With gmアプリ固有クラス
            .pゲーム背景画像を表示 = IIf(bol, mpゲーム背景画像を表示, .pゲーム背景画像を表示DEF)
            .pゲーム背景の明るさ = IIf(bol, mpゲーム背景の明るさ, .pゲーム背景の明るさDEF)
            .pカードスピード = IIf(bol, mpカードスピード, .pカードスピードDEF)
            .pカード移動の軌跡を残す = IIf(bol, mpカード移動の軌跡を残す, .pカード移動の軌跡を残すDEF)
            .pカードの明るさ = IIf(bol, mpカードの明るさ, .pカードの明るさDEF)
            .pゲーム配色ひらがな = IIf(bol, mpゲーム配色ひらがな, .pゲーム配色ひらがなDEF)
            .pゲーム配色カタカナ = IIf(bol, mpゲーム配色カタカナ, .pゲーム配色カタカナDEF)
            .pゲーム配色ウインド = IIf(bol, mpゲーム配色ウインド, .pゲーム配色ウインドDEF)
            .pフォント名 = IIf(bol, mpフォント名, .pフォント名DEF)
            .p現在のフォントボールド = IIf(bol, mp現在のフォントボールド, .p現在のフォントボールドDEF)
            .p現在のフォントサイズ倍数 = IIf(bol, mp現在のフォントサイズ倍数, .p現在のフォントサイズ倍数DEF)
        End With
        mDlgLoading = True
        gggbol = zzコントロールすべてにデーター設定()
        gggbol = zzEnabledSet()
        mDlgLoading = False
        gggbol = frmMain.aa_もしゲーム実行中ならば再描画(0, False, False)
        If ppゲーム実行中 = False Then frmMain.pctメイン.Refresh()
    End Function
    Private Function zzEnabledSet() As Boolean
        With gmアプリ固有クラス
            mnuすべて元に戻す.Enabled = Not ( _
                mpゲーム背景画像を表示 = .pゲーム背景画像を表示 And _
                mpゲーム背景の明るさ = .pゲーム背景の明るさ And _
                mpカードスピード = .pカードスピード And _
                mpカード移動の軌跡を残す = .pカード移動の軌跡を残す And _
                mpカードの明るさ = .pカードの明るさ And _
                mpゲーム配色ひらがな = .pゲーム配色ひらがな And _
                mpゲーム配色カタカナ = .pゲーム配色カタカナ And _
                mpゲーム配色ウインド = .pゲーム配色ウインド And _
                mpフォント名 = .pフォント名 And _
                mp現在のフォントボールド = .p現在のフォントボールド And _
                mp現在のフォントサイズ倍数 = .p現在のフォントサイズ倍数)
            '------------------------------------------------------
            mnu規定値にリセット.Enabled = Not ( _
                .pゲーム背景画像を表示 = .pゲーム背景画像を表示DEF And _
                .pゲーム背景の明るさ = .pゲーム背景の明るさDEF And _
                .pカードスピード = .pカードスピードDEF And _
                .pカード移動の軌跡を残す = .pカード移動の軌跡を残すDEF And _
                .pカードの明るさ = .pカードの明るさDEF And _
                .pゲーム配色ひらがな = .pゲーム配色ひらがなDEF And _
                .pゲーム配色カタカナ = .pゲーム配色カタカナDEF And _
                .pゲーム配色ウインド = .pゲーム配色ウインドDEF And _
                .pフォント名 = .pフォント名DEF And _
                .p現在のフォントボールド = .p現在のフォントボールドDEF And _
                .p現在のフォントサイズ倍数 = .p現在のフォントサイズ倍数DEF)
        End With
        Return True
    End Function
    '***********************************************************************
#End Region

#Region "イベント from gAppEventMaker"
    '***********************************************************************
    Private Sub イベントgAppEventMaker_カードショー開始と停止(ByVal r開始true停止false As Boolean) Handles イベントgAppEventMaker.カードショー開始と停止
        If Me.Visible And r開始true停止false Then Call mnu閉じる_Click(Nothing, Nothing)
    End Sub
    Private Sub イベントgAppEventMaker_ゲーム開始と停止(ByVal r開始True停止False As Boolean, ByRef wOptionRetStr As String) Handles イベントgAppEventMaker.ゲーム開始と停止
        'If Me.Visible And r開始True停止False Then Call mnu閉じる_Click(Nothing, Nothing)
    End Sub
    Private Sub イベントgAppEventMaker_スイスイとユラユラ開始と停止() Handles イベントgAppEventMaker.スイスイとユラユラ開始と停止
        If ppスイスイフラフラ_いずれかあるいは両方_を実行中 And Me.Visible Then Call mnu閉じる_Click(Nothing, Nothing)
    End Sub
    Private Sub イベントgAppEventMaker_フォームの表示と消去(ByVal rフォーム名ID As Integer, ByVal r表示True消去False As Boolean) Handles イベントgAppEventMaker.フォームの表示と消去
        Dim wRet_rMe_gmDlgIDウインドウを消去しなさい As Boolean
        RaiseEvent 他のウインドウが表示あるいは非表示になりました(mMe_gmDlgID, rフォーム名ID, r表示True消去False, wRet_rMe_gmDlgIDウインドウを消去しなさい)
        If wRet_rMe_gmDlgIDウインドウを消去しなさい Then Call mnu閉じる_Click(Nothing, Nothing)
    End Sub
    '***********************************************************************
#End Region


End Class