summaryrefslogtreecommitdiff |
diff options
Diffstat (limited to 'src/battlemap/struct/bm_character.erl')
-rw-r--r-- | src/battlemap/struct/bm_character.erl | 290 |
1 files changed, 0 insertions, 290 deletions
diff --git a/src/battlemap/struct/bm_character.erl b/src/battlemap/struct/bm_character.erl deleted file mode 100644 index b0e19ed..0000000 --- a/src/battlemap/struct/bm_character.erl +++ /dev/null @@ -1,290 +0,0 @@ --module(bm_character). - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% TYPES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% --type id() :: non_neg_integer(). --type rank() :: ('optional' | 'target' | 'commander'). - --record -( - character, - { - id :: id(), - player_ix :: non_neg_integer(), - name :: binary(), - rank :: rank(), - icon :: binary(), - portrait :: binary(), - attributes :: sh_attributes:type(), - statistics :: sh_statistics:type(), - weapon_ids :: {sh_weapon:id(), sh_weapon:id()}, - armor_id :: sh_armor:id(), - location :: {non_neg_integer(), non_neg_integer()}, - current_health :: integer(), %% Negative integers let us reverse attacks. - is_active :: boolean(), - is_defeated :: boolean() - } -). - --opaque type() :: #character{}. - --export_type([type/0, rank/0, id/0]). -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% EXPORTS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%%%% Accessors --export -( - [ - get_id/1, - get_player_index/1, - get_name/1, - get_rank/1, - get_icon/1, - get_portrait/1, - get_attributes/1, - get_statistics/1, - get_weapon_ids/1, - get_armor_id/1, - get_location/1, - get_current_health/1, - get_is_alive/1, - get_is_active/1, - get_is_defeated/1, - - set_rank/2, - set_weapon_ids/2, - set_armor_id/2, - set_statistics/2, - set_location/2, - set_current_health/2, - set_is_active/2, - set_is_defeated/2, - - get_rank_field/0, - get_statistics_field/0, - get_weapons_field/0, - get_location_field/0, - get_current_health_field/0, - get_is_active_field/0, - get_is_defeated_field/0 - ] -). - --export -( - [ - random/5 - ] -). - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% LOCAL FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% --spec find_random_location - ( - non_neg_integer(), - non_neg_integer(), - list({non_neg_integer(), non_neg_integer()}) - ) - -> {non_neg_integer(), non_neg_integer()}. -find_random_location (BattlemapWidth, BattlemapHeight, ForbiddenLocations) -> - X = sh_roll:between(0, (BattlemapWidth - 1)), - Y = sh_roll:between(0, (BattlemapHeight - 1)), - - IsForbidden = lists:member({X, Y}, ForbiddenLocations), - - case IsForbidden of - true -> - find_random_location - ( - BattlemapWidth, - BattlemapHeight, - ForbiddenLocations - ); - - _ -> {X, Y} - end. - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% EXPORTED FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%%%% Accessors --spec get_id (type()) -> id(). -get_id (Char) -> Char#character.id. - --spec get_player_index (type()) -> non_neg_integer(). -get_player_index (Char) -> Char#character.player_ix. - --spec get_name (type()) -> binary(). -get_name (Char) -> Char#character.name. - --spec get_rank (type()) -> rank(). -get_rank (Char) -> Char#character.rank. - --spec get_icon (type()) -> binary(). -get_icon (Char) -> Char#character.icon. - --spec get_portrait (type()) -> binary(). -get_portrait (Char) -> Char#character.portrait. - --spec get_attributes (type()) -> sh_attributes:type(). -get_attributes (Char) -> Char#character.attributes. - --spec get_armor_id (type()) -> sh_armor:id(). -get_armor_id (Char) -> Char#character.armor_id. - --spec get_weapon_ids (type()) -> {sh_weapon:id(), sh_weapon:id()}. -get_weapon_ids (Char) -> Char#character.weapon_ids. - --spec get_statistics (type()) -> sh_statistics:type(). -get_statistics (Char) -> Char#character.statistics. - --spec get_location (type()) -> {non_neg_integer(), non_neg_integer()}. -get_location (Char) -> Char#character.location. - --spec get_current_health (type()) -> integer(). -get_current_health (Char) -> Char#character.current_health. - --spec get_is_alive (type()) -> boolean(). -get_is_alive (Char) -> - ( - (not Char#character.is_defeated) - and (Char#character.current_health > 0) - ). - --spec get_is_active (type()) -> boolean(). -get_is_active (Char) -> - ( - (not Char#character.is_defeated) - and Char#character.is_active - and get_is_alive(Char) - ). - --spec get_is_defeated (type()) -> boolean(). -get_is_defeated (Char) -> Char#character.is_defeated. - --spec set_rank (rank(), type()) -> type(). -set_rank (Rank, Char) -> - Char#character - { - rank = Rank - }. - --spec set_location - ( - {non_neg_integer(), non_neg_integer()}, - type() - ) - -> type(). -set_location (Location, Char) -> - Char#character - { - location = Location - }. - --spec set_current_health (integer(), type()) -> type(). -set_current_health (Health, Char) -> - Char#character - { - current_health = Health - }. - --spec set_is_active (boolean(), type()) -> type(). -set_is_active (Active, Char) -> - Char#character - { - is_active = Active - }. - --spec set_is_defeated (boolean(), type()) -> type(). -set_is_defeated (Defeated, Char) -> - Char#character - { - is_defeated = Defeated - }. - --spec set_armor_id (sh_armor:id(), type()) -> type(). -set_armor_id (ArmorID, Char) -> - Char#character - { - armor_id = ArmorID - }. - --spec set_weapon_ids ({sh_weapon:id(), sh_weapon:id()}, type()) -> type(). -set_weapon_ids (WeaponIDs, Char) -> - Char#character - { - weapon_ids = WeaponIDs - }. - --spec set_statistics - ( - sh_statistics:type(), - type() - ) - -> type(). -set_statistics (Stats, Char) -> - Char#character - { - statistics = Stats - }. - -%%%% Utils --spec random - ( - non_neg_integer(), - non_neg_integer(), - non_neg_integer(), - non_neg_integer(), - list({non_neg_integer(), non_neg_integer()}) - ) - -> type(). -random (ID, PlayerIX, BattlemapWidth, BattlemapHeight, ForbiddenLocations) -> - Location = - find_random_location(BattlemapWidth, BattlemapHeight, ForbiddenLocations), - WeaponIDs = {sh_weapon:random_id(), sh_weapon:random_id()}, - ArmorID = sh_armor:random_id(), - Attributes = sh_attributes:random(), - Statistics = sh_statistics:new(Attributes, WeaponIDs, ArmorID), - IDAsListString = integer_to_list(ID), - IDAsBinaryString = list_to_binary(IDAsListString), - - #character - { - id = ID, - player_ix = PlayerIX, - name = list_to_binary("Char" ++ IDAsListString), - rank = - if - ((ID rem 8) == 0) -> commander; - ((ID rem 3) == 0) -> target; - true -> optional - end, - icon = IDAsBinaryString, - portrait = IDAsBinaryString, - attributes = Attributes, - weapon_ids = WeaponIDs, - armor_id = ArmorID, - statistics = Statistics, - location = Location, - current_health = sh_statistics:get_health(Statistics), - is_active = false, - is_defeated = false - }. - --spec get_rank_field() -> non_neg_integer(). -get_rank_field () -> #character.rank. --spec get_statistics_field() -> non_neg_integer(). -get_statistics_field () -> #character.statistics. --spec get_weapons_field() -> non_neg_integer(). -get_weapons_field () -> #character.weapon_ids. --spec get_location_field() -> non_neg_integer(). -get_location_field () -> #character.location. --spec get_current_health_field() -> non_neg_integer(). -get_current_health_field () -> #character.current_health. --spec get_is_active_field() -> non_neg_integer(). -get_is_active_field () -> #character.is_active. --spec get_is_defeated_field() -> non_neg_integer(). -get_is_defeated_field () -> #character.is_defeated. |