diff --git a/.gitignore b/.gitignore index b593da5..0a437a6 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,4 @@ source/*.o source/*.ali xhads -sprite/* song/* diff --git a/source/construction.ads b/source/construction.ads index b03e5da..06378c4 100644 --- a/source/construction.ads +++ b/source/construction.ads @@ -9,49 +9,15 @@ 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 + a, b, c, d, e, f ); ------------------------------------------------------------------------------------------ - 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; @@ -62,91 +28,12 @@ package construction is 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) + ("A ", faction.dwarf, (others => 0), 1, effect.none), + ("B ", faction.fairy, (others => 0), 1, effect.none), + ("C ", faction.gnoll, (others => 0), 1, effect.none), + ("D ", faction.goblin, (others => 0), 1, effect.none), + ("E ", faction.imp, (others => 0), 1, effect.none), + ("F ", faction.kobold, (others => 0), 1, effect.none) ); ------------------------------------------------------------------------------------------ diff --git a/source/core.adb b/source/core.adb index d1a3a79..243b332 100644 --- a/source/core.adb +++ b/source/core.adb @@ -210,6 +210,10 @@ package body core is this.frames := frames; this.states := states; -- + if this.width = 0 or this.height = 0 then + echo (failure, "./" & file_path); + end if; + -- return this; end import_sprite; @@ -285,7 +289,7 @@ package body core is procedure move (data : in sprite; x, y, frame, state : in integer) is begin - render_sprite (data.index, x, y, state * data.width, (animation_time mod frame) * data.height, data.width, data.height); + render_sprite (data.index, x, y, (animation_time mod frame) * data.width, state * data.height, data.width, data.height); end move; ------------------------------------------------------------------------------------------ diff --git a/source/core.ads b/source/core.ads index 05f743e..e093834 100644 --- a/source/core.ads +++ b/source/core.ads @@ -69,7 +69,7 @@ package core is ------------------------------------------------------------------------------------------ icon : constant natural := 32; - base : constant natural := 32; + base : constant natural := 16; gameplay_framerate : constant natural := 60; animation_framerate : constant natural := 6; @@ -94,11 +94,13 @@ package core is gameplay_time : natural := 0; animation_time : natural := 0; + camera : vector := (0, 0); + + zoom : boolean := false; + hexagon_grid_sprite : sprite; hexagon_fill_sprite : sprite; - camera : vector := (0, 0); - text_box : volatile; ------------------------------------------------------------------------------------------ diff --git a/source/item.ads b/source/item.ads index a94be77..bdce790 100644 --- a/source/item.ads +++ b/source/item.ads @@ -14,29 +14,7 @@ package item is ); type codex is ( - admirals_hat, ambassadors_sash, undertakers_amulet, angel_feather_arrows, angelic_alliance, angel_wings, - armageddons_blade, armor_of_the_damned, armor_of_wonder, arms_of_legion, badge_of_courage, bird_of_perception, - blackshard, boots_of_levitation, boots_of_polarity, boots_of_speed, elven_bow, sharpshooters_bow, - unicorns_string, brimstone_armour, wooden_breastplate, gnolls_buckler, cape_of_conjuring, cape_of_velocity, - cards_of_prophecy, celestial_necklace, centaurs_axe, charm_of_mana, balanced_cloak, clover_of_fortune, - collar_of_conjuring, cornucopia, crest_of_valor, crown_of_dragontooth, crown_of_magician, dead_mans_boots, - diplomats_ring, dragonbone_greaves, dragon_scale_armor, dragon_scale_shield, dragon_wing_tabard, elixir_of_life, - emblem_of_cognizance, endless_bag_of_gold, endless_purse_of_gold, endless_sack_of_gold, equestrians_gloves, everflowing_crystal, - vial_of_mercury, ring_of_sulfur, interference_choker, glyph_of_gallantry, golden_bow, greater_gnolls_flail, - head_of_legion, hellstorm_helmet, helm_of_chaos, helm_of_heavens, helm_of_the_alabaster, evil_hour, - cart_of_lumber, cart_of_ore, ladybird_of_luck, legs_of_legion, shield_of_courage, loins_of_legion, - mystic_orb_of_mana, dragonteeth_necklace, ocean_guidance, necklace_of_swiftness, ogres_club_of_havoc, orb_of_driving_rain, - orb_of_inhibition, orb_of_silt, orb_of_hell_tempest, orb_of_the_firmament, orb_of_vulnerability, pendant_of_courage, - pendant_of_death, pendant_of_dispassion, pendant_of_free_will, pendant_of_holiness, pendant_of_life, pendant_of_negativity, - pendant_of_renderer, pendant_of_memory, dragon_father_armour, quiet_eye, recanters_cloak, flammenwerfer, - rib_cage, ring_of_conjuring, ring_of_infinite_gems, ring_of_life, ring_of_the_magi, ring_of_the_wayfarer, - ring_of_vitality, sandals_of_the_saint, basilisk_chestplate, sea_captains_hat, sentinels_shield, shackles_of_war, - fortrans_shield, oakenshield, undead_shield, skull_helmet, speculum, spellbinders_hat, - sphere_of_permanence, spirit_of_oppression, spyglass, statesmans_medal, statue_of_legion, cs_ring, - stoic_watchman, counterpoise, sword_of_hellfire, adas_claymore, talisman_of_mana, targ, - thunder_helmet, titans_cuirass, titans_gladius, titans_thunder, tome_of_air, tome_of_earth, - tome_of_fire, tome_of_water, torso_of_legion, cyclops_tunic, vampires_cowl, vial_of_dragon_blood, - vial_of_lifeblood, wizards_well + a, b ); ------------------------------------------------------------------------------------------ @@ -56,140 +34,8 @@ package item is count : constant natural := codex'pos (codex'last) + 1; trait : constant array (codex) of information := ( - ("Admiral's Hat ", head, 0, effect.none), - ("Ambassador's Sash ", full_body, 0, effect.none), - ("Undertaker's Amulet ", neck, 1, effect.none), - ("Angel Feather Arrows ", bag, 1, effect.none), - ("Angelic Alliance ", main_hand, 2, effect.none), - ("Angel Wings ", full_body, 2, effect.none), - ("Armageddon's Blade ", main_hand, 3, effect.none), - ("Armor of The Damned ", chest, 3, effect.none), - ("Armor of Wonder ", chest, 0, effect.none), - ("Arms of Legion ", bag, 0, effect.none), - ("Badge of Courage ", bag, 1, effect.none), - ("Bird of Perception ", bag, 1, effect.none), - ("Blackshard ", main_hand, 2, effect.none), - ("Boot's of Levitation ", feet, 2, effect.none), - ("Boot's of Polarity ", feet, 3, effect.none), - ("Boot's of Speed ", feet, 3, effect.none), - ("Elven Bow ", off_hand, 0, effect.none), - ("Sharpshooter's Bow ", off_hand, 0, effect.none), - ("Unicorn's String ", bag, 1, effect.none), - ("Brimstone Armour ", chest, 1, effect.none), - ("Wooden Breastplate ", chest, 2, effect.none), - ("Gnoll's Buckler ", off_hand, 2, effect.none), - ("Cape of Conjuring ", full_body, 3, effect.none), - ("Cape of Velocity ", full_body, 3, effect.none), - ("Card's of Prophecy ", bag, 0, effect.none), - ("Celestial Necklace ", neck, 0, effect.none), - ("Centaur's Axe ", main_hand, 1, effect.none), - ("Charm of Mana ", neck, 1, effect.none), - ("Balanced Cloak ", full_body, 2, effect.none), - ("Clover of Fortune ", bag, 2, effect.none), - ("Collar of Conjuring ", neck, 3, effect.none), - ("Cornucopia ", bag, 3, effect.none), - ("Crest of Valor ", bag, 0, effect.none), - ("Crown of Dragontooth ", head, 0, effect.none), - ("Crown of Magician ", head, 1, effect.none), - ("Dead Man's Boots ", feet, 1, effect.none), - ("Diplomat's Ring ", finger, 2, effect.none), - ("Dragonbone Greaves ", feet, 2, effect.none), - ("Dragon Scale Armor ", chest, 3, effect.none), - ("Dragon Scale Shield ", off_hand, 3, effect.none), - ("Dragon Wing Tabard ", full_body, 0, effect.none), - ("Elixir of Life ", bag, 0, effect.none), - ("Emblem of Cognizance ", neck, 1, effect.none), - ("Endles's Bag of Gold ", bag, 1, effect.none), - ("Endles's Purse of Gold ", bag, 2, effect.none), - ("Endles's Sack of Gold ", bag, 2, effect.none), - ("Equestrian's Gloves ", hands, 3, effect.none), - ("Everflowing Crystal ", full_body, 3, effect.none), - ("Vial of Mercury ", bag, 0, effect.none), - ("Ring of Sulfur ", finger, 0, effect.none), - ("Interference Choker ", neck, 1, effect.none), - ("Glyph of Gallantry ", bag, 1, effect.none), - ("Golden Bow ", off_hand, 2, effect.none), - ("Greater Gnoll's Flail ", main_hand, 2, effect.none), - ("Head of Legion ", bag, 3, effect.none), - ("Hellstorm Helmet ", head, 3, effect.none), - ("Helm of Chaos ", head, 0, effect.none), - ("Helm of Heavens ", head, 0, effect.none), - ("Helm of The Alabaster ", head, 1, effect.none), - ("Evil Hour ", bag, 1, effect.none), - ("Cart of Lumber ", bag, 2, effect.none), - ("Cart of Ore ", bag, 2, effect.none), - ("Ladybird of Luck ", bag, 3, effect.none), - ("Leg's of Legion ", bag, 3, effect.none), - ("Shield of Courage ", off_hand, 0, effect.none), - ("Loin's of Legion ", bag, 0, effect.none), - ("Mystic Orb of Mana ", neck, 0, effect.none), - ("Dragonteeth Necklace ", neck, 0, effect.none), - ("Ocean Guidance ", neck, 0, effect.none), - ("Necklace of Swiftness ", neck, 0, effect.none), - ("Ogre's Club of Havoc ", main_hand, 0, effect.none), - ("Orb of Driving Rain ", bag, 0, effect.none), - ("Orb of Inhibition ", bag, 1, effect.none), - ("Orb of Silt ", bag, 1, effect.none), - ("Orb of Hell Tempest ", bag, 1, effect.none), - ("Orb of The Firmament ", bag, 1, effect.none), - ("Orb of Vulnerability ", bag, 1, effect.none), - ("Pendant of Courage ", neck, 1, effect.none), - ("Pendant of Death ", neck, 1, effect.none), - ("Pendant of Dispassion ", neck, 1, effect.none), - ("Pendant of Free Will ", neck, 2, effect.none), - ("Pendant of Holiness ", neck, 2, effect.none), - ("Pendant of Life ", neck, 2, effect.none), - ("Pendant of Negativity ", neck, 2, effect.none), - ("Pendant of Renderer ", neck, 2, effect.none), - ("Pendant of Memory ", neck, 2, effect.none), - ("Dragon Father Armour ", chest, 2, effect.none), - ("Quiet Eye ", finger, 2, effect.none), - ("Recanter's Cloak ", full_body, 3, effect.none), - ("Flammenwerfer ", main_hand, 3, effect.none), - ("Rib Cage ", chest, 3, effect.none), - ("Ring of Conjuring ", finger, 3, effect.none), - ("Ring of Infinite Gems ", finger, 3, effect.none), - ("Ring of Life ", finger, 3, effect.none), - ("Ring of The Magi ", finger, 3, effect.none), - ("Ring of The Wayfarer ", finger, 3, effect.none), - ("Ring of Vitality ", finger, 3, effect.none), - ("Sandal's of The Saint ", feet, 3, effect.none), - ("Basilisk Chestplate ", chest, 3, effect.none), - ("Sea Captain's Hat ", head, 3, effect.none), - ("Sentinel's Shield ", off_hand, 3, effect.none), - ("Shackle's of War ", hands, 3, effect.none), - ("Fortran's Shield ", off_hand, 3, effect.none), - ("Oakenshield ", off_hand, 3, effect.none), - ("Undead Shield ", off_hand, 3, effect.none), - ("Skull Helmet ", head, 3, effect.none), - ("Speculum ", bag, 3, effect.none), - ("Spellbinder's Hat ", head, 3, effect.none), - ("Sphere of Permanence ", bag, 3, effect.none), - ("Spirit of Oppression ", bag, 3, effect.none), - ("Spyglass ", bag, 3, effect.none), - ("Statesman's Medal ", neck, 3, effect.none), - ("Statue of Legion ", bag, 3, effect.none), - ("C's Ring ", finger, 3, effect.none), - ("Stoic Watchman ", bag, 3, effect.none), - ("Counterpoise ", full_body, 3, effect.none), - ("Sword of Hellfire ", main_hand, 3, effect.none), - ("Ada's Claymore ", main_hand, 3, effect.none), - ("Talisman of Mana ", bag, 3, effect.none), - ("Targ ", off_hand, 3, effect.none), - ("Thunder Helmet ", head, 3, effect.none), - ("Titan's Cuirass ", chest, 3, effect.none), - ("Titan's Gladius ", main_hand, 3, effect.none), - ("Titan's Thunder ", main_hand, 3, effect.none), - ("Tome of Air ", off_hand, 3, effect.none), - ("Tome of Earth ", off_hand, 3, effect.none), - ("Tome of Fire ", off_hand, 3, effect.none), - ("Tome of Water ", off_hand, 3, effect.none), - ("Torso of Legion ", bag, 3, effect.none), - ("Cyclop's Tunic ", chest, 3, effect.none), - ("Vampire's Cowl ", full_body, 3, effect.none), - ("Vial of Dragon Blood ", bag, 3, effect.none), - ("Vial of Lifeblood ", bag, 3, effect.none), - ("Wizard's Well ", bag, 3, effect.none) + ("A ", head, 0, effect.none), + ("B ", full_body, 0, effect.none) ); ------------------------------------------------------------------------------------------ diff --git a/source/main.adb b/source/main.adb index baec68c..04f9d09 100644 --- a/source/main.adb +++ b/source/main.adb @@ -4,8 +4,7 @@ pragma ada_2012; ---~with core, ui, effect, attribute, skill, resource, faction, might, magic, item, unit, construction, chad, world, ai; -with core, ui, effect, attribute, skill, resource, faction, chad, ai; +with core, ui, effect, attribute, skill, resource, faction, might, magic, item, unit, construction, chad, world, ai; procedure main is @@ -21,52 +20,52 @@ procedure main is ------------------------------------------------------------------------------------------ - --~type menu_index is ( - --~menu_none, menu_attribute, menu_skill, menu_resource, menu_unit, menu_might, menu_magic - --~); + type menu_index is ( + menu_none, menu_attribute, menu_skill, menu_resource, menu_unit, menu_might, menu_magic + ); - --~menu_limit : constant integer := 3; - --~menu_count : integer := 0; + menu_limit : constant integer := 3; + menu_count : integer := 0; - --~menu_stack : array (1 .. menu_limit) of menu_index := (others => menu_none); + menu_stack : array (1 .. menu_limit) of menu_index := (others => menu_none); - --~procedure menu_insert (index : in menu_index) is - --~begin - --~if menu_count = menu_limit then return; end if; - --~-- - --~menu_count := menu_count mod menu_limit + 1; - --~-- - --~menu_stack (menu_count) := index; - --~end menu_insert; + procedure menu_insert (index : in menu_index) is + begin + if menu_count = menu_limit then return; end if; + -- + menu_count := menu_count mod menu_limit + 1; + -- + menu_stack (menu_count) := index; + end menu_insert; - --~procedure menu_remove is - --~begin - --~if menu_count = 0 then return; end if; - --~-- - --~menu_stack (menu_count) := menu_none; - --~-- - --~menu_count := menu_count - 1; - --~end menu_remove; + procedure menu_remove is + begin + if menu_count = 0 then return; end if; + -- + menu_stack (menu_count) := menu_none; + -- + menu_count := menu_count - 1; + end menu_remove; - --~procedure menu_render is - --~begin - --~if menu_count > 0 then - --~core.overlay; - --~end if; - --~-- - --~for index in 1 .. menu_limit - --~loop - --~case menu_stack (index) is - --~when menu_none => null; - --~when menu_attribute => attribute.menu (100, 100, false); - --~when menu_skill => skill.menu (200, 200, false); - --~when menu_resource => resource.menu (300, 300, false); - --~when menu_unit => unit.menu (0, 0, true); - --~when menu_might => might.menu (0, 0, true); - --~when menu_magic => magic.menu (0, 0, true); - --~end case; - --~end loop; - --~end menu_render; + procedure menu_render is + begin + if menu_count > 0 then + core.overlay; + end if; + -- + for index in 1 .. menu_limit + loop + case menu_stack (index) is + when menu_none => null; + when menu_attribute => attribute.menu (100, 100, false); + when menu_skill => skill.menu (200, 200, false); + when menu_resource => resource.menu (300, 300, false); + when menu_unit => unit.menu (0, 0, true); + when menu_might => might.menu (0, 0, true); + when menu_magic => magic.menu (0, 0, true); + end case; + end loop; + end menu_render; ------------------------------------------------------------------------------------------ @@ -75,26 +74,26 @@ procedure main is procedure move_camera_down is begin core.camera.y := core.camera.y + 1; end move_camera_down; procedure move_camera_left is begin core.camera.x := core.camera.x - 1; end move_camera_left; procedure move_camera_right is begin core.camera.x := core.camera.x + 1; end move_camera_right; - --~procedure show_attribute_menu is begin menu_insert (menu_attribute); end show_attribute_menu; - --~procedure show_skill_menu is begin menu_insert (menu_skill); end show_skill_menu; - --~procedure show_resource_menu is begin menu_insert (menu_resource); end show_resource_menu; - --~procedure show_unit_menu is begin menu_insert (menu_unit); end show_unit_menu; - --~procedure show_might_menu is begin menu_insert (menu_might); end show_might_menu; - --~procedure show_magic_menu is begin menu_insert (menu_magic); end show_magic_menu; - --~procedure hide_top_menu is begin menu_remove; end hide_top_menu; + procedure show_attribute_menu is begin menu_insert (menu_attribute); end show_attribute_menu; + procedure show_skill_menu is begin menu_insert (menu_skill); end show_skill_menu; + procedure show_resource_menu is begin menu_insert (menu_resource); end show_resource_menu; + procedure show_unit_menu is begin menu_insert (menu_unit); end show_unit_menu; + procedure show_might_menu is begin menu_insert (menu_might); end show_might_menu; + procedure show_magic_menu is begin menu_insert (menu_magic); end show_magic_menu; + procedure hide_top_menu is begin menu_remove; end hide_top_menu; signal_list : constant array (core.signal_code) of access procedure := ( core.signal_up => move_camera_up'access, core.signal_down => move_camera_down'access, core.signal_left => move_camera_left'access, core.signal_right => move_camera_right'access, - --~core.signal_a => show_attribute_menu'access, - --~core.signal_s => show_skill_menu'access, - --~core.signal_r => show_resource_menu'access, - --~core.signal_u => show_unit_menu'access, - --~core.signal_m => show_might_menu'access, - --~core.signal_n => show_magic_menu'access, - --~core.signal_grave => hide_top_menu'access, + core.signal_a => show_attribute_menu'access, + core.signal_s => show_skill_menu'access, + core.signal_r => show_resource_menu'access, + core.signal_u => show_unit_menu'access, + core.signal_m => show_might_menu'access, + core.signal_n => show_magic_menu'access, + core.signal_grave => hide_top_menu'access, others => idle'access ); @@ -118,16 +117,16 @@ begin attribute.configure; skill.configure; resource.configure; - --~might.configure; - --~magic.configure; - --~item.configure; - --~unit.configure; - --~construction.configure; + might.configure; + magic.configure; + item.configure; + unit.configure; + construction.configure; chad.configure; - --~world.configure; + world.configure; ai.configure; - --~world.make (world.rough, 120, 100); + world.make (world.grass, 120, 100); preview_width := core.window_width - side_panel; preview_height := core.window_height; @@ -145,13 +144,10 @@ begin -- ui.active := (if core.cursor_mode = 3 then ui.default else ui.steam); -- - --~core.draw (core.hexagon_fill_sprite, 0, 0); - --~core.draw (core.hexagon_grid_sprite, 0, 0); + core.camera.x := core.clip (core.camera.x, 0, world.map.width - preview_width / core.base); + core.camera.y := core.clip (core.camera.y, 0, world.map.height - preview_height / core.base); -- - --~core.camera.x := core.clip (core.camera.x, 0, world.map.width - preview_width / core.base); - --~core.camera.y := core.clip (core.camera.y, 0, world.map.height - preview_height / core.base); - -- - --~world.draw (preview_x, preview_y, preview_width - 2 * preview_x, preview_height - 2 * preview_y - 32, core.signal_mode = core.signal_code'pos (core.signal_g)); + world.draw (preview_x, preview_y, preview_width - 2 * preview_x, preview_height - 2 * preview_y - 32, core.signal_mode = core.signal_code'pos (core.signal_g)); -- --~core.draw_central_grid (preview_x, preview_y, preview_width - 2 * preview_x, preview_height - 2 * preview_y); --~core.draw_squared_grid (preview_x, preview_y, preview_width - 2 * preview_x, preview_height - 2 * preview_y); @@ -164,15 +160,12 @@ begin -- signal_list (core.signal_code'val (core.signal_mode)).all; -- - --~ai.review; - --~ai.view_actor_state (1); - -- --~magic.menu (0, 0, true); --~might.menu (0, 0, true); -- - --~menu_render; + menu_render; -- - --~ui.write (menu_count'image, 16, 16); + ui.write (menu_count'image, 16, 16); -- ui.draw_text_box (0, core.window_height - 32, core.window_width, 32); end loop gameplay; diff --git a/source/unit.adb b/source/unit.adb index 73d7bec..96e9dd5 100644 --- a/source/unit.adb +++ b/source/unit.adb @@ -29,7 +29,7 @@ package body unit is folder : constant string := core.lowercase (faction.codex'image (trait (index).kind)); file : constant string := core.lowercase (codex'image (index)); begin - sprite (index) := core.import_sprite ("./sprite/unit/" & folder & "/" & file & ".png", 6, 6); + sprite (index) := core.import_sprite ("./sprite/unit/" & folder & "/" & file & ".png", 4, 6); icon_sprite (index) := core.import_sprite ("./sprite/unit/icon/" & file & ".png", 1, 1); view_sprite (index) := core.import_sprite ("./sprite/unit/view/" & file & ".png", 1, 1); end; diff --git a/source/unit.ads b/source/unit.ads index 262b8e7..ff7dd79 100644 --- a/source/unit.ads +++ b/source/unit.ads @@ -9,49 +9,11 @@ package unit is ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ type animation is ( - idle, wounded, dead, moving, toggle_moving, attack + idle, walk, melee, shoot, wounded, dead ); type codex is ( - azure_dragon, boar, crystal_dragon, enchanter, faerie_dragon, gold_golem, - halfing, mummy, nomad, peasant, rogue, rust_dragon, - sharpshooter, troll, - -- - pikeman, halberdier, archer, marksman, griffin, royal_griffin, - swordsman, crusader, monk, zealot, cavalier, champion, - angel, arch_angel, - -- - goblin, hobgoblin, wolf_rider, wolf_raider, orc, orc_chieftain, - ogre, ogre_magi, roc, thunderbird, cyclops, cyclops_king, - behemoth, ancient_behemoth, - -- - imp, familiar, gog, magog, hell_hound, cerberus, - demon, horned_demon, pit_fiend, pit_lord, efreet, efreet_sultan, - devil, arch_devil, - -- - gremlin, master_gremlin, stone_gargoyle, obsidian_gargoyle, stone_golem, iron_golem, - mage, arch_mage, geany, master_geany, naga, naga_queen, - giant, titan, - -- - pixie, spirit, air_elemental, storm_elemental, water_elemental, ice_elemental, - fire_elemental, energy_elemental, earth_elemental, magma_elemental, psychic_elemental, magic_elemental, - fire_bird, phoenix, - -- - skeleton, skeleton_warrior, walking_dead, zombie, wight, wraith, - vampire, vampire_lord, lich, power_lich, black_knight, dread_knight, - bone_dragon, ghost_dragon, - -- - centaur, centaur_captain, dwarf, battle_dwarf, wood_elf, grand_elf, - pegasus, silver_pegasus, dendroid_guard, dendroid_soldier, unicorn, war_unicorn, - green_dragon, gold_dragon, - -- - gnoll, gnoll_marauder, lizardman, lizard_warrior, serpentfly, dragonfly, - basilisk, greater_basilisk, gorgon, mighty_gorgon, wyvern, wyvern_monarch, - hydra, chaos_hydra, - -- - troglodyte, infernal_troglodyte, harpy, harpy_hag, evil_eye, beholder, - medusa, medusa_queen, minotaur, minotaur_king, manticore, scorpicore, - red_dragon, black_dragon + dwarf_male, fairy_male, gnoll_male, goblin_male, imp_male, kobold_male ); ------------------------------------------------------------------------------------------ @@ -70,155 +32,12 @@ package unit is count : constant natural := codex'pos (codex'last) + 1; trait : constant array (codex) of information := ( - ("Azure Dragon ", faction.neutral, (others => 1), effect.none, "Powerful and majestic dragon known for its devastating attacks. "), - ("Boar ", faction.neutral, (others => 1), effect.none, "Wild animal with tusks, often used as frontline warriors. "), - ("Crystal Dragon ", faction.neutral, (others => 1), effect.none, "Crystal-encrusted dragon with powerful magical abilities. "), - ("Enchanter ", faction.neutral, (others => 1), effect.none, "Spellcaster specializing in enchantments and buffs. "), - ("Faerie Dragon ", faction.neutral, (others => 1), effect.none, "Mischievous creature with potent magical abilities. "), - ("Gold Golem ", faction.neutral, (others => 1), effect.none, "Construct made of pure gold, resistant to magic. "), - ("Halfing ", faction.neutral, (others => 1), effect.none, "Small, nimble creature with stealth and ranged abilities. "), - ("Mummy ", faction.neutral, (others => 1), effect.none, "Undead creature wrapped in bandages, capable of curses. "), - ("Nomad ", faction.neutral, (others => 1), effect.none, "Skilled ranged fighter from the desert with high mobility. "), - ("Peasant ", faction.neutral, (others => 1), effect.none, "Basic unit, typically low-cost and expendable. "), - ("Rogue ", faction.neutral, (others => 1), effect.none, "Sneaky unit specialized in stealth and surprise attacks. "), - ("Rust Dragon ", faction.neutral, (others => 1), effect.none, "Dragon with corrosive breath, capable of weakening enemies. "), - ("Sharpshooter ", faction.neutral, (others => 1), effect.none, "Highly skilled ranged unit with exceptional accuracy. "), - ("Troll ", faction.neutral, (others => 1), effect.none, "Regenerating and powerful brute, often used as a tank. "), - -- - ("Pikeman ", faction.castle, (others => 1), effect.none, "Basic spear-wielding infantry unit with a defensive stance. "), - ("Halberdier ", faction.castle, (others => 1), effect.none, "Advanced infantry unit armed with a versatile halberd. "), - ("Archer ", faction.castle, (others => 1), effect.none, "Ranged unit proficient in shooting arrows at enemies. "), - ("Crossbowman ", faction.castle, (others => 1), effect.none, "Highly skilled archer with superior accuracy and damage. "), - ("Griffin ", faction.castle, (others => 1), effect.none, "Majestic creature with flying capabilities and swift attacks. "), - ("Royal Griffin ", faction.castle, (others => 1), effect.none, "Upgraded version of the Griffin with enhanced stats and abilities. "), - ("Swordsman ", faction.castle, (others => 1), effect.none, "Skillful melee fighter equipped with a sharp blade. "), - ("Crusader ", faction.castle, (others => 1), effect.none, "Holy warrior with strong offensive and defensive capabilities. "), - ("Monk ", faction.castle, (others => 1), effect.none, "Mystic unit with healing and support spells. "), - ("Zealot ", faction.castle, (others => 1), effect.none, "Fanatic warrior dedicated to their cause, often infused with magic. "), - ("Cavalier ", faction.castle, (others => 1), effect.none, "Mounted knight unit with speed and impact in battle. "), - ("Champion ", faction.castle, (others => 1), effect.none, "Elite warrior with exceptional combat skills and resilience. "), - ("Angel ", faction.castle, (others => 1), effect.none, "Divine being with powerful healing and offensive abilities. "), - ("Arch-Angel ", faction.castle, (others => 1), effect.none, "Superior celestial being with extraordinary powers and influence. "), - -- - ("Goblin ", faction.stronghold, (others => 1), effect.none, "Small and mischievous creature known for its cunning and traps. "), - ("Hobgoblin ", faction.stronghold, (others => 1), effect.none, "Stronger and more vicious version of the goblin, often brave warriors. "), - ("Wolf Rider ", faction.stronghold, (others => 1), effect.none, "Fast-moving unit mounted on wolves for quick strikes. "), - ("Wolf Raider ", faction.stronghold, (others => 1), effect.none, "Upgraded version of the Wolf Rider with enhanced strength and ferocity. "), - ("Orc ", faction.stronghold, (others => 1), effect.none, "Brutal and fierce humanoid warrior with a penchant for melee combat. "), - ("Orc Chieftain ", faction.stronghold, (others => 1), effect.none, "Leader of orcish tribes, commanding respect and fear among his folk. "), - ("Orge ", faction.stronghold, (others => 1), effect.none, "Huge and powerful creature capable of crushing foes with its strength. "), - ("Ogre Magi ", faction.stronghold, (others => 1), effect.none, "Magical variant of the ogre, using berserk spell in addition to mace. "), - ("Roc ", faction.stronghold, (others => 1), effect.none, "Gigantic bird of prey with the ability to carry friendly units. "), - ("Thunderbird ", faction.stronghold, (others => 1), effect.none, "Mythical bird with control over lightning and thunder. "), - ("Cyclops ", faction.stronghold, (others => 1), effect.none, "One-eyed giant wielding massive clubs for devastating blows. "), - ("Cyclops King ", faction.stronghold, (others => 1), effect.none, "Sovereign ruler among the cyclops race, commanding great respect. "), - ("Behemoth ", faction.stronghold, (others => 1), effect.none, "Enormous and unstoppable monster wreaking havoc on the battlefield. "), - ("Ancient Behemoth ", faction.stronghold, (others => 1), effect.none, "Legendary and exceptionally powerful behemoth with devastating attacks. "), - -- - ("Imp ", faction.inferno, (others => 1), effect.none, "Small, agile demon known for its cunning and mischief. "), - ("Familiar ", faction.inferno, (others => 1), effect.none, "Devilish creature bound to a sorcerer, aiding in magic and combat. "), - ("Gog ", faction.inferno, (others => 1), effect.none, "Mighty and brutish humanoid warrior wielding a massive club. "), - ("Magog ", faction.inferno, (others => 1), effect.none, "Elite version of the Gog, boasting enhanced strength and aggression. "), - ("Hell Hound ", faction.inferno, (others => 1), effect.none, "Fiery canine creature with a fierce bite and burning breath. "), - ("Cerberus ", faction.inferno, (others => 1), effect.none, "Three-headed dog guarding the gates of the underworld with ferocity. "), - ("Demon ", faction.inferno, (others => 1), effect.none, "Malevolent creature from the abyss, wielding dark powers and strength. "), - ("Horned Demon ", faction.inferno, (others => 1), effect.none, "Upgraded demon with greater power and enhanced abilities. "), - ("Pit Fiend ", faction.inferno, (others => 1), effect.none, "Terrifying demon lord commanding legions of infernal forces. "), - ("Pit Lord ", faction.inferno, (others => 1), effect.none, "Ruthless ruler of demonic realms, instilling fear in all who oppose. "), - ("Efreeti ", faction.inferno, (others => 1), effect.none, "Fiery elemental being capable of unleashing inferno upon enemies. "), - ("Efreet Sultan ", faction.inferno, (others => 1), effect.none, "Powerful and regal efreet lord commanding fire and magic. "), - ("Devil ", faction.inferno, (others => 1), effect.none, "Cunning and manipulative fiend striking deals for souls and power. "), - ("Arch Devil ", faction.inferno, (others => 1), effect.none, "Ultimate demon lord embodying darkness and corruption. "), - -- - ("Gremlin ", faction.tower, (others => 1), effect.none, "Small, mischievous creature known for its trickery and cunning. "), - ("Master Gremlin ", faction.tower, (others => 1), effect.none, "A more powerful version of the Gremlin with enhanced abilities. "), - ("Stone Gargoyle ", faction.tower, (others => 1), effect.none, "Stone creature resembling a grotesque statue, often found in ruins. "), - ("Obisidian Gargoyle ", faction.tower, (others => 1), effect.none, "Stronger variant of the Stone Gargoyle, with increased durability. "), - ("Stone Golem ", faction.tower, (others => 1), effect.none, "Humanoid construct made entirely of stone, animated through magic. "), - ("Iron Golem ", faction.tower, (others => 1), effect.none, "Stronger and more resilient golem crafted from iron and alloys. "), - ("Mage ", faction.tower, (others => 1), effect.none, "Spellcaster wielding elemental magic and arcane powers in battles. "), - ("Arch Mage ", faction.tower, (others => 1), effect.none, "Masterful mage with unparalleled mastery over various schools of magic. "), - ("Geany ", faction.tower, (others => 1), effect.none, "Mystical creature capable of granting wishes, blessing his friends. "), - ("Master Geany ", faction.tower, (others => 1), effect.none, "Higher-ranking Geany possessing greater magical prowess and wisdom. "), - ("Naga ", faction.tower, (others => 1), effect.none, "Serpentine creature with a humanoid upper body, wielding deadly poison. "), - ("Naga Queen ", faction.tower, (others => 1), effect.none, "Powerful matriarch among the Naga, ruling with pride and confidence. "), - ("Giant ", faction.tower, (others => 1), effect.none, "Enormous humanoid known for its immense strength and sheer size. "), - ("Titan ", faction.tower, (others => 1), effect.none, "Colossal and ancient being of immense power throwing lightning. "), - -- - ("Pixie ", faction.conflux, (others => 1), effect.none, "Tiny, sprite-like creature known for its magical abilities. "), - ("Spirit ", faction.conflux, (others => 1), effect.none, "An actual sprite, but I used that name for image data sadly. "), - ("Air Elemental ", faction.conflux, (others => 1), effect.none, "Elemental creature using the power of air, controling winds and storms. "), - ("Storm Elemental ", faction.conflux, (others => 1), effect.none, "Powerful entity of turbulent weather, commanding lightning and thunder. "), - ("Water Elemental ", faction.conflux, (others => 1), effect.none, "Entity formed of pure water, capable of manipulating rivers and rain. "), - ("Ice Elemental ", faction.conflux, (others => 1), effect.none, "Elemental creature embodying the chilling power of ice and frost. "), - ("Fire Elemental ", faction.conflux, (others => 1), effect.none, "Being of living flames and intense heat, wreaking havoc with its fire. "), - ("Energy Elemental ", faction.conflux, (others => 1), effect.none, "Elemental entity representing raw energy in its most potent form. "), - ("Earth Elemental ", faction.conflux, (others => 1), effect.none, "Elemental creature tied to the earth itself, possessing great strength. "), - ("Magma Elemental ", faction.conflux, (others => 1), effect.none, "Fusion of fire and earth elements, embodying molten rock. "), - ("Psychic Elemental ", faction.conflux, (others => 1), effect.none, "Entity harnessing the power of the mind, capable of psionic attacks. "), - ("Magic Elemental ", faction.conflux, (others => 1), effect.none, "An elemental creature infused with pure arcane energy. "), - ("Fire Bird ", faction.conflux, (others => 1), effect.none, "A mythical avian creature with feathers of flame, embodying the flames. "), - ("Phoenix ", faction.conflux, (others => 1), effect.none, "Legendary bird of rebirth and renewal, reborn from its ashes. "), - -- - ("Skeleton ", faction.necropolis, (others => 1), effect.none, "Animated pile of bones, devoid of flesh or soul, controlled by magic. "), - ("Skeleton Warrior ", faction.necropolis, (others => 1), effect.none, "Reanimated skeletal being armed for battle, serving as undead soldiers. "), - ("Walking Dead ", faction.necropolis, (others => 1), effect.none, "Reanimated corpses stumbling aimlessly, driven by dark magic or curses. "), - ("Zombie ", faction.necropolis, (others => 1), effect.none, "Flesh-eating undead creatures, reanimated through necromantic rituals. "), - ("Wight ", faction.necropolis, (others => 1), effect.none, "Undead creature with malevolent powers, often draining life energy. "), - ("Wraith ", faction.necropolis, (others => 1), effect.none, "Spectral entity dwelling in darkness, feeding on fear and despair. "), - ("Vampire ", faction.necropolis, (others => 1), effect.none, "Immortal creature of the night, sustained by blood and flesh. "), - ("Vampire Lord ", faction.necropolis, (others => 1), effect.none, "Powerful vampire noble with enhanced abilities and commanding undead. "), - ("Lich ", faction.necropolis, (others => 1), effect.none, "Undead sorcerer achieving immortality through dark magic. "), - ("Power Lich ", faction.necropolis, (others => 1), effect.none, "Elite lich with heightened magical prowess and devastating spells. "), - ("Black Knight ", faction.necropolis, (others => 1), effect.none, "Undead warrior clad in dark armor, serving dark lords to spread terror. "), - ("Dread Knight ", faction.necropolis, (others => 1), effect.none, "Elite black knight of immense power and skill, feared on the front. "), - ("Bone Dragon ", faction.necropolis, (others => 1), effect.none, "Undead dragon reanimated from ancient bones, breathing death and decay. "), - ("Ghost Dragon ", faction.necropolis, (others => 1), effect.none, "Spectral dragon of ethereal essence, haunting the living beings. "), - -- - ("Centaur ", faction.rampart, (others => 1), effect.none, "Half-human, half-horse creature known for archery and speed in combat. "), - ("Centaur Captain ", faction.rampart, (others => 1), effect.none, "Distinguished centaur leader commanding troops with precision. "), - ("Dwarf ", faction.rampart, (others => 1), effect.none, "Stout and sturdy underground-dwelling beings skilled in craftsmanship. "), - ("Battle Dwarf ", faction.rampart, (others => 1), effect.none, "Ferocious dwarf warrior renowned for their combat prowess. "), - ("Wood Elf ", faction.rampart, (others => 1), effect.none, "Graceful forest-dwelling elves attuned to nature and archery. "), - ("Grand Elf ", faction.rampart, (others => 1), effect.none, "Elite wood elf warrior with exceptional skills in marksmanship. "), - ("Pegasus ", faction.rampart, (others => 1), effect.none, "Majestic winged horse revered for its speed and grace in battle. "), - ("Silver Pegasus ", faction.rampart, (others => 1), effect.none, "Rare and ethereal pegasus with shimmering silver wings and light aura. "), - ("Dendroid Guard ", faction.rampart, (others => 1), effect.none, "Towering tree-like creature standing as a guardian of the forest. "), - ("Dendroid Soldier ", faction.rampart, (others => 1), effect.none, "Animated tree warrior fiercely protecting nature with its wooden might. "), - ("Unicorn ", faction.rampart, (others => 1), effect.none, "Magical horse-like creature with a spiraling horn, symbolizing grace. "), - ("War Unicorn ", faction.rampart, (others => 1), effect.none, "Armored unicorn charging into battle with unmatched strength and valor. "), - ("Green Dragon ", faction.rampart, (others => 1), effect.none, "Powerful dragon associated with nature and known for fire breath. "), - ("Gold Dragon ", faction.rampart, (others => 1), effect.none, "Noble and majestic dragon of great wisdom and power. "), - -- - ("Gnoll ", faction.fortress, (others => 1), effect.none, "Agile and aggressive hyena-like humanoid known for their savagery. "), - ("Gnoll Marauder ", faction.fortress, (others => 1), effect.none, "Ruthless and cunning gnoll leader skilled in hit-and-run tactics. "), - ("Lizardman ", faction.fortress, (others => 1), effect.none, "Reptilian humanoid proficient in swamp and jungle environments. "), - ("Lizard Warrior ", faction.fortress, (others => 1), effect.none, "Strong and resilient lizardman warrior with great archery skills. "), - ("Serpentfly ", faction.fortress, (others => 1), effect.none, "Agile flying creature with a venomous sting, hunting prey from the air. "), - ("Dragonfly ", faction.fortress, (others => 1), effect.none, "Swift flying insect-like creature known for its large wings. "), - ("Basilisk ", faction.fortress, (others => 1), effect.none, "Terrifying creature capable of petrifying its victims. "), - ("Greater Basilisk ", faction.fortress, (others => 1), effect.none, "Larger and more deadly variant of the basilisk, feared for its gaze. "), - ("Gorgon ", faction.fortress, (others => 1), effect.none, "Mythical creature with the ability to turn foes to stone with a glance. "), - ("Mighty Gorgon ", faction.fortress, (others => 1), effect.none, "Enhanced and formidable Gorgon, striking fear into enemies. "), - ("Wyvern ", faction.fortress, (others => 1), effect.none, "Winged dragon-like creature with a barbed tail and a fierce nature. "), - ("Wyvern Monarch ", faction.fortress, (others => 1), effect.none, "Sovereign wyvern of colossal size and power with its venomous breath. "), - ("Hydra ", faction.fortress, (others => 1), effect.none, "Mythical multi-headed serpent known for its regenerative abilities. "), - ("Chaos Hydra ", faction.fortress, (others => 1), effect.none, "Chaotic variant of the hydra with devastating attacks. "), - -- - ("Troglodyte ", faction.dungeon, (others => 1), effect.none, "Primitive subterranean humanoid with a keen sense of smell. "), - ("Infernal Troglodyte ", faction.dungeon, (others => 1), effect.none, "Corrupted troglodyte infused with infernal power and dark magic. "), - ("Harpy ", faction.dungeon, (others => 1), effect.none, "Half-bird, half-human creature known for its aerial attacks. "), - ("Harpy Hag ", faction.dungeon, (others => 1), effect.none, "Malevolent and powerful harpy matriarch capable of casting curses. "), - ("Evil Eye ", faction.dungeon, (others => 1), effect.none, "Floating creature with a deadly gaze that can weaken its victims. "), - ("Beholder ", faction.dungeon, (others => 1), effect.none, "Floating abomination with multiple eye stalks that shoot venom. "), - ("Medusa ", faction.dungeon, (others => 1), effect.none, "Mythical creature with a gaze that turns beings to stone. "), - ("Medusa Queen ", faction.dungeon, (others => 1), effect.none, "Powerful and regal medusa with a deadly gaze, ruling over medusas. "), - ("Minotaur ", faction.dungeon, (others => 1), effect.none, "Bull-headed humanoid known for its brute strength. "), - ("Minotaur King ", faction.dungeon, (others => 1), effect.none, "Majestic and formidable minotaur leader with combat prowess. "), - ("Manticore ", faction.dungeon, (others => 1), effect.none, "Mythical creature with a lion's body, bat-like wings, and a spiky tail. "), - ("Scorpicore ", faction.dungeon, (others => 1), effect.none, "Hybrid creature combining traits of a manticore and a scorpion. "), - ("Red Dragon ", faction.dungeon, (others => 1), effect.none, "Massive fire-breathing dragon with a fearsome reputation. "), - ("Black Dragon ", faction.dungeon, (others => 1), effect.none, "Scheming and malevolent beast boasting fire breath and a cruel demeanor.") + ("Dwarf ", faction.dwarf, (others => 1), effect.none, " "), + ("Fairy ", faction.fairy, (others => 1), effect.none, " "), + ("Gnoll ", faction.gnoll, (others => 1), effect.none, " "), + ("Goblin ", faction.goblin, (others => 1), effect.none, " "), + ("Imp ", faction.imp, (others => 1), effect.none, " "), + ("Kobold ", faction.kobold, (others => 1), effect.none, " ") ); ------------------------------------------------------------------------------------------ diff --git a/source/world.adb b/source/world.adb index 680f03b..3da6065 100644 --- a/source/world.adb +++ b/source/world.adb @@ -2,7 +2,7 @@ -- -- GNU General Public Licence (version 3 or later) -with ada.strings.fixed; +--~with ada.strings.fixed; with core, resource, item, unit, construction, world; use world; @@ -24,7 +24,7 @@ package body world is blocks : core.sprite; landmarks : landmark_sprite_array := (others => null); - limit : constant limit_array := (29, 64, 70, 94, 51, 94); + limit : constant limit_array := (2, 2, 2, 2, 2, 2); landmark_limit : constant integer := 140; construction_limit : constant integer := 40; @@ -45,7 +45,8 @@ package body world is loop declare folder : constant string := core.lowercase (codex'image (index)); - file : constant string := ada.strings.fixed.trim (value'image, ada.strings.left); + --~file : constant string := ada.strings.fixed.trim (value'image, ada.strings.left); + file : constant string := value'image; begin landmarks (index) (value) := core.import_sprite ("./sprite/world/landmark/" & folder & "/" & file & ".png", 1, 1); end;