private void AddToExistingLayerChange(LayerChange layerChange, LayerChange oldValues)
        {
            foreach (var change in layerChange.PixelChanges.ChangedPixels)
            {
                if (LastChanges[layerChange.LayerIndex].PixelChanges.ChangedPixels.ContainsKey(change.Key))
                {
                    continue;
                }
                else
                {
                    LastChanges[layerChange.LayerIndex].PixelChanges.ChangedPixels.Add(change.Key, change.Value);
                }
            }

            foreach (var change in oldValues.PixelChanges.ChangedPixels)
            {
                if (LastOldValues[layerChange.LayerIndex].PixelChanges.ChangedPixels.ContainsKey(change.Key))
                {
                    continue;
                }
                else
                {
                    LastOldValues[layerChange.LayerIndex].PixelChanges.ChangedPixels.Add(change.Key, change.Value);
                }
            }
        }
Example #2
0
    void changeLayer() //GameScene 넘어가기 전 무기 Layer 변경: Touchable -> weapon
    {
        layerChange = GM.gameObject.GetComponent <LayerChange>();
        s_itemSpawn = GameObject.Find("itemSpawn").GetComponent <ItemSpawn>();
        int itemSpawnLens = s_itemSpawn.itemSpawn.Length;

        GameObject[] Items = GameObject.FindObjectsOfType(typeof(GameObject)) as GameObject[];
        int          len   = Items.Length;

        touchableItems = new GameObject[itemSpawnLens];
        int idx = 0;

        for (int i = 0; i < len; i++)
        {
            if (Items[i].layer == (int)eLAYER.TOUCHABLE)
            {
                touchableItems[idx] = Items[i];
                if (touchableItems[idx].tag == "weapon")
                {
                    layerChange.InputWeaponArr(touchableItems[idx]);
                }
                idx++;
            }
        }
    }
Example #3
0
        private void UseTool(List <Coordinates> mouseMoveCords, BitmapOperationTool tool, Color color)
        {
            if (Keyboard.IsKeyDown(Key.LeftShift) && !MouseCordsNotInLine(mouseMoveCords))
            {
                mouseMoveCords = GetSquareCoordiantes(mouseMoveCords);
            }

            if (!tool.RequiresPreviewLayer)
            {
                LayerChange[] modifiedLayers  = tool.Use(Manager.ActiveLayer, mouseMoveCords.ToArray(), color);
                LayerChange[] oldPixelsValues = new LayerChange[modifiedLayers.Length];
                for (int i = 0; i < modifiedLayers.Length; i++)
                {
                    Layer layer = Manager.ActiveDocument.Layers.First(x => x.LayerGuid == modifiedLayers[i].LayerGuid);
                    oldPixelsValues[i] = ApplyToLayer(layer, modifiedLayers[i]);

                    BitmapChanged?.Invoke(this, new BitmapChangedEventArgs(
                                              modifiedLayers[i].PixelChanges,
                                              oldPixelsValues[i].PixelChanges,
                                              modifiedLayers[i].LayerGuid));
                }
            }
            else
            {
                UseToolOnPreviewLayer(mouseMoveCords, tool.ClearPreviewLayerOnEachIteration);
            }
        }
Example #4
0
        public override LayerChange[] Use(Layer layer, Coordinates[] mouseMove, Color color)
        {
            LayerChange[] result        = new LayerChange[affectedLayers.Length];
            var           end           = mouseMove[0];
            var           lastSelection = currentSelection.ToArray();

            for (int i = 0; i < affectedLayers.Length; i++)
            {
                if (currentSelection.Length > 0)
                {
                    endPixelColors = BitmapUtils.GetPixelsForSelection(affectedLayers, currentSelection);
                    var changes = MoveSelection(affectedLayers[i], mouseMove);
                    ClearSelectedPixels(affectedLayers[i], lastSelection);

                    changes = RemoveTransparentPixels(changes);

                    result[i] = new LayerChange(changes, affectedLayers[i]);
                }
                else
                {
                    var vector = Transform.GetTranslation(lastMouseMove, end);
                    affectedLayers[i].Offset = new Thickness(affectedLayers[i].OffsetX + vector.X, affectedLayers[i].OffsetY + vector.Y, 0, 0);
                    result[i] = new LayerChange(BitmapPixelChanges.Empty, affectedLayers[i]);
                }
            }

            lastMouseMove = end;

            return(result);
        }
