Inheritance: ItemData
コード例 #1
0
    private ResourceFilesData()
    {
        ArmorData        armorData;
        WeaponsData      weaponsData;
        MiscData         miscData;
        ItemStatCostData itemStatCostData;

        using (Stream s = GetResource("ItemStatCost.txt"))
        {
            itemStatCostData = ItemStatCostData.Read(s);
        }
        using (Stream s = GetResource("Armor.txt"))
        {
            armorData = ArmorData.Read(s);
        }
        using (Stream s = GetResource("Weapons.txt"))
        {
            weaponsData = WeaponsData.Read(s);
        }
        using (Stream s = GetResource("Misc.txt"))
        {
            miscData = MiscData.Read(s);
        }

        MetaData = new MetaData(itemStatCostData, new ItemsData(armorData, weaponsData, miscData));
    }
コード例 #2
0
ファイル: ItemsData.cs プロジェクト: dschu012/D2SLib
    public static ArmorData Read(Stream data)
    {
        var armor = new ArmorData();

        armor.ReadData(data);
        return(armor);
    }
コード例 #3
0
        public static void ReadItemData()
        {
            itemManager = new ItemDataManager();

            string[] fileNames = Directory.GetFiles(
                Path.Combine(FormMain.ItemPath, "Armor"),
                "*.xml");

            foreach (string s in fileNames)
            {
                ArmorData armorData = XnaSerializer.Deserialize <ArmorData>(s);
                itemManager.ArmorData.Add(armorData.Name, armorData);
            }

            fileNames = Directory.GetFiles(
                Path.Combine(FormMain.ItemPath, "Shield"),
                "*.xml");

            foreach (string s in fileNames)
            {
                ShieldData shieldData = XnaSerializer.Deserialize <ShieldData>(s);
                itemManager.ShieldData.Add(shieldData.Name, shieldData);
            }

            fileNames = Directory.GetFiles(
                Path.Combine(FormMain.ItemPath, "Weapon"),
                "*.xml");

            foreach (string s in fileNames)
            {
                WeaponData weaponData = XnaSerializer.Deserialize <WeaponData>(s);
                itemManager.WeaponData.Add(weaponData.Name, weaponData);
            }
        }
コード例 #4
0
        void btnCancel_Click(object sender, EventArgs e)
        {
            armor = null;

            this.FormClosing -= FormArmorDetails_FormClosing;
            this.Close();
        }
コード例 #5
0
    public void OnArmorInsert(ArmorSlot slot, Item item)
    {
        ((Armor)item).m_Limb = slot.m_Limb;
        item.ItemsManagerUnregister();
        item.transform.SetParent(slot.transform);
        Physics.IgnoreCollision(this.m_Player.m_Collider, item.GetComponent <Collider>());
        Renderer[] componentsDeepChild = General.GetComponentsDeepChild <Renderer>(item.gameObject);
        for (int i = 0; i < componentsDeepChild.Length; i++)
        {
            componentsDeepChild[i].enabled = false;
        }
        ArmorInfo armorInfo = (ArmorInfo)item.m_Info;
        ArmorData armorData = this.m_LimbMap[(int)slot.m_Limb];

        armorData.m_MeshMap[(int)armorInfo.m_ArmorType].SetActive(true);
        armorData.m_Mesh          = armorData.m_MeshMap[(int)armorInfo.m_ArmorType];
        armorData.m_AttachedArmor = item;
        armorData.m_AttachedArmorOrigCollCenter        = armorData.m_AttachedArmor.m_BoxCollider.center;
        armorData.m_AttachedArmorOrigCollSize          = armorData.m_AttachedArmor.m_BoxCollider.size;
        armorData.m_AttachedArmor.m_BoxCollider.center = armorData.m_AttachedArmorCollCenter;
        armorData.m_AttachedArmor.m_BoxCollider.size   = armorData.m_AttachedArmorCollSize;
        armorData.m_ArmorType  = armorInfo.m_ArmorType;
        armorData.m_Absorption = armorInfo.m_Absorption;
        armorData.m_Health     = armorInfo.m_Health;
        HUDBodyInspection.Get().m_ArmorEnabled = true;
        this.SetMeshesVisible(HUDBodyInspection.Get().m_ArmorEnabled);
        BodyInspectionController.Get().OnArmorAttached(slot.m_Limb);
    }
