/// <summary> /// Renvoie une image colorée /// </summary> /// <param name="url">Url de l'image</param> /// <param name="color">Modifications de couleur</param> /// <param name="type">Type de ressource</param> /// <returns>Image</returns> public Texture2D GetColoredImage(string url, VO_ColorTransformation color, ViewerEnums.ImageResourceType type) { string serial = url + ";" + color.ToString(); if (_ColoredResources != null && _ColoredResources.ContainsKey(serial)) { return(_ColoredResources[serial]); } //Dictionnaire d'image if (_ColoredResources == null) { _ColoredResources = new Dictionary <string, Texture2D>(); } Texture2D originalImage = null; switch (type) { case ViewerEnums.ImageResourceType.Permanent: originalImage = GetPermanentImage(url); break; case ViewerEnums.ImageResourceType.Screen: originalImage = GetScreenImage(url); break; } try { //if (!color.IsUnmodifiedColor()) // ApplyColorFilters(serial, color, new Texture2D(url)); //else _ColoredResources.Add(serial, originalImage); return(_ColoredResources[serial]); } catch (InsufficientMemoryException ie) { LogTools.WriteInfo(Logs.MANAGER_MEMORY_ERROR); LogTools.WriteDebug(ie.Message); FreeScreenImages(); return(GetColoredImage(url, color, type)); } catch (Exception e) { LogTools.WriteInfo(string.Format(Logs.MANAGER_IMAGE_NOT_FOUND, url)); LogTools.WriteDebug(e.Message); _ColoredResources.Add(serial, null); } return(null); }
/// <summary> /// Create de l'animation /// </summary> /// <param name="item">Item</param> /// <param name="IdCharacter">Id du character</param> /// <param name="type">Type d'anim</param> /// <param name="x">Position X</param> /// <param name="y">Position Y</param> private void CreateAnimation(Guid itemId, Guid IdCharacter, Enums.AnimationType type, int x, int y, ViewerEnums.ImageResourceType resourceType, int rowOverload) { //Récupérer l'animation VO_Animation anim = null; switch (type) { case Enums.AnimationType.CharacterAnimation: anim = GameCore.Instance.GetCharAnimationById(IdCharacter, itemId); break; case Enums.AnimationType.CharacterFace: anim = GameCore.Instance.GetCharFaceById(itemId); break; case Enums.AnimationType.IconAnimation: anim = GameCore.Instance.GetIconById(itemId); break; case Enums.AnimationType.Menu: anim = GameCore.Instance.GetMenuById(itemId); break; case Enums.AnimationType.ObjectAnimation: anim = GameCore.Instance.GetAnimationById(itemId); break; } if (!string.IsNullOrEmpty(anim.ResourcePath)) { Texture2D resource = null; ////TODO: Vérifier l'existence de la ressource, sinon mettre une image par défaut DANS L'IMAGE MANAGER !!!!! //String LocalPath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) + "\\Resources\\"; //if (File.Exists(PathTools.GetProjectPath(type) + anim.ResourcePath) == false) //{ // anim.ResourcePath = LocalPath + "Default.jpg"; //} switch (resourceType) { case ViewerEnums.ImageResourceType.Screen: resource = ImageManager.CurrentStage.GetScreenImage(PathTools.GetProjectPath(type) + anim.ResourcePath); break; case ViewerEnums.ImageResourceType.Permanent: resource = ImageManager.GetPermanentImage(PathTools.GetProjectPath(type) + anim.ResourcePath); break; } if (resource != null) { Frequency = (int)((double)(10000 / anim.Frequency) * 0.06); Width = (uint)anim.SpriteWidth; Height = (uint)anim.SpriteHeight; int nbrSprites = (int)resource.Width / anim.SpriteWidth; _Sprites = new VO_Sprite[nbrSprites]; _posX = x; _posY = y; AnimationId = anim.Id; _CharacterId = IdCharacter; _AnimationType = type; _ResourceType = resourceType; //Création des sprites for (int i = 0; i < nbrSprites; i++) { Guid id = Guid.NewGuid(); int posX = i * (int)Width; int posY = rowOverload * (int)Height; switch (resourceType) { case ViewerEnums.ImageResourceType.Screen: SpriteManager.CreateScreenSprite(id, PathTools.GetProjectPath(type) + anim.ResourcePath, new Vector2(x, y), new Rectangle(posX, rowOverload * (int)Height, (int)Width, (int)Height), null); _Sprites[i] = SpriteManager.GetScreenSprite(id); break; case ViewerEnums.ImageResourceType.Permanent: SpriteManager.CreatePermanentSprite(id, PathTools.GetProjectPath(type) + anim.ResourcePath, new Vector2(x, y), new Rectangle(posX, rowOverload * (int)Height, (int)Width, (int)Height), null); _Sprites[i] = SpriteManager.GetPermanentSprite(id); break; } _Sprites[i].Id = id; } _CurrentSprite = 0; CurrentExecutingPage = -1; } } else { _Sprites = new VO_Sprite[1]; _Sprites[0] = null; } }
/// <summary> /// Create de l'animation /// </summary> /// <param name="item">Item</param> /// <param name="IdCharacter">Id du character</param> /// <param name="type">Type d'anim</param> /// <param name="x">Position X</param> /// <param name="y">Position Y</param> private void CreateAnimation(Guid itemId, Guid IdCharacter, Enums.AnimationType type, int x, int y, ViewerEnums.ImageResourceType resourceType) { ReadyToExecScript = true; VO_Animation anim = null; switch (type) { case Enums.AnimationType.CharacterAnimation: anim = GameCore.Instance.GetCharAnimationById(IdCharacter, itemId); break; case Enums.AnimationType.CharacterFace: anim = GameCore.Instance.GetCharFaceById(itemId); break; case Enums.AnimationType.IconAnimation: anim = GameCore.Instance.GetIconById(itemId); break; case Enums.AnimationType.Menu: anim = GameCore.Instance.GetMenuById(itemId); break; case Enums.AnimationType.ObjectAnimation: anim = GameCore.Instance.GetAnimationById(itemId); break; } CreateAnimation(itemId, IdCharacter, type, x, y, resourceType, anim.Row); }
/// <summary> /// Constructeur /// </summary> /// <param name="item">Item</param> /// <param name="IdCharacter">Id du character</param> /// <param name="type">Type d'anim</param> /// <param name="x">Position X</param> /// <param name="y">Position Y</param> public VO_AnimatedSprite(Guid itemId, Guid IdCharacter, Enums.AnimationType type, int x, int y, ViewerEnums.ImageResourceType resourceType, int rowOverload) { CreateAnimation(itemId, IdCharacter, type, x, y, resourceType, rowOverload); }