diff --git a/BlueWater/Assets/02.Scripts/Editor/DifferencePopup.cs b/BlueWater/Assets/02.Scripts/Editor/DifferencePopup.cs new file mode 100644 index 000000000..cda52add8 --- /dev/null +++ b/BlueWater/Assets/02.Scripts/Editor/DifferencePopup.cs @@ -0,0 +1,190 @@ +using System; +using System.Collections.Generic; +using System.Data; +using System.IO; +using System.Linq; +using ExcelDataReader; +using Newtonsoft.Json.Linq; +using UnityEditor; +using UnityEngine; + +namespace _02.Scripts.Editor +{ + public class DifferencePopup : EditorWindow + { + private List differences; + private string selectedExcelFile; + private string jsonFolderPath; + private Vector2 scrollPosition; + private string excelFolderPath = "Assets/Resources/Excel"; + + public delegate void OnCloseHandler(); + + public event OnCloseHandler OnClose; + + public static DifferencePopup ShowWindow(List differences, string selectedExcelFile, + string jsonFolderPath) + { + DifferencePopup window = GetWindow("비교창"); + window.differences = differences; + window.selectedExcelFile = selectedExcelFile; + window.jsonFolderPath = jsonFolderPath; + return window; + } + + private void OnGUI() + { + EditorGUILayout.LabelField("비교대상 : " + selectedExcelFile, EditorStyles.boldLabel); + + scrollPosition = EditorGUILayout.BeginScrollView(scrollPosition); + + foreach (var difference in differences) + { + EditorGUILayout.LabelField("속성: " + difference.PropertyName); + EditorGUILayout.LabelField("새로운 값: " + difference.NewValue); + EditorGUILayout.LabelField("기존의 값: " + difference.ExistingValue); + EditorGUILayout.Space(); + } + + EditorGUILayout.EndScrollView(); + + if (GUILayout.Button("저장")) + { + string excelPath = Path.Combine(excelFolderPath, selectedExcelFile + ".xlsx"); + string jsonPath = Path.Combine(jsonFolderPath, selectedExcelFile + ".json"); + + try + { + JArray newArray = ExcelToJsonConverter.ConvertExcelToJsonArray(excelPath); + File.WriteAllText(jsonPath, newArray.ToString()); + //EditorUtility.DisplayDialog("Success", "Changes saved successfully.", "OK"); + ExcelToJsonConverter.toggleStates[selectedExcelFile] = false; + OnClose?.Invoke(); + this.Close(); + + bool anyToggled = false; + foreach (var toggleState in ExcelToJsonConverter.toggleStates.Values) + { + if (toggleState) + { + anyToggled = true; + break; + } + } + + if (anyToggled) + { + ExcelToJsonConverter.Instance.ProcessSelectedFiles(); + } + } + catch (Exception e) + { + Debug.LogError($"저장에 실패했습니다: {e.Message}"); + EditorUtility.DisplayDialog("실패", "저장에 실패했습니다. 콘솔을 확인해주세요.", + "확인"); + } + } + + + if (GUILayout.Button("저장하지 않고 닫기")) + { + ExcelToJsonConverter.toggleStates[selectedExcelFile] = false; + OnClose?.Invoke(); + this.Close(); + + bool anyToggled = false; + foreach (var toggleState in ExcelToJsonConverter.toggleStates.Values) + { + if (toggleState) + { + anyToggled = true; + break; + } + } + + if (anyToggled) + { + ExcelToJsonConverter.Instance.ProcessSelectedFiles(); + } + } + } + + private void OnDestroy() + { + ExcelToJsonConverter.toggleStates[selectedExcelFile] = false; + OnClose?.Invoke(); + } + + // private JArray ConvertExcelToJsonArray(string excelPath) + // { + // FileStream stream = File.Open(excelPath, FileMode.Open, FileAccess.Read); + // IExcelDataReader excelReader = ExcelReaderFactory.CreateOpenXmlReader(stream); + // + // DataSet result = excelReader.AsDataSet(new ExcelDataSetConfiguration() + // { + // ConfigureDataTable = (tableReader) => new ExcelDataTableConfiguration() + // { + // UseHeaderRow = true + // } + // }); + // + // stream.Close(); + // DataTable table = result.Tables[0]; + // + // JArray jsonArray = new JArray(); + // foreach (DataRow row in table.Rows) + // { + // JObject obj = new JObject(); + // foreach (DataColumn column in table.Columns) + // { + // string cellValue = row[column].ToString(); + // if (float.TryParse(cellValue, out float floatResult)) + // { + // if (floatResult % 1 == 0) // If the value is a whole number + // { + // obj[column.ColumnName] = Convert.ToInt32(floatResult); + // } + // else + // { + // obj[column.ColumnName] = floatResult; + // } + // } + // else if (IsString(cellValue)) + // { + // obj[column.ColumnName] = cellValue; + // } + // else + // { + // obj[column.ColumnName] = cellValue; + // } + // } + // + // jsonArray.Add(obj); + // } + // + // return jsonArray; + // } + + private bool IsString(string value) + { + return value.Any(c => !char.IsDigit(c)); + } + + + public class Difference + { + public int Index { get; set; } + public string PropertyName { get; set; } + public string NewValue { get; set; } + public string ExistingValue { get; set; } + + public Difference(string propertyName, string newValue, string existingValue, int index) + { + PropertyName = propertyName; + NewValue = newValue; + ExistingValue = existingValue; + Index = index; + } + } + } +} \ No newline at end of file diff --git a/BlueWater/Assets/02.Scripts/Editor/DifferencePopup.cs.meta b/BlueWater/Assets/02.Scripts/Editor/DifferencePopup.cs.meta new file mode 100644 index 000000000..fabd26269 --- /dev/null +++ b/BlueWater/Assets/02.Scripts/Editor/DifferencePopup.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 974c0982732174a6bb82ac66de663c45 \ No newline at end of file diff --git a/BlueWater/Assets/02.Scripts/Editor/ExcelToJsonConverter.cs b/BlueWater/Assets/02.Scripts/Editor/ExcelToJsonConverter.cs new file mode 100644 index 000000000..55bb5c2ce --- /dev/null +++ b/BlueWater/Assets/02.Scripts/Editor/ExcelToJsonConverter.cs @@ -0,0 +1,319 @@ +using System; +using System.Collections.Generic; +using System.Data; +using System.IO; +using System.Linq; +using ExcelDataReader; +using Newtonsoft.Json.Linq; +using UnityEditor; +using UnityEngine; + +namespace _02.Scripts.Editor +{ + public class ExcelToJsonConverter : EditorWindow + { + private readonly string excelFolderPath = "Assets/Resources/Excel"; + private readonly string jsonFolderPath = "Assets/Resources/JSON"; + public static Dictionary toggleStates; + private List differences; + private bool showPopup = false; + private string selectedExcelFile; + public static ExcelToJsonConverter Instance { get; private set; } + private Vector2 scrollPosition; + + [MenuItem("Tools/EXCEL TO JSON - BlueWater")] + public static void ShowWindow() + { + Instance = GetWindow("EXCEL TO JSON"); + } + + private void OnEnable() + { + toggleStates = new Dictionary(); + var excelFiles = Directory.GetFiles(excelFolderPath, "*.xlsx"); + foreach (var excelFile in excelFiles) + { + toggleStates[Path.GetFileNameWithoutExtension(excelFile)] = false; + } + } + + public void ProcessSelectedFiles() + { + List currentDifferences = new List(); + + bool differencesFound = false; + + foreach (var excelFile in toggleStates.Keys) + { + if (toggleStates[excelFile]) + { + string excelPath = Path.Combine(excelFolderPath, excelFile + ".xlsx"); + string jsonPath = Path.Combine(jsonFolderPath, excelFile + ".json"); + + JArray newJsonArray = ConvertExcelToJsonArray(excelPath); + + if (File.Exists(jsonPath)) + { + JArray existingJsonArray = JArray.Parse(File.ReadAllText(jsonPath)); + currentDifferences = CompareJsonObjects(newJsonArray, existingJsonArray); + if (currentDifferences.Count > 0) + { + selectedExcelFile = excelFile; + differences = currentDifferences; + showPopup = true; + differencesFound = true; + break; + } + } + else + { + File.WriteAllText(jsonPath, newJsonArray.ToString()); + } + } + } + + if (!differencesFound && !showPopup) + { + EditorUtility.DisplayDialog("달라진점이 없음", + "비교 대상인 새로운 엑셀 파일과 기존의 제이슨 파일에서 다른 점을 발견하지 못했습니다.", "확인"); + } + } + + private void OnGUI() + { + EditorGUILayout.LabelField("EXCEL TO JSON - Select & Compare", EditorStyles.boldLabel); + + scrollPosition = EditorGUILayout.BeginScrollView(scrollPosition); + + List keys = new List(toggleStates.Keys); + + foreach (var excelFile in keys) + { + bool currentValue = toggleStates[excelFile]; + bool newValue = EditorGUILayout.ToggleLeft(excelFile, currentValue); + if (currentValue != newValue) + { + toggleStates[excelFile] = newValue; + } + } + + EditorGUILayout.EndScrollView(); + + if (GUILayout.Button("수정사항 체크")) + { + CheckModifiedToggles(); + } + + GUILayout.Space(10); + + EditorGUILayout.BeginHorizontal(); + + if (GUILayout.Button("전체 해제")) + { + foreach (var excelFile in keys) + { + toggleStates[excelFile] = false; + } + } + + if (GUILayout.Button("전체 선택")) + { + foreach (var excelFile in keys) + { + toggleStates[excelFile] = true; + } + } + + EditorGUILayout.EndHorizontal(); + + GUILayout.Space(10); + + if (GUILayout.Button("선택된 파일들 비교 및 병합")) + { + ProcessSelectedFiles(); + } + + if (showPopup) + { + DifferencePopup window = DifferencePopup.ShowWindow(differences, selectedExcelFile, jsonFolderPath); + window.OnClose += () => showPopup = false; + } + } + + public void CheckModifiedToggles() + { + List keysToCheck = new List(toggleStates.Keys); + + foreach (var excelFile in keysToCheck) + { + string excelPath = Path.Combine(excelFolderPath, excelFile + ".xlsx"); + string jsonPath = Path.Combine(jsonFolderPath, excelFile + ".json"); + + if (File.Exists(jsonPath)) + { + JArray newJsonArray = ConvertExcelToJsonArray(excelPath); + JArray existingJsonArray = JArray.Parse(File.ReadAllText(jsonPath)); + List currentDifferences = + CompareJsonObjects(newJsonArray, existingJsonArray); + + if (currentDifferences.Count > 0) + { + toggleStates[excelFile] = true; + } + else + { + toggleStates[excelFile] = false; + } + } + } + } + + public static JArray ConvertExcelToJsonArray(string excelPath) + { + FileStream stream = File.Open(excelPath, FileMode.Open, FileAccess.Read); + IExcelDataReader excelReader = ExcelReaderFactory.CreateOpenXmlReader(stream); + + DataSet result = excelReader.AsDataSet(new ExcelDataSetConfiguration() + { + ConfigureDataTable = (tableReader) => new ExcelDataTableConfiguration() + { + UseHeaderRow = true + } + }); + + stream.Close(); + DataTable table = result.Tables[0]; + + JArray jsonArray = new JArray(); + foreach (DataRow row in table.Rows) + { + JObject obj = new JObject(); + foreach (DataColumn column in table.Columns) + { + string cellValue = row[column].ToString(); + if (float.TryParse(cellValue, out float floatResult)) + { + if (floatResult % 1 == 0) + { + obj[column.ColumnName] = Convert.ToInt32(floatResult); + } + else + { + obj[column.ColumnName] = floatResult; + } + } + else if (IsString(cellValue)) + { + obj[column.ColumnName] = cellValue; + } + else + { + obj[column.ColumnName] = cellValue; + } + } + + jsonArray.Add(obj); + } + + return jsonArray; + } + + private static bool IsString(string value) + { + return value.Any(c => !char.IsDigit(c)); + } + + + + private List CompareJsonObjects(JArray newObj, JArray existingObj) + { + List differences = new List(); + + int minLength = Mathf.Min(newObj.Count, existingObj.Count); + int maxLength = Mathf.Max(newObj.Count, existingObj.Count); + + for (int i = 0; i < maxLength; i++) + { + if (i < minLength) + { + JObject newItem = newObj[i] as JObject; + JObject existingItem = existingObj[i] as JObject; + + if (newItem != null && existingItem != null) + { + HashSet allPropertyNames = new HashSet(newItem.Properties().Select(p => p.Name)); + allPropertyNames.UnionWith(existingItem.Properties().Select(p => p.Name)); + + foreach (string propertyName in allPropertyNames) + { + JToken newToken; + JToken existingToken; + + if (newItem.TryGetValue(propertyName, out newToken) && + existingItem.TryGetValue(propertyName, out existingToken)) + { + string newValueWithoutSpaces = newToken.ToString().Replace(" ", ""); + string existingValueWithoutSpaces = existingToken.ToString().Replace(" ", ""); + + if (!newValueWithoutSpaces.Equals(existingValueWithoutSpaces)) + { + differences.Add(new DifferencePopup.Difference(propertyName, newToken.ToString(), + existingToken.ToString(), i)); + } + } + else if (!newItem.TryGetValue(propertyName, out newToken) && + existingItem.TryGetValue(propertyName, out existingToken)) + { + differences.Add(new DifferencePopup.Difference(propertyName, "N/A", + existingToken.ToString(), i)); + } + else if (newItem.TryGetValue(propertyName, out newToken) && + !existingItem.TryGetValue(propertyName, out existingToken)) + { + differences.Add(new DifferencePopup.Difference(propertyName, newToken.ToString(), "N/A", + i)); + } + } + } + else + { + Debug.LogError($"해당 인덱스에서 JSON 객체를 비교하지 못했습니다 {i}"); + } + } + else + { + // 추가된 행에 대한 차이를 처리합니다. + JObject newItem = i < newObj.Count ? newObj[i] as JObject : null; + JObject existingItem = i < existingObj.Count ? existingObj[i] as JObject : null; + JObject availableItem = newItem ?? existingItem; + string newValue, existingValue; + + foreach (var property in availableItem.Properties()) + { + if (newItem != null && newItem.TryGetValue(property.Name, out JToken newToken)) + { + newValue = newToken.ToString(); + } + else + { + newValue = "N/A"; + } + + if (existingItem != null && existingItem.TryGetValue(property.Name, out JToken existingToken)) + { + existingValue = existingToken.ToString(); + } + else + { + existingValue = "N/A"; + } + + differences.Add(new DifferencePopup.Difference(property.Name, newValue, existingValue, i)); + } + } + } + + return differences; + } + } +} \ No newline at end of file diff --git a/BlueWater/Assets/02.Scripts/Editor/ExcelToJsonConverter.cs.meta b/BlueWater/Assets/02.Scripts/Editor/ExcelToJsonConverter.cs.meta new file mode 100644 index 000000000..e3a4e8ecb --- /dev/null +++ b/BlueWater/Assets/02.Scripts/Editor/ExcelToJsonConverter.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 15dc83aa064e348db8d3cd13a8ebd8b7 \ No newline at end of file diff --git a/BlueWater/Assets/02.Scripts/Npc/Guest/FindTableState.cs b/BlueWater/Assets/02.Scripts/Npc/Guest/FindTableState.cs index 7bac93dc6..e1a00b222 100644 --- a/BlueWater/Assets/02.Scripts/Npc/Guest/FindTableState.cs +++ b/BlueWater/Assets/02.Scripts/Npc/Guest/FindTableState.cs @@ -1,3 +1,4 @@ +using System.Collections.Generic; using UnityEngine; using UnityEngine.AI; @@ -76,12 +77,41 @@ namespace BlueWaterProject { if (!npc.DoSeat) { - foreach (var table in tables) + // 확률 결정 + var probability = Random.Range(0f, 1f); + + if (probability <= 0.7f) { - foreach (var seat in table.SeatPoints) + // 70% 확률: 비어 있는 좌석 중에서 랜덤 선택 + var availableSeats = new List(); + foreach (var table in tables) { - if (seat.IsUsing) continue; - AssignSeatToNpc(seat); + foreach (var seat in table.SeatPoints) + { + if (!seat.IsUsing) availableSeats.Add(seat); + } + } + + if (availableSeats.Count > 0) + { + var randomIndex = Random.Range(0, availableSeats.Count); + AssignSeatToNpc(availableSeats[randomIndex]); + return; + } + } + else + { + // 30% 확률: 모든 좌석 중에서 랜덤 선택 + var allSeats = new List(); + foreach (var table in tables) + { + allSeats.AddRange(table.SeatPoints); + } + + if (allSeats.Count > 0) + { + var randomIndex = Random.Range(0, allSeats.Count); + AssignSeatToNpc(allSeats[randomIndex]); return; } } diff --git a/BlueWater/Assets/Packages/ExcelDataReader.3.6.0.meta b/BlueWater/Assets/Packages/ExcelDataReader.3.6.0.meta new file mode 100644 index 000000000..8ddaa847e --- /dev/null +++ b/BlueWater/Assets/Packages/ExcelDataReader.3.6.0.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 5f6124a557c154cb0bf3d78ad0cbda39 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/BlueWater/Assets/Packages/ExcelDataReader.3.6.0/.signature.p7s b/BlueWater/Assets/Packages/ExcelDataReader.3.6.0/.signature.p7s new file mode 100644 index 000000000..918583fc9 Binary files /dev/null and b/BlueWater/Assets/Packages/ExcelDataReader.3.6.0/.signature.p7s differ diff --git a/BlueWater/Assets/Packages/ExcelDataReader.3.6.0/ExcelDataReader.nuspec b/BlueWater/Assets/Packages/ExcelDataReader.3.6.0/ExcelDataReader.nuspec new file mode 100644 index 000000000..65f60fdf7 --- /dev/null +++ b/BlueWater/Assets/Packages/ExcelDataReader.3.6.0/ExcelDataReader.nuspec @@ -0,0 +1,33 @@ + + + + ExcelDataReader + 3.6.0 + ExcelDataReader developers + ExcelDataReader developers + false + MIT + https://licenses.nuget.org/MIT + https://github.com/ExcelDataReader/ExcelDataReader + https://nugetgallery.blob.core.windows.net/icons/ExcelDataReader.2.1.png + Lightweight and fast library written in C# for reading Microsoft Excel files (2.0-2007). + excel xls xlsx + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/BlueWater/Assets/Packages/ExcelDataReader.3.6.0/ExcelDataReader.nuspec.meta b/BlueWater/Assets/Packages/ExcelDataReader.3.6.0/ExcelDataReader.nuspec.meta new file mode 100644 index 000000000..2ba4795f8 --- /dev/null +++ b/BlueWater/Assets/Packages/ExcelDataReader.3.6.0/ExcelDataReader.nuspec.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 412bb38b305a34e98addb3e0c647c80d +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/BlueWater/Assets/Packages/ExcelDataReader.3.6.0/lib.meta b/BlueWater/Assets/Packages/ExcelDataReader.3.6.0/lib.meta new file mode 100644 index 000000000..b6f6bfd79 --- /dev/null +++ b/BlueWater/Assets/Packages/ExcelDataReader.3.6.0/lib.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 874c347e659d4479396e802894f8c8e2 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/BlueWater/Assets/Packages/ExcelDataReader.3.6.0/lib/net45.meta b/BlueWater/Assets/Packages/ExcelDataReader.3.6.0/lib/net45.meta new file mode 100644 index 000000000..178197f67 --- /dev/null +++ b/BlueWater/Assets/Packages/ExcelDataReader.3.6.0/lib/net45.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: e9f2ec082b2aa42fd89317af82cc5c9f +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/BlueWater/Assets/Packages/ExcelDataReader.3.6.0/lib/net45/ExcelDataReader.dll b/BlueWater/Assets/Packages/ExcelDataReader.3.6.0/lib/net45/ExcelDataReader.dll new file mode 100644 index 000000000..767f8da73 Binary files /dev/null and b/BlueWater/Assets/Packages/ExcelDataReader.3.6.0/lib/net45/ExcelDataReader.dll differ diff --git a/BlueWater/Assets/Packages/ExcelDataReader.3.6.0/lib/net45/ExcelDataReader.dll.meta b/BlueWater/Assets/Packages/ExcelDataReader.3.6.0/lib/net45/ExcelDataReader.dll.meta new file mode 100644 index 000000000..c7534bb9d --- /dev/null +++ b/BlueWater/Assets/Packages/ExcelDataReader.3.6.0/lib/net45/ExcelDataReader.dll.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 6c73703c55c084c6aba39f15caad23af \ No newline at end of file diff --git a/BlueWater/Assets/Packages/ExcelDataReader.3.6.0/lib/net45/ExcelDataReader.xml b/BlueWater/Assets/Packages/ExcelDataReader.3.6.0/lib/net45/ExcelDataReader.xml new file mode 100644 index 000000000..dc62d59a8 --- /dev/null +++ b/BlueWater/Assets/Packages/ExcelDataReader.3.6.0/lib/net45/ExcelDataReader.xml @@ -0,0 +1,1680 @@ + + + + ExcelDataReader + + + + + A range for cells using 0 index positions. + + + + + Gets the column the range starts in + + + + + Gets the row the range starts in + + + + + Gets the column the range ends in + + + + + Gets the row the range ends in + + + + + If present the Calculate Message was in the status bar when Excel saved the file. + This occurs if the sheet changed, the Manual calculation option was on, and the Recalculate Before Save option was off. + + + + + Gets the string value. Encoding is only used with BIFF2-5 byte strings. + + + + + Represents blank cell + Base class for all cell types + + + + + Gets the zero-based index of row containing this cell. + + + + + Gets the zero-based index of column containing this cell. + + + + + Gets the extended format used for this cell. If BIFF2 and this value is 63, this record was preceded by an IXFE record containing the actual XFormat >= 63. + + + + + Gets the number format used for this cell. Only used in BIFF2 without XF records. Used by Excel 2.0/2.1 instead of XF/IXFE records. + + + + + + + + Gets a value indicating whether the cell's record identifier is BIFF2-specific. + The shared binary layout of BIFF2 cells are different from BIFF3+. + + + + + Represents BIFF BOF record + + + + + Gets the version. + + + + + Gets the type of the BIFF block + + + + + Gets the creation Id. + + Not used before BIFF5 + + + + Gets the creation year. + + Not used before BIFF5 + + + + Gets the file history flag. + + Not used before BIFF8 + + + + Gets the minimum Excel version to open this file. + + Not used before BIFF8 + + + + Represents Sheet record in Workbook Globals + + + + + Gets the worksheet data start offset. + + + + + Gets the worksheet type. + + + + + Gets the visibility of the worksheet. + + + + + Gets the name of the worksheet. + + + + + Represents additional space for very large records + + + + + Represents cell-indexing record, finishes each row values block + + + + + Gets the offset of first row linked with this record + + + + + Gets the addresses of cell values. + + + + + Gets the row height in twips + + + + + Represents Dimensions of worksheet + + + + + Gets the index of first row. + + + + + Gets the index of last row + 1. + + + + + Gets the index of first column. + + + + + Gets the index of last column + 1. + + + + + Represents BIFF EOF resord + + + + + Represents FILEPASS record containing XOR obfuscation details or a an EncryptionInfo structure + + + + + Represents a string value of format + + + + + Gets the string value. + + + + + Represents a cell containing formula + + + + + Indicates that a string value is stored in a String record that immediately follows this record. See[MS - XLS] 2.5.133 FormulaValue. + + + + + Indecates that the formula value is an empty string. + + + + + Indicates that the property is valid. + + + + + Indicates that the property is valid. + + + + + Indicates that the property is valid. + + + + + Gets the formula flags + + + + + Gets the formula value type. + + + + + Represents a string value of formula + + + + + Gets the string value. + + + + + Represents a string value of a header or footer. + + + + + Gets the string value. + + + + + Represents a worksheet index + + + + + Gets a value indicating whether BIFF8 addressing is used or not. + + + + + Gets the zero-based index of first existing row + + + + + Gets the zero-based index of last existing row + + + + + Gets the addresses of DbCell records + + + + + Represents a constant integer number in range 0..65535 + + + + + Gets the cell value. + + + + + Represents InterfaceHdr record in Wokrbook Globals + + + + + Gets the CodePage for Interface Header + + + + + [MS-XLS] 2.4.148 Label + Represents a string + + + + + Gets the cell value. + + + + + Represents a string stored in SST + + + + + Gets the index of string in Shared String Table + + + + + [MS-XLS] 2.4.168 MergeCells + If the count of the merged cells in the document is greater than 1026, the file will contain multiple adjacent MergeCells records. + + + + + Represents MSO Drawing record + + + + + Represents multiple Blank cell + + + + + Gets the zero-based index of last described column + + + + + Returns format forspecified column, column must be between ColumnIndex and LastColumnIndex + + Index of column + Format + + + + Represents multiple RK number cells + + + + + Gets the zero-based index of last described column + + + + + Returns format for specified column + + Index of column, must be between ColumnIndex and LastColumnIndex + The format. + + + + Gets the value for specified column + + Index of column, must be between ColumnIndex and LastColumnIndex + The value. + + + + Represents a floating-point number + + + + + Gets the value of this cell + + + + + For now QuickTip will do nothing, it seems to have a different + + + + + Represents basic BIFF record + Base class for all BIFF record types + + + + + Gets the type Id of this entry + + + + + Gets the data size of this entry + + + + + Gets the whole size of structure + + + + + Represents an RK number cell + + + + + Gets the value of this cell + + + + + Decodes RK-encoded number + + Encoded number + The number. + + + + Represents row record in table + + + + + Gets the zero-based index of row described + + + + + Gets the index of first defined column + + + + + Gets the index of last defined column + + + + + Gets a value indicating whether to use the default row height instead of the RowHeight property + + + + + Gets the row height in twips. + + + + + Gets a value indicating whether the XFormat property is used + + + + + Gets the default format for this row + + + + + Represents record with the only two-bytes value + + + + + Gets the value + + + + + Represents a Shared String Table in BIFF8 format + + + + + Gets the number of strings in SST + + + + + Gets the count of unique strings in SST + + + + + Parses strings out of the SST record and subsequent Continue records from the BIFF stream + + + + + Returns string at specified index + + Index of string to get + Workbook encoding + string value if it was found, empty string otherwise + + + + Represents a BIFF stream + + + + + Gets the size of BIFF stream in bytes + + + + + Gets or sets the current position in BIFF stream + + + + + Gets or sets the ICryptoTransform instance used to decrypt the current block + + + + + Gets or sets the current block number being decrypted with CipherTransform + + + + + Sets stream pointer to the specified offset + + Offset value + Offset origin + + + + Reads record under cursor and advances cursor position to next record + + The record -or- null. + + + + Returns record at specified offset + + The stream + The record -or- null. + + + + Create an ICryptoTransform instance to decrypt a 1024-byte block + + + + + Decrypt some dummy bytes to align the decryptor with the position in the current 1024-byte block + + + + + If present the Calculate Message was in the status bar when Excel saved the file. + This occurs if the sheet changed, the Manual calculation option was on, and the Recalculate Before Save option was off. + + + + + Represents Workbook's global window description + + + + + Gets the X position of a window + + + + + Gets the Y position of a window + + + + + Gets the width of the window + + + + + Gets the height of the window + + + + + Gets the window flags + + + + + Gets the active workbook tab (zero-based) + + + + + Gets the first visible workbook tab (zero-based) + + + + + Gets the number of selected workbook tabs + + + + + Gets the workbook tab width to horizontal scrollbar width + + + + + Word-sized string, stored as single bytes with encoding from CodePage record. Used in BIFF2-5 + + + + + Gets the number of characters in the string. + + + + + Gets the value. + + + + + Plain string without backing storage. Used internally + + + + + Byte sized string, stored as bytes, with encoding from CodePage record. Used in BIFF2-5 . + + + + + [MS-XLS] 2.5.240 ShortXLUnicodeString + Byte-sized string, stored as single or multibyte unicode characters. + + + + + Gets a value indicating whether the string is a multibyte string or not. + + + + + Helper class for parsing the BIFF8 Shared String Table (SST) + + + + + Gets or sets the offset into the current record's byte content. May point at the end when the current record has been parsed entirely. + + + + + Reads an SST string potentially spanning multiple records + + The string + + + + If the read position is exactly at the end of a record: + Read the next continue record and update the read position. + + + + + Advances the read position a number of bytes, potentially spanning + multiple records. + NOTE: If the new read position ends on a record boundary, + the next record will not be read, and the read position will point + at the end of the record! Must call EnsureRecord() as needed + to read the next continue record and reset the read position. + + Number of bytes to skip + + + + [MS-XLS] 2.5.293 XLUnicodeRichExtendedString + Word-sized formatted string in SST, stored as single or multibyte unicode characters potentially spanning multiple Continue records. + + + + + Gets the number of characters in the string. + + + + + Gets the flags. + + + + + Gets a value indicating whether the string has an extended record. + + + + + Gets a value indicating whether the string has a formatting record. + + + + + Gets a value indicating whether the string is a multibyte string or not. + + + + + Gets the number of formats used for formatting (0 if string has no formatting) + + + + + Gets the size of extended string in bytes, 0 if there is no one + + + + + Gets the head (before string data) size in bytes + + + + + Gets the tail (after string data) size in bytes + + + + + [MS-XLS] 2.5.294 XLUnicodeString + Word-sized string, stored as single or multibyte unicode characters. + + + + + Gets a value indicating whether the string is a multibyte string or not. + + + + + Represents Globals section of workbook + + + + + Gets or sets the Shared String Table of workbook + + + + + Represents Worksheet section in workbook + + + + + Gets the worksheet name + + + + + Gets the visibility of worksheet + + + + + Gets the worksheet data offset. + + + + + Find how many rows to read at a time and their offset in the file. + If rows are stored sequentially in the file, returns a block size of up to 32 rows. + If rows are stored non-sequentially, the block size may extend up to the entire worksheet stream + + + + + Reads additional records if needed: a string record might follow a formula result + + + + + Returns an index into Workbook.Formats for the given cell and preceding ixfe record. + + + + + Gets or sets the zero-based column index. + + + + + Common handling of extended formats (XF) and mappings between file-based and global number format indices. + + + + + Gets the dictionary of global number format strings. Always includes the built-in formats at their + corresponding indices and any additional formats specified in the workbook file. + + + + + Gets the the dictionary of mappings between format index in the file and key in the Formats dictionary. + + + + + Returns the global number format index from an XF index. + + + + + Returns the global number format index from a file-based format index. + + + + + Registers a number format string and its file-based format index in the workbook's Formats dictionary. + If the format string matches a built-in or previously registered format, it will be mapped to that index. + + + + + Registers an extended format and its file based number format index. + + + + + Represents single Root Directory record + + + + + Gets or sets the name of directory entry + + + + + Gets or sets the entry type + + + + + Gets or sets the entry "color" in directory tree + + + + + Gets or sets the SID of left sibling + + 0xFFFFFFFF if there's no one + + + + Gets or sets the SID of right sibling + + 0xFFFFFFFF if there's no one + + + + Gets or sets the SID of first child (if EntryType is STGTY_STORAGE) + + 0xFFFFFFFF if there's no one + + + + Gets or sets the CLSID of container (if EntryType is STGTY_STORAGE) + + + + + Gets or sets the user flags of container (if EntryType is STGTY_STORAGE) + + + + + Gets or sets the creation time of entry + + + + + Gets or sets the last modification time of entry + + + + + Gets or sets the first sector of data stream (if EntryType is STGTY_STREAM) + + if EntryType is STGTY_ROOT, this can be first sector of MiniStream + + + + Gets or sets the size of data stream (if EntryType is STGTY_STREAM) + + if EntryType is STGTY_ROOT, this can be size of MiniStream + + + + Gets or sets a value indicating whether this entry relats to a ministream + + + + + Gets or sets the prop type. Reserved, must be 0. + + + + + Reads bytes from a regular or mini stream. + + + + + The header contains the first 109 DIF entries. If there are any more, read from a separate stream. + + + + + Represents Excel file header + + + + + Gets or sets the file signature + + + + + Gets a value indicating whether the signature is valid. + + + + + Gets or sets the class id. Typically filled with zeroes + + + + + Gets or sets the version. Must be 0x003E + + + + + Gets or sets the dll version. Must be 0x0003 + + + + + Gets or sets the byte order. Must be 0xFFFE + + + + + Gets or sets the sector size in Pot + + + + + Gets the sector size. Typically 512 + + + + + Gets or sets the mini sector size in Pot + + + + + Gets the mini sector size. Typically 64 + + + + + Gets or sets the number of directory sectors. If Major Version is 3, the Number of + Directory Sectors MUST be zero. This field is not supported for version 3 compound files + + + + + Gets or sets the number of FAT sectors + + + + + Gets or sets the number of first Root Directory Entry (Property Set Storage, FAT Directory) sector + + + + + Gets or sets the transaction signature, 0 for Excel + + + + + Gets or sets the maximum size for small stream, typically 4096 bytes + + + + + Gets or sets the first sector of Mini FAT, FAT_EndOfChain if there's no one + + + + + Gets or sets the number of sectors in Mini FAT, 0 if there's no one + + + + + Gets or sets the first sector of DIF, FAT_EndOfChain if there's no one + + + + + Gets or sets the number of sectors in DIF, 0 if there's no one + + + + + Gets or sets the first 109 locations in the DIF sector chain + + + + + Reads completely through a CSV stream to determine encoding, separator, field count and row count. + Uses fallbackEncoding if there is no BOM. Throws DecoderFallbackException if there are invalid characters in the stream. + Returns the separator whose average field count is closest to its max field count. + + + + + Low level, reentrant CSV parser. Call ParseBuffer() in a loop, and finally Flush() to empty the internal buffers. + + + + + Helpers class + + + + + Determines whether the encoding is single byte or not. + + The encoding. + + if the specified encoding is single byte; otherwise, . + + + + + Convert a double from Excel to an OA DateTime double. + The returned value is normalized to the '1900' date mode and adjusted for the 1900 leap year bug. + + + + + The common workbook interface between the binary and OpenXml formats + + A type implementing IWorksheet + + + + The common worksheet interface between the binary and OpenXml formats + + + + + Parse ECMA-376 number format strings from Excel and other spreadsheet softwares. + + + + + Initializes a new instance of the class. + + The number format string. + + + + Gets a value indicating whether the number format string is valid. + + + + + Gets the number format string. + + + + + Gets a value indicating whether the format represents a DateTime + + + + + Gets a value indicating whether the format represents a TimeSpan + + + + + Parses as many placeholders and literals needed to format a number with optional decimals. + Returns number of tokens parsed, or 0 if the tokens didn't form a number. + + + + + A seekable stream for reading an EncryptedPackage blob using OpenXml Agile Encryption. + + + + + Represents "Agile Encryption" used in XLSX (Office 2010 and newer) + + + + + Base class for the various encryption schemes used by Excel + + + + + Gets a value indicating whether XOR obfuscation is used. + When true, the ICryptoTransform can be cast to XorTransform and + handle the special case where XorArrayIndex must be manipulated + per record. + + + + + Represents the binary RC4+MD5 encryption header used in XLS. + + + + + Minimal RC4 decryption compatible with System.Security.Cryptography.SymmetricAlgorithm. + + + + + Represents the binary "Standard Encryption" header used in XLS and XLSX. + XLS uses RC4+SHA1. XLSX uses AES+SHA1. + + + + + 2.3.5.2 RC4 CryptoAPI Encryption Key Generation + + + + + 2.3.4.7 ECMA-376 Document Encryption Key Generation (Standard Encryption) + + + + + Represents "XOR Deobfucation Method 1" used in XLS. + + + + + Minimal Office "XOR Deobfuscation Method 1" implementation compatible + with System.Security.Cryptography.SymmetricAlgorithm. + + + + + Generates a 16 byte obfuscation array based on the POI/LibreOffice implementations + + + + + Gets or sets the obfuscation array index. BIFF obfuscation uses a different XorArrayIndex per record. + + + + + Base class for worksheet stream elements + + + + + Shared string table + + + + + Logic for the Excel dimensions. Ex: A15 + + The value. + The column, 1-based. + The row, 1-based. + + + + Gets or sets the zero-based row index. + + + + + Gets or sets the height of this row in points. Zero if hidden or collapsed. + + + + + Gets or sets the cells in this row. + + + + + Gets a value indicating whether the row is empty. NOTE: Returns true if there are empty, but formatted cells. + + + + + Returns the zero-based maximum column index reference on this row. + + + + + Initializes a new instance of the class. + + The zip file stream. + + + + Gets the shared strings stream. + + The shared strings stream. + + + + Gets the styles stream. + + The styles stream. + + + + Gets the workbook stream. + + The workbook stream. + + + + Gets the worksheet stream. + + The sheet id. + The worksheet stream. + + + + Gets the workbook rels stream. + + The rels stream. + + + + ExcelDataReader Class + + + + + A generic implementation of the IExcelDataReader interface using IWorkbook/IWorksheet to enumerate data. + + A type implementing IWorkbook + A type implementing IWorksheet + + + + + + + + + + Configuration options for an instance of ExcelDataReader. + + + + + Gets or sets a value indicating the encoding to use when the input XLS lacks a CodePage record, + or when the input CSV lacks a BOM and does not parse as UTF8. Default: cp1252. (XLS BIFF2-5 and CSV only) + + + + + Gets or sets the password used to open password protected workbooks. + + + + + Gets or sets an array of CSV separator candidates. The reader autodetects which best fits the input data. Default: , ; TAB | # (CSV only) + + + + + Gets or sets a value indicating whether to leave the stream open after the IExcelDataReader object is disposed. Default: false + + + + + Gets or sets a value indicating the number of rows to analyze for encoding, separator and field count in a CSV. + When set, this option causes the IExcelDataReader.RowCount property to throw an exception. + Default: 0 - analyzes the entire file (CSV only, has no effect on other formats) + + + + + The ExcelReader Factory + + + + + Creates an instance of or + + The file stream. + The configuration object. + The excel data reader. + + + + Creates an instance of + + The file stream. + The configuration object. + The excel data reader. + + + + Creates an instance of + + The file stream. + The reader configuration -or- to use the default configuration. + The excel data reader. + + + + Creates an instance of ExcelCsvReader + + The file stream. + The reader configuration -or- to use the default configuration. + The excel data reader. + + + + Thrown when there is a problem parsing the Compound Document container format used by XLS and password-protected XLSX. + + + + + Initializes a new instance of the class. + + The error message + + + + Initializes a new instance of the class. + + The error message + The inner exception + + + + Base class for exceptions thrown by ExcelDataReader + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The error message + + + + Initializes a new instance of the class. + + The error message + The inner exception + + + + Initializes a new instance of the class. + + The serialization info + The streaming context + + + + Thrown when ExcelDataReader cannot parse the header + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The error message + + + + Initializes a new instance of the class. + + The error message + The inner exception + + + + Initializes a new instance of the class. + + The serialization info + The streaming context + + + + Thrown when ExcelDataReader cannot open a password protected document because the password + + + + + Initializes a new instance of the class. + + The error message + + + + Header and footer text. + + + + + Gets a value indicating whether the header and footer are different on the first page. + + + + + Gets a value indicating whether the header and footer are different on odd and even pages. + + + + + Gets the header used for the first page if is . + + + + + Gets the footer used for the first page if is . + + + + + Gets the header used for odd pages -or- all pages if is . + + + + + Gets the footer used for odd pages -or- all pages if is . + + + + + Gets the header used for even pages if is . + + + + + Gets the footer used for even pages if is . + + + + + The ExcelDataReader interface + + + + + Gets the sheet name. + + + + + Gets the sheet VBA code name. + + + + + Gets the sheet visible state. + + + + + Gets the sheet header and footer -or- if none set. + + + + + Gets the list of merged cell ranges. + + + + + Gets the number of results (workbooks). + + + + + Gets the number of rows in the current result. + + + + + Gets the height of the current row in points. + + + + + Seeks to the first result. + + + + + Gets the number format for the specified field -or- if there is no value. + + The index of the field to find. + The number format string of the specified field. + + + + Gets the number format index for the specified field -or- -1 if there is no value. + + The index of the field to find. + The number format index of the specified field. + + + + Gets the width the specified column. + + The index of the column to find. + The width of the specified column. + + + + Custom interface for logging messages + + + + + Debug level of the specified message. The other method is preferred since the execution is deferred. + + The message. + The formatting. + + + + Info level of the specified message. The other method is preferred since the execution is deferred. + + The message. + The formatting. + + + + Warn level of the specified message. The other method is preferred since the execution is deferred. + + The message. + The formatting. + + + + Error level of the specified message. The other method is preferred since the execution is deferred. + + The message. + The formatting. + + + + Fatal level of the specified message. The other method is preferred since the execution is deferred. + + The message. + The formatting. + + + + Factory interface for loggers. + + + + + Create a logger for the specified type. + + The type to create a logger for. + The logger instance. + + + + logger type initialization + + + + + Sets up logging to be with a certain type + + The type of ILog for the application to use + + + + Initializes a new instance of a logger for an object. + This should be done only once per object name. + + The type to get a logger for. + ILog instance for an object if log type has been intialized; otherwise a null logger. + + + + The default logger until one is set. + + + + + + + + + + + + + + + + + + + + + + + 2.0 version of LogExtensions, not as awesome as Extension methods + + + + + Gets the logger for a type. + + The type to fetch a logger for. + The type to get the logger for. + Instance of a logger for the object. + This method is thread safe. + + + diff --git a/BlueWater/Assets/Packages/ExcelDataReader.3.6.0/lib/net45/ExcelDataReader.xml.meta b/BlueWater/Assets/Packages/ExcelDataReader.3.6.0/lib/net45/ExcelDataReader.xml.meta new file mode 100644 index 000000000..dfa8bb078 --- /dev/null +++ b/BlueWater/Assets/Packages/ExcelDataReader.3.6.0/lib/net45/ExcelDataReader.xml.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 8f98804c557f343d89e91641ebffb974 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/BlueWater/Assets/Packages/ExcelDataReader.DataSet.3.6.0.meta b/BlueWater/Assets/Packages/ExcelDataReader.DataSet.3.6.0.meta new file mode 100644 index 000000000..bcc82933a --- /dev/null +++ b/BlueWater/Assets/Packages/ExcelDataReader.DataSet.3.6.0.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 81abb8eb25c6f480f8d77a3dbd6033f2 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/BlueWater/Assets/Packages/ExcelDataReader.DataSet.3.6.0/.signature.p7s b/BlueWater/Assets/Packages/ExcelDataReader.DataSet.3.6.0/.signature.p7s new file mode 100644 index 000000000..050fbd098 Binary files /dev/null and b/BlueWater/Assets/Packages/ExcelDataReader.DataSet.3.6.0/.signature.p7s differ diff --git a/BlueWater/Assets/Packages/ExcelDataReader.DataSet.3.6.0/ExcelDataReader.DataSet.nuspec b/BlueWater/Assets/Packages/ExcelDataReader.DataSet.3.6.0/ExcelDataReader.DataSet.nuspec new file mode 100644 index 000000000..89e42ee22 --- /dev/null +++ b/BlueWater/Assets/Packages/ExcelDataReader.DataSet.3.6.0/ExcelDataReader.DataSet.nuspec @@ -0,0 +1,28 @@ + + + + ExcelDataReader.DataSet + 3.6.0 + ExcelDataReader developers + ExcelDataReader developers + false + MIT + https://licenses.nuget.org/MIT + https://github.com/ExcelDataReader/ExcelDataReader + https://nugetgallery.blob.core.windows.net/icons/ExcelDataReader.2.1.png + ExcelDataReader extension for reading Microsoft Excel files into System.Data.DataSet. + excel xls xlsx dataset + + + + + + + + + + + + + + \ No newline at end of file diff --git a/BlueWater/Assets/Packages/ExcelDataReader.DataSet.3.6.0/ExcelDataReader.DataSet.nuspec.meta b/BlueWater/Assets/Packages/ExcelDataReader.DataSet.3.6.0/ExcelDataReader.DataSet.nuspec.meta new file mode 100644 index 000000000..1fd5298e8 --- /dev/null +++ b/BlueWater/Assets/Packages/ExcelDataReader.DataSet.3.6.0/ExcelDataReader.DataSet.nuspec.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: b51ada754e72f4180b67e9bebbbe20ce +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/BlueWater/Assets/Packages/ExcelDataReader.DataSet.3.6.0/lib.meta b/BlueWater/Assets/Packages/ExcelDataReader.DataSet.3.6.0/lib.meta new file mode 100644 index 000000000..77b5ff69b --- /dev/null +++ b/BlueWater/Assets/Packages/ExcelDataReader.DataSet.3.6.0/lib.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 11109328dc6ce4ac9928da300b3c1ea0 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/BlueWater/Assets/Packages/ExcelDataReader.DataSet.3.6.0/lib/net35.meta b/BlueWater/Assets/Packages/ExcelDataReader.DataSet.3.6.0/lib/net35.meta new file mode 100644 index 000000000..5c7cd2a20 --- /dev/null +++ b/BlueWater/Assets/Packages/ExcelDataReader.DataSet.3.6.0/lib/net35.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 476e04bb22293496d905dcc20aea52c7 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/BlueWater/Assets/Packages/ExcelDataReader.DataSet.3.6.0/lib/net35/ExcelDataReader.DataSet.dll b/BlueWater/Assets/Packages/ExcelDataReader.DataSet.3.6.0/lib/net35/ExcelDataReader.DataSet.dll new file mode 100644 index 000000000..88e6002e7 Binary files /dev/null and b/BlueWater/Assets/Packages/ExcelDataReader.DataSet.3.6.0/lib/net35/ExcelDataReader.DataSet.dll differ diff --git a/BlueWater/Assets/Packages/ExcelDataReader.DataSet.3.6.0/lib/net35/ExcelDataReader.DataSet.dll.meta b/BlueWater/Assets/Packages/ExcelDataReader.DataSet.3.6.0/lib/net35/ExcelDataReader.DataSet.dll.meta new file mode 100644 index 000000000..faa844507 --- /dev/null +++ b/BlueWater/Assets/Packages/ExcelDataReader.DataSet.3.6.0/lib/net35/ExcelDataReader.DataSet.dll.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: e72d261c8145e4bc8bde46077607e051 \ No newline at end of file diff --git a/BlueWater/Assets/Packages/ExcelDataReader.DataSet.3.6.0/lib/net35/ExcelDataReader.DataSet.xml b/BlueWater/Assets/Packages/ExcelDataReader.DataSet.3.6.0/lib/net35/ExcelDataReader.DataSet.xml new file mode 100644 index 000000000..4cdb2290a --- /dev/null +++ b/BlueWater/Assets/Packages/ExcelDataReader.DataSet.3.6.0/lib/net35/ExcelDataReader.DataSet.xml @@ -0,0 +1,71 @@ + + + + ExcelDataReader.DataSet + + + + + ExcelDataReader DataSet extensions + + + + + Converts all sheets to a DataSet + + The IExcelDataReader instance + An optional configuration object to modify the behavior of the conversion + A dataset with all workbook contents + + + + Processing configuration options and callbacks for IExcelDataReader.AsDataSet(). + + + + + Gets or sets a value indicating whether to set the DataColumn.DataType property in a second pass. + + + + + Gets or sets a callback to obtain configuration options for a DataTable. + + + + + Gets or sets a callback to determine whether to include the current sheet in the DataSet. Called once per sheet before ConfigureDataTable. + + + + + Processing configuration options and callbacks for AsDataTable(). + + + + + Gets or sets a value indicating the prefix of generated column names. + + + + + Gets or sets a value indicating whether to use a row from the data as column names. + + + + + Gets or sets a callback to determine which row is the header row. Only called when UseHeaderRow = true. + + + + + Gets or sets a callback to determine whether to include the current row in the DataTable. + + + + + Gets or sets a callback to determine whether to include the specific column in the DataTable. Called once per column after reading the headers. + + + + diff --git a/BlueWater/Assets/Packages/ExcelDataReader.DataSet.3.6.0/lib/net35/ExcelDataReader.DataSet.xml.meta b/BlueWater/Assets/Packages/ExcelDataReader.DataSet.3.6.0/lib/net35/ExcelDataReader.DataSet.xml.meta new file mode 100644 index 000000000..81c4d3f4d --- /dev/null +++ b/BlueWater/Assets/Packages/ExcelDataReader.DataSet.3.6.0/lib/net35/ExcelDataReader.DataSet.xml.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 4ebc419a397284610a2762f00b7f8200 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/BlueWater/Assets/Resources/Excel.meta b/BlueWater/Assets/Resources/Excel.meta new file mode 100644 index 000000000..e15fce0b7 --- /dev/null +++ b/BlueWater/Assets/Resources/Excel.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 0b452a245db9f424f92f4238ded49adc +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/BlueWater/Assets/Resources/Excel/customer_table.xlsx b/BlueWater/Assets/Resources/Excel/customer_table.xlsx new file mode 100644 index 000000000..e2d588d3a Binary files /dev/null and b/BlueWater/Assets/Resources/Excel/customer_table.xlsx differ diff --git a/BlueWater/Assets/Resources/Excel/customer_table.xlsx.meta b/BlueWater/Assets/Resources/Excel/customer_table.xlsx.meta new file mode 100644 index 000000000..2d5d873cd --- /dev/null +++ b/BlueWater/Assets/Resources/Excel/customer_table.xlsx.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 868f1f5f8663c4fe0b2c271f50f4606d +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/BlueWater/Assets/Resources/JSON.meta b/BlueWater/Assets/Resources/JSON.meta new file mode 100644 index 000000000..d9f82b6f4 --- /dev/null +++ b/BlueWater/Assets/Resources/JSON.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 91449ffd9dec84c5284a14b729455f7d +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/BlueWater/Assets/Resources/JSON/customer_table.json b/BlueWater/Assets/Resources/JSON/customer_table.json new file mode 100644 index 000000000..dcf9ddb4e --- /dev/null +++ b/BlueWater/Assets/Resources/JSON/customer_table.json @@ -0,0 +1,172 @@ +[ + { + "idx": 10001, + "name": "wildman1", + "speed": 3, + "hurry": 3, + "wait": 3, + "base_happy_point": 30, + "taste_1": 2, + "taste_2": 1, + "taste_3": 0, + "picky_1": 11, + "picky_2": 0, + "picky_3": 0, + "bully": 0, + "tip": 11100, + "dialogue": 101 + }, + { + "idx": 10002, + "name": "wildman2", + "speed": 3, + "hurry": 3, + "wait": 3, + "base_happy_point": 30, + "taste_1": 2, + "taste_2": 1, + "taste_3": 0, + "picky_1": 11, + "picky_2": 0, + "picky_3": 0, + "bully": 0, + "tip": 22200, + "dialogue": 101 + }, + { + "idx": 10003, + "name": "viking1", + "speed": 3, + "hurry": 3, + "wait": 3, + "base_happy_point": 30, + "taste_1": 2, + "taste_2": 1, + "taste_3": 0, + "picky_1": 31, + "picky_2": 0, + "picky_3": 0, + "bully": 1, + "tip": 22200, + "dialogue": 102 + }, + { + "idx": 10004, + "name": "viking2", + "speed": 3, + "hurry": 3, + "wait": 3, + "base_happy_point": 30, + "taste_1": 2, + "taste_2": 1, + "taste_3": 0, + "picky_1": 31, + "picky_2": 0, + "picky_3": 0, + "bully": 0, + "tip": 32200, + "dialogue": 102 + }, + { + "idx": 10005, + "name": "pirate1", + "speed": 3, + "hurry": 3, + "wait": 3, + "base_happy_point": 30, + "taste_1": 1, + "taste_2": 2, + "taste_3": 0, + "picky_1": 41, + "picky_2": 0, + "picky_3": 0, + "bully": 0, + "tip": 33300, + "dialogue": 103 + }, + { + "idx": 10006, + "name": "oldman1", + "speed": 1, + "hurry": 1, + "wait": 1, + "base_happy_point": 30, + "taste_1": 1, + "taste_2": 2, + "taste_3": 0, + "picky_1": 41, + "picky_2": 0, + "picky_3": 0, + "bully": 1, + "tip": 44200, + "dialogue": 104 + }, + { + "idx": 10007, + "name": "soldier1", + "speed": 2, + "hurry": 2, + "wait": 2, + "base_happy_point": 30, + "taste_1": 1, + "taste_2": 2, + "taste_3": 0, + "picky_1": 41, + "picky_2": 0, + "picky_3": 0, + "bully": 0, + "tip": 65432, + "dialogue": 105 + }, + { + "idx": 10008, + "name": "soldier2", + "speed": 2, + "hurry": 2, + "wait": 2, + "base_happy_point": 20, + "taste_1": 1, + "taste_2": 2, + "taste_3": 0, + "picky_1": 21, + "picky_2": 0, + "picky_3": 0, + "bully": 0, + "tip": 105400, + "dialogue": 106 + }, + { + "idx": 10009, + "name": "chinaman1", + "speed": 2, + "hurry": 2, + "wait": 1, + "base_happy_point": 20, + "taste_1": 1, + "taste_2": 2, + "taste_3": 0, + "picky_1": 21, + "picky_2": 0, + "picky_3": 0, + "bully": 0, + "tip": 1510500, + "dialogue": 107 + }, + { + "idx": 10010, + "name": "knight1", + "speed": 2, + "hurry": 2, + "wait": 1, + "base_happy_point": 20, + "taste_1": 1, + "taste_2": 2, + "taste_3": 0, + "picky_1": 21, + "picky_2": 0, + "picky_3": 0, + "bully": 1, + "tip": 20201000, + "dialogue": 108 + } +] \ No newline at end of file diff --git a/BlueWater/Assets/Resources/JSON/customer_table.json.meta b/BlueWater/Assets/Resources/JSON/customer_table.json.meta new file mode 100644 index 000000000..80a15e359 --- /dev/null +++ b/BlueWater/Assets/Resources/JSON/customer_table.json.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: e306e1af477c947e2b759b1d56078e0f +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/BlueWater/Assets/packages.config b/BlueWater/Assets/packages.config index f987c4f43..8f4f124c1 100644 --- a/BlueWater/Assets/packages.config +++ b/BlueWater/Assets/packages.config @@ -1,4 +1,6 @@  + + \ No newline at end of file