コード例 #6
0
    public void ArmorCarryStarted(Item item)
    {
        ((Armor)item).m_Limb = Limb.None;
        ArmorData armorData = null;

        foreach (KeyValuePair <int, ArmorData> keyValuePair in this.m_LimbMap)
        {
            if (keyValuePair.Value.m_AttachedArmor == item)
            {
                Dictionary <int, ArmorData> .Enumerator enumerator;
                keyValuePair = enumerator.Current;
                armorData    = keyValuePair.Value;
                break;
            }
        }
        if (armorData == null)
        {
            return;
        }
        item.ItemsManagerRegister(false);
        Renderer[] componentsDeepChild = General.GetComponentsDeepChild <Renderer>(item.gameObject);
        for (int i = 0; i < componentsDeepChild.Length; i++)
        {
            componentsDeepChild[i].enabled = true;
        }
        Limb limb = armorData.m_Slot.m_Limb;

        item.m_BoxCollider.center = armorData.m_AttachedArmorOrigCollCenter;
        item.m_BoxCollider.size   = armorData.m_AttachedArmorOrigCollSize;
        armorData.m_Slot.m_Item   = null;
        armorData.m_Mesh.SetActive(false);
        armorData.m_DestroyedMesh.SetActive(false);
        armorData.Reset();
        this.OnArmorRemoved(limb);
    }
コード例 #7
0
    private void drawArmorSettings()
    {
        mainText = "Armor card creator";
        GUILayout.BeginHorizontal();
        if (GUILayout.Button("Create new Armor"))
        {
            foreach (Sprite sprite in spriteList)
            {
                int tempPoints = power;
                int atq        = Random.Range(0, tempPoints);
                tempPoints -= atq;
                int def = tempPoints;

                ArmorData armor = CreateInstance <ArmorData>();

                armor.atk   = atq;
                armor.def   = def;
                armor.image = sprite;
                armor.name  = armor.image.name;
                armor.type  = cardType;
                saveData(armor);
            }
            spriteList = new List <Sprite>();
            power      = 0;
        }
        GUILayout.EndHorizontal();
    }
コード例 #8
0
    public static ArmorData createArmorData(ArmorType type)
    {
        ArmorData data = new ArmorData(ItemQuality.COMMON, 1, type, type.armorClass());

        data.initCommons(type.cost(), 0);
        return(data);
    }
コード例 #9
0
 public void SetMeshesVisible(bool set)
 {
     foreach (KeyValuePair <int, ArmorData> keyValuePair in this.m_LimbMap)
     {
         ArmorData value = keyValuePair.Value;
         if (value.m_ArmorType != ArmorType.None)
         {
             if (set)
             {
                 if (value.IsArmorDestroyed())
                 {
                     value.m_MeshMap[(int)value.m_ArmorType].SetActive(false);
                     value.m_DestroyedMesh.SetActive(true);
                     if (value.m_Cloth)
                     {
                         value.m_Cloth.enabled = false;
                         value.m_Cloth.enabled = true;
                     }
                 }
                 else
                 {
                     value.m_MeshMap[(int)value.m_ArmorType].SetActive(true);
                     value.m_DestroyedMesh.SetActive(false);
                 }
             }
             else
             {
                 value.m_MeshMap[(int)value.m_ArmorType].SetActive(false);
                 value.m_DestroyedMesh.SetActive(false);
             }
         }
     }
 }
