Advertisement
Guest User

Untitled

a guest
Oct 21st, 2018
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 15.60 KB | None | 0 0
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. using UnityEditor;
  5. using System.Linq;
  6.  
  7. public class ItemList : MonoBehaviour
  8. {
  9.  
  10.     public static class fileName
  11.     {
  12.         public static string i = "Items";
  13.         public static string iv = "ItemsVars";
  14.     }
  15.  
  16.     public static class path
  17.     {
  18.         public static string ip = "Assets/Resources/Text/" + fileName.i + ".txt";
  19.         public static string ivp = "Assets/Resources/Text/" + fileName.iv + ".txt";
  20.     }
  21.  
  22.     public static class Rpath
  23.     {
  24.         public static string ir = "Text/" + fileName.i;
  25.         public static string ivr = "Text/" + fileName.iv;
  26.     }
  27.  
  28.     public static string ItemsPatch = "Items/";
  29.  
  30.     public class itemD
  31.     {
  32.         public string name;
  33.         public object value;
  34.         public object[] array;
  35.         public bool String;
  36.         public bool Int;
  37.         public bool Float;
  38.         public bool Double;
  39.         public bool Bool;
  40.         public bool stringArray;
  41.         public bool intArray;
  42.         public bool floatArray;
  43.         public bool doubleArray;
  44.         public bool boolArray;
  45.  
  46.         public bool find;
  47.     }
  48.  
  49.     public class dVar
  50.     {
  51.         public string name;
  52.         public int i;
  53.     }
  54.  
  55.     private static string[] v = {
  56.         "string", "int", "float", "double", "bool",
  57.         "string array", "int array", "float array", "double array", "bool array"
  58.     };
  59.  
  60.     public static List<dVar> LoadVars()
  61.     {
  62.         List<dVar> dList1 = new List<dVar>();
  63.  
  64.         TextAsset t = Resources.Load<TextAsset>(Rpath.ivr);
  65.  
  66.         if (t == null)
  67.             return dList1;
  68.  
  69.         string[] lines = t.text.Split('\n');
  70.         for (int i = 0; i < lines.Length - 1; i++)
  71.         {
  72.             string[] args = lines[i].Split('*');
  73.             dVar n = new dVar();
  74.             n.name = args[0];
  75.             n.i = int.Parse(args[1]);
  76.             dList1.Add(n);
  77.         }
  78.         return dList1;
  79.     }
  80.  
  81.     public static List<List<itemD>> Load()
  82.     {
  83.         List<List<itemD>> dItemList = new List<List<itemD>>();
  84.  
  85.         List<dVar> dList = ItemList.LoadVars();
  86.         if (dList == null)
  87.         {
  88.             Debug.LogError("Cant load items DB!");
  89.             return dItemList;
  90.         }
  91.  
  92.         TextAsset ta = Resources.Load<TextAsset>(Rpath.ir);
  93.         if (ta == null)
  94.         {
  95.             Debug.LogError("Cant find file '" + Rpath.ir + "'!");
  96.             return dItemList;
  97.         }
  98.  
  99.         string[] lines = ta.text.Split('\n');
  100.         for (int i = 0; i < lines.Length - 1; i++)
  101.         {
  102.             List<itemD> n = new List<itemD>();
  103.             string[] args = lines[i].Split(';');
  104.  
  105.             for (int x = 0; x < dList.Count; x++)
  106.             {
  107.                 n.Add(new itemD());
  108.                 n[n.Count - 1].name = dList[x].name;
  109.             }
  110.  
  111.             for (int ii = 0; ii < args.Length - 1; ii++)
  112.             {
  113.                 //itemD idd = new itemD();
  114.                 string[] args2 = args[ii].Split('=');
  115.                 string[] nargs = args2[0].Split('*');
  116.  
  117.                 string name = nargs[0];
  118.                 string typ = nargs[1];
  119.                 string value = args2[1];
  120.  
  121.                 for (int x = 0; x < n.Count; x++)
  122.                 {
  123.                     switch (v[dList[x].i])
  124.                     {
  125.                         case "string":
  126.                             n[x].String = true;
  127.                             if (name == n[x].name)
  128.                                 n[x].value = value;
  129.                             break;
  130.  
  131.                         case "int":
  132.                             n[x].Int = true;
  133.                             if (name == n[x].name)
  134.                                 n[x].value = int.Parse(value);
  135.                             break;
  136.  
  137.                         case "float":
  138.                             n[x].Float = true;
  139.                             if (name == n[x].name)
  140.                                 n[x].value = float.Parse(value);
  141.                             break;
  142.  
  143.                         case "double":
  144.                             n[x].Double = true;
  145.                             if (name == n[x].name)
  146.                                 n[x].value = double.Parse(value);
  147.                             break;
  148.                         case "bool":
  149.                             n[x].Bool = true;
  150.                             if (name == n[x].name)
  151.                                 n[x].value = bool.Parse(value);
  152.                             break;
  153.  
  154.                         case "string array":
  155.                             n[x].stringArray = true;
  156.                             if (name == n[x].name)
  157.                             {
  158.                                 string[] s = value.Split(',');
  159.                                 int iii = 0;
  160.                                 foreach (string a in s)
  161.                                 {
  162.                                     n[x].array[iii] = a;
  163.                                 }
  164.  
  165.                             }
  166.                             break;
  167.  
  168.                         case "int array":
  169.                             n[x].intArray = true;
  170.                             if (name == n[x].name)
  171.                             {
  172.                                 string[] s = value.Split(',');
  173.                                 int iii = 0;
  174.                                 foreach (string a in s)
  175.                                 {
  176.                                     n[x].array[iii] = int.Parse(a);
  177.                                 }
  178.                             }
  179.                             break;
  180.  
  181.                         case "float array":
  182.                             n[x].floatArray = true;
  183.                             if (name == n[x].name)
  184.                             {
  185.                                 string[] s = value.Split(',');
  186.                                 int iii = 0;
  187.                                 foreach (string a in s)
  188.                                 {
  189.                                     n[x].array[iii] = float.Parse(a);
  190.                                 }
  191.                             }
  192.                             break;
  193.  
  194.                         case "double array":
  195.                             n[x].doubleArray = true;
  196.                             if (name == n[x].name)
  197.                             {
  198.                                 string[] s = value.Split(',');
  199.                                 int iii = 0;
  200.                                 foreach (string a in s)
  201.                                 {
  202.                                     n[x].array[iii] = double.Parse(a);
  203.                                 }
  204.                             }
  205.                             break;
  206.                         case "bool array":
  207.                             n[x].boolArray = true;
  208.                             if (name == n[x].name)
  209.                             {
  210.                                 string[] s = value.Split(',');
  211.                                 int iii = 0;
  212.                                 foreach (string a in s)
  213.                                 {
  214.                                     n[x].array[iii] = bool.Parse(a);
  215.                                 }
  216.                             }
  217.                             break;
  218.                     }
  219.                 }
  220.             }
  221.             dItemList.Add(n);
  222.         }
  223.         return dItemList;
  224.     }
  225.  
  226.     private static Dictionary<string, List<itemD>> dItemList;
  227.     private List<string> saling = new List<string>();
  228.  
  229.     private void Awake()
  230.     {
  231.         dItemList = LoadDic();
  232.         saling = MakeSalingItemsList();
  233.     }
  234.  
  235.     private List<string> MakeSalingItemsList()
  236.     {
  237.         List<itemD>[] dbValues = dItemList.Values.ToArray();
  238.         string[] dbKeys = dItemList.Keys.ToArray();
  239.         List<string> saleList = new List<string>();
  240.  
  241.         for (int i = 0; i<dItemList.Count; i++)
  242.         {
  243.             List<itemD> liD = dbValues[i];
  244.             foreach (itemD dliD in liD)
  245.             {
  246.                 if (dliD.name == "sale")
  247.                 {
  248.                     if ((bool) dliD.value == true)
  249.                     {
  250.                         saleList.Add(dbKeys[i]);
  251.                         break;
  252.                     }
  253.                 }
  254.             }
  255.         }
  256.         return saleList;
  257.     }
  258.  
  259.     private static Dictionary<string, List<itemD>> LoadDic()
  260.     {
  261.         Dictionary<string, List<itemD>> dItemListD = new Dictionary<string, List<itemD>>();
  262.  
  263.         string code = "";
  264.  
  265.         List<dVar> dList = ItemList.LoadVars();
  266.         if (dList == null)
  267.         {
  268.             Debug.LogError("Cant load items DB!");
  269.             return dItemListD;
  270.         }
  271.  
  272.         TextAsset ta = Resources.Load<TextAsset>(Rpath.ir);
  273.         if (ta == null)
  274.         {
  275.             Debug.LogError("Cant find file '" + Rpath.ir + "'!");
  276.             return dItemListD;
  277.         }
  278.  
  279.         string[] lines = ta.text.Split('\n');
  280.         for (int i = 0; i < lines.Length - 1; i++)
  281.         {
  282.             List<itemD> n = new List<itemD>();
  283.             string[] args = lines[i].Split(';');
  284.  
  285.             for (int x = 0; x < dList.Count; x++)
  286.             {
  287.                 n.Add(new itemD());
  288.                 n[n.Count - 1].name = dList[x].name;
  289.             }
  290.  
  291.             for (int ii = 0; ii < args.Length - 1; ii++)
  292.             {
  293.                 //itemD idd = new itemD();
  294.                 string[] args2 = args[ii].Split('=');
  295.                 string[] nargs = args2[0].Split('*');
  296.  
  297.                 string name = nargs[0];
  298.                 string typ = nargs[1];
  299.                 string value = args2[1];
  300.  
  301.                 if (name == "code")
  302.                 {
  303.                     code = value;
  304.                 }
  305.  
  306.                 for (int x = 0; x < n.Count; x++)
  307.                 {
  308.                     switch (v[dList[x].i])
  309.                     {
  310.                         case "string":
  311.                             n[x].String = true;
  312.                             if (name == n[x].name)
  313.                                 n[x].value = value;
  314.                             break;
  315.  
  316.                         case "int":
  317.                             n[x].Int = true;
  318.                             if (name == n[x].name)
  319.                                 n[x].value = int.Parse(value);
  320.                             break;
  321.  
  322.                         case "float":
  323.                             n[x].Float = true;
  324.                             if (name == n[x].name)
  325.                                 n[x].value = float.Parse(value);
  326.                             break;
  327.  
  328.                         case "double":
  329.                             n[x].Double = true;
  330.                             if (name == n[x].name)
  331.                                 n[x].value = double.Parse(value);
  332.                             break;
  333.  
  334.                         case "bool":
  335.                             n[x].Bool = true;
  336.                             if (name == n[x].name)
  337.                                 n[x].value = bool.Parse(value);
  338.                             break;
  339.  
  340.                         case "string array":
  341.                             n[x].stringArray = true;
  342.                             if (name == n[x].name)
  343.                             {
  344.                                 string[] s = value.Split(',');
  345.                                 int iii = 0;
  346.                                 foreach (string a in s)
  347.                                 {
  348.                                     n[x].array[iii] = a;
  349.                                 }
  350.  
  351.                             }
  352.                             break;
  353.  
  354.                         case "int array":
  355.                             n[x].intArray = true;
  356.                             if (name == n[x].name)
  357.                             {
  358.                                 string[] s = value.Split(',');
  359.                                 int iii = 0;
  360.                                 foreach (string a in s)
  361.                                 {
  362.                                     n[x].array[iii] = int.Parse(a);
  363.                                 }
  364.                             }
  365.                             break;
  366.  
  367.                         case "float array":
  368.                             n[x].floatArray = true;
  369.                             if (name == n[x].name)
  370.                             {
  371.                                 string[] s = value.Split(',');
  372.                                 int iii = 0;
  373.                                 foreach (string a in s)
  374.                                 {
  375.                                     n[x].array[iii] = float.Parse(a);
  376.                                 }
  377.                             }
  378.                             break;
  379.  
  380.                         case "double array":
  381.                             n[x].doubleArray = true;
  382.                             if (name == n[x].name)
  383.                             {
  384.                                 string[] s = value.Split(',');
  385.                                 int iii = 0;
  386.                                 foreach (string a in s)
  387.                                 {
  388.                                     n[x].array[iii] = double.Parse(a);
  389.                                 }
  390.                             }
  391.                             break;
  392.  
  393.                         case "bool array":
  394.                             n[x].boolArray = true;
  395.                             if (name == n[x].name)
  396.                             {
  397.                                 string[] s = value.Split(',');
  398.                                 int iii = 0;
  399.                                 foreach (string a in s)
  400.                                 {
  401.                                     n[x].array[iii] = bool.Parse(a);
  402.                                 }
  403.                             }
  404.                             break;
  405.                     }
  406.                 }
  407.             }
  408.             dItemListD.Add(code, n);
  409.         }
  410.         return dItemListD;
  411.     }
  412.  
  413.     public Transform SpawnItem(string code, Vector3 pos, Quaternion rot)
  414.     {
  415.         code = code.ToLower();
  416.  
  417.         Transform objSpawned = null;
  418.         if (dItemList.ContainsKey(code))
  419.         {
  420.             List<itemD> ob = dItemList[code];
  421.             foreach (itemD id in ob)
  422.             {
  423.                 if (objSpawned != null)
  424.                 {
  425.                     if (id.name == "name")
  426.                         objSpawned.name = (string)id.value;
  427.                 }
  428.                 else
  429.                 {
  430.                     if (id.name == "prefab")
  431.                         objSpawned = Instantiate(Resources.Load<Transform>(ItemsPatch + (string)id.value), pos, rot);
  432.                 }
  433.             }
  434.  
  435.             Item item = objSpawned.gameObject.AddComponent<Item>();
  436.             item.Send(ob);
  437.         }
  438.         else
  439.         {
  440.             Debug.LogError("Item '" + code + "' dont exists in DB!");
  441.         }
  442.         return objSpawned;
  443.     }
  444.  
  445.     public Transform SpawnRandomSalingItem(Vector3 pos, Quaternion rot)
  446.     {
  447.         string code = saling[Random.Range(0, saling.Count)];
  448.  
  449.         Transform objSpawned = null;
  450.         List<itemD> dbItem = dItemList[code];
  451.         foreach (itemD id in dbItem)
  452.         {
  453.             if (objSpawned != null)
  454.             {
  455.                 if (id.name == "name")
  456.                     objSpawned.name = (string)id.value;
  457.             }
  458.             else
  459.             {
  460.                 if (id.name == "prefab")
  461.                 {
  462.                     objSpawned = Instantiate(Resources.Load<Transform>(ItemsPatch + (string)id.value), pos, rot);
  463.                     break;
  464.                 }
  465.             }
  466.         }
  467.  
  468.         Item item = objSpawned.gameObject.AddComponent<Item>();
  469.         item.Send(dbItem);
  470.  
  471.         return objSpawned;
  472.     }
  473. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement