예제 #1
0
파일: Item.cs 프로젝트: miko-t/2016RpgGame
    public game_item RandomItem(SpriteGender gender, item_rarity.rarity rarity)
    {
        item_type t      = item_type.consumable;
        int       chance = 0;

        foreach (item_type type in Enum.GetValues(typeof(item_type)))
        {
            try
            {
                if (Game_Items[gender][type].Count <= 0)
                {
                    continue;
                }


                int temp = InGameData.random_int(0, 100);
                if (temp > chance)
                {
                    chance = temp;
                    t      = type;
                }
            }
            catch
            {
            }
        }

        return(GetItemFrom(gender, t, rarity).CopyItem());
    }
예제 #2
0
 public static void AddKeys(SpriteGender sg, string name)
 {
     if (!Sprite_DataBase.Data.ContainsKey(name))
     {
         Sprite_DataBase.AddKey(name);
     }
 }
예제 #3
0
파일: Item.cs 프로젝트: miko-t/2016RpgGame
    public game_item(item_type _type, int _id_sprite, SpriteGender _gender,
                     int _Order_ID, string _name, Basic_Stats stats, UseBoost pstats, item_rarity.rarity _rarity, bool Is_armor, int item_level = 0)
    {
        ID = ITEM_COUNTER;
        ITEM_COUNTER++;

        bstats      = stats;
        this.pstats = pstats;
        IsArmor     = Is_armor;

        NAME         = _name;
        type         = _type;
        id_sprite    = _id_sprite;
        gender       = _gender;
        ORD          = _Order_ID;
        slot_pointer = null;
        count        = 1;

        if (_id_sprite == -1)
        {
            id_sprite = CONSUMABLE_SP_ID;
            CONSUMABLE_SP_ID--;
        }
        if (ORD == -1)
        {
            ORD = CONSUMABLE_SP_ID;
        }

        rarity = new item_rarity(bstats, _rarity, item_level);
    }
예제 #4
0
    void Stick(string path, int _id = 0)
    {
        id = _id;

        var files = Directory.GetFiles(path);


        //bool tt = false;
        foreach (var fileName in files)
        {
            if (fileName.Contains(".png") && !fileName.Contains(".meta"))
            {
                string pathSpl = fileName.Split(new string[] { InGameData.Sprite_path, ".png" }, StringSplitOptions.None)[1];

                string[] temp        = fileName.Split(new string[] { "/", "\\", ".png" }, StringSplitOptions.None);
                string   sprite_name = temp[temp.Length - 2];

                int ii = 0;
                foreach (string s in temp)
                {
                    ii++;
                    if (s.Contains("Sprite"))
                    {
                        break;
                    }
                }
                string FolderKey = temp[ii];


                if (FolderKey.Contains("sub_"))
                {
                    FolderKey = temp[ii + 1];
                }

                SpriteGender gender = SpriteGender.none;

                if (pathSpl.Contains("female"))
                {
                    gender = SpriteGender.female;
                }
                else if (pathSpl.Contains("male"))
                {
                    gender = SpriteGender.male;
                }

                //kek += gender + " // " + FolderKey + " // " + sprite_name + "\n";

                DataSprites.AddKey(FolderKey);
                DataSprites.AddItem(FolderKey, sprite_name, pathSpl, gender);
            }
        }

        var subDirs = Directory.GetDirectories(path);

        foreach (var subDir in subDirs)
        {
            Stick(subDir, id + 1);
        }
    }
예제 #5
0
    public static SpriteGender GetSpriteGender(string path)
    {
        SpriteGender sg = SpriteGender.none;

        if (path.Contains("female"))
        {
            sg = SpriteGender.female;
        }
        else if (path.Contains("male"))
        {
            sg = SpriteGender.male;
        }
        return(sg);
    }
예제 #6
0
 private void LoadBodyParts(SpriteGender sg)
 {
     foreach (List <SpriteData> sdL in DataBase.Sprite_DataBase.Data.Values)
     {
         foreach (SpriteData sd in sdL)
         {
             if (sd.sg == sg && sd.path.Contains("body"))
             {
                 Sprite_ld.Add(new ExternalS_loadData(sd.id, InGameData.Sprite_path + sd.path + ".png"));
             }
         }
     }
     DontDestroy.first.LoadAll();
 }
예제 #7
0
    public static void AddSpritePath(SpriteGender sg, string path, string file_name, string key)
    {
        AddKeys(sg, key);
        //Debug.Log(file_name);

        foreach (SpriteData s in Sprite_DataBase.Data[key])
        {
            if (s.path == path)
            {
                return;
            }
        }
        Sprite_DataBase.AddItem(key, file_name, path, sg);
    }
예제 #8
0
    public void AddItem(string key, string sprite_name, string path, SpriteGender sg)
    {
        SpriteData temp = new SpriteData();

        temp.id   = id;
        temp.key  = key;
        temp.name = sprite_name;
        temp.path = path;
        temp.sg   = sg;
        List <SpriteData> temp2 = sprite[key];

        temp2.Add(temp);
        sprite[key] = temp2;
        id++;
    }