コード例 #10
0
        public async Task <Armor> GetEntity(int id)
        {
            ArmorData armorData = (ArmorData)(await _repo.FetchOne(id));  // For now let's deal with having to cast our repo data
            Armor     armor     = _mapper.Map <Armor>(armorData);

            return(armor);
        }
コード例 #11
0
ファイル: Armor.cs プロジェクト: skinitimski/Reverence
 public Armor(ArmorData data)
     : base(data)
 {
     Defense = data.Defense;
     DefensePercent = data.DefensePercent;
     MagicDefense = data.MagicDefense;
     MagicDefensePercent = data.MagicDefensePercent;
 }
コード例 #12
0
ファイル: Armor.cs プロジェクト: skinitimski/Reverence
 public Armor(ArmorData data)
     : base(data)
 {
     Defense             = data.Defense;
     DefensePercent      = data.DefensePercent;
     MagicDefense        = data.MagicDefense;
     MagicDefensePercent = data.MagicDefensePercent;
 }
コード例 #13
0
    public void Load(ArmorData armorData)
    {
        SetBaseScore(armorData.baseAbility);
        SetItemName(armorData.name);
        SetItemType((ITEM_TYPE)armorData.itemType);

        SetDefenseValue(armorData.defense);
        SetHeavyArmor(armorData.heavyArmor);
    }
コード例 #14
0
ファイル: ArmorEditorWindow.cs プロジェクト: linxscc/bnyx
        void loadArmor()
        {
            //string jsonString = Tools.ReadStringFromFile(Application.dataPath + "/" + armorDataFile);
            armorDataDic = Tools.LoadOneData <ArmorData>(Application.dataPath + "/" + "Resources_moved/Scripts/Armor/ArmorList");

            skeletonDataAssetPath = Tools.ReadStringFromFile(Application.dataPath + "/" + "Resources_moved/Scripts/Armor/ArmorskeletonDataAssetPath.json");

            armorDataList = armorDataDic.Values.ToList();
            currArmorData = armorDataList[0];
        }
コード例 #15
0
    public Armor(ArmorData armorData) : base(armorData, false)
    {
        ArmorPrefab armorPrefab = Resources.Load <ArmorPrefab>("Items/Armor/" + itemPrefabName);

        defence     = armorData.defence;
        type        = armorPrefab.type;
        model       = armorPrefab.model;
        sprite      = armorPrefab.sprite;
        enchantment = new Enchantment(armorData.enchantment);
    }
コード例 #16
0
    public float GetAbsorption(Limb limb)
    {
        ArmorData armorData = this.m_LimbMap[(int)limb];

        if (armorData.m_ArmorType != ArmorType.None && !armorData.IsArmorDestroyed())
        {
            return(CJTools.Math.GetProportionalClamp(armorData.m_MinAbsorption, 1f, armorData.m_AttachedArmor.m_Info.m_Health, 0f, armorData.m_AttachedArmor.m_Info.m_MaxHealth) * armorData.m_Absorption);
        }
        return(0f);
    }
コード例 #17
0
ファイル: DataManager.cs プロジェクト: brollins90/eotd
        public static void ReadArmorData(ContentManager Content)
        {
            string[] filenames = Directory.GetFiles(@"Content\Game\Items\Armor", "*.xnb");

            foreach (string name in filenames)
            {
                string    filename = @"Game\Items\Armor\" + Path.GetFileNameWithoutExtension(name);
                ArmorData data     = Content.Load <ArmorData>(filename);
                ArmorData.Add(data.Name, data);
            }
        }
