コード例 #1
0
        /// <summary>
        /// 加载文件中的卡片
        /// </summary>
        /// <param name="path"></param>
        /// <returns></returns>
        public async Task <CardDefine[]> loadCards(string path, PlatformCompability platform = null)
        {
            platform = platform ?? PlatformCompability.Current;

            DataSet dataset = platform.SupportExcelReading ?
                              await getManager <ResourceManager>().loadExcelAsDataSet(path, platform) :
                              await getManager <ResourceManager>().loadDataSet(path, platform);

            if (dataset.Tables.Count < 1)
            {
                throw new Exception("空数据集");
            }
            var table = dataset.Tables[0];
            List <CardDefine> cards = new List <CardDefine>();

            for (int i = 1; i < table.Rows.Count; i++)
            {
                try
                {
                    var datarow = table.Rows[i];

                    if (datarow.ReadCol("Ignore", false))
                    {
                        continue;
                    }

                    var card = new GeneratedCardDefine();
                    card.id   = datarow.ReadCol <int>("ID");
                    card.type = datarow.ReadCol <string>("Type");
                    card.setProp(nameof(ServantCardDefine.cost), datarow.ReadCol("Cost", 0));
                    card.setProp(nameof(ServantCardDefine.attack), datarow.ReadCol("Attack", 0));
                    card.setProp(nameof(ServantCardDefine.life), datarow.ReadCol("Life", 0));
                    card.setProp(nameof(ServantCardDefine.tags), datarow.ReadCol("Tags", "").Split(','));
                    card.setProp(nameof(ServantCardDefine.keywords), datarow.ReadCol("Keywords", "").Split(','));
                    card.setProp(nameof(ServantCardDefine.isToken), datarow.ReadCol("IsToken", false));
                    card.setProp(nameof(ServantCardDefine.isActive), datarow.ReadCol("IsActive", false));

                    cards.Add(card);
                }
                catch (Exception e)
                {
                    Debug.LogWarning($"Error when loading {path} (row {i}): " + e);
                }
            }

            return(cards.ToArray());
        }
コード例 #2
0
        static async Task <KeyValuePair <CardDefine, CardSkinData> > readCardDefine(ResourceManager resource, CardDefine card, DataRow datarow, Sprite defaultSprite)
        {
            if (card == null)
            {
                card = new GeneratedCardDefine();
            }

            card.id   = datarow.ReadCol <int>("ID");
            card.type = datarow.ReadCol <string>("Type");
            card.setProp(nameof(ServantCardDefine.cost), datarow.ReadCol <int>("Cost"));
            card.setProp(nameof(ServantCardDefine.attack), datarow.ReadCol <int>("Attack", 0));
            card.setProp(nameof(ServantCardDefine.life), datarow.ReadCol <int>("Life", 0));
            card.setProp(nameof(ServantCardDefine.tags), datarow.ReadCol <string>("Tags", "").Split(','));
            card.setProp(nameof(ServantCardDefine.keywords), datarow.ReadCol <string>("Keywords", "").Split(','));
            card.setProp(nameof(ServantCardDefine.isToken), datarow.ReadCol <bool>("IsToken", false));
            CardSkinData skin;

            if (datarow.ReadCol("Ignore", false))
            {
                return(new KeyValuePair <CardDefine, CardSkinData>(null, null));
            }

            skin = new CardSkinData()
            {
                id = card.id
            };
            string imagePath = datarow.ReadCol("Image", "");

            try
            {
                Texture2D texture = await resource.loadTexture(imagePath);

                Sprite sprite = Sprite.Create(texture, new Rect(0, 0, texture.width, texture.height), new Vector2(.5f, .5f), 100);
                skin.image = sprite;
            }
            catch (Exception e)
            {
                skin.image = defaultSprite;
                Debug.LogWarning("加载贴图" + imagePath + "失败:" + e);
            }

            skin.name = datarow.ReadCol <string>("Name");
            skin.desc = datarow.ReadCol <string>("Desc", "");
            return(new KeyValuePair <CardDefine, CardSkinData>(card, skin));
        }
