summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornsensfel <SpamShield0@noot-noot.org>2018-02-22 13:43:14 +0100
committernsensfel <SpamShield0@noot-noot.org>2018-02-22 13:43:14 +0100
commit970ed1bec29fca4ea1eccaeaccbbdc82292805da (patch)
treeaada40e88a7715b2a4d3924dcf6ba48baed77559
parent4dff804ebbc4444232626f37c6bacfe67dd14c68 (diff)
Replaces min/max ranges with def and atk ranges.
-rw-r--r--src/battlemap/src/Data/Weapons.elm2
-rw-r--r--src/battlemap/src/Struct/Marker.elm1
-rw-r--r--src/battlemap/src/Struct/Navigator.elm7
-rw-r--r--src/battlemap/src/Struct/RangeIndicator.elm20
-rw-r--r--src/battlemap/src/Struct/Weapon.elm28
-rw-r--r--src/battlemap/src/Update/SelectCharacter.elm49
-rw-r--r--src/battlemap/src/Update/SwitchWeapon.elm5
-rw-r--r--src/battlemap/src/View/Battlemap/Navigator.elm9
-rw-r--r--src/battlemap/src/View/SideBar/TabMenu/Status/CharacterInfo.elm8
-rw-r--r--src/battlemap/www/style.css11
10 files changed, 85 insertions, 55 deletions
diff --git a/src/battlemap/src/Data/Weapons.elm b/src/battlemap/src/Data/Weapons.elm
index 35d3fc7..4aa8ca2 100644
--- a/src/battlemap/src/Data/Weapons.elm
+++ b/src/battlemap/src/Data/Weapons.elm
@@ -153,7 +153,7 @@ dataset =
Struct.Weapon.Melee
Struct.Weapon.Long
Struct.Weapon.Blunt
- Struct.Weapon.Light
+ Struct.Weapon.Heavy
)
),
(
diff --git a/src/battlemap/src/Struct/Marker.elm b/src/battlemap/src/Struct/Marker.elm
index dd884e2..58a7fc9 100644
--- a/src/battlemap/src/Struct/Marker.elm
+++ b/src/battlemap/src/Struct/Marker.elm
@@ -6,3 +6,4 @@ module Struct.Marker exposing (Type(..))
type Type =
CanAttack
| CanGoTo
+ | CantDefend
diff --git a/src/battlemap/src/Struct/Navigator.elm b/src/battlemap/src/Struct/Navigator.elm
index 8e8d0f5..18bf9e3 100644
--- a/src/battlemap/src/Struct/Navigator.elm
+++ b/src/battlemap/src/Struct/Navigator.elm
@@ -32,6 +32,7 @@ type alias Type =
starting_location: Struct.Location.Type,
movement_dist: Int,
attack_dist: Int,
+ defense_dist: Int,
path: Struct.Path.Type,
locked_path: Bool,
range_indicators:
@@ -60,14 +61,16 @@ new : (
Struct.Location.Type ->
Int ->
Int ->
+ Int ->
(Struct.Location.Type -> Int) ->
Type
)
-new start_loc mov_dist atk_dist cost_fun =
+new start_loc mov_dist atk_dist def_dist cost_fun =
{
starting_location = start_loc,
movement_dist = mov_dist,
attack_dist = atk_dist,
+ defense_dist = def_dist,
path = (Struct.Path.new start_loc mov_dist),
locked_path = False,
range_indicators =
@@ -75,6 +78,7 @@ new start_loc mov_dist atk_dist cost_fun =
start_loc
mov_dist
atk_dist
+ 0
(cost_fun)
),
cost_fun = cost_fun
@@ -145,6 +149,7 @@ lock_path navigator =
(Struct.Path.get_current_location navigator.path)
0
navigator.attack_dist
+ navigator.defense_dist
(navigator.cost_fun)
),
locked_path = True
diff --git a/src/battlemap/src/Struct/RangeIndicator.elm b/src/battlemap/src/Struct/RangeIndicator.elm
index 90328a3..c224db3 100644
--- a/src/battlemap/src/Struct/RangeIndicator.elm
+++ b/src/battlemap/src/Struct/RangeIndicator.elm
@@ -144,10 +144,11 @@ search : (
(Dict.Dict Struct.Location.Ref Type) ->
Int ->
Int ->
+ Int ->
(Struct.Location.Type -> Int) ->
(Dict.Dict Struct.Location.Ref Type)
)
-search result remaining dist range cost_fun =
+search result remaining dist atk_range def_range cost_fun =
if (Dict.isEmpty remaining)
then
result
@@ -176,7 +177,11 @@ search result remaining dist range cost_fun =
(
if (min.range > 0)
then
- Struct.Marker.CanAttack
+ if (min.range <= def_range)
+ then
+ Struct.Marker.CantDefend
+ else
+ Struct.Marker.CanAttack
else
Struct.Marker.CanGoTo
)
@@ -188,7 +193,7 @@ search result remaining dist range cost_fun =
min
(Struct.Location.from_ref min_loc_ref)
dist
- range
+ atk_range
result
(cost_fun)
)
@@ -201,7 +206,8 @@ search result remaining dist range cost_fun =
]
)
dist
- range
+ atk_range
+ def_range
(cost_fun)
)
@@ -212,10 +218,11 @@ generate : (
Struct.Location.Type ->
Int ->
Int ->
+ Int ->
(Struct.Location.Type -> Int) ->
(Dict.Dict Struct.Location.Ref Type)
)
-generate location dist range cost_fun =
+generate location dist atk_range def_range cost_fun =
(search
Dict.empty
(Dict.insert
@@ -229,7 +236,8 @@ generate location dist range cost_fun =
Dict.empty
)
dist
- range
+ atk_range
+ def_range
(cost_fun)
)
diff --git a/src/battlemap/src/Struct/Weapon.elm b/src/battlemap/src/Struct/Weapon.elm
index 5741a2a..d1d5807 100644
--- a/src/battlemap/src/Struct/Weapon.elm
+++ b/src/battlemap/src/Struct/Weapon.elm
@@ -12,8 +12,8 @@ module Struct.Weapon exposing
get_range_modifier,
get_damage_type,
get_damage_modifier,
- get_max_range,
- get_min_range,
+ get_attack_range,
+ get_defense_range,
get_max_damage,
get_min_damage,
apply_to_attributes
@@ -33,8 +33,8 @@ type alias Type =
range_mod : RangeModifier,
dmg_type : DamageType,
dmg_mod : DamageModifier,
- range_min : Int,
- range_max : Int,
+ def_range : Int,
+ atk_range : Int,
dmg_min : Int,
dmg_max : Int
}
@@ -61,9 +61,9 @@ get_ranges : RangeType -> RangeModifier -> (Int, Int)
get_ranges rt rm =
case (rt, rm) of
(Ranged, Long) -> (2, 6)
- (Ranged, Short) -> (2, 4)
- (Melee, Long) -> (1, 2)
- (Melee, Short) -> (1, 1)
+ (Ranged, Short) -> (1, 4)
+ (Melee, Long) -> (0, 2)
+ (Melee, Short) -> (0, 1)
get_damages : RangeType -> DamageModifier -> (Int, Int)
get_damages rt dm =
@@ -91,7 +91,7 @@ new
dmg_type dmg_mod
=
let
- (range_min, range_max) = (get_ranges range_type range_mod)
+ (def_range, atk_range) = (get_ranges range_type range_mod)
(dmg_min, dmg_max) = (get_damages range_type dmg_mod)
in
{
@@ -101,8 +101,8 @@ new
range_mod = range_mod,
dmg_type = dmg_type,
dmg_mod = dmg_mod,
- range_min = range_min,
- range_max = range_max,
+ def_range = def_range,
+ atk_range = atk_range,
dmg_min = dmg_min,
dmg_max = dmg_max
}
@@ -122,11 +122,11 @@ get_damage_type wp = wp.dmg_type
get_damage_modifier : Type -> DamageModifier
get_damage_modifier wp = wp.dmg_mod
-get_max_range : Type -> Int
-get_max_range wp = wp.range_max
+get_attack_range : Type -> Int
+get_attack_range wp = wp.atk_range
-get_min_range : Type -> Int
-get_min_range wp = wp.range_min
+get_defense_range : Type -> Int
+get_defense_range wp = wp.def_range
get_max_damage : Type -> Int
get_max_damage wp = wp.dmg_max
diff --git a/src/battlemap/src/Update/SelectCharacter.elm b/src/battlemap/src/Update/SelectCharacter.elm
index 05099ba..9e14791 100644
--- a/src/battlemap/src/Update/SelectCharacter.elm
+++ b/src/battlemap/src/Update/SelectCharacter.elm
@@ -43,32 +43,35 @@ ctrl_or_focus_character : (
ctrl_or_focus_character model target_char_id target_char =
if (Struct.Character.is_enabled target_char)
then
- {model |
- char_turn =
- (Struct.CharacterTurn.set_navigator
- (Struct.Navigator.new
- (Struct.Character.get_location target_char)
- (Struct.Statistics.get_movement_points
- (Struct.Character.get_statistics target_char)
- )
- (Struct.Weapon.get_max_range
- (Struct.WeaponSet.get_active_weapon
- (Struct.Character.get_weapons target_char)
+ let
+ weapon =
+ (Struct.WeaponSet.get_active_weapon
+ (Struct.Character.get_weapons target_char)
+ )
+ in
+ {model |
+ char_turn =
+ (Struct.CharacterTurn.set_navigator
+ (Struct.Navigator.new
+ (Struct.Character.get_location target_char)
+ (Struct.Statistics.get_movement_points
+ (Struct.Character.get_statistics target_char)
+ )
+ (Struct.Weapon.get_attack_range weapon)
+ (Struct.Weapon.get_defense_range weapon)
+ (Struct.Battlemap.get_movement_cost_function
+ model.battlemap
+ (Struct.Character.get_location target_char)
+ (Dict.values model.characters)
)
)
- (Struct.Battlemap.get_movement_cost_function
- model.battlemap
- (Struct.Character.get_location target_char)
- (Dict.values model.characters)
+ (Struct.CharacterTurn.set_active_character
+ target_char
+ model.char_turn
)
- )
- (Struct.CharacterTurn.set_active_character
- target_char
- model.char_turn
- )
- ),
- ui = (Struct.UI.set_previous_action model.ui Nothing)
- }
+ ),
+ ui = (Struct.UI.set_previous_action model.ui Nothing)
+ }
else
{model |
ui =
diff --git a/src/battlemap/src/Update/SwitchWeapon.elm b/src/battlemap/src/Update/SwitchWeapon.elm
index e958891..7eed323 100644
--- a/src/battlemap/src/Update/SwitchWeapon.elm
+++ b/src/battlemap/src/Update/SwitchWeapon.elm
@@ -37,7 +37,10 @@ make_it_so model =
(Struct.Statistics.get_movement_points
(Struct.Character.get_statistics new_char)
)
- (Struct.Weapon.get_max_range
+ (Struct.Weapon.get_attack_range
+ (Struct.WeaponSet.get_active_weapon new_weapons)
+ )
+ (Struct.Weapon.get_defense_range
(Struct.WeaponSet.get_active_weapon new_weapons)
)
(Struct.Battlemap.get_movement_cost_function
diff --git a/src/battlemap/src/View/Battlemap/Navigator.elm b/src/battlemap/src/View/Battlemap/Navigator.elm
index 28313e0..f114b82 100644
--- a/src/battlemap/src/View/Battlemap/Navigator.elm
+++ b/src/battlemap/src/View/Battlemap/Navigator.elm
@@ -35,11 +35,10 @@ marker_get_html is_interactive (loc_ref, marker) =
"battlemap-"
++
(
- if (marker == Struct.Marker.CanGoTo)
- then
- "can-go-to"
- else
- "can-attack"
+ case marker of
+ Struct.Marker.CanGoTo -> "can-go-to"
+ Struct.Marker.CanAttack -> "can-attack"
+ Struct.Marker.CantDefend -> "cant-defend"
)
++
"-marker"
diff --git a/src/battlemap/src/View/SideBar/TabMenu/Status/CharacterInfo.elm b/src/battlemap/src/View/SideBar/TabMenu/Status/CharacterInfo.elm
index 13eed02..6620ecc 100644
--- a/src/battlemap/src/View/SideBar/TabMenu/Status/CharacterInfo.elm
+++ b/src/battlemap/src/View/SideBar/TabMenu/Status/CharacterInfo.elm
@@ -242,11 +242,11 @@ get_weapon_html wp =
[
(Html.text
(
- "Range: ["
- ++ (toString (Struct.Weapon.get_min_range wp))
+ "Range: ("
+ ++ (toString (Struct.Weapon.get_defense_range wp))
++ ", "
- ++ (toString (Struct.Weapon.get_max_range wp))
- ++ "]"
+ ++ (toString (Struct.Weapon.get_attack_range wp))
+ ++ ")"
)
)
]
diff --git a/src/battlemap/www/style.css b/src/battlemap/www/style.css
index 17dd289..5ee6ef2 100644
--- a/src/battlemap/www/style.css
+++ b/src/battlemap/www/style.css
@@ -175,6 +175,17 @@
.battlemap-can-go-to-marker {background-color:rgba(0,0,0,0.5);}
.battlemap-can-attack-marker {background-color:rgba(0,0,0,0.7);}
+.battlemap-cant-defend-marker
+{
+ background:
+ repeating-linear-gradient(
+ -55deg,
+ rgba(0,0,0,0),
+ rgba(0,0,0,0) 3px,
+ rgba(0,0,0,0.7) 3px,
+ rgba(0,0,0,0.7) 7px
+ );
+}
.battlemap-character-icon-disabled
{