コード例 #18
0
        void btnOK_Click(object sender, EventArgs e)
        {
            int   price  = 0;
            float weight = 0f;
            int   defVal = 0;
            int   defMod = 0;

            if (string.IsNullOrEmpty(tbName.Text))
            {
                MessageBox.Show("You must enter a name for the item.");
                return;
            }

            if (!int.TryParse(mtbPrice.Text, out price))
            {
                MessageBox.Show("Price must be an integer value.");
                return;
            }

            weight = (float)nudWeight.Value;

            if (!int.TryParse(mtbDefenseValue.Text, out defVal))
            {
                MessageBox.Show("Defense valule must be an interger value.");
                return;
            }

            if (!int.TryParse(mtbDefenseModifier.Text, out defMod))
            {
                MessageBox.Show("Defense valule must be an interger value.");
                return;
            }

            List <string> allowedClasses = new List <string>();

            foreach (object o in lbAllowedClasses.Items)
            {
                allowedClasses.Add(o.ToString());
            }

            armor                  = new ArmorData();
            armor.Name             = tbName.Text;
            armor.Type             = tbType.Text;
            armor.Price            = price;
            armor.Weight           = weight;
            armor.ArmorLocation    = (ArmorLocation)cboArmorLocation.SelectedIndex;
            armor.DefenseValue     = defVal;
            armor.DefenseModifier  = defMod;
            armor.AllowableClasses = allowedClasses.ToArray();

            this.FormClosing -= FormArmorDetails_FormClosing;
            this.Close();
        }
コード例 #19
0
 public bool IsgameObjectEquipedArmor(GameObject go)
 {
     foreach (KeyValuePair <int, ArmorData> keyValuePair in this.m_LimbMap)
     {
         ArmorData value = keyValuePair.Value;
         if (value.m_AttachedArmor != null && go == value.m_AttachedArmor.gameObject)
         {
             return(true);
         }
     }
     return(false);
 }
コード例 #20
0
    public override void LateUpdate()
    {
        if (Debug.isDebugBuild)
        {
            this.UpdateDebug();
        }
        base.LateUpdate();
        bool flag = ScenarioManager.Get().IsDream();

        if (flag && !this.m_WasDreamActive)
        {
            this.SetMeshesVisible(false);
        }
        else if (!flag && this.m_WasDreamActive)
        {
            this.SetMeshesVisible(true);
        }
        this.m_WasDreamActive = flag;
        if ((this.m_ScheduleTakeDamage && (this.m_ArmorTakeDamagePhaseCompleted & 2) != 0 && (this.m_ArmorTakeDamagePhaseCompleted & 1) != 0) || (Debug.isDebugBuild && Input.GetKey(KeyCode.RightAlt) && Input.GetKey(KeyCode.P)))
        {
            if (this.m_DamageLimb == Limb.None)
            {
                this.m_DamageLimb   = Limb.LArm;
                this.m_DamageToTake = 100f;
            }
            ArmorData armorData = this.m_LimbMap[(int)this.m_DamageLimb];
            if (armorData != null)
            {
                DamageInfo damageInfo = new DamageInfo();
                damageInfo.m_Damage = this.m_DamageToTake;
                armorData.m_AttachedArmor.TakeDamage(damageInfo);
                if (armorData.m_AttachedArmor.m_Info.m_Health <= 0f)
                {
                    this.OnArmorDestroyed(armorData);
                }
            }
            this.m_ScheduleTakeDamage            = false;
            this.m_ArmorTakeDamagePhaseCompleted = 0;
            this.m_DamageLimb = Limb.None;
        }
        Dictionary <int, ArmorData> .Enumerator enumerator = this.m_LimbMap.GetEnumerator();
        while (enumerator.MoveNext())
        {
            KeyValuePair <int, ArmorData> keyValuePair = enumerator.Current;
            ArmorData value = keyValuePair.Value;
            if (value.m_Destroyed && value.m_AttachedArmor)
            {
                value.m_AttachedArmor.transform.localRotation = Quaternion.identity;
                value.m_AttachedArmor.transform.localPosition = Vector3.zero;
            }
        }
        enumerator.Dispose();
    }