コード例 #3
0
        /// <summary>
        /// 加载文件中的卡片
        /// </summary>
        /// <param name="path"></param>
        /// <returns></returns>
        public async Task <CardDefine[]> loadCards(string path, RuntimePlatform?platform = null)
        {
#if UNITY_ANDROID
            if (platform == null)
            {
                platform = RuntimePlatform.Android;
            }
#endif
            var dataset = platform != RuntimePlatform.Android ?
                          await getManager <ResourceManager>().loadExcelAsDataSet(path, platform) :
                          await getManager <ResourceManager>().loadDataSet(path, platform);

            if (dataset.Tables.Count < 1)
            {
                throw new Exception("空数据集");
            }
            var table = dataset.Tables[0];
            List <CardDefine> cards = new List <CardDefine>();

            for (int i = 1; i < table.Rows.Count; i++)
            {
                var datarow = table.Rows[i];

                if (datarow.ReadCol("Ignore", false))
                {
                    continue;
                }

                var card = new GeneratedCardDefine();
                card.id   = datarow.ReadCol <int>("ID");
                card.type = datarow.ReadCol <string>("Type");
                card.setProp(nameof(ServantCardDefine.cost), datarow.ReadCol <int>("Cost", 0));
                card.setProp(nameof(ServantCardDefine.attack), datarow.ReadCol <int>("Attack", 0));
                card.setProp(nameof(ServantCardDefine.life), datarow.ReadCol <int>("Life", 0));
                card.setProp(nameof(ServantCardDefine.tags), datarow.ReadCol <string>("Tags", "").Split(','));
                card.setProp(nameof(ServantCardDefine.keywords), datarow.ReadCol <string>("Keywords", "").Split(','));
                card.setProp(nameof(ServantCardDefine.isToken), datarow.ReadCol <bool>("IsToken", false));

                cards.Add(card);
            }

            return(cards.ToArray());
        }
コード例 #4
0
        static CardDefine readCardDefine(CardDefine card, string dir, Worksheet sheet, int row, out CardSkinData skin)
        {
            if (card == null)
            {
                card = new GeneratedCardDefine();
            }
            int idIndex = findColIndex(sheet, "ID");

            card.id = numberToInt(sheet.Cells[row, idIndex].Value);
            int typeIndex = findColIndex(sheet, "Type");

            if (sheet.Cells[row, typeIndex].StringValue == "Servant")
            {
                card.type = CardDefineType.servant;
            }
            else if (sheet.Cells[row, typeIndex].StringValue == "Spell")
            {
                card.type = CardDefineType.spell;
            }
            else if (sheet.Cells[row, typeIndex].StringValue == "Master")
            {
                card.type = CardDefineType.master;
            }
            else if (sheet.Cells[row, typeIndex].StringValue == "Skill")
            {
                card.type = CardDefineType.skill;
            }
            int costIndex = findColIndex(sheet, "Cost");

            card.setProp(nameof(ServantCardDefine.cost), numberToInt(sheet.Cells[row, costIndex].Value));
            int attackIndex = findColIndex(sheet, "Attack");

            card.setProp(nameof(ServantCardDefine.attack), numberToInt(sheet.Cells[row, attackIndex].Value));
            int lifeIndex = findColIndex(sheet, "Life");

            card.setProp(nameof(ServantCardDefine.life), numberToInt(sheet.Cells[row, lifeIndex].Value));
            int tagsIndex = findColIndex(sheet, "Tags");

            card.setProp(nameof(ServantCardDefine.tags), sheet.Cells[row, tagsIndex].StringValue.Split(','));
            int keywordsIndex = findColIndex(sheet, "Keywords");

            card.setProp(nameof(ServantCardDefine.keywords), sheet.Cells[row, keywordsIndex].StringValue.Split(','));
            int isTokenIndex = findColIndex(sheet, "IsToken");

            card.setProp(nameof(ServantCardDefine.isToken), sheet.Cells[row, isTokenIndex].Value);

            skin = new CardSkinData()
            {
                id = card.id
            };
            int    imageIndex = findColIndex(sheet, "Image");
            string imagePath  = sheet.Cells[row, imageIndex].StringValue;

            if (File.Exists(dir + "/" + imagePath))
            {
                using (FileStream stream = new FileStream(dir + "/" + imagePath, FileMode.Open))
                {
                    Texture2D texture = new Texture2D(512, 512);
                    byte[]    bytes   = new byte[stream.Length];
                    stream.Read(bytes, 0, (int)stream.Length);
                    texture.LoadImage(bytes);
                    Sprite sprite = Sprite.Create(texture, new Rect(0, 0, 512, 512), new Vector2(.5f, .5f), 100);
                    skin.image = sprite;
                }
            }
            else if (File.Exists(Application.streamingAssetsPath + "/" + imagePath))
            {
                using (FileStream stream = new FileStream(Application.streamingAssetsPath + "/" + imagePath, FileMode.Open))
                {
                    Texture2D texture = new Texture2D(512, 512);
                    byte[]    bytes   = new byte[stream.Length];
                    stream.Read(bytes, 0, (int)stream.Length);
                    texture.LoadImage(bytes);
                    Sprite sprite = Sprite.Create(texture, new Rect(0, 0, texture.width, texture.height), new Vector2(.5f, .5f), 100);
                    skin.image = sprite;
                }
            }
            else if (File.Exists(Application.streamingAssetsPath + "/" + "Textures/砰砰博士.png"))
            {
                using (FileStream stream = new FileStream(Application.streamingAssetsPath + "/" + "Textures/砰砰博士.png", FileMode.Open))
                {
                    Texture2D texture = new Texture2D(512, 512);
                    byte[]    bytes   = new byte[stream.Length];
                    stream.Read(bytes, 0, (int)stream.Length);
                    texture.LoadImage(bytes);
                    Sprite sprite = Sprite.Create(texture, new Rect(0, 0, 512, 512), new Vector2(.5f, .5f), 100);
                    skin.image = sprite;
                }
            }

            int nameIndex = findColIndex(sheet, "Name");

            skin.name = sheet.Cells[row, nameIndex].StringValue;
            int descIndex = findColIndex(sheet, "Desc");

            skin.desc = sheet.Cells[row, descIndex].StringValue;
            return(card);
        }