Example #5
0
        /// <summary>
        ///     Returns all changes and deletes them from controller.
        /// </summary>
        /// <returns>Tuple array with new changes and old values.</returns>
        public Tuple <LayerChange, LayerChange>[] PopChanges()
        {
            // Maybe replace Tuple with custom data type
            if (LastChanges == null)
            {
                return(null);
            }

            Tuple <LayerChange, LayerChange>[] result = new Tuple <LayerChange, LayerChange> [LastChanges.Count];
            int i = 0;

            foreach (KeyValuePair <Guid, LayerChange> change in LastChanges)
            {
                Dictionary <Position.Coordinates, System.Windows.Media.Color> pixelChanges =
                    change.Value.PixelChanges.ChangedPixels.ToDictionary(entry => entry.Key, entry => entry.Value);
                Dictionary <Position.Coordinates, System.Windows.Media.Color> oldValues = LastOldValues[change.Key].PixelChanges.ChangedPixels
                                                                                          .ToDictionary(entry => entry.Key, entry => entry.Value);

                LayerChange tmp          = new LayerChange(new BitmapPixelChanges(pixelChanges), change.Key);
                LayerChange oldValuesTmp = new LayerChange(new BitmapPixelChanges(oldValues), change.Key);

                result[i] = new Tuple <LayerChange, LayerChange>(tmp, oldValuesTmp);
                i++;
            }

            LastChanges   = null;
            LastOldValues = null;
            return(result);
        }
Example #6
0
        private void AddToExistingLayerChange(LayerChange layerChange, LayerChange oldValues)
        {
            foreach (KeyValuePair <Position.Coordinates, System.Windows.Media.Color> change in layerChange.PixelChanges.ChangedPixels)
            {
                if (LastChanges[layerChange.LayerGuid].PixelChanges.ChangedPixels.ContainsKey(change.Key))
                {
                    continue;
                }
                else
                {
                    LastChanges[layerChange.LayerGuid].PixelChanges.ChangedPixels.Add(change.Key, change.Value);
                }
            }

            foreach (KeyValuePair <Position.Coordinates, System.Windows.Media.Color> change in oldValues.PixelChanges.ChangedPixels)
            {
                if (LastOldValues[layerChange.LayerGuid].PixelChanges.ChangedPixels.ContainsKey(change.Key))
                {
                    continue;
                }
                else
                {
                    LastOldValues[layerChange.LayerGuid].PixelChanges.ChangedPixels.Add(change.Key, change.Value);
                }
            }
        }
Example #7
0
    void Update()
    {
        if (!IsLayerChange) //무기아이템 GameScene으로 넘어갈 때 weapon layer로 변경
        {
            IsLayerChange = true;
            layerChange   = GM.gameObject.GetComponent <LayerChange>();
            ItemSpawn1 s_itemSpawn   = GameObject.Find("itemSpawn").GetComponent <ItemSpawn1>();
            int        itemSpawnLens = s_itemSpawn.itemSpawn.Length;

            GameObject[] Items = GameObject.FindObjectsOfType(typeof(GameObject)) as GameObject[];
            int          len   = Items.Length;
            touchableItems = new GameObject[itemSpawnLens];
            int idx = 0;
            for (int i = 0; i < len; i++)
            {
                if (Items[i].layer == (int)eLAYER.TOUCHABLE)
                {
                    touchableItems[idx] = Items[i];
                    if (touchableItems[idx].tag == "weapon")
                    {
                        layerChange.InputWeaponArr(touchableItems[idx]);
                    }
                    idx++;
                }
            }
        }
        if (Input.GetMouseButtonDown(0) && highlightBox.activeSelf == true)
        {
            TouchItem();
        }
    }
