xhads/source/construction.ads

161 lines
10 KiB
Ada

-- Copyright (c) 2024 - Ognjen 'xolatile' Milan Robovic
--
-- GNU General Public Licence (version 3 or later)
with core, effect, resource, faction;
package construction is
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
type codex is (
boar_glen, enchanters_hollow, hovel, nomad_tent, rogue_cavern, thatched_hut,
trolls_bridge, crystalized_cave, frozen_cliffs, magic_forest, pyramid, sulfurous_lair,
treetop_tower,
--
guardhouse, watchtower, griffin_tower, barracks, monastery, training_grounds,
holy_portal,
--
goblin_shed, wolf_pen, orc_tower, ogre_fort, cliff_nest, cyclops_cave,
behemoth_lair,
--
imp_crucible, hall_of_sins, kennels, demon_gate, hell_hole, fire_lake,
forsaken_palace,
--
workshop, parapet, golem_factory, mage_tower, altar_of_wishes, golden_pavilion,
cloud_temple,
--
little_lantern, air_shrine, water_shrine, fire_shrine, earth_shrine, magic_shrine,
flamewhirl,
--
cursed_shrine, graveyard, tomb_of_souls, estate, mausoleum, hall_of_darkness,
bone_vault,
--
centaur_stables, dwarf_cottage, homestead, enchanted_spring, dendroid_arches, unicorn_glades,
dragon_cliffs,
--
gnoll_hut, lizard_den, dragonfly_hive, basilisk_pit, gorgon_lair, wyvern_nest,
hydra_pond,
--
warren, harpy_loft, pillar_of_eyes, chappel_of_voice, labyrinth, manticore_lair,
dragon_cave
);
------------------------------------------------------------------------------------------
subtype grade_limit is natural range 0 .. 3;
subtype level_limit is natural range 0 .. 6;
type information is
record
name : core.short_string;
kind : faction.codex;
level : level_limit;
grade : grade_limit;
price : resource.points;
frames : integer;
evoke : effect.codex;
end record;
------------------------------------------------------------------------------------------
count : constant natural := codex'pos (codex'last) + 1;
trait : constant array (codex) of information := (
("Boar Glen ", faction.neutral, 1, 1, ( 90, others => 0), 1, effect.none),
("Enchanter's Hollow ", faction.neutral, 1, 1, (120, others => 0), 1, effect.none),
("Hovel ", faction.neutral, 2, 1, (180, others => 0), 1, effect.none),
("Nomad Tent ", faction.neutral, 3, 1, (240, others => 0), 1, effect.none),
("Rogue Cavern ", faction.neutral, 3, 1, (180, others => 0), 1, effect.none),
("Thatched Hut ", faction.neutral, 4, 1, (300, others => 0), 3, effect.none),
("Troll's Bridge ", faction.neutral, 5, 1, (360, others => 0), 1, effect.none),
("Crystalized Cave ", faction.neutral, 1, 1, ( 90, others => 0), 1, effect.none),
("Frozen Cliffs ", faction.neutral, 1, 1, (120, others => 0), 1, effect.none),
("Magic Forest ", faction.neutral, 2, 1, (180, others => 0), 3, effect.none),
("Pyramid ", faction.neutral, 3, 1, (240, others => 0), 1, effect.none),
("Sulfurous Lair ", faction.neutral, 3, 1, (180, others => 0), 1, effect.none),
("Treetop Tower ", faction.neutral, 4, 1, (300, others => 0), 1, effect.none),
--
("Guardhouse ", faction.castle, 1, 1, ( 90, others => 0), 1, effect.none),
("Watchtower ", faction.castle, 1, 1, (120, others => 0), 1, effect.none),
("Griffin Tower ", faction.castle, 2, 1, (180, others => 0), 1, effect.none),
("Barracks ", faction.castle, 3, 1, (240, others => 0), 1, effect.none),
("Monastery ", faction.castle, 3, 1, (180, others => 0), 1, effect.none),
("Training Grounds ", faction.castle, 4, 1, (300, others => 0), 1, effect.none),
("Holy Portal ", faction.castle, 5, 1, (360, others => 0), 1, effect.none),
--
("Goblin Shed ", faction.stronghold, 1, 1, ( 90, others => 0), 1, effect.none),
("Wolf Pen ", faction.stronghold, 1, 1, (120, others => 0), 1, effect.none),
("Orc Tower ", faction.stronghold, 2, 1, (180, others => 0), 1, effect.none),
("Ogre Fort ", faction.stronghold, 3, 1, (240, others => 0), 1, effect.none),
("Cliff Nest ", faction.stronghold, 3, 1, (180, others => 0), 1, effect.none),
("Cyclops Cave ", faction.stronghold, 4, 1, (300, others => 0), 1, effect.none),
("Behemoth Lair ", faction.stronghold, 5, 1, (360, others => 0), 3, effect.none),
--
("Imp Crucible ", faction.inferno, 5, 1, (360, others => 0), 3, effect.none),
("Hall of Sins ", faction.inferno, 5, 1, (360, others => 0), 3, effect.none),
("Kennels ", faction.inferno, 5, 1, (360, others => 0), 1, effect.none),
("Demon Gate ", faction.inferno, 5, 1, (360, others => 0), 1, effect.none),
("Hell Hole ", faction.inferno, 5, 1, (360, others => 0), 3, effect.none),
("Fire Lake ", faction.inferno, 5, 1, (360, others => 0), 3, effect.none),
("Forsaken Palace ", faction.inferno, 5, 1, (360, others => 0), 1, effect.none),
--
("Workshop ", faction.tower, 5, 1, (360, others => 0), 3, effect.none),
("Parapet ", faction.tower, 5, 1, (360, others => 0), 1, effect.none),
("Golem Factory ", faction.tower, 5, 1, (360, others => 0), 3, effect.none),
("Mage Tower ", faction.tower, 5, 1, (360, others => 0), 1, effect.none),
("Altar of Wishes ", faction.tower, 5, 1, (360, others => 0), 1, effect.none),
("Golden Pavilion ", faction.tower, 5, 1, (360, others => 0), 1, effect.none),
("Cloud Temple ", faction.tower, 5, 1, (360, others => 0), 1, effect.none),
--
("Little Lantern ", faction.conflux, 5, 1, (360, others => 0), 3, effect.none),
("Air Shrine ", faction.conflux, 5, 1, (360, others => 0), 3, effect.none),
("Water Shrine ", faction.conflux, 5, 1, (360, others => 0), 3, effect.none),
("Fire Shrine ", faction.conflux, 5, 1, (360, others => 0), 3, effect.none),
("Earth Shrine ", faction.conflux, 5, 1, (360, others => 0), 3, effect.none),
("Magic Shrine ", faction.conflux, 5, 1, (360, others => 0), 1, effect.none),
("Flamewhirl ", faction.conflux, 5, 1, (360, others => 0), 3, effect.none),
--
("Cursed Shrine ", faction.necropolis, 1, 1, ( 90, others => 0), 1, effect.none),
("Graveyard ", faction.necropolis, 1, 1, (120, others => 0), 1, effect.none),
("Tomb of Souls ", faction.necropolis, 2, 1, (180, others => 0), 1, effect.none),
("Estate ", faction.necropolis, 3, 1, (240, others => 0), 1, effect.none),
("Mausoleum ", faction.necropolis, 3, 1, (180, others => 0), 1, effect.none),
("Hall of Darkness ", faction.necropolis, 4, 1, (300, others => 0), 1, effect.none),
("Bone Vault ", faction.necropolis, 5, 1, (360, others => 0), 1, effect.none),
--
("Centaur Stables ", faction.rampart, 5, 1, (360, others => 0), 1, effect.none),
("Dwarf Cottage ", faction.rampart, 5, 1, (360, others => 0), 1, effect.none),
("Homestead ", faction.rampart, 5, 1, (360, others => 0), 1, effect.none),
("Enchanted Spring ", faction.rampart, 5, 1, (360, others => 0), 3, effect.none),
("Dendroid Arches ", faction.rampart, 5, 1, (360, others => 0), 1, effect.none),
("Unicorn Glades ", faction.rampart, 5, 1, (360, others => 0), 1, effect.none),
("Dragon Cliffs ", faction.rampart, 5, 1, (360, others => 0), 1, effect.none),
--
("Gnoll Hut ", faction.fortress, 5, 1, (360, others => 0), 1, effect.none),
("Lizard Den ", faction.fortress, 5, 1, (360, others => 0), 1, effect.none),
("Dragonfly Hive ", faction.fortress, 5, 1, (360, others => 0), 3, effect.none),
("Basilisk Pit ", faction.fortress, 5, 1, (360, others => 0), 1, effect.none),
("Gorgon Lair ", faction.fortress, 5, 1, (360, others => 0), 1, effect.none),
("Wyvern Next ", faction.fortress, 5, 1, (360, others => 0), 1, effect.none),
("Hydra Pond ", faction.fortress, 5, 1, (360, others => 0), 1, effect.none),
--
("Warren ", faction.dungeon, 5, 1, (360, others => 0), 1, effect.none),
("Harpy Loft ", faction.dungeon, 5, 1, (360, others => 0), 1, effect.none),
("Pillar of Eyes ", faction.dungeon, 5, 1, (360, others => 0), 1, effect.none),
("Chappel of Voice ", faction.dungeon, 5, 1, (360, others => 0), 1, effect.none),
("Labyrinth ", faction.dungeon, 5, 1, (360, others => 0), 1, effect.none),
("Manticore Lair ", faction.dungeon, 5, 1, (360, others => 0), 1, effect.none),
("Dragon Cave ", faction.dungeon, 5, 1, (360, others => 0), 1, effect.none)
);
------------------------------------------------------------------------------------------
procedure configure;
procedure draw (index : in codex; x, y : in integer);
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
end construction;