コード例 #21
0
ファイル: ArmorData.cs プロジェクト: scozirge/AVentureCapital
 /// <summary>
 /// 將字典傳入,依json表設定資料
 /// </summary>
 public static void SetData(Dictionary<int, ArmorData> _dic)
 {
     string jsonStr = Resources.Load<TextAsset>("Json/Armor").ToString();
     JsonData jd = JsonMapper.ToObject(jsonStr);
     JsonData armorItems = jd["Armor"];
     for (int i = 0; i < armorItems.Count; i++)
     {
         ArmorData armorData = new ArmorData(armorItems[i]);
         int id = int.Parse(armorItems[i]["ID"].ToString());
         _dic.Add(id, armorData);
     }
 }
コード例 #22
0
        void btnEdit_Click(object sender, EventArgs e)
        {
            if (lbDetails.SelectedItem != null)
            {
                string   detail = lbDetails.SelectedItem.ToString();
                string[] parts  = detail.Split(',');
                string   entity = parts[0].Trim();

                ArmorData data    = itemManager.ArmorData[entity];
                ArmorData newData = null;

                using (FormArmorDetails frmArmorData = new FormArmorDetails())
                {
                    frmArmorData.Armor = data;
                    frmArmorData.ShowDialog();

                    if (frmArmorData.Armor == null)
                    {
                        return;
                    }

                    if (frmArmorData.Armor.Name == entity)
                    {
                        itemManager.ArmorData[entity] = frmArmorData.Armor;
                        FillListBox();

                        return;
                    }

                    newData = frmArmorData.Armor;
                }

                DialogResult result = MessageBox.Show(
                    "Name has changed. Do you want to add a new entry?",
                    "New Entry",
                    MessageBoxButtons.YesNo);

                if (result == DialogResult.No)
                {
                    return;
                }

                if (itemManager.ArmorData.ContainsKey(newData.Name))
                {
                    MessageBox.Show("Entry already exists. Use Edit to modify the entry.");
                    return;
                }

                lbDetails.Items.Add(newData);
                itemManager.ArmorData.Add(newData.Name, newData);
            }
        }
コード例 #23
0
    /// <summary>
    /// 將字典傳入,依json表設定資料
    /// </summary>
    public static void SetData(Dictionary <int, ArmorData> _dic)
    {
        string   jsonStr    = Resources.Load <TextAsset>("Json/Armor").ToString();
        JsonData jd         = JsonMapper.ToObject(jsonStr);
        JsonData armorItems = jd["Armor"];

        for (int i = 0; i < armorItems.Count; i++)
        {
            ArmorData armorData = new ArmorData(armorItems[i]);
            int       id        = int.Parse(armorItems[i]["ID"].ToString());
            _dic.Add(id, armorData);
        }
    }
コード例 #24
0
    public void OnDragItemToSlot(ArmorSlot slot, Item item)
    {
        ArmorData armorData = this.m_LimbMap[(int)slot.m_Limb];
        ArmorInfo armorInfo = (ArmorInfo)item.m_Info;

        armorData.m_MeshMap[(int)armorInfo.m_ArmorType].SetActive(true);
        Renderer[] componentsDeepChild = General.GetComponentsDeepChild <Renderer>(item.gameObject);
        for (int i = 0; i < componentsDeepChild.Length; i++)
        {
            componentsDeepChild[i].enabled = false;
        }
        BodyInspectionController.Get().OnArmorAttached(slot.m_Limb);
    }
コード例 #25
0
    public ArmorData Save()
    {
        ArmorData armorData = new ArmorData();

        armorData.baseAbility = GetBaseScore();
        armorData.name        = GetItemName();
        armorData.itemType    = (int)GetItemType();

        armorData.defense    = GetDefenseValue();
        armorData.heavyArmor = IsHeavyArmor();

        return(armorData);
    }