Example #8
0
    void changeLayerToWeapon()
    {
        LayerChange LC = GetComponent <LayerChange>();

        for (int i = 0; i < 4; i++)
        {
            LC.OutputWeapon(i).layer = (int)eLAYER.WEAPON;
        }
    }
        //================================================================================
        // ILayerChangeEventListener methods
        //================================================================================

        public void OnChangeEvent(LayerChangeEvent @event)
        {
            //You can choose to handle changes to conversations or messages however you'd like:
            IList <LayerChange> changes = @event.Changes;

            for (int i = 0; i < changes.Count; i++)
            {
                LayerChange change = changes[i];
                if (change.ObjectType == LayerObjectType.Conversation)
                {
                    Conversation conversation = change.GetObject <Conversation>();
                    Log.Verbose(TAG, "Conversation " + conversation.Id + " attribute " +
                                change.AttributeName + " was changed from " + change.OldValue +
                                " to " + change.NewValue);

                    if (LayerChange.Type.Insert == change.ChangeType)
                    {
                    }
                    else if (LayerChange.Type.Update == change.ChangeType)
                    {
                    }
                    else if (LayerChange.Type.Delete == change.ChangeType)
                    {
                    }
                }
                else if (change.ObjectType == LayerObjectType.Message)
                {
                    IMessage message = change.GetObject <IMessage>();
                    Log.Verbose(TAG, "Message " + message.Id + " attribute " + change
                                .AttributeName + " was changed from " + change.OldValue +
                                " to " + change.NewValue);

                    if (LayerChange.Type.Insert == change.ChangeType)
                    {
                    }
                    else if (LayerChange.Type.Update == change.ChangeType)
                    {
                    }
                    else if (LayerChange.Type.Delete == change.ChangeType)
                    {
                    }
                }
            }

            //If we don't have an active conversation, grab the oldest one
            if (activeConversation == null)
            {
                activeConversation = _GetConversation();
            }

            //If anything in the conversation changes, re-draw it in the GUI
            _DrawConversation();

            //Check the meta-data for color changes
            _GetTopBarMetaData();
        }
Example #10
0
        private LayerChange ApplyToLayer(Layer layer, LayerChange change)
        {
            layer.DynamicResize(change.PixelChanges);

            var oldPixelsValues = new LayerChange(
                GetOldPixelsValues(change.PixelChanges.ChangedPixels.Keys.ToArray()),
                change.LayerIndex);

            layer.SetPixels(change.PixelChanges, false);
            return(oldPixelsValues);
        }
Example #11
0
        public void DeletePixels(Layer[] layers, Coordinates[] pixels)
        {
            var changes   = BitmapPixelChanges.FromSingleColoredArray(pixels, Color.FromArgb(0, 0, 0, 0));
            var oldValues = BitmapUtils.GetPixelsForSelection(layers, pixels);

            LayerChange[] old       = new LayerChange[layers.Length];
            LayerChange[] newChange = new LayerChange[layers.Length];
            for (int i = 0; i < layers.Length; i++)
            {
                old[i] = new LayerChange(
                    BitmapPixelChanges.FromArrays(pixels, oldValues[layers[i]]), i);
                newChange[i] = new LayerChange(changes, i);
                layers[i].SetPixels(changes);
            }

            UndoManager.AddUndoChange(new Change("UndoChanges", old, newChange, "Deleted pixels"));
        }
Example #12
0
        private void UseTool(List <Coordinates> mouseMoveCords, BitmapOperationTool tool, Color color)
        {
            if (sizeSetting == null)
            {
                sizeSetting = tool.Toolbar.GetSetting <SizeSetting>("ToolSize");
            }

            int thickness = sizeSetting != null ? sizeSetting.Value : 1;

            bool shiftDown = Keyboard.IsKeyDown(Key.LeftShift);

            if (shiftDown && tool.UsesShift)
            {
                bool mouseInLine = MouseCordsNotInLine(mouseMoveCords, thickness);

                if (!mouseInLine)
                {
                    mouseMoveCords = GetSquareCoordiantes(mouseMoveCords);
                }
                else
                {
                    mouseMoveCords = GetLineCoordinates(mouseMoveCords, thickness);
                }
            }

            if (!tool.RequiresPreviewLayer)
            {
                LayerChange[] modifiedLayers  = tool.Use(Manager.ActiveLayer, mouseMoveCords, color);
                LayerChange[] oldPixelsValues = new LayerChange[modifiedLayers.Length];
                for (int i = 0; i < modifiedLayers.Length; i++)
                {
                    Layer layer = Manager.ActiveDocument.Layers.First(x => x.LayerGuid == modifiedLayers[i].LayerGuid);
                    oldPixelsValues[i] = ApplyToLayer(layer, modifiedLayers[i]);

                    BitmapChanged?.Invoke(this, new BitmapChangedEventArgs(
                                              modifiedLayers[i].PixelChanges,
                                              oldPixelsValues[i].PixelChanges,
                                              modifiedLayers[i].LayerGuid));
                }
            }
            else
            {
                UseToolOnPreviewLayer(mouseMoveCords, tool.ClearPreviewLayerOnEachIteration);
            }
        }
