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); }
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); }