| summaryrefslogtreecommitdiff | 
diff options
Diffstat (limited to 'src/roster-editor/src/Struct/Model.elm')
| -rw-r--r-- | src/roster-editor/src/Struct/Model.elm | 83 | 
1 files changed, 36 insertions, 47 deletions
| diff --git a/src/roster-editor/src/Struct/Model.elm b/src/roster-editor/src/Struct/Model.elm index 5ed5fbd..b8886aa 100644 --- a/src/roster-editor/src/Struct/Model.elm +++ b/src/roster-editor/src/Struct/Model.elm @@ -2,8 +2,8 @@ module Struct.Model exposing     (        Type,        new, -      add_character_record, -      enable_character_records, +      add_unresolved_character, +      resolve_characters,        update_character,        update_character_fun,        save_character, @@ -32,13 +32,12 @@ import Util.Array  import BattleCharacters.Struct.Armor  import BattleCharacters.Struct.Portrait  import BattleCharacters.Struct.Weapon +import BattleCharacters.Struct.Glyph +import BattleCharacters.Struct.GlyphBoard  -- Local Module ----------------------------------------------------------------  import Struct.Character -import Struct.CharacterRecord  import Struct.Error -import Struct.Glyph -import Struct.GlyphBoard  import Struct.HelpRequest  import Struct.Inventory  import Struct.UI @@ -51,7 +50,7 @@ type alias Type =        flags : Struct.Flags.Type,        help_request : Struct.HelpRequest.Type,        characters : (Array.Array Struct.Character.Type), -      stalled_characters : (List Struct.CharacterRecord.Type), +      unresolved_characters : (List Struct.Character.Unresolved),        weapons :           (Dict.Dict              BattleCharacters.Struct.Weapon.Ref @@ -82,40 +81,26 @@ type alias Type =  --------------------------------------------------------------------------------  -- LOCAL -----------------------------------------------------------------------  -------------------------------------------------------------------------------- -add_character : Struct.CharacterRecord.Type -> Type -> Type -add_character char_rec model = -   let index = (Struct.CharacterRecord.get_index char_rec) in +add_character_from_unresolved : Struct.Character.Unresolved -> Type -> Type +add_character_from_unresolved char_ref model = +   let +      char = +         (Struct.Character.resolve +            (BattleCharacters.Struct.Equipment.resolve +               (\e -> (Dict.get e model.weapons)) +               (\e -> (Dict.get e model.armors)) +               (\e -> (Dict.get e model.portraits)) +               (\e -> (Dict.get e model.glyph_boards)) +               (\e -> (Dict.get e model.glyphs)) +            ) +            char_ref +         ) +   in        {model |           characters =              (Array.push -               (Struct.Character.new -                  index -                  (Struct.CharacterRecord.get_name char_rec) -                  (Dict.get -                     (Struct.CharacterRecord.get_portrait_id char_rec) -                     model.portraits -                  ) -                  (Dict.get -                     (Struct.CharacterRecord.get_main_weapon_id char_rec) -                     model.weapons -                  ) -                  (Dict.get -                     (Struct.CharacterRecord.get_secondary_weapon_id char_rec) -                     model.weapons -                  ) -                  (Dict.get -                     (Struct.CharacterRecord.get_armor_id char_rec) -                     model.armors -                  ) -                  (Dict.get -                     (Struct.CharacterRecord.get_glyph_board_id char_rec) -                     model.glyph_boards -                  ) -                  (List.map -                     (\e -> (Dict.get e model.glyphs)) -                     (Struct.CharacterRecord.get_glyph_ids char_rec) -                  ) -               ) +               (Struct.Character.get_index char) +               char                 model.characters              )        } @@ -143,7 +128,7 @@ new flags =        flags = flags,        help_request = Struct.HelpRequest.None,        characters = (Array.empty), -      stalled_characters = [], +      unresolved_characters = [],        weapons = (Dict.empty),        armors = (Dict.empty),        glyphs = (Dict.empty), @@ -175,20 +160,24 @@ new flags =        ui = (Struct.UI.default)     } -add_character_record : Struct.CharacterRecord.Type -> Type -> Type -add_character_record char model = +add_unresolved_character : Struct.Character.Unresolved -> Type -> Type +add_unresolved_character char_ref model =     if (has_loaded_data model) -   then (add_character char model) -   else {model | stalled_characters = (char :: model.stalled_characters)} +   then +      (add_character_from_unresolved char_ref model) +   else +      {model | +         unresolved_characters = (char_ref :: model.unresolved_characters) +      } -enable_character_records : Type -> Type -enable_character_records model = +resolve_all_characters : Type -> Type +resolve_all_characters model =     if (has_loaded_data model)     then        (List.foldr -         (add_character) -         {model | stalled_characters = []} -         model.stalled_characters +         (add_character_from_unresolved) +         {model | unresolved_characters = []} +         model.unresolved_characters        )     else        model | 