Example #13
0
        public override LayerChange[] Use(Layer layer, List <Coordinates> coordinates, Color color)
        {
            int   toolSize         = Toolbar.GetSetting <SizeSetting>("ToolSize").Value;
            float correctionFactor = Toolbar.GetSetting <FloatSetting>("CorrectionFactor").Value;

            Mode = Toolbar.GetEnumSetting <BrightnessMode>("BrightnessMode").Value;

            LayerChange[] layersChanges = new LayerChange[1];
            if (Keyboard.IsKeyDown(Key.LeftCtrl))
            {
                layersChanges[0] = new LayerChange(ChangeBrightness(layer, coordinates[0], toolSize, -correctionFactor), layer);
            }
            else
            {
                layersChanges[0] = new LayerChange(ChangeBrightness(layer, coordinates[0], toolSize, correctionFactor), layer);
            }

            return(layersChanges);
        }
Example #14
0
        public override LayerChange[] Use(Layer layer, Coordinates[] coordinates, Color color)
        {
            int   toolSize         = Toolbar.GetSetting <SizeSetting>("ToolSize").Value;
            float correctionFactor = Toolbar.GetSetting <FloatSetting>("CorrectionFactor").Value;

            Enum.TryParse((Toolbar.GetSetting <DropdownSetting>("BrightnessMode")?.Value as ComboBoxItem)?.Content as string, out BrightnessMode mode);
            Mode = mode;

            LayerChange[] layersChanges = new LayerChange[1];
            if (Keyboard.IsKeyDown(Key.LeftCtrl))
            {
                layersChanges[0] = new LayerChange(ChangeBrightness(layer, coordinates[0], toolSize, -correctionFactor), layer);
            }
            else
            {
                layersChanges[0] = new LayerChange(ChangeBrightness(layer, coordinates[0], toolSize, correctionFactor), layer);
            }

            return(layersChanges);
        }
Example #15
0
 /// <summary>
 ///     Adds layer changes to controller.
 /// </summary>
 /// <param name="changes">New changes.</param>
 /// <param name="oldValues">Old values of changes.</param>
 public void AddChanges(LayerChange changes, LayerChange oldValues)
 {
     if (changes.PixelChanges.ChangedPixels.Count > 0)
     {
         if (LastChanges == null)
         {
             LastChanges = new Dictionary <Guid, LayerChange> {
                 { changes.LayerGuid, changes }
             };
             LastOldValues = new Dictionary <Guid, LayerChange> {
                 { oldValues.LayerGuid, oldValues }
             };
         }
         else if (LastChanges.ContainsKey(changes.LayerGuid))
         {
             AddToExistingLayerChange(changes, oldValues);
         }
         else
         {
             AddNewLayerChange(changes, oldValues);
         }
     }
 }
Example #16
0
        private LayerChange[] ApplyToLayers(Layer[] layers, LayerChange[] changes)
        {
            LayerChange[] oldPixelValues = new LayerChange[changes.Length];
            for (int i = 0; i < layers.Length; i++)
            {
                Layer       layer  = layers[i];
                LayerChange change = changes.First(x => x.LayerGuid == layer.LayerGuid);
                layer.DynamicResize(change.PixelChanges);

                oldPixelValues[i] = new LayerChange(
                    GetOldPixelsValues(change.PixelChanges.ChangedPixels.Keys.ToArray()),
                    change.LayerGuid);
            }

            for (int i = 0; i < layers.Length; i++)
            {
                Layer       layer  = layers[i];
                LayerChange change = changes.First(x => x.LayerGuid == layer.LayerGuid);
                layer.SetPixels(change.PixelChanges, false);
            }

            return(oldPixelValues);
        }
