summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornsensfel <SpamShield0@noot-noot.org>2019-03-04 18:28:50 +0100
committernsensfel <SpamShield0@noot-noot.org>2019-03-04 18:28:50 +0100
commitb05eb97d89e690737418ca2aa2e49e9c9da83184 (patch)
tree8b89d6d479b75b256b610d0a370519a96e451735
parent85f64582db6f4cc47d04787c9d4180e57b867825 (diff)
Adds "focus" mode to map editor
-rw-r--r--src/map-editor/src/Struct/Toolbox.elm42
-rw-r--r--src/map-editor/src/Update/SelectTile.elm39
-rw-r--r--src/map-editor/src/Update/SetToolboxMode.elm20
-rw-r--r--src/map-editor/src/View/Toolbox.elm4
4 files changed, 81 insertions, 24 deletions
diff --git a/src/map-editor/src/Struct/Toolbox.elm b/src/map-editor/src/Struct/Toolbox.elm
index a35ecd7..5f08761 100644
--- a/src/map-editor/src/Struct/Toolbox.elm
+++ b/src/map-editor/src/Struct/Toolbox.elm
@@ -44,6 +44,8 @@ type Mode =
Draw
| RemoveSelection
| AddSelection
+ | Focus
+ | Sample
type Shape =
Simple
@@ -93,6 +95,16 @@ apply_mode_to loc (tb, map) =
),
map
)
+
+ Focus -> (tb, map)
+
+ Sample ->
+ -- TODO: template = tile at location.
+ (
+ tb,
+ map
+ )
+
get_filled_tiles_internals : (
(Struct.Location.Type -> Bool) ->
(List Struct.Location.Type) ->
@@ -203,19 +215,25 @@ get_modes =
[
Draw,
AddSelection,
- RemoveSelection
+ RemoveSelection,
+ Focus,
+ Sample
]
get_shape : Type -> Shape
get_shape tb = tb.shape
-get_shapes : (List Shape)
-get_shapes =
- [
- Simple,
- Fill,
- Square
- ]
+get_shapes : Mode -> (List Shape)
+get_shapes mode =
+ case mode of
+ Focus -> [Simple]
+ Sample -> [Simple]
+ _ ->
+ [
+ Simple,
+ Fill,
+ Square
+ ]
get_selection : Type -> (List Struct.Location.Type)
get_selection tb = tb.selection
@@ -231,7 +249,13 @@ set_mode : Mode -> Type -> Type
set_mode mode tb =
{tb |
mode = mode,
- square_corner = Nothing
+ square_corner = Nothing,
+ shape =
+ (
+ if (List.member tb.shape (get_shapes mode))
+ then tb.shape
+ else Simple
+ )
}
set_shape : Shape -> Type -> Type
diff --git a/src/map-editor/src/Update/SelectTile.elm b/src/map-editor/src/Update/SelectTile.elm
index 260c533..e7eeeb6 100644
--- a/src/map-editor/src/Update/SelectTile.elm
+++ b/src/map-editor/src/Update/SelectTile.elm
@@ -2,8 +2,9 @@ module Update.SelectTile exposing (apply_to)
-- Elm -------------------------------------------------------------------------
--- Battlemap -------------------------------------------------------------------
+-- Map Editor ------------------------------------------------------------------
import Struct.Event
+import Struct.UI
import Struct.Location
import Struct.Model
import Struct.Toolbox
@@ -21,18 +22,34 @@ apply_to : (
(Struct.Model.Type, (Cmd Struct.Event.Type))
)
apply_to model loc_ref =
- let
- (toolbox, map) =
- (Struct.Toolbox.apply_to
- (Struct.Location.from_ref loc_ref)
- model.toolbox
- model.map
- )
- in
+ if ((Struct.Toolbox.get_mode model.toolbox) == Struct.Toolbox.Focus)
+ then
(
{model |
- toolbox = toolbox,
- map = map
+ ui =
+ (Struct.UI.set_previous_action
+ (Just (Struct.UI.SelectedLocation loc_ref))
+ (Struct.UI.set_displayed_tab
+ Struct.UI.StatusTab
+ model.ui
+ )
+ )
},
Cmd.none
)
+ else
+ let
+ (toolbox, map) =
+ (Struct.Toolbox.apply_to
+ (Struct.Location.from_ref loc_ref)
+ model.toolbox
+ model.map
+ )
+ in
+ (
+ {model |
+ toolbox = toolbox,
+ map = map
+ },
+ Cmd.none
+ )
diff --git a/src/map-editor/src/Update/SetToolboxMode.elm b/src/map-editor/src/Update/SetToolboxMode.elm
index 3444329..6104558 100644
--- a/src/map-editor/src/Update/SetToolboxMode.elm
+++ b/src/map-editor/src/Update/SetToolboxMode.elm
@@ -1,10 +1,11 @@
module Update.SetToolboxMode exposing (apply_to)
-- Elm -------------------------------------------------------------------------
--- Battlemap -------------------------------------------------------------------
+-- Map Editor ------------------------------------------------------------------
import Struct.Event
-import Struct.Toolbox
import Struct.Model
+import Struct.Toolbox
+import Struct.UI
--------------------------------------------------------------------------------
-- LOCAL -----------------------------------------------------------------------
@@ -20,6 +21,19 @@ apply_to : (
)
apply_to model mode =
(
- {model | toolbox = (Struct.Toolbox.set_mode mode model.toolbox)},
+ {model |
+ toolbox = (Struct.Toolbox.set_mode mode model.toolbox),
+ ui =
+ (
+ case mode of
+ Struct.Toolbox.Draw ->
+ (Struct.UI.set_displayed_tab Struct.UI.TilesTab model.ui)
+
+ Struct.Toolbox.Focus ->
+ (Struct.UI.set_displayed_tab Struct.UI.StatusTab model.ui)
+
+ _ -> model.ui
+ )
+ },
Cmd.none
)
diff --git a/src/map-editor/src/View/Toolbox.elm b/src/map-editor/src/View/Toolbox.elm
index 9d934e1..a5ab910 100644
--- a/src/map-editor/src/View/Toolbox.elm
+++ b/src/map-editor/src/View/Toolbox.elm
@@ -51,6 +51,8 @@ get_mode_button current mode =
(Html.text
(case mode of
Struct.Toolbox.Draw -> "Draw"
+ Struct.Toolbox.Focus -> "Focus"
+ Struct.Toolbox.Sample -> "Sample"
Struct.Toolbox.AddSelection -> "Select+"
Struct.Toolbox.RemoveSelection -> "Select-"
)
@@ -97,7 +99,7 @@ get_shapes_menu_html tb =
[(Html.Attributes.class "toolbox-shapes")]
(List.map
(get_shape_button (Struct.Toolbox.get_shape tb))
- (Struct.Toolbox.get_shapes)
+ (Struct.Toolbox.get_shapes (Struct.Toolbox.get_mode tb))
)
)