Example #1
0
        /// <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);
 }