Example #17
0
        public void DeletePixels(Layer[] layers, Coordinates[] pixels)
        {
            if (Manager.ActiveDocument == null)
            {
                return;
            }

            BitmapPixelChanges         changes   = BitmapPixelChanges.FromSingleColoredArray(pixels, Color.FromArgb(0, 0, 0, 0));
            Dictionary <Guid, Color[]> oldValues = BitmapUtils.GetPixelsForSelection(layers, pixels);

            LayerChange[] old       = new LayerChange[layers.Length];
            LayerChange[] newChange = new LayerChange[layers.Length];
            for (int i = 0; i < layers.Length; i++)
            {
                Guid guid = layers[i].LayerGuid;
                old[i] = new LayerChange(
                    BitmapPixelChanges.FromArrays(pixels, oldValues[layers[i].LayerGuid]), guid);
                newChange[i] = new LayerChange(changes, guid);
                layers[i].SetPixels(changes);
            }

            Manager.ActiveDocument.UndoManager.AddUndoChange(new Change("UndoChanges", old, newChange, "Deleted pixels"));
        }
Example #18
0
 private LayerChange ApplyToLayer(Layer layer, LayerChange change)
 {
     return(ApplyToLayers(new Layer[] { layer }, new LayerChange[] { change })[0]);
 }
Example #19
0
 private void AddNewLayerChange(LayerChange changes, LayerChange oldValues)
 {
     LastChanges[changes.LayerGuid]   = changes;
     LastOldValues[changes.LayerGuid] = oldValues;
 }
