public void Parse(StringGridRow row) { this.RenderTextureType = AdvParser.ParseCellOptional <AdvRenderTextureMode>(row, AdvColumnName.RenderTexture, AdvRenderTextureMode.None); if (RenderTextureType != AdvRenderTextureMode.None) { try { float[] rect = row.ParseCellArray <float>(AdvColumnName.RenderRect.QuickToString()); if (rect.Length != 4) { Debug.LogError(row.ToErrorString("IconRect. Array size is not 4")); } else { this.RenderTextureOffset = new Vector3(-rect[0], -rect[1], 1000); this.RenderTextureSize = new Vector2(rect[2], rect[3]); } this.RenderTextureScale = row.ParseCellOptional(AdvColumnName.RenderTextureScale.QuickToString(), 1.0f); this.RenderTextureSize *= RenderTextureScale; } catch (Exception) { // Debug.LogError(row.ToErrorString("IconRect. Array size is not 4")); } } }
//現在の設定言語にローカライズされたテキストを取得 string ParseCellLocalizedTextBySwapDefaultLanguage(StringGridRow row, string defaultColumnName) { string columnName = defaultColumnName; if (row.Grid.ContainsColumn(CurrentLanguage)) { //現在の言語があるなら、その列を columnName = currentLanguage; } else { if (DataLanguage == CurrentLanguage) { columnName = defaultColumnName; } else if (!string.IsNullOrEmpty(DefaultLanguage)) { columnName = DefaultLanguage; } else { if (!string.IsNullOrEmpty(DataLanguage)) { if (CurrentLanguage == DataLanguage) { //「DataLanguage」で言語指定がある場合、Text列は指定言語の場合にのみ表示されるようになります。 columnName = defaultColumnName; } else { //DefaultLanguageの列のテキストが基本の表示テキストとして使用されます。 columnName = DefaultLanguage; } } } } if (row.IsEmptyCell(columnName)) { //指定の言語が空なら、デフォルトのText列を //(DefaultLanguageの列のテキストが空の場合は、やはりText列のテキストを表示) return(row.ParseCellOptional <string>(defaultColumnName, "")); } else { //指定の言語を return(row.ParseCellOptional <string>(columnName, "")); } }
//現在の設定言語にローカライズされたテキストを取得 public static string ParseCellLocalizedText(StringGridRow row, string defaultColumnName) { LanguageManagerBase languageManager = LanguageManagerBase.Instance; if (languageManager == null) { return(row.ParseCellOptional <string>(defaultColumnName, "")); } return(languageManager.ParseCellLocalizedText(row, defaultColumnName)); }
//現在の設定言語にローカライズされたテキストを取得 public static string ParseCellLocalizedText(StringGridRow row, string defaultColumnName) { string columnName = defaultColumnName; if (LanguageManager.Instance != null) { string currentLanguage = LanguageManager.Instance.CurrentLanguage; if (row.Grid.ContainsColumn(currentLanguage)) { //現在の言語があるなら、その列を columnName = currentLanguage; } else { //デフォルトデータの言語指定がある場合、 //現在の言語とデフォルトデータの言語が違う場合、 string dataLanguage = LanguageManager.Instance.DataLanguage; if (!string.IsNullOrEmpty(dataLanguage)) { if (currentLanguage == dataLanguage) { columnName = defaultColumnName; } else { columnName = LanguageManager.Instance.DefaultLanguage; } } } } if (row.IsEmptyCell(columnName)) { //指定の言語が空なら、デフォルトのText列を return(row.ParseCellOptional <string>(defaultColumnName, "")); } else { //指定の言語を return(row.ParseCellOptional <string>(columnName, "")); } }
bool CheckMacroArg(string str, StringGridRow macroArgs, StringGridRow macroHeader, out string macroText) { bool ret = false; int index = 0; macroText = ""; while (index < str.Length) { bool isFind = false; if (str[index] == '%') { foreach (string key in Grid.ColumnIndexTbl.Keys) { if (key.Length <= 0) { continue; } for (int i = 0; i < key.Length; ++i) { if (key[i] != str[index + 1 + i]) { break; } else if (i == key.Length - 1) { isFind = true; } } if (isFind) { string def = macroHeader.ParseCellOptional <string>(key, ""); macroText += macroArgs.ParseCellOptional <string>(key, def); index += key.Length; ret = true; break; } } } if (!isFind) { macroText += str[index]; } ++index; } return(ret); }
//指定の行をマクロ展開 public List <StringGridRow> MacroExpansion(StringGridRow args, string debugMsg) { //マクロ展開後の行リスト List <StringGridRow> list = new List <StringGridRow>(); if (DataList.Count <= 0) { return(list); } //展開先の列数と同じ数のセル(文字列の配列)をもつ int maxStringCount = 0; foreach (var keyValue in args.Grid.ColumnIndexTbl) { maxStringCount = Mathf.Max(keyValue.Value, maxStringCount); } maxStringCount += 1; for (int i = 0; i < DataList.Count; ++i) { string[] strings = new string[maxStringCount]; for (int index = 0; index < strings.Length; ++index) { strings[index] = ""; } StringGridRow data = DataList[i]; //展開先の列数と同じ数のセル(文字列の配列)をもつ foreach (var keyValue in args.Grid.ColumnIndexTbl) { string argKey = keyValue.Key; int argIndex = keyValue.Value; strings[argIndex] = ParaseMacroArg(data.ParseCellOptional <string>(argKey, ""), args); } //展開先のシートの構造に合わせる //展開先シートを親Girdに持ち StringGridRow macroData = new StringGridRow(args.Grid, args.RowIndex); macroData.InitFromStringArray(strings); list.Add(macroData); //デバッグ情報の記録 macroData.DebugInfo = debugMsg + " : " + (data.RowIndex + 1) + " "; } return(list); }
//現在の設定言語にローカライズされたテキストを取得 string ParseCellLocalizedTextByNoSwap(StringGridRow row, string defaultColumnName) { string columnName = GetLocalizedColumnName(defaultColumnName); if (!row.Grid.ContainsColumn(columnName)) { Debug.LogError(row.ToErrorString(columnName + " is empty column. Set localize text column")); return(""); } if (this.BlankTextType == LanguageBlankTextType.NoBlankText) { //テキストセルの内容が空で、PageCtrlの設定もない場合はエラーを出す if (row.IsEmptyCell(columnName) && row.IsEmptyCell(AdvColumnName.PageCtrl.QuickToString())) { Debug.LogError(row.ToErrorString(columnName + " is empty cell. Set localize text")); return(""); } } //指定の言語を return(row.ParseCellOptional <string>(columnName, "")); }
//指定の名前のセルを、型Tとして解析・取得(データがなかったらデフォルト値を返す) public static T ParseCellOptional <T>(StringGridRow row, AdvColumnName name, T defaultVal) { return(row.ParseCellOptional <T>(Localize(name), defaultVal)); }
private void ParseHeader(StringGridRow row) { this.Clip.set_name(row.ParseCell <string>(0).Substring(1)); this.Clip.set_wrapMode(row.ParseCellOptional <WrapMode>(1, 0)); }
void ParseHeader(StringGridRow row) { Clip.name = row.ParseCell <string>(0).Substring(1); Clip.wrapMode = row.ParseCellOptional <WrapMode>(1, WrapMode.Default); }
//指定の行をマクロ展開 public List <StringGridRow> MacroExpansion(StringGridRow args, string debugMsg) { //マクロ展開後の行リスト List <StringGridRow> list = new List <StringGridRow>(); if (DataList.Count <= 0) { return(list); } /* * //マクロシート * StringGrid macroSheet = DataList[0].Grid; * string sheetName = args.Grid.Name + ":" + (args.RowIndex+1).ToString() + "-> Macro : " + macroSheet.Name; * StringGrid grid = new StringGrid(sheetName, args.Grid.SheetName, macroSheet.Type); * grid.Macro = new StringGrid.MacroInfo(args); * grid.ColumnIndexTbl = macroSheet.ColumnIndexTbl; */ /* * //マクロ用の情報 * internal class MacroInfo * { * StringGridRow args; * internal MacroInfo(StringGridRow args) * { * this.args = args; * } * * internal string ToDebugString() * { * if (args.Grid.Macro != null) * { * return args.Grid.Macro.ToDebugString(); * } * else * { * string sheetName = args.Grid.SheetName; * return sheetName + ":" + (args.RowIndex + 1) + " "; * } * } * * }; * internal MacroInfo Macro { get; set; } */ for (int i = 0; i < DataList.Count; ++i) { StringGridRow data = DataList[i]; //展開先の列数と同じ数のセル(文字列の配列)をもつ string[] strings = new string[args.Grid.ColumnIndexTbl.Count]; foreach (var keyValue in args.Grid.ColumnIndexTbl) { string argKey = keyValue.Key; int argIndex = keyValue.Value; strings[argIndex] = ParaseMacroArg(data.ParseCellOptional <string>(argKey, ""), args); } //展開先のシートの構造に合わせる //展開先シートを親Girdに持ち StringGridRow macroData = new StringGridRow(args.Grid, args.RowIndex); macroData.InitFromStringArray(strings); list.Add(macroData); //デバッグ情報の記録 macroData.DebugInfo = debugMsg + " : " + (data.RowIndex + 1) + " "; } return(list); }
public AdvGraphicInfo(string dataType, int index, string key, StringGridRow row, IAdvSettingData advSettindData) { this.DataType = dataType; this.Index = index; this.Key = key; this.SettingData = advSettindData; this.RowData = row; switch (DataType) { case AdvGraphicInfo.TypeParticle: this.FileType = AdvGraphicInfo.FileTypeParticle; break; default: this.FileType = AdvParser.ParseCellOptional <string>(row, AdvColumnName.FileType, ""); break; } this.FileName = AdvParser.ParseCell <string>(row, AdvColumnName.FileName); try { this.Pivot = ParserUtil.ParsePivotOptional(AdvParser.ParseCellOptional <string>(row, AdvColumnName.Pivot, ""), new Vector2(0.5f, 0.5f)); } catch (System.Exception e) { Debug.LogError(row.ToErrorString(e.Message)); } try { this.Pivot0 = ParserUtil.ParsePivotOptional(AdvParser.ParseCellOptional <string>(row, AdvColumnName.Pivot0, ""), new Vector2(0.5f, 0.5f)); } catch (System.Exception e) { Debug.LogError(row.ToErrorString(e.Message)); } try { this.Scale = ParserUtil.ParseScale3DOptional(AdvParser.ParseCellOptional <string>(row, AdvColumnName.Scale, ""), Vector3.one); } catch (System.Exception e) { Debug.LogError(row.ToErrorString(e.Message)); } Vector3 pos; pos.x = AdvParser.ParseCellOptional <float>(row, AdvColumnName.X, 0); pos.y = AdvParser.ParseCellOptional <float>(row, AdvColumnName.Y, 0); pos.z = AdvParser.ParseCellOptional <float>(row, AdvColumnName.Z, 0); this.Position = pos; this.SubFileName = AdvParser.ParseCellOptional <string>(row, AdvColumnName.SubFileName, ""); this.ConditionalExpression = AdvParser.ParseCellOptional <string>(row, AdvColumnName.Conditional, ""); this.RenderTextureSetting.Parse(row); this.Loop = row.ParseCellOptional <bool>("Loop", true); }