summaryrefslogtreecommitdiff |
diff options
Diffstat (limited to 'src/roster/struct/rst_roster.erl')
-rw-r--r-- | src/roster/struct/rst_roster.erl | 75 |
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, |