Example #20
0
        public ChangeMapAppearance(bool isColorModified, bool isFontModified, bool isSizeModified, bool doesAreaChanged)
        {
            // background color of the map
            mOldBackGroundColor = Map.Instance.BackgroundColor;
            mNewBackGroundColor = BlueBrick.Properties.Settings.Default.DefaultBackgroundColor;

            // and the other modification to the layer
            bool doesGridChanged = isColorModified || isFontModified || isSizeModified;

            foreach (Layer layer in Map.Instance.LayerList)
            {
                if (doesGridChanged)
                {
                    LayerGrid gridLayer = layer as LayerGrid;
                    if (gridLayer != null)
                    {
                        // create a copy of the edited layer to hold the old data
                        LayerGrid oldLayerData = new LayerGrid();
                        oldLayerData.CopyOptionsFrom(gridLayer);
                        // create a new layer to store the new data
                        LayerGrid newLayerData = new LayerGrid();
                        newLayerData.CopyOptionsFrom(gridLayer);
                        // and change only the grid colors
                        if (isColorModified)
                        {
                            newLayerData.GridColor    = BlueBrick.Properties.Settings.Default.DefaultGridColor;
                            newLayerData.SubGridColor = BlueBrick.Properties.Settings.Default.DefaultSubGridColor;
                        }
                        if (isFontModified)
                        {
                            newLayerData.CellIndexColor = BlueBrick.Properties.Settings.Default.DefaultTextColor;
                            newLayerData.CellIndexFont  = BlueBrick.Properties.Settings.Default.DefaultTextFont;
                        }
                        if (isSizeModified)
                        {
                            newLayerData.GridSizeInStud    = BlueBrick.Properties.Settings.Default.DefaultGridSize;
                            newLayerData.SubDivisionNumber = BlueBrick.Properties.Settings.Default.DefaultSubDivisionNumber;
                            newLayerData.DisplayGrid       = BlueBrick.Properties.Settings.Default.DefaultGridEnabled;
                            newLayerData.DisplaySubGrid    = BlueBrick.Properties.Settings.Default.DefaultSubGridEnabled;
                        }

                        // create a new entry for the list and store it in the list
                        LayerChange layerChange = new LayerChange();
                        layerChange.mReference = gridLayer;
                        layerChange.mOldData   = oldLayerData;
                        layerChange.mNewData   = newLayerData;
                        mLayerChanges.Add(layerChange);
                    }
                }
                if (doesAreaChanged)
                {
                    LayerArea areaLayer = layer as LayerArea;
                    if (areaLayer != null)
                    {
                        // create a copy of the edited layer to hold the old data
                        LayerArea oldLayerData = new LayerArea();
                        oldLayerData.CopyOptionsFrom(areaLayer);
                        // create a new layer to store the new data
                        LayerArea newLayerData = new LayerArea();
                        newLayerData.CopyOptionsFrom(areaLayer);
                        // and change the area parameters
                        newLayerData.Transparency       = BlueBrick.Properties.Settings.Default.DefaultAreaTransparency;
                        newLayerData.AreaCellSizeInStud = BlueBrick.Properties.Settings.Default.DefaultAreaSize;

                        // create a new entry for the list and store it in the list
                        LayerChange layerChange = new LayerChange();
                        layerChange.mReference   = areaLayer;
                        layerChange.mOldData     = oldLayerData;
                        layerChange.mNewData     = newLayerData;
                        layerChange.mOldColorMap = areaLayer.ColorMap;
                        mLayerChanges.Add(layerChange);
                    }
                }
            }
        }
 protected LayerChange[] Only(BitmapPixelChanges changes, Guid layerGuid)
 {
     onlyLayerArr[0] = new LayerChange(changes, layerGuid);
     return(onlyLayerArr);
 }
        public ChangeMapAppearance(bool isColorModified, bool isFontModified, bool isSizeModified, bool doesAreaChanged)
        {
            // background color of the map
            mOldBackGroundColor = Map.Instance.BackgroundColor;
            mNewBackGroundColor = BlueBrick.Properties.Settings.Default.DefaultBackgroundColor;

            // and the other modification to the layer
            bool doesGridChanged = isColorModified || isFontModified || isSizeModified;
            foreach (Layer layer in Map.Instance.LayerList)
            {
                if (doesGridChanged)
                {
                    LayerGrid gridLayer = layer as LayerGrid;
                    if (gridLayer != null)
                    {
                        // create a copy of the edited layer to hold the old data
                        LayerGrid oldLayerData = new LayerGrid();
                        oldLayerData.CopyOptionsFrom(gridLayer);
                        // create a new layer to store the new data
                        LayerGrid newLayerData = new LayerGrid();
                        newLayerData.CopyOptionsFrom(gridLayer);
                        // and change only the grid colors
                        if (isColorModified)
                        {
                            newLayerData.GridColor = BlueBrick.Properties.Settings.Default.DefaultGridColor;
                            newLayerData.SubGridColor = BlueBrick.Properties.Settings.Default.DefaultSubGridColor;
                        }
                        if (isFontModified)
                        {
                            newLayerData.CellIndexColor = BlueBrick.Properties.Settings.Default.DefaultTextColor;
                            newLayerData.CellIndexFont = BlueBrick.Properties.Settings.Default.DefaultTextFont;
                        }
                        if (isSizeModified)
                        {
                            newLayerData.GridSizeInStud = BlueBrick.Properties.Settings.Default.DefaultGridSize;
                            newLayerData.SubDivisionNumber = BlueBrick.Properties.Settings.Default.DefaultSubDivisionNumber;
                            newLayerData.DisplayGrid = BlueBrick.Properties.Settings.Default.DefaultGridEnabled;
                            newLayerData.DisplaySubGrid = BlueBrick.Properties.Settings.Default.DefaultSubGridEnabled;
                        }

                        // create a new entry for the list and store it in the list
                        LayerChange layerChange = new LayerChange();
                        layerChange.mReference = gridLayer;
                        layerChange.mOldData = oldLayerData;
                        layerChange.mNewData = newLayerData;
                        mLayerChanges.Add(layerChange);
                    }
                }
                if (doesAreaChanged)
                {
                    LayerArea areaLayer = layer as LayerArea;
                    if (areaLayer != null)
                    {
                        // create a copy of the edited layer to hold the old data
                        LayerArea oldLayerData = new LayerArea();
                        oldLayerData.CopyOptionsFrom(areaLayer);
                        // create a new layer to store the new data
                        LayerArea newLayerData = new LayerArea();
                        newLayerData.CopyOptionsFrom(areaLayer);
                        // and change the area parameters
                        newLayerData.Transparency = BlueBrick.Properties.Settings.Default.DefaultAreaTransparency;
                        newLayerData.AreaCellSizeInStud = BlueBrick.Properties.Settings.Default.DefaultAreaSize;

                        // create a new entry for the list and store it in the list
                        LayerChange layerChange = new LayerChange();
                        layerChange.mReference = areaLayer;
                        layerChange.mOldData = oldLayerData;
                        layerChange.mNewData = newLayerData;
                        layerChange.mOldColorMap = areaLayer.ColorMap;
                        mLayerChanges.Add(layerChange);
                    }
                }
            }
        }