internal static void LoadExcelDataPostfix(string _bundlePath, string _fileName, ref ExcelData __result) { var studioList = Lists.ExternalStudioDataList.Where(x => x.AssetBundleName == _bundlePath && x.FileNameWithoutExtension == _fileName).ToList(); if (studioList.Count > 0) { bool didHeader = false; int HeaderRows = studioList[0].Headers.Count; if (__result == null) //Create a new ExcelData { __result = (ExcelData)ScriptableObject.CreateInstance(typeof(ExcelData)); } else //Adding to an existing ExcelData { didHeader = true; } foreach (var studioListData in studioList) { if (!didHeader) //Write the headers. I think it's pointless and will be skipped when the ExcelData is read, but it's expected to be there. { foreach (var header in studioListData.Headers) { var headerParam = new ExcelData.Param(); headerParam.list = header; __result.list.Add(headerParam); } didHeader = true; } foreach (var entry in studioListData.Entries) { var param = new ExcelData.Param(); param.list = entry; __result.list.Add(param); } } //Once the game code hits a blank row it skips everything after, all blank rows must be removed for sideloader data to display. for (int i = 0; i < __result.list.Count;) { if (i <= HeaderRows - 1) { i += 1; //Skip header rows } else if (__result.list[i].list.Count == 0) { __result.list.RemoveAt(i); //Null data row } else if (!int.TryParse(__result.list[i].list[0], out int x)) { __result.list.RemoveAt(i); //Remove anything that isn't a number, most likely a blank row } else { i += 1; } } } }
internal static void LoadExcelDataCSV(string assetBundleName, string assetName, Stream stream) { ExcelData excelData = (ExcelData)ScriptableObject.CreateInstance(typeof(ExcelData)); excelData.list = new List <ExcelData.Param>(); using (StreamReader reader = new StreamReader(stream, Encoding.UTF8)) { while (!reader.EndOfStream) { string line = reader.ReadLine().Trim(); ExcelData.Param param = new ExcelData.Param { list = line.Split(',').ToList() }; excelData.list.Add(param); } } if (!ExternalExcelData.ContainsKey(assetBundleName)) { ExternalExcelData[assetBundleName] = new Dictionary <string, ExcelData>(); } ExternalExcelData[assetBundleName][assetName] = excelData; }
protected bool RedirectHook(string assetBundleName, string assetName, Type type, string manifestAssetBundleName, out AssetBundleLoadAssetOperation result) { if (type == typeof(ScenarioData)) { string scenarioPath = Path.Combine(scenarioDir, Path.Combine(assetBundleName, $"{assetName}.csv")).Replace('/', '\\').Replace(".unity3d", "").Replace(@"adv\scenario\", ""); if (File.Exists(scenarioPath)) { var rawData = ManualLoadAsset <ScenarioData>(assetBundleName, assetName, manifestAssetBundleName); rawData.list.Clear(); foreach (IEnumerable <string> line in SplitAndEscape(File.ReadAllText(scenarioPath, Encoding.UTF8))) { string[] data = line.ToArray(); string[] args = new string[data.Length - 4]; Array.Copy(data, 4, args, 0, args.Length); ScenarioData.Param param = new ScenarioData.Param(bool.Parse(data[3]), (Command)int.Parse(data[2]), args); param.SetHash(int.Parse(data[0])); rawData.list.Add(param); } result = new AssetBundleLoadAssetOperationSimulation(rawData); return(true); } } else if (type == typeof(ExcelData)) { string communicationPath = Path.Combine(communicationDir, Path.Combine(assetBundleName.Replace("communication/", ""), $"{assetName}.csv")).Replace('/', '\\').Replace(".unity3d", ""); if (File.Exists(communicationPath)) { var rawData = ManualLoadAsset <ExcelData>(assetBundleName, assetName, manifestAssetBundleName); rawData.list.Clear(); foreach (IEnumerable <string> line in SplitAndEscape(File.ReadAllText(communicationPath, Encoding.UTF8))) { ExcelData.Param param = new ExcelData.Param() { list = line.ToList() }; rawData.list.Add(param); } result = new AssetBundleLoadAssetOperationSimulation(rawData); return(true); } } result = null; return(false); }
public List <string> GetCell(int rowStart, int rowEnd) { List <string> stringList = new List <string>(); if ((long)(uint)rowStart > (long)rowEnd) { return(stringList); } using (List <ExcelData.Param> .Enumerator enumerator = this.list.GetEnumerator()) { label_7: while (enumerator.MoveNext()) { ExcelData.Param current = enumerator.Current; int index = rowStart; while (true) { if (index < current.list.Count && index <= rowEnd) { stringList.Add(current.list[index]); ++index; } else { goto label_7; } } } } return(stringList); }
public List <ExcelData.Param> FindArea(string find) { List <ExcelData.Param> objList = new List <ExcelData.Param>(); int num1 = 0; int num2 = 0; for (int index1 = 0; index1 < this.list.Count; ++index1) { for (int index2 = 0; index2 < this.list[index1].list.Count; ++index2) { if (find == this.list[index1].list[index2]) { num1 = index1 + 1; num2 = index2; break; } } } for (int index1 = num1; index1 < this.list.Count; ++index1) { ExcelData.Param obj = new ExcelData.Param(); for (int index2 = num2; index2 < this.list[index1].list.Count; ++index2) { obj.list = new List <string>(); obj.list.Add(this.list[index1].list[index2]); objList.Add(obj); } } return(objList); }
public List <ExcelData.Param> Get( ExcelData.Specify start, ExcelData.Specify end, string find) { List <ExcelData.Param> objList1 = new List <ExcelData.Param>(); List <ExcelData.Param> objList2 = this.Get(start, end); foreach (ExcelData.Param obj1 in objList2) { foreach (string str1 in obj1.list) { if (find == str1) { ExcelData.Param obj2 = new ExcelData.Param(); obj2.list = new List <string>(); foreach (string str2 in obj1.list) { obj2.list.Add(str2); } objList2.Add(obj2); break; } } } return(objList2); }
// 1 static void OnPostprocessAllAssets(string[] importedAssets, string[] deletedAssets, string[] movedAssets, string[] movedFromAssetPaths) { foreach (string asset in importedAssets) { if (!filePath.Equals(asset)) { continue; } // 2 ExcelData data = (ExcelData)AssetDatabase.LoadAssetAtPath(exportPath, typeof(ExcelData)); if (data == null) { data = ScriptableObject.CreateInstance <ExcelData> (); AssetDatabase.CreateAsset((ScriptableObject)data, exportPath); data.hideFlags = HideFlags.NotEditable; } // 3 data.list.Clear(); using (FileStream stream = File.Open(filePath, FileMode.Open, FileAccess.Read)) { IWorkbook book = new HSSFWorkbook(stream); ISheet sheet = book.GetSheetAt(0); Debug.Log(sheet.SheetName); for (int i = 1; i < sheet.LastRowNum; i++) { IRow row = sheet.GetRow(i); ExcelData.Param p = new ExcelData.Param(); p.skillName = row.GetCell(0).StringCellValue; p.skillEffect = row.GetCell(1).StringCellValue; p.damage = (int)row.GetCell(2).NumericCellValue; data.list.Add(p); } } // 4 ScriptableObject obj = AssetDatabase.LoadAssetAtPath(exportPath, typeof(ScriptableObject)) as ScriptableObject; EditorUtility.SetDirty(obj); } }
public static void InitAccessoryPoint(OCIChar _ociChar) { Dictionary <int, Tuple <int, int> > dictionary1 = new Dictionary <int, Tuple <int, int> >(); ExcelData accessoryPointGroup = Singleton <Info> .Instance.accessoryPointGroup; int count = accessoryPointGroup.list.Count; Dictionary <int, TreeNodeObject> dictionary2 = new Dictionary <int, TreeNodeObject>(); for (int index = 1; index < count; ++index) { ExcelData.Param obj = accessoryPointGroup.list[index]; int key = int.Parse(obj.list[0]); string str = obj.list[1]; string[] strArray = obj.list[2].Split('-'); dictionary1.Add(key, new Tuple <int, int>(int.Parse(strArray[0]), int.Parse(strArray[1]))); TreeNodeObject _root = Studio.Studio.AddNode(string.Format("グループ : {0}", (object)str), _ociChar.treeNodeObject); _root.treeState = !_ociChar.oiCharInfo.dicAccessGroup.ContainsKey(key) ? TreeNodeObject.TreeState.Close : _ociChar.oiCharInfo.dicAccessGroup[key]; _root.enableChangeParent = false; _root.enableDelete = false; _root.enableCopy = false; dictionary2.Add(key, _root); _ociChar.dicAccessPoint.Add(key, new OCIChar.AccessPointInfo(_root)); } foreach (KeyValuePair <int, Tuple <int, int> > keyValuePair in dictionary1) { for (int index = keyValuePair.Value.Item1; index <= keyValuePair.Value.Item2; ++index) { TreeNodeObject _parent = dictionary2[keyValuePair.Key]; TreeNodeObject key = Studio.Studio.AddNode(string.Format("部位 : {0}", (object)ChaAccessoryDefine.AccessoryParentName.SafeGet <string>(index)), _parent); key.treeState = !_ociChar.oiCharInfo.dicAccessNo.ContainsKey(index) ? TreeNodeObject.TreeState.Close : _ociChar.oiCharInfo.dicAccessNo[index]; key.enableChangeParent = false; key.enableDelete = false; key.enableCopy = false; key.baseColor = Utility.ConvertColor(204, 128, 164); key.colorSelect = key.baseColor; _ociChar.dicAccessoryPoint.Add(key, index); OCIChar.AccessPointInfo accessPointInfo = (OCIChar.AccessPointInfo)null; if (_ociChar.dicAccessPoint.TryGetValue(keyValuePair.Key, out accessPointInfo)) { accessPointInfo.child.Add(index, key); } } } foreach (KeyValuePair <int, TreeNodeObject> keyValuePair in dictionary2) { keyValuePair.Value.enableAddChild = false; } Singleton <Studio.Studio> .Instance.treeNodeCtrl.RefreshHierachy(); }
// 1 static void OnPostprocessAllAssets(string[] importedAssets, string[] deletedAssets, string[] movedAssets, string[] movedFromAssetPaths) { foreach (string asset in importedAssets) { if (!filePath.Equals (asset)) continue; // 2 ExcelData data = (ExcelData)AssetDatabase.LoadAssetAtPath (exportPath, typeof(ExcelData)); if (data == null) { data = ScriptableObject.CreateInstance<ExcelData> (); AssetDatabase.CreateAsset ((ScriptableObject)data, exportPath); data.hideFlags = HideFlags.NotEditable; } // 3 data.list.Clear (); using (FileStream stream = File.Open (filePath, FileMode.Open, FileAccess.Read)) { IWorkbook book = new HSSFWorkbook (stream); ISheet sheet = book.GetSheetAt (0); Debug.Log (sheet.SheetName); for (int i=1; i< sheet.LastRowNum; i++) { IRow row = sheet.GetRow (i); ExcelData.Param p = new ExcelData.Param (); p.skillName = row.GetCell (0).StringCellValue; p.skillEffect = row.GetCell (1).StringCellValue; p.damage = (int)row.GetCell (2).NumericCellValue; data.list.Add (p); } } // 4 ScriptableObject obj = AssetDatabase.LoadAssetAtPath (exportPath, typeof(ScriptableObject)) as ScriptableObject; EditorUtility.SetDirty (obj); } }
public bool LoadScenario(string assetbundle, string file) { this._scenarioTableList.Clear(); this._currentLine = -1; ExcelData excelData = AssetUtility.LoadAsset <ExcelData>(assetbundle, file, string.Empty); if (Object.op_Equality((Object)excelData, (Object)null)) { Debug.LogError((object)string.Format("読み込みエラー: 要チェック{{[{0}][{1}]}}", (object)assetbundle, (object)file)); return(false); } int maxCell = excelData.MaxCell; for (int index = 0; index < maxCell; ++index) { ExcelData.Param obj = excelData.list[index]; if (obj.list.Count != 0) { string str = obj.list[0]; if (str.Length != 0 && MathfEx.RangeEqualOn <int>(0, str.IndexOf("@"), 1)) { string key = obj.list[0].Replace("'@", string.Empty).Replace("@", string.Empty); IScriptCommand scriptCommand; if (!this.ActorCommandTable.TryGetValue(key, out scriptCommand)) { Debug.LogWarning((object)string.Format("未実装のコマンド: {0}", (object)key)); } else if (scriptCommand.IsBefore) { scriptCommand.Execute(scriptCommand.Analysis(obj.list), -1); } else { this._scenarioTableList.Add(scriptCommand.Analysis(obj.list)); } } } } this._currentLine = -1; return(this._scenarioTableList.Count != 0); }
public List <ExcelData.Param> Find(string find) { List <ExcelData.Param> objList = new List <ExcelData.Param>(); foreach (ExcelData.Param obj1 in this.list) { foreach (string str1 in obj1.list) { if (find == str1) { ExcelData.Param obj2 = new ExcelData.Param(); obj2.list = new List <string>(); foreach (string str2 in obj1.list) { obj2.list.Add(str2); } objList.Add(obj2); break; } } } return(objList); }
public List <ExcelData.Param> Get(ExcelData.Specify start, ExcelData.Specify end) { List <ExcelData.Param> objList = new List <ExcelData.Param>(); if ((long)(uint)start.cell > (long)end.cell || (long)(uint)start.row > (long)end.row || start.cell >= this.list.Count) { return(objList); } for (int cell = start.cell; cell < this.list.Count && cell <= end.cell; ++cell) { ExcelData.Param obj = new ExcelData.Param(); if (start.row < this.list[cell].list.Count) { obj.list = new List <string>(); for (int row = start.row; row < this.list[cell].list.Count && row <= end.row; ++row) { obj.list.Add(this.list[cell].list[row]); } } objList.Add(obj); } return(objList); }
public static bool RedirectHook(string assetBundleName, string assetName, Type type, string manifestAssetBundleName, out AssetBundleLoadAssetOperation result) { string TranslationPath = Path.Combine(DynamicTranslator.dirTranslation, Path.Combine(assetBundleName, assetName)).Replace('/', '\\').Replace(".unity3d", ""); if (type == typeof(ScenarioData)) { if (Directory.Exists(TranslationPath) || File.Exists(TranslationPath + ".csv")) { var rawData = ManualLoadAsset <ScenarioData>(assetBundleName, assetName, manifestAssetBundleName); //Clear the data and load the new data from the .csv, if there is one. if (File.Exists(TranslationPath + ".csv")) { rawData.list.Clear(); foreach (var line in SplitAndEscape(File.ReadAllText(TranslationPath + ".csv", Encoding.UTF8))) { var data = line.ToArray(); var args = new string[data.Length - 4]; Array.Copy(data, 4, args, 0, args.Length); var param = new ScenarioData.Param(bool.Parse(data[3]), (Command)int.Parse(data[2]), args); param.SetHash(int.Parse(data[0])); rawData.list.Add(param); } } //Read any .txt translations and substitute translated text if (Directory.Exists(TranslationPath)) { foreach (var param in rawData.list) { if (param.Command == Command.Text) { for (int i = 0; i < param.Args.Count(); i++) { param.Args[i] = TranslateTextFromFolder(param.Args[i], TranslationPath); } } } } result = new AssetBundleLoadAssetOperationSimulation(rawData); return(true); } } else if (type == typeof(ExcelData)) { if (Directory.Exists(TranslationPath) || File.Exists(TranslationPath + ".csv")) { var rawData = ManualLoadAsset <ExcelData>(assetBundleName, assetName, manifestAssetBundleName); //Clear the data and load the new data from the .csv, if there is one. if (File.Exists(TranslationPath + ".csv")) { rawData.list.Clear(); foreach (var line in SplitAndEscape(File.ReadAllText(TranslationPath + ".csv", Encoding.UTF8))) { var list = line.ToList(); var param = new ExcelData.Param(); param.list = list; rawData.list.Add(param); } } //Read any .txt translations and substitute translated text if (Directory.Exists(TranslationPath)) { foreach (var param in rawData.list) { for (int i = 0; i < param.list.Count; i++) { param.list[i] = TranslateTextFromFolder(param.list[i], TranslationPath); } } } result = new AssetBundleLoadAssetOperationSimulation(rawData); return(true); } } result = null; return(false); }
public static List <ExcelData.Param> LoadExcelData( string _strAssetPath, string _strFileName, int sCell, int sRow, int eCell, int eRow, bool _isWarning = true) { if (!GlobalMethod.AssetFileExist(_strAssetPath, _strFileName, string.Empty)) { if (_isWarning) { GlobalMethod.DebugLog("excel : [" + _strAssetPath + "][" + _strFileName + "]は見つかりません", 1); } return((List <ExcelData.Param>)null); } AssetBundleLoadAssetOperation loadAssetOperation = AssetBundleManager.LoadAsset(_strAssetPath, _strFileName, typeof(ExcelData), (string)null); AssetBundleManager.UnloadAssetBundle(_strAssetPath, true, (string)null, false); if (loadAssetOperation.IsEmpty()) { if (_isWarning) { GlobalMethod.DebugLog("excel : [" + _strFileName + "]は[" + _strAssetPath + "]の中に入っていません", 1); } return((List <ExcelData.Param>)null); } GlobalMethod.excelData = loadAssetOperation.GetAsset <ExcelData>(); GlobalMethod.cell.Clear(); foreach (ExcelData.Param obj in GlobalMethod.excelData.list) { GlobalMethod.cell.Add(obj.list[sCell]); } GlobalMethod.row.Clear(); foreach (string str in GlobalMethod.excelData.list[sRow].list) { GlobalMethod.row.Add(str); } List <string> cell1 = GlobalMethod.cell; List <string> row1 = GlobalMethod.row; ExcelData.Specify specify1 = new ExcelData.Specify(eCell, eRow); ExcelData.Specify specify2 = new ExcelData.Specify(cell1.Count, row1.Count); GlobalMethod.excelParams.Clear(); if ((long)(uint)specify1.cell > (long)specify2.cell || (long)(uint)specify1.row > (long)specify2.row) { return((List <ExcelData.Param>)null); } if (specify1.cell < GlobalMethod.excelData.list.Count) { for (int cell2 = specify1.cell; cell2 < GlobalMethod.excelData.list.Count && cell2 <= specify2.cell; ++cell2) { ExcelData.Param obj = new ExcelData.Param(); if (specify1.row < GlobalMethod.excelData.list[cell2].list.Count) { obj.list = new List <string>(); for (int row2 = specify1.row; row2 < GlobalMethod.excelData.list[cell2].list.Count && row2 <= specify2.row; ++row2) { obj.list.Add(GlobalMethod.excelData.list[cell2].list[row2]); } } GlobalMethod.excelParams.Add(obj); } } return(GlobalMethod.excelParams); }