-- Copyright (c) 2024 - Ognjen 'xolatile' Milan Robovic -- -- GNU General Public Licence (version 3 or later) with core, ui; package body attribute is ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ procedure configure is procedure define (index : in enumeration; minimum, maximum : in integer; name, text : in string) is begin description (index).base := (minimum, maximum); description (index).name := core.unbound (name); description (index).text := core.unbound (text); end define; -- structure : ui.structure; -- time : float := 0.0; begin time := core.time; -- core.echo (core.comment, "Configuring" & count'image & " attribute components..."); -- description := new description_array (enumeration'range); icon := new icon_array (enumeration'range); -- define (offense, 1, 12, "Offense", "Offense attribute determines your damage modifier when attacking."); define (defense, 1, 12, "Defense", "D-FENS attribute determines how much damage your reflect and receive."); define (wisdom, 1, 12, "Wisdom", "Wisdom attribute determines how much mana your chad has."); define (stamina, 1, 12, "Stamina", "Stamina attribute determines how fast you recover from being wounded."); define (speed, 1, 12, "Speed", "Speed attribute determines how far you can walk per turn."); define (reach, 1, 12, "Reach", "Reach attribute determines your range modifier when shooting or casting."); -- structure.title := "Attribute Menu "; structure.toggle := core.signal_a; structure.show := false; structure.center := false; structure.resize := true; structure.x := 60; structure.y := 100; structure.gui_n := count; -- ui.add_structure (data => structure); -- for index in enumeration loop icon (index) := core.import_sprite (core.folder & "/icon/attribute/" & core.lowercase (enumeration'image (index)) & ".png", 1, 1); -- ui.add_structure_button (icon (index), description (index).name, description (index).text); end loop; -- core.echo (core.success, "Successfully configured attribute information in" & natural'image (natural (1_000_000.0 * (core.time - time))) & " microseconds."); end configure; ------------------------------------------------------------------------------------------ procedure draw_points (data : in points; x, y : in integer) is move_x : integer := x; begin for index in enumeration loop ui.draw_icon (icon (index), core.bound (description (index).text), move_x, y); ui.draw_text_box (move_x, y + core.icon, core.icon, core.icon); ui.write (data (index).value'image, move_x + 4, y + core.icon + 8, (255, 255, 255, 255), 15, true); -- move_x := move_x + core.icon; end loop; end draw_points; ------------------------------------------------------------------------------------------ procedure save_points (here : in core.io.file_type; data : in points) is begin for index in enumeration loop core.save_point (here, data (index)); end loop; end save_points; ------------------------------------------------------------------------------------------ procedure load_points (here : in core.io.file_type; data : out points) is begin for index in enumeration loop core.load_point (here, data (index)); end loop; end load_points; ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ end attribute;