Exemple #1
0
    /*
     * /// <summary>
     * /// ターゲット文字列を取得する
     * /// </summary>
     *  static public string TargetCharas(){
     *  TextAsset csvFile = Resources.Load("File/target_charas") as TextAsset;
     *  StringReader reader = new StringReader(csvFile.text);
     *
     *          string readString = "";
     *  int height = 0;
     *  while(reader.Peek() > -1) {
     *
     *      string line = reader.ReadLine();
     *
     *                  readString += line;
     *  }
     *
     *          return readString;
     *  }
     */


    /// <summary>
    /// キー情報を取得する
    /// </summary>
    static public Dictionary <string, KanaKeyMapInfo> ReadKeyMapInfo()
    {
        TextAsset    csvFile = Resources.Load("File/kana_key_map") as TextAsset; /* Resouces/CSV下のCSV読み込み */
        StringReader reader  = new StringReader(csvFile.text);

        Dictionary <string, KanaKeyMapInfo> kanaKeyMapInfo = new  Dictionary <string, KanaKeyMapInfo>();
        int height = 0;

        while (reader.Peek() > -1)
        {
            string line = reader.ReadLine();

            height++; // 行数加算
            if (height == 1)
            {
                continue;               //1行目はコメントのため飛ばす
            }
            KanaKeyMapInfo info = new KanaKeyMapInfo();

            string[] str = line.Split('\t');
            info.kana         = str[0];
            info.typeKey      = str[1];
            info.leftShift    = int.Parse(str[2]);
            info.rightShift   = int.Parse(str[3]);
            info.reverseShift = int.Parse(str[4]);

            kanaKeyMapInfo[info.kana] = info;
        }

        return(kanaKeyMapInfo);
    }
    /// <summary>
    /// キーボードの表示の更新
    /// </summary>
    void ChangeSelectKeyborde(string kana)
    {
        //現在のキーボードの表示を修正する
        if (_selectedKey != null)
        {
            _selectedKey.ResetKey();
        }

        //該当するキー
        KanaKeyMapInfo info = _model.KanaKeyMapInfoData[kana];

        _keyButtons[info.typeKey].SelectKey(kana);

        //現在のキーボードの参照更新
        _selectedKey = _keyButtons[info.typeKey];

        //シフトの表示
        _rightShiftButton.ResetKey();
        _leftShiftButton.ResetKey();

        if (info.rightShift == 1)
        {
            _rightShiftButton.SelectKey();
        }
        else if (info.leftShift == 1)
        {
            _leftShiftButton.SelectKey();
        }
    }
    /// <summary>
    /// 今回入力する文字列のガイドを出す
    /// </summary>
    private string guildString(string targetChara)
    {
        string         guide = "";
        KanaKeyMapInfo info  = _model.KanaKeyMapInfoData[targetChara];

        guide = info.typeKey;

        //右シフト?左シフト?
        if (info.leftShift == 1)
        {
            //左シフト
            guide += " + 左シフト";
        }
        else if (info.rightShift == 1)
        {
            guide += " + 右シフト";
        }

        return(guide);
    }
    /// <summary>
    /// 入力された文字が、ターゲットどおりになっているか判定する
    /// </summary>
    bool CheckTargetCharactor(string targetChara, IList <string> inputdatas)
    {
        bool rtn     = false;
        bool shiftOn = false;

        //targetCharaから判定文字を選択する
        KanaKeyMapInfo info = _model.KanaKeyMapInfoData[targetChara];

        //シフト判定
        if (info.leftShift == 1 || info.rightShift == 1)
        {
            shiftOn = true;
        }

        //親指シフト判定
        Debug.Log("ターゲット文字:" + targetChara);

        //文字判定
        string strInput = Util.GetKeybordCharactor(inputdatas);

        if (shiftOn == true)
        {
            //2文字以上
            if ((strInput.Contains(" " + info.typeKey)) || (strInput.Contains(info.typeKey + " ")))
            {
                rtn = true;
            }
        }
        else
        {
            //1文字
            if (info.typeKey == strInput)
            {
                rtn = true;
            }
        }
        return(rtn);
    }