コード例 #1
0
        public ArtCardBarWrapper(ArtCard card) : this()
        {
            _artCard    = card;
            CardId      = card.Id;
            TextureName = card.Texture.Name;
            TexturePath = card.Texture.Path;

            var mat = card.GetMaterial(MaterialType.CardBar);

            if (mat != null)
            {
                foreach (var t in mat.Transforms)
                {
                    if (t.Type == TransformType.Standard)
                    {
                        _tStandard     = t;
                        StandardScale  = t.Scale;
                        StandardOffset = t.Offset;
                    }
                    else if (t.Type == TransformType.Shader)
                    {
                        _tShader     = t;
                        ShaderScale  = t.Scale;
                        ShaderOffset = t.Offset;
                    }
                }
            }
        }
コード例 #2
0
        private CardArtDefs CreateSampleDefs()
        {
            var root = new CardArtDefs();

            root.Patch = "1.0.0.0";
            root.Cards = new List <ArtCard>();

            var card1 = new ArtCard();

            card1.Id      = "AC_123";
            card1.Texture = new Texture()
            {
                Name   = "WOW_1223",
                Path   = "/tex/fp1_01/de2",
                Bundle = "shared0"
            };
            card1.Materials = new List <Material>();
            var mat1 = new Material();

            mat1.Type       = MaterialType.Portrait;
            mat1.Transforms = new List <Transform>()
            {
                new Transform()
                {
                    Type   = TransformType.Standard,
                    Offset = new CoordinateTransform(0.0f),
                    Scale  = new CoordinateTransform(1.0f)
                },
                new Transform()
                {
                    Type   = TransformType.Shader,
                    Offset = new CoordinateTransform(0.0f),
                    Scale  = new CoordinateTransform(1.0f)
                }
            };
            card1.Materials.Add(mat1);
            var mat2 = new Material();

            mat2.Type       = MaterialType.CardBar;
            mat2.Transforms = new List <Transform>()
            {
                new Transform()
                {
                    Type   = TransformType.Standard,
                    Offset = new CoordinateTransform(0.0f),
                    Scale  = new CoordinateTransform(1.0f)
                },
                new Transform()
                {
                    Type   = TransformType.Shader,
                    Offset = new CoordinateTransform(-0.3f, 1.2f),
                    Scale  = new CoordinateTransform(1.2f)
                }
            };
            card1.Materials.Add(mat2);
            root.Cards.Add(card1);

            return(root);
        }
コード例 #3
0
        public ArtCardBarWrapper()
        {
            _artCard = new ArtCard();
            var mat = Export.GetDefaultMaterial();

            _tStandard     = mat.GetTransform(TransformType.Standard);
            _tShader       = mat.GetTransform(TransformType.Shader);
            CardId         = "NA";
            TextureName    = "NA";
            TexturePath    = "NA";
            StandardScale  = _tStandard.Scale;
            StandardOffset = _tStandard.Offset;
            ShaderScale    = _tShader.Scale;
            ShaderOffset   = _tShader.Offset;
        }
コード例 #4
0
        private void ProcessObjects()
        {
            foreach (var entry in _gameObjects)
            {
                var go = entry.Value;

                if (string.IsNullOrWhiteSpace(go.Name))
                {
                    Logger.Log(LogLevel.WARN, "GameObject id={0} has no Name", entry.Key);
                }
                else
                {
                    // go through all the GameObject file references
                    foreach (var fp in go.Components)
                    {
                        // only interested in CardDef (MonoBehaviour)
                        if ((UnityClass)fp.ClassID == UnityClass.MonoBehaviour)
                        {
                            var pathId = fp.PathID;
                            // find the CarDef object from the file reference
                            if (_cardDefObjects.ContainsKey(pathId))
                            {
                                CardDef def = _cardDefObjects[pathId];
                                // if no texture path defined, skip it
                                if (!string.IsNullOrWhiteSpace(def.PortratitTexturePath))
                                {
                                    GameMaterial portMat = FindMaterial(def.EnchantmentPortrait);
                                    GameMaterial barMat  = FindMaterial(def.DeckCardBarPortrait);
                                    ArtCard      card    = new ArtCard(go.Name, def, portMat, barMat);
                                    Cards.Add(card);
                                }
                                else
                                {
                                    Logger.Log(LogLevel.WARN, "Portriat texture not found for: {0}", go.Name);
                                }
                            }
                            else
                            {
                                Logger.Log(LogLevel.WARN, "CardDef not found for {0}", pathId);
                            }
                        }
                    }
                }
            }
        }
コード例 #5
0
        private void SaveImages(Texture2D tex, ArtCard match)
        {
            var cardId   = match.Id;
            var card     = CardDb.All[cardId];
            var cardName = card.Name;
            var cardSet  = card.Set;
            var filename = cardId;
            var subDir   = "";

            if (tex.Image.Length <= 0)
            {
                Logger.Log(LogLevel.WARN, $"Texture {tex.Name} has an empty image");
                return;
            }

            if (_opts.AddCardName)
            {
                filename = StringUtils.SafeString(cardName) + "-" + filename;
            }

            if (_opts.GroupBySet)
            {
                if (CardEnumConverter.FriendlySetName.ContainsKey(cardSet))
                {
                    subDir = CardEnumConverter.FriendlySetName[cardSet];
                }
                else
                {
                    subDir = "Other";
                }

                if (!_opts.BarArtOnly)
                {
                    Directory.CreateDirectory(Path.Combine(_dirFull, subDir));
                }
            }

            if (_opts.ImageType?.ToLower() == "dds" && !_opts.BarArtOnly)
            {
                tex.Save(Path.Combine(_dirFull, subDir), filename);
                return;
            }

            Bitmap original = null;

            if (tex.IsDDS)
            {
                original = DDS.LoadImage(tex.Image, _opts.PreserveAlphaChannel);
            }
            else
            {
                // TODO: tga alpha channel?
                // Assumimg it is TGA
                var tga = new TargaImage(new MemoryStream(tex.Image));
                original = tga.Image;
                // Flip original on y, so like dds
                original.RotateFlip(RotateFlipType.RotateNoneFlipY);
            }
            // save full size image to disk
            Bitmap full = new Bitmap(original);

            if (_opts.Height > 0)
            {
                full = new Bitmap(original, _opts.Height, _opts.Height);
            }

            // flip "right" way up
            if (_opts.FlipY)
            {
                full.RotateFlip(RotateFlipType.RotateNoneFlipY);
            }

            full.Save(Path.Combine(_dirFull, subDir, filename + "." + _opts.ImageType.ToLower()));
        }