コード例 #26
0
 public Armor()
 {
     EditorID                 = new SimpleSubrecord <String>("EDID");
     ObjectBounds             = new ObjectBounds("OBND");
     BipedData                = new BipedData("BMDT");
     MaleBipedModelFileName   = new SimpleSubrecord <String>("MODL");
     MaleWorldModelFileName   = new SimpleSubrecord <String>("MOD2");
     FemaleBipedModelFileName = new SimpleSubrecord <String>("MOD3");
     FemaleWorldModelFileName = new SimpleSubrecord <String>("MOD4");
     EquipmentType            = new SimpleSubrecord <EquipmentType>("ETYP");
     Data      = new ArmorData("DATA");
     ExtraData = new ArmorExtraData("DNAM");
 }
コード例 #27
0
    /// <summary>
    /// 初始化武器,傳入武器ID
    /// </summary>
    public Armor(int _armorID)
        : base(_armorID)
    {
        Type = EquipmentTYpe.Armor;
        if (!GameDictionary.ArmorDic.ContainsKey(ID))
        {
            Debug.LogWarning("不存在的護甲ID:" + ID);
            return;
        }
        ArmorData armorData = GameDictionary.ArmorDic[ID];

        InitEquipment(armorData);
        BufferID = armorData.BufferID;
    }
コード例 #28
0
 /// <summary>
 /// 伤害计算
 /// </summary>
 /// <param name="armor">装甲数据</param>
 /// <param name="bullet">子弹数据</param>
 public static HP Damage(ArmorData armor, BulletData bullet)
 {
     if (armor.isShieldBroken)
     {
         return(new HP
                (
                    bullet.physicDamage * (1 - armor.ArmorStrength * (1 - bullet.ArmourPiercingRate)),
                    0
                ));
     }
     else
     {
         return(new HP
                (
                    bullet.physicDamage * bullet.ShieldPenetratingRate * (1 - armor.ArmorStrength * (1 - bullet.ArmourPiercingRate)),
                    bullet.shieldDamage + bullet.physicDamage * (1 - armor.ShieldDefence) * (1 - bullet.ShieldPenetratingRate)
                ));
     }
 }
コード例 #29
0
ファイル: Item.cs プロジェクト: leehuhlee/Unity
        void Init(int templateId)
        {
            ItemData itemData = null;

            DataManager.ItemDict.TryGetValue(templateId, out itemData);
            if (itemData.itemType != ItemType.Armor)
            {
                return;
            }

            ArmorData data = (ArmorData)itemData;
            {
                TemplateId = data.id;
                Count      = 1;
                ArmorType  = data.armorType;
                Defence    = data.defence;
                Stackable  = false;
            }
        }
コード例 #30
0
    private void OnArmorDestroyed(ArmorData armor_data)
    {
        if (armor_data.m_AttachedArmor != null)
        {
            UnityEngine.Object.Destroy(armor_data.m_AttachedArmor.gameObject);
        }
        Item item = ItemsManager.Get().CreateItem(ItemID.broken_armor, false, armor_data.m_Slot.transform);

        item.transform.SetParent(armor_data.m_Slot.transform);
        Physics.IgnoreCollision(this.m_Player.m_Collider, item.GetComponent <Collider>());
        Renderer[] componentsDeepChild = General.GetComponentsDeepChild <Renderer>(item.gameObject);
        for (int i = 0; i < componentsDeepChild.Length; i++)
        {
            componentsDeepChild[i].enabled = false;
        }
        armor_data.m_Slot.m_Item = item;
        if (armor_data.m_Mesh)
        {
            armor_data.m_Mesh.SetActive(false);
        }
        if (armor_data.m_DestroyedMesh)
        {
            armor_data.m_DestroyedMesh.SetActive(true);
            if (armor_data.m_Cloth)
            {
                armor_data.m_Cloth.enabled = false;
                armor_data.m_Cloth.enabled = true;
            }
        }
        armor_data.m_Mesh          = armor_data.m_DestroyedMesh;
        armor_data.m_AttachedArmor = item;
        armor_data.m_AttachedArmorOrigCollCenter        = armor_data.m_AttachedArmor.m_BoxCollider.center;
        armor_data.m_AttachedArmorOrigCollSize          = armor_data.m_AttachedArmor.m_BoxCollider.size;
        armor_data.m_AttachedArmor.m_BoxCollider.center = armor_data.m_AttachedArmorCollCenter;
        armor_data.m_AttachedArmor.m_BoxCollider.size   = armor_data.m_AttachedArmorCollSize;
        armor_data.m_Destroyed = true;
        ((Armor)item).m_Limb   = armor_data.m_Slot.m_Limb;
        ArmorInfo armorInfo = (ArmorInfo)item.m_Info;

        armor_data.m_ArmorType       = armorInfo.m_ArmorType;
        item.transform.localPosition = Vector3.zero;
    }
