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;
        }
Exemplo n.º 3
0
        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);
        }
Exemplo n.º 4
0
    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);
    }
Exemplo n.º 5
0
    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);
    }
Exemplo n.º 6
0
    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);
    }
Exemplo n.º 7
0
    // 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);
        }
    }
Exemplo n.º 8
0
        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();
        }
Exemplo n.º 9
0
    // 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);
        }
    }
Exemplo n.º 10
0
        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);
        }
Exemplo n.º 11
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);
    }
Exemplo n.º 12
0
    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);
    }
Exemplo n.º 13
0
        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);
        }
Exemplo n.º 14
0
    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);
    }