コード例 #5
0
        static async Task <KeyValuePair <CardDefine, CardSkinData> > readCardDefine(ResourceManager resource, CardDefine card, Worksheet sheet, int row, Sprite defaultSprite)
        {
            if (card == null)
            {
                card = new GeneratedCardDefine();
            }
            int idIndex = findColIndex(sheet, "ID");

            card.id = numberToInt(sheet.Cells[row, idIndex].Value);
            int typeIndex = findColIndex(sheet, "Type");

            card.type = sheet.Cells[row, typeIndex].StringValue;
            int costIndex = findColIndex(sheet, "Cost");

            card.setProp(nameof(ServantCardDefine.cost), numberToInt(sheet.Cells[row, costIndex].Value));
            int attackIndex = findColIndex(sheet, "Attack");

            card.setProp(nameof(ServantCardDefine.attack), numberToInt(sheet.Cells[row, attackIndex].Value));
            int lifeIndex = findColIndex(sheet, "Life");

            card.setProp(nameof(ServantCardDefine.life), numberToInt(sheet.Cells[row, lifeIndex].Value));
            int tagsIndex = findColIndex(sheet, "Tags");

            card.setProp(nameof(ServantCardDefine.tags), sheet.Cells[row, tagsIndex].StringValue.Split(','));
            int keywordsIndex = findColIndex(sheet, "Keywords");

            card.setProp(nameof(ServantCardDefine.keywords), sheet.Cells[row, keywordsIndex].StringValue.Split(','));
            int isTokenIndex = findColIndex(sheet, "IsToken");

            card.setProp(nameof(ServantCardDefine.isToken), sheet.Cells[row, isTokenIndex].Value);
            int          ignoreIndex = findColIndex(sheet, "Ignore");
            CardSkinData skin;

            if (sheet.Cells[row, ignoreIndex].Value is bool b && b)
            {
                return(new KeyValuePair <CardDefine, CardSkinData>(null, null));
            }

            skin = new CardSkinData()
            {
                id = card.id
            };
            int    imageIndex = findColIndex(sheet, "Image");
            string imagePath  = sheet.Cells[row, imageIndex].StringValue;

            try
            {
                Texture2D texture = await resource.loadTexture(imagePath);

                Sprite sprite = Sprite.Create(texture, new Rect(0, 0, texture.width, texture.height), new Vector2(.5f, .5f), 100);
                skin.image = sprite;
            }
            catch (Exception e)
            {
                skin.image = defaultSprite;
                Debug.LogWarning("加载贴图" + imagePath + "失败:" + e);
            }

            int nameIndex = findColIndex(sheet, "Name");

            skin.name = sheet.Cells[row, nameIndex].StringValue;
            int descIndex = findColIndex(sheet, "Desc");

            skin.desc = sheet.Cells[row, descIndex].StringValue;
            return(new KeyValuePair <CardDefine, CardSkinData>(card, skin));
        }