108 lines
5.8 KiB
Ada
108 lines
5.8 KiB
Ada
-- Copyright (c) 2024 - Ognjen 'xolatile' Milan Robovic
|
|
--
|
|
-- GNU General Public Licence (version 3 or later)
|
|
|
|
with core, ui, ai;
|
|
|
|
package body ai is
|
|
|
|
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
|
|
|
function actor_is_envious return boolean is begin return (actor (active).soul and envy) = envy; end actor_is_envious;
|
|
function actor_is_glutton return boolean is begin return (actor (active).soul and gluttony) = gluttony; end actor_is_glutton;
|
|
function actor_is_greedy return boolean is begin return (actor (active).soul and greed) = greed; end actor_is_greedy;
|
|
function actor_is_slutty return boolean is begin return (actor (active).soul and lust) = lust; end actor_is_slutty;
|
|
function actor_is_proud return boolean is begin return (actor (active).soul and pride) = pride; end actor_is_proud;
|
|
function actor_is_lazy return boolean is begin return (actor (active).soul and sloth) = sloth; end actor_is_lazy;
|
|
function actor_is_angry return boolean is begin return (actor (active).soul and wrath) = wrath; end actor_is_angry;
|
|
function actor_is_thirsty return boolean is begin return (actor (active).mind and thirst) = thirst; end actor_is_thirsty;
|
|
function actor_is_hungry return boolean is begin return (actor (active).mind and hunger) = hunger; end actor_is_hungry;
|
|
function actor_is_tired return boolean is begin return (actor (active).mind and fatigue) = fatigue; end actor_is_tired;
|
|
function actor_is_lonely return boolean is begin return (actor (active).mind and solitude) = solitude; end actor_is_lonely;
|
|
function actor_is_healthy return boolean is begin return (actor (active).mind and health) = health; end actor_is_healthy;
|
|
function actor_is_happy return boolean is begin return (actor (active).mind and joy) = joy; end actor_is_happy;
|
|
function actor_is_bored return boolean is begin return (actor (active).mind and boredom) = boredom; end actor_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 actor_is_bored (i) and actor_is_healthy (i) and not actor_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
|
|
null;
|
|
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);
|
|
--~for index in 1 .. actor_count loop
|
|
--~core.write ("Bot" & index'image, x + offset + 0, y * index + offset, ui.glyphs (ui.active));
|
|
--~core.write ("T =" & actor_is_thirsty (index)'image, x + offset + 120, y * index + offset, ui.glyphs (ui.active));
|
|
--~core.write ("H =" & actor_is_hungry (index)'image, x + offset + 240, y * index + offset, ui.glyphs (ui.active));
|
|
--~end loop;
|
|
null;
|
|
end review;
|
|
|
|
------------------------------------------------------------------------------------------
|
|
|
|
procedure view_actor_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);
|
|
--
|
|
active := index;
|
|
--
|
|
ui.write (male_name_array (actor (index).name), x + offset, y + offset);
|
|
--
|
|
ui.write ("Envious = " & actor_is_envious'image, x + offset, y + offset + 32);
|
|
ui.write ("Glutton = " & actor_is_glutton'image, x + offset, y + offset + 64);
|
|
ui.write ("Greedy = " & actor_is_greedy'image, x + offset, y + offset + 96);
|
|
ui.write ("Slutty = " & actor_is_slutty'image, x + offset, y + offset + 128);
|
|
ui.write ("Proud = " & actor_is_proud'image, x + offset, y + offset + 160);
|
|
ui.write ("Lazy = " & actor_is_lazy'image, x + offset, y + offset + 192);
|
|
ui.write ("Angry = " & actor_is_angry'image, x + offset, y + offset + 224);
|
|
ui.write ("Thirsty = " & actor_is_thirsty'image, x + offset, y + offset + 256);
|
|
ui.write ("Hungry = " & actor_is_hungry'image, x + offset, y + offset + 288);
|
|
ui.write ("Tired = " & actor_is_tired'image, x + offset, y + offset + 320);
|
|
ui.write ("Lonely = " & actor_is_lonely'image, x + offset, y + offset + 352);
|
|
ui.write ("Healthy = " & actor_is_healthy'image, x + offset, y + offset + 384);
|
|
ui.write ("Happy = " & actor_is_happy'image, x + offset, y + offset + 416);
|
|
ui.write ("Bored = " & actor_is_bored'image, x + offset, y + offset + 448);
|
|
end view_actor_state;
|
|
|
|
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
|
|
|
end ai;
|