summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornsensfel <SpamShield0@noot-noot.org>2019-04-26 17:45:48 +0200
committernsensfel <SpamShield0@noot-noot.org>2019-04-26 17:45:48 +0200
commita7c6455285cfd3a671078be4e58df0afae07bf0c (patch)
treeb06531c2423e0fa6a1f60ace83b5e03a40067262 /src/roster/struct/rst_roster.erl
parentec6eec260d6383ae948505c3d42b3055ae3dd94c (diff)
...
Diffstat (limited to 'src/roster/struct/rst_roster.erl')
-rw-r--r--src/roster/struct/rst_roster.erl75
1 files changed, 68 insertions, 7 deletions
diff --git a/src/roster/struct/rst_roster.erl b/src/roster/struct/rst_roster.erl
index 90b2f98..ec28db0 100644
--- a/src/roster/struct/rst_roster.erl
+++ b/src/roster/struct/rst_roster.erl
@@ -10,7 +10,8 @@
roster,
{
owner :: binary(),
- characters :: orddict:orddict(non_neg_integer(), rst_character:type())
+ characters ::
+ orddict:orddict(non_neg_integer(), shr_character:unresolved())
}
).
@@ -30,7 +31,13 @@
get_character/2,
set_characters/2,
- set_character/3
+ set_character/3,
+
+ ataxia_set_characters/2,
+ ataxia_set_characters/3,
+
+ ataxia_set_character/3,
+ ataxia_set_character/4
]
).
@@ -63,24 +70,50 @@ get_owner (Roster) -> Roster#roster.owner.
(
type()
)
- -> orddict:orddict(non_neg_integer(), rst_character:type()).
+ -> orddict:orddict(non_neg_integer(), shr_character:unresolved()).
get_characters (Roster) -> Roster#roster.characters.
--spec get_character (non_neg_integer(), type()) -> rst_character:type().
+-spec get_character (non_neg_integer(), type()) -> shr_character:unresolved().
get_character (IX, Roster) -> orddict:fetch(IX, Roster#roster.characters).
-spec set_characters
(
- orddict:orddict(non_neg_integer(), rst_character:type()),
+ orddict:orddict(non_neg_integer(), shr_character:unresolved()),
type()
)
-> type().
set_characters (Characters, Roster) -> Roster#roster{ characters = Characters }.
+-spec ataxia_set_characters
+ (
+ orddict:orddict(non_neg_integer(), shr_character:unresolved()),
+ type()
+ )
+ -> {type(), ataxic:basic()}.
+ataxia_set_characters (Characters, Roster) ->
+ ataxia_set_characters(Characters, ataxic:constant(Characters), Roster).
+
+-spec ataxia_set_characters
+ (
+ orddict:orddict(non_neg_integer(), shr_character:unresolved()),
+ ataxic:basic(),
+ type()
+ )
+ -> {type(), ataxic:basic()}.
+ataxia_set_characters (Characters, CharactersAtaxiaUpdate, Roster) ->
+ {
+ set_characters(Characters, Roster),
+ ataxic:update_field
+ (
+ get_characters_field(),
+ CharactersAtaxiaUpdate
+ )
+ }.
+
-spec set_character
(
non_neg_integer(),
- rst_character:type(),
+ shr_character:unresolved(),
type()
)
-> type().
@@ -90,12 +123,40 @@ set_character (IX, Character, Roster) ->
characters = orddict:store(IX, Character, Roster#roster.characters)
}.
+-spec ataxia_set_character
+ (
+ non_neg_integer(),
+ shr_character:unresolved(),
+ type()
+ )
+ -> {type(), ataxic:basic()}.
+ataxia_set_character (IX, Character, Roster) ->
+ ataxia_set_character(IX, Character, ataxic:constant(Character), Roster).
+
+-spec ataxia_set_character
+ (
+ non_neg_integer(),
+ shr_character:unresolved(),
+ ataxic:basic(),
+ type()
+ )
+ -> {type(), ataxic:basic()}.
+ataxia_set_character (IX, Character, CharacterAtaxiaUpdate, Roster) ->
+ {
+ ataxia_set_character(IX, Character, Roster),
+ ataxic:update_field
+ (
+ get_characters_field(),
+ ataxic_sugar:update_orddict_element(IX, CharacterAtaxiaUpdate)
+ )
+ }.
+
-spec get_characters_field () -> non_neg_integer().
get_characters_field () -> #roster.characters.
-spec new (binary()) -> type().
new (Owner) ->
- NewChar = rst_character:new(),
+ NewChar = shr_character:new(),
#roster
{
owner = Owner,