xhads/source/ai.adb
2024-03-24 11:49:29 -04:00

102 lines
6.4 KiB
Ada

with core, ui, ai;
use ai;
package body ai is
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
function agent_is_envious (index : in natural) return boolean is begin return (agent (index).soul and envy) = envy; end agent_is_envious;
function agent_is_glutton (index : in natural) return boolean is begin return (agent (index).soul and gluttony) = gluttony; end agent_is_glutton;
function agent_is_greedy (index : in natural) return boolean is begin return (agent (index).soul and greed) = greed; end agent_is_greedy;
function agent_is_slutty (index : in natural) return boolean is begin return (agent (index).soul and lust) = lust; end agent_is_slutty;
function agent_is_proud (index : in natural) return boolean is begin return (agent (index).soul and pride) = pride; end agent_is_proud;
function agent_is_lazy (index : in natural) return boolean is begin return (agent (index).soul and sloth) = sloth; end agent_is_lazy;
function agent_is_angry (index : in natural) return boolean is begin return (agent (index).soul and wrath) = wrath; end agent_is_angry;
function agent_is_thirsty (index : in natural) return boolean is begin return (agent (index).mind and thirst) = thirst; end agent_is_thirsty;
function agent_is_hungry (index : in natural) return boolean is begin return (agent (index).mind and hunger) = hunger; end agent_is_hungry;
function agent_is_tired (index : in natural) return boolean is begin return (agent (index).mind and fatigue) = fatigue; end agent_is_tired;
function agent_is_lonely (index : in natural) return boolean is begin return (agent (index).mind and solitude) = solitude; end agent_is_lonely;
function agent_is_healthy (index : in natural) return boolean is begin return (agent (index).mind and health) = health; end agent_is_healthy;
function agent_is_happy (index : in natural) return boolean is begin return (agent (index).mind and joy) = joy; end agent_is_happy;
function agent_is_bored (index : in natural) return boolean is begin return (agent (index).mind and boredom) = boredom; end agent_is_bored;
------------------------------------------------------------------------------------------
procedure action_none is begin null; end action_none;
procedure action_walk is begin null; end action_walk;
procedure action_talk is begin null; end action_talk;
procedure action_find is begin null; end action_find;
------------------------------------------------------------------------------------------
procedure serialize (i : in natural) is
begin
if agent_is_bored (i) and agent_is_healthy (i) and not agent_is_hungry (i) then
null;
end if;
end serialize;
------------------------------------------------------------------------------------------
procedure configure is
begin
core.echo (core.failure, "No AI yet folk!");
end configure;
------------------------------------------------------------------------------------------
procedure synchronize is
begin
core.echo (core.failure, "No AI yet folk!");
end synchronize;
------------------------------------------------------------------------------------------
procedure review is
width : integer := 600;
height : integer := 300;
offset : integer := 32;
x : integer := (core.window_width - width) / 2;
y : integer := (core.window_height - height) / 2;
begin
ui.draw_tiny_menu (x, y, width, height, true);
for index in 1 .. agent_count
loop
core.write ("Bot" & integer'image (index), x + offset + 0, y * index + offset, ui.glyphs (ui.active));
core.write ("T =" & boolean'image (agent_is_thirsty (index)), x + offset + 120, y * index + offset, ui.glyphs (ui.active));
core.write ("H =" & boolean'image (agent_is_hungry (index)), x + offset + 240, y * index + offset, ui.glyphs (ui.active));
end loop;
end review;
procedure view_agent_state (index : in integer) is
width : integer := 320;
height : integer := 544;
offset : integer := 32;
x : integer := (core.window_width - width) / 2;
y : integer := (core.window_height - height) / 2;
begin
ui.draw_tiny_menu (x, y, width, height, true);
--
core.write (male_name_array (agent (index).name), x + offset, y + offset, ui.glyphs (ui.active));
--
core.write ("Envious =" & boolean'image (agent_is_envious (index)), x + offset, y + offset + 32, ui.glyphs (ui.active));
core.write ("Glutton =" & boolean'image (agent_is_glutton (index)), x + offset, y + offset + 64, ui.glyphs (ui.active));
core.write ("Greedy =" & boolean'image (agent_is_greedy (index)), x + offset, y + offset + 96, ui.glyphs (ui.active));
core.write ("Slutty =" & boolean'image (agent_is_slutty (index)), x + offset, y + offset + 128, ui.glyphs (ui.active));
core.write ("Proud =" & boolean'image (agent_is_proud (index)), x + offset, y + offset + 160, ui.glyphs (ui.active));
core.write ("Lazy =" & boolean'image (agent_is_lazy (index)), x + offset, y + offset + 192, ui.glyphs (ui.active));
core.write ("Angry =" & boolean'image (agent_is_angry (index)), x + offset, y + offset + 224, ui.glyphs (ui.active));
core.write ("Thirsty =" & boolean'image (agent_is_thirsty (index)), x + offset, y + offset + 256, ui.glyphs (ui.active));
core.write ("Hungry =" & boolean'image (agent_is_hungry (index)), x + offset, y + offset + 288, ui.glyphs (ui.active));
core.write ("Tired =" & boolean'image (agent_is_tired (index)), x + offset, y + offset + 320, ui.glyphs (ui.active));
core.write ("Lonely =" & boolean'image (agent_is_lonely (index)), x + offset, y + offset + 352, ui.glyphs (ui.active));
core.write ("Healthy =" & boolean'image (agent_is_healthy (index)), x + offset, y + offset + 384, ui.glyphs (ui.active));
core.write ("Happy =" & boolean'image (agent_is_happy (index)), x + offset, y + offset + 416, ui.glyphs (ui.active));
core.write ("Bored =" & boolean'image (agent_is_bored (index)), x + offset, y + offset + 448, ui.glyphs (ui.active));
end view_agent_state;
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
end ai;