예제 #1
0
        /// <summary>
        /// Réalise un échange de position entre deux layers
        /// </summary>
        /// <param name="index1">L'index de la première layer</param>
        /// <param name="index2">L'index de la seconde layer</param>
        /// <returns>L'état résultant de l'échange</returns>
        public bool SwapLayers(int index1, int index2)
        {
            if (index1 == index2)
            {
                return(true);
            }

            if (index1 < this.layers.Count && index2 < this.layers.Count && index1 >= 0 && index2 >= 0)
            {
                GameMapLayer layer1 = this.layers.ElementAt(index1);
                GameMapLayer layer2 = this.layers.ElementAt(index2);

                if (!this.ReplaceLayerAt(index1, layer2))
                {
                    return(false);
                }
                if (!this.ReplaceLayerAt(index2, layer1))
                {
                    return(false);
                }
                return(true);
            }

            return(false);
        }
예제 #2
0
 /// <summary>
 /// Remplace le layer à l'index spcifiée par le layer donnée
 /// </summary>
 /// <param name="index">L'index de le layer à remplacer</param>
 /// <param name="layer">Le layer remplaçante</param>
 /// <returns>L'état resultant du remplacement</returns>
 public bool ReplaceLayerAt(int index, GameMapLayer layer)
 {
     if (this.RemoveLayerAt(index))
     {
         return(this.InsertLayerAt(index, layer));
     }
     return(false);
 }
예제 #3
0
 /// <summary>
 /// Initialise les données internes de la carte
 /// </summary>
 private void InitializeComponents()
 {
     GameMapLayer layer = new GameMapLayer(DEFAULT_LAYER_NAME)
     {
         Type = LayerType.Lower,
         Visible = true
     };
     layer.LayerChanged += Layer_LayerChanged;
     this.layers.Add(layer);
 }
예제 #4
0
 private void Formular_MapLayerAdded(object sender, GameMapLayer layer)
 {
     if (this.layerPanelControl.Controls.Count < GameMap.MAX_LAYER_COUNT)
     {
         this.LayerPane.InsertAt(0, layer);
         this.Refresh();
     }
     else
         ConsolePanel.Instance.WriteLine($"Impossible d'ajouter la nouvelle couche. Le nombre maximal de couches est atteint (maximum : {GameMap.MAX_LAYER_COUNT})", RowType.Error);
 }
예제 #5
0
 private void LayerPane_ItemAdded(object sender, int index, GameMapLayer layer)
 {
     if (this.ActiveMapPanel != null)
     {
         this.ActiveMapPanel.Map.InsertLayerAt(index, layer);
     }
     else
     {
         throw new NullReferenceException("Tentative d'ajout d'une ou plusieurs valeurs dans un control parent inexistant");
     }
 }
예제 #6
0
        /// <summary>
        /// Initialise les données internes de la carte
        /// </summary>
        private void InitializeComponents()
        {
            GameMapLayer layer = new GameMapLayer(DEFAULT_LAYER_NAME)
            {
                Type    = LayerType.Lower,
                Visible = true
            };

            layer.LayerChanged += Layer_LayerChanged;
            this.layers.Add(layer);
        }
예제 #7
0
 private void Formular_MapLayerAdded(object sender, GameMapLayer layer)
 {
     if (this.layerPanelControl.Controls.Count < GameMap.MAX_LAYER_COUNT)
     {
         this.LayerPane.InsertAt(0, layer);
         this.Refresh();
     }
     else
     {
         ConsolePanel.Instance.WriteLine($"Impossible d'ajouter la nouvelle couche. Le nombre maximal de couches est atteint (maximum : {GameMap.MAX_LAYER_COUNT})", RowType.Error);
     }
 }
예제 #8
0
        /// <summary>
        /// Insert la couche à la position spécifiée dans la liste des layers de map
        /// </summary>
        /// <param name="index">L'index d'insertion</param>
        /// <param name="layer">Le layer à insérer</param>
        /// <returns>L'état résultant de l'insertion</returns>
        public bool InsertLayerAt(int index, GameMapLayer layer)
        {
            if (this.layers.Count < MAX_LAYER_COUNT)
            {
                layer.LayerChanged += Layer_LayerChanged;
                this.layers.Insert(index, layer);

                // TODO : Reviser
                this.MapChanged?.Invoke(this);

                return(true);
            }
            return(false);
        }
예제 #9
0
        private void LayerPane_ItemTypeChanged(object sender, int index, LayerType type)
        {
            if (this.ActiveMapPanel != null)
            {
                GameMapLayer layer = this.ActiveMapPanel.Map.GetLayerAt(index);

                if (layer != null)
                {
                    layer.Type = type;
                }
                else
                {
                    throw new NullReferenceException("Tentative de modification du type d'un objet inexistant");
                }
            }
            else
            {
                throw new NullReferenceException("Tentative de modification d'un control enfant inexistant");
            }
        }
예제 #10
0
 /// <summary>
 /// Remplace le layer à l'index spcifiée par le layer donnée
 /// </summary>
 /// <param name="index">L'index de le layer à remplacer</param>
 /// <param name="layer">Le layer remplaçante</param>
 /// <returns>L'état resultant du remplacement</returns>
 public bool ReplaceLayerAt(int index, GameMapLayer layer)
 {
     if(this.RemoveLayerAt(index))
         return this.InsertLayerAt(index, layer);
     return false;
 }
예제 #11
0
        /// <summary>
        /// Insert la couche à la position spécifiée dans la liste des layers de map
        /// </summary>
        /// <param name="index">L'index d'insertion</param>
        /// <param name="layer">Le layer à insérer</param>
        /// <returns>L'état résultant de l'insertion</returns>
        public bool InsertLayerAt(int index, GameMapLayer layer)
        {
            if (this.layers.Count < MAX_LAYER_COUNT)
            {
                layer.LayerChanged += Layer_LayerChanged;
                this.layers.Insert(index, layer);

                // TODO : Reviser
                this.MapChanged?.Invoke(this);

                return true;
            }
            return false;
        }
예제 #12
0
 /// <summary>
 /// Ajoute une couche de dessin dans la map
 /// </summary>
 /// <param name="layer">Le layer à ajouter</param>
 /// <returns>L'état résultant de l'ajout</returns>
 public bool AddLayer(GameMapLayer layer)
 {
     return this.InsertLayerAt(0, layer);
 }
예제 #13
0
 private void LayerPane_ItemAdded(object sender, int index, GameMapLayer layer)
 {
     if (this.ActiveMapPanel != null)
     {
         this.ActiveMapPanel.Map.InsertLayerAt(index, layer);
     }
     else throw new NullReferenceException("Tentative d'ajout d'une ou plusieurs valeurs dans un control parent inexistant");
 }
예제 #14
0
 /// <summary>
 /// Ajoute une couche de dessin dans la map
 /// </summary>
 /// <param name="layer">Le layer à ajouter</param>
 /// <returns>L'état résultant de l'ajout</returns>
 public bool AddLayer(GameMapLayer layer)
 {
     return(this.InsertLayerAt(0, layer));
 }