tyrano.plugin.kag.parser ={ tyrano:null, kag:null, flag_script:false , //スクリプト解析中なら deep_if: 0, init:function(){ //alert("kag.parser 初期化"); //this.tyrano.test(); }, loadConfig:function(call_back){ var that = this; //同じディレクトリにある、KAG関連のデータを読み込み $.loadText("./data/system/Config.tjs",function(text_str){ var map_config = that.compileConfig(text_str); if(call_back){ call_back(map_config); } }); }, //コンフィグファイルをデータ構造に格納 compileConfig:function(text_str){ var error_str =""; var map_config = {}; var array_config = text_str.split("\n"); for(var i=0; i< array_config.length;i++){ try{ var line_str = $.trim(array_config[i]); if(line_str !="" && line_str.substr(0,1)===";"){ var tmp_comment = line_str.split("//"); if(tmp_comment.length>1){ line_str = $.trim(tmp_comment[0]); } line_str = $.replaceAll(line_str,";",""); line_str = $.replaceAll(line_str,"\"",""); var tmp = line_str.split("="); var key = $.trim(tmp[0]); var val = $.trim(tmp[1]); map_config[key] = val; } }catch(e){ error_str +="Error:Config.tjsに誤りがあります/行:"+i+""; } } if(error_str !=""){ alert(error_str); } return map_config; }, //シナリオをオブジェクト化する parseScenario:function(text_str){ var array_s = []; var map_label = {}; //ラベル一覧 var array_row = text_str.split("\n"); var flag_comment = false; //コメント中なら for(var i=0;i 1){ var array_line = tmp_line.split(":"); chara_name = array_line[0]; chara_face = array_line[1]; }else{ chara_name = tmp_line; } //キャラクターボックスへの名前表示 var text_obj = { line:i, name:"chara_ptext", pm:{"name":chara_name,"face":chara_face}, val:text }; array_s.push(text_obj); }else if(first_char ==="*"){ //ラベル var label_tmp = line_str.substr(1,line_str.length).split("|"); var label_key = ""; var label_val = ""; label_key = $.trim(label_tmp[0]); if(label_tmp.length >1){ label_val = $.trim(label_tmp[1]); } var label_obj = { name:"label", pm:{ "line":i, "index":array_s.length, "label_name":label_key, "val":label_val }, val:label_val }; //ラベル array_s.push(label_obj); if(map_label[label_obj.pm.label_name]){ //this.kag.warning("警告:"+i+"行目:"+"ラベル名「"+label_obj.pm.label_name+"」は同一シナリオファイル内に重複しています"); this.kag.warning("Warning line:"+i+" "+ $.lang("label") +"'"+ label_obj.pm.label_name+"'"+ $.lang("label_double")); }else{ map_label[label_obj.pm.label_name] = label_obj.pm; } }else if(first_char ==="@"){ //コマンド行確定なので、その残りの部分を、ごそっと回す var tag_str =line_str.substr(1,line_str.length); // "image split=2 samba = 5" var tmpobj = this.makeTag(tag_str,i); array_s.push(tmpobj); }else{ //半角アンダーバーで始まっている場合は空白ではじめる if(first_char === "_") { line_str = line_str.substring(1,line_str.length); } var array_char = line_str.split(""); var text = "";//命令じゃない部分はここに配置していく var tag_str =""; //1文字づつ解析していく var flag_tag = false; //タグ解析中 var num_kakko = 0; //embタグの中の配列[]扱うために for(var j=0;j