예제 #9
0
파일: Item.cs 프로젝트: miko-t/2016RpgGame
    public List <Body_part> GetPerson(SpriteGender gender, Skin_type type)
    {
        List <Body_part> ret = new List <Body_part>();

        foreach (body_part p in Enum.GetValues(typeof(body_part)))
        {
            int random = InGameData.random_int(0, body_parts[gender][type][p].Count);
            try
            {
                ret.Add(body_parts[gender][type][p][random]);
            }
            catch {}
        }
        return(ret);
    }
예제 #10
0
파일: Item.cs 프로젝트: miko-t/2016RpgGame
    public game_item GetItemFrom(SpriteGender gender, item_type type, item_rarity.rarity rarity)
    {
        int       chance = 0;
        game_item ret    = null;

        foreach (game_item item in Game_Items[gender][type].Values)
        {
            if (item.rarity.Rarity == rarity)
            {
                int temp = InGameData.random_int(0, 100);
                if (temp >= chance)
                {
                    chance = temp;
                    ret    = item;
                }
            }
        }
        if (ret == null)
        {
            Debug.Log(" No Items in " + gender + " ," + type + " with rarity " + rarity);
        }
        return(ret);
    }
예제 #11
0
파일: Item.cs 프로젝트: miko-t/2016RpgGame
    public List <game_item> GetRandomGear(SpriteGender gender, item_rarity.rarity rarity)
    {
        List <game_item> ret = new List <game_item>();

        float     Weapon = 0;
        item_type weap   = item_type.none;

        foreach (item_type type in Enum.GetValues(typeof(item_type)))
        {
            if ((int)type <= 0)
            {
                continue;
            }
            try
            {
                if (type == item_type.melee_weapons || type == item_type.spears || type == item_type.wand || type == item_type.bow)
                {
                    float t = InGameData.rand(0, 100);
                    if (t > Weapon)
                    {
                        Weapon = t;
                        weap   = type;
                    }
                    continue;
                }
                else if (type == item_type.shilds || type == item_type.arrows)
                {
                    continue;
                }

                if (InGameData.random_int(0, 32) % 8 == 3)
                {
                    continue;
                }

                game_item ti = GetItemFrom(gender, type, rarity);
                if (ti != null)
                {
                    ret.Add(GetItemFrom(gender, type, rarity).CopyItem());
                }
            }
            catch
            {
            }
        }

        int temp2 = Game_Items[gender][weap].Count;
        int rand2 = InGameData.random_int(0, temp2);

        ret.Add(GetItemFrom(gender, weap, rarity).CopyItem());
        if (weap == item_type.bow)
        {
            ret.Add(GetItemFrom(gender, item_type.arrows, rarity).CopyItem());
        }
        else if (weap == item_type.melee_weapons || weap == item_type.spears)
        {
            if (InGameData.random_int(0, 32) % 8 == 3)
            {
                return(ret);
            }

            ret.Add(GetItemFrom(gender, item_type.shilds, rarity).CopyItem());
        }

        return(ret);
    }
예제 #12
0
파일: Item.cs 프로젝트: miko-t/2016RpgGame
    public List <game_item> GetRandomGear(SpriteGender gender)
    {
        List <game_item> ret = new List <game_item>();

        float     Weapon = 0;
        item_type weap   = item_type.none;

        foreach (item_type type in Enum.GetValues(typeof(item_type)))
        {
            if ((int)type <= 0)
            {
                continue;
            }
            try
            {
                if (type == item_type.melee_weapons || type == item_type.spears || type == item_type.wand || type == item_type.bow)
                {
                    float t = InGameData.rand(0, 100);
                    if (t > Weapon)
                    {
                        Weapon = t;
                        weap   = type;
                    }
                    continue;
                }
                else if (type == item_type.shilds || type == item_type.arrows)
                {
                    continue;
                }

                int temp = Game_Items[gender][type].Count;
                int rand = InGameData.random_int(0, (int)(temp * 1.5f));
                if (rand > temp)
                {
                    continue;
                }


                ret.Add(Game_Items[gender][type][rand].CopyItem());
            }
            catch
            {
            }
        }

        int temp2 = Game_Items[gender][weap].Count;
        int rand2 = InGameData.random_int(0, temp2);

        ret.Add(Game_Items[gender][weap][rand2].CopyItem());
        if (weap == item_type.bow)
        {
            ret.Add(Game_Items[gender][item_type.arrows][0].CopyItem());
        }
        else if (weap == item_type.melee_weapons || weap == item_type.spears)
        {
            temp2 = Game_Items[gender][item_type.shilds].Count;
            rand2 = InGameData.random_int(0, temp2 * 2);
            if (rand2 > temp2)
            {
                return(ret);
            }

            ret.Add(Game_Items[gender][weap][rand2].CopyItem());
        }

        return(ret);
    }
예제 #13
0
파일: Item.cs 프로젝트: miko-t/2016RpgGame
    public List <Body_part> GetRandomPerson(SpriteGender gender)
    {
        Skin_type skin = (Skin_type)InGameData.random_int(0, 9);

        return(GetPerson(gender, skin));
    }