コード例 #1
0
        public void AddAlternativeTexture(AlternativeTextureModel model)
        {
            if (_alternativeTextures.Any(t => t.GetId() == model.GetId()))
            {
                var replacementIndex = _alternativeTextures.IndexOf(_alternativeTextures.First(t => t.GetId() == model.GetId()));
                _alternativeTextures[replacementIndex] = model;
            }
            else
            {
                _alternativeTextures.Add(model);
                _textureIdsInsensitive.Add(model.GetId());
            }

            RegisterTokens(model);
        }
コード例 #2
0
        private static void SetTexture(Monster monster, AlternativeTextureModel textureModel)
        {
            if (textureModel is null)
            {
                monster.Sprite.loadedTexture = String.Empty;
                return;
            }

            var textureVariation = Int32.Parse(monster.modData["AlternativeTextureVariation"]);

            if (textureVariation == -1 || AlternativeTextures.modConfig.IsTextureVariationDisabled(textureModel.GetId(), textureVariation))
            {
                monster.Sprite.loadedTexture = String.Empty;
                return;
            }
            var textureOffset = textureModel.GetTextureOffset(textureVariation);

            monster.Sprite.spriteTexture = textureModel.GetTexture(textureVariation);
            monster.Sprite.sourceRect.Y  = textureOffset + (monster.Sprite.currentFrame * monster.Sprite.SpriteWidth / monster.Sprite.Texture.Width * monster.Sprite.SpriteHeight);
        }