コード例 #31
0
        private void AddArmor(ArmorData armorData)
        {
            if (FormDetails.ItemManager.ArmorData.ContainsKey(armorData.Name))
            {
                DialogResult result = MessageBox.Show(
                    armorData.Name + " already exists. Overwrite it?",
                    "Existing armor",
                    MessageBoxButtons.YesNo);

                if (result == DialogResult.No)
                {
                    return;
                }

                itemManager.ArmorData[armorData.Name] = armorData;
                FillListBox();
                return;
            }
            itemManager.ArmorData.Add(armorData.Name, armorData);
            lbDetails.Items.Add(armorData);
        }
コード例 #32
0
    /// <summary>
    /// In editor help to clear player inventory
    /// </summary>

    /*[MenuItem("Tools/Inventory/Clear inventory save")]
     * private static void ClearInventorySave()
     * {
     *      items.Clear();
     *      Save();
     * }*/

    /// <summary>
    /// Loads the inventory from a file
    /// </summary>
    public static void Load()
    {
        SaveData.Current = (SaveData)SerializationManager.Load(Application.persistentDataPath + "/saves/data.savedata");

        items.Clear();
        foreach (ItemData item in SaveData.Current.items)
        {
            if (item is WeaponData)
            {
                WeaponData weapon = item as WeaponData;
                items.Add(new Weapon(weapon));
            }
            else if (item is ArmorData)
            {
                ArmorData armor = item as ArmorData;
                items.Add(new Armor(armor));
            }
            else
            {
                items.Add(new Item(item, true));
            }
        }
    }
コード例 #33
0
ファイル: DataHolder.cs プロジェクト: hughrogers/RPGQuest
    /*
    ============================================================================
    Init functions
    ============================================================================
    */
    public void Init()
    {
        // first init languages
        languages = new LanguageData();

        statusValues = new  StatusValueData();
        elements = new  ElementData();
        races = new RaceData();
        sizes = new SizeData();
        areaNames = new AreaNameData();
        armors = new ArmorData();
        cameraPositions = new  CameraPositionData();
        attacks = new BaseAttackData();
        characters = new  CharacterData();
        classes = new  ClassData();
        colors = new  ColorData();
        dialoguePositions = new  DialoguePositionData();
        battleAIs = new  BattleAIData();
        enemies = new  EnemyData();
        equipParts = new  EquipmentPartData();
        formulas = new  FormulaData();
        gameSettings = new  GameSettingsData();
        items = new  ItemData();
        itemTypes = new  ItemTypeData();
        loadSaveHUD = new LoadSaveHUDData();
        mainMenu = new MainMenuData();
        skillTypes = new  SkillTypeData();
        effects = new  StatusEffectData();
        skills = new  SkillData();
        weapons = new  WeaponData();
        music = new MusicData();
        huds = new HUDData();
        recipes = new ItemRecipeData();
        fonts = new FontData();
        globalEvents = new GlobalEventData();
        teleports = new TeleportData();
        difficulties = new DifficultyData();

        // battle system
        battleAnimations = new BattleAnimationData();
        battleSystem = new BattleSystemData();
    }