Quellcode durchsuchen

Broke everything for fun, refactoring to make it better...

master
Ognjen Milan Robovic vor 5 Monaten
Ursprung
Commit
9fe0838860
12 geänderte Dateien mit 309 neuen und 280 gelöschten Zeilen
  1. +5
    -3
      compile.sh
  2. +24
    -44
      source/engine.c
  3. +0
    -6
      source/engine.h
  4. +146
    -199
      source/game.c
  5. +62
    -22
      source/game.h
  6. +2
    -2
      source/main.c
  7. +4
    -3
      source/menu.c
  8. +43
    -0
      source/render.c
  9. +21
    -0
      source/render.h
  10. +0
    -1
      source/source.c
  11. +1
    -0
      source/system.c
  12. +1
    -0
      source/system.h

+ 5
- 3
compile.sh Datei anzeigen

@@ -2,20 +2,22 @@

set -xe

clang -g -std=gnu17 -Weverything -Werror -Ofast -c -o ./source/engine.o ./source/engine.c
#~clang -g -std=gnu17 -Weverything -Werror -Ofast -c -o ./source/engine.o ./source/engine.c
clang -g -std=gnu17 -Weverything -Werror -Ofast -c -o ./source/render.o ./source/render.c
clang -g -std=gnu17 -Weverything -Werror -Ofast -c -o ./source/game.o ./source/game.c
clang -g -std=gnu17 -Weverything -Werror -Ofast -c -o ./source/menu.o ./source/menu.c
#~clang -g -std=gnu17 -Weverything -Werror -Ofast -c -o ./source/source.o ./source/source.c
clang -g -std=gnu17 -Weverything -Werror -Ofast -c -o ./source/main.o ./source/main.c

gcc -g -std=gnu17 -Wall -Wextra -Wpedantic -Werror -Ofast -c -o ./source/engine.o ./source/engine.c
#~gcc -g -std=gnu17 -Wall -Wextra -Wpedantic -Werror -Ofast -c -o ./source/engine.o ./source/engine.c
gcc -g -std=gnu17 -Wall -Wextra -Wpedantic -Werror -Ofast -c -o ./source/render.o ./source/render.c
gcc -g -std=gnu17 -Wall -Wextra -Wpedantic -Werror -Ofast -c -o ./source/game.o ./source/game.c
gcc -g -std=gnu17 -Wall -Wextra -Wpedantic -Werror -Ofast -c -o ./source/menu.o ./source/menu.c
#~gcc -g -std=gnu17 -Wall -Wextra -Wpedantic -Werror -Ofast -c -o ./source/source.o ./source/source.c
gcc -g -std=gnu17 -Wall -Wextra -Wpedantic -Werror -Ofast -c -o ./source/main.o ./source/main.c

#~gcc -o umorna ./source/main.o ./source/source.o ./source/menu.o ./source/game.o ./source/engine.o -lraylib
gcc -o umorna ./source/main.o ./source/menu.o ./source/game.o ./source/engine.o -lraylib
gcc -o umorna ./source/main.o ./source/menu.o ./source/game.o ./source/render.o -lraylib
#~gcc -o umorna ./source/main.o ./source/game.o ./source/engine.o -lraylib

exit

+ 24
- 44
source/engine.c Datei anzeigen

@@ -1,8 +1,27 @@
#include "core.h"
#include "game.h"
#include "engine.h"

static float zoom = 2.0F;
#include <string.h>
#include <stdlib.h>
#include <raylib.h>

#define BASE_SIZE (16)
#define ICON_SIZE (32)
#define FONT_SIZE (24)

#define CHAD_TRAIT_LIMIT ( 3)
#define CHAD_SKILL_LIMIT (24)
#define CHAD_VALUE_LIMIT (10)
#define CHAD_EFFECT_LIMIT ( 3)
#define CHAD_MIGHT_LIMIT ( 1)
#define CHAD_MAGIC_LIMIT ( 1)
#define CHAD_RACE_LIMIT ( 3)
#define CHAD_ITEM_LIMIT ( 3)
#define CHAD_UNIT_LIMIT (54)
#define CHAD_HERO_LIMIT ( 1)
#define CHAD_BLOCK_LIMIT (28)
#define CHAD_WORLD_LIMIT ( 1)
#define CHAD_WORLD_WIDTH (90)
#define CHAD_WORLD_HEIGHT (90)

#include <xolatile/chads.h>

static Texture2D unit_data [3];

@@ -19,21 +38,6 @@ void render_unit (int race,

static Texture2D icons;

void render_icon (int x,
int y,
int u,
int v,
int p,
int q) {
DrawTextureRec (icons, (Rectangle) { x, y, u, v }, (Vector2) { p, q }, WHITE);
}

void render_text (char * text,
int x,
int y) {
DrawText (text, x + 6, y + 6, FONT_SIZE, WHITE);
}

static Texture2D ashlands_data;

void render_map (void) {
@@ -51,27 +55,3 @@ void render_map (void) {
}
}
}

static void clean_up (void) {
CloseWindow ();
}

void engine_configure (void) {
InitWindow (1800, 900, "EAX");
SetExitKey (KEY_ESCAPE);
SetTargetFPS (60);

atexit (clean_up);

icons = LoadTexture ("sprite/menu/menu.png");

SetTextureFilter (icons, TEXTURE_FILTER_POINT);

ashlands_data = LoadTexture ("sprite/world/ashlands.png");

//~Texture2D vvv = LoadTexture ("sprite/orc/manor.png");

unit_data [orc] = LoadTexture ("sprite/orc/units.png");
unit_data [human] = LoadTexture ("sprite/human/units.png");
unit_data [elf] = LoadTexture ("sprite/elf/units.png");
}

+ 0
- 6
source/engine.h Datei anzeigen

@@ -1,7 +1 @@
extern void render_icon (int x, int y, int u, int v, int p, int q);
extern void render_text (char * text, int x, int y);
extern void render_unit (int race, int unit, int x, int y);

extern void render_map (void);

extern void engine_configure (void);

+ 146
- 199
source/game.c Datei anzeigen

@@ -1,207 +1,154 @@
#include "core.h"
#include "game.h"

#include <xolatile/chads.c>

static void define_traits (void) {
strength = chad_define_trait ("Strength", 1, 1, 10);
dexterity = chad_define_trait ("Dexterity", 1, 1, 10);
wisdom = chad_define_trait ("Wisdom", 1, 1, 10);
}

static void define_skills (void) {
swords = chad_define_skill ("Swords", 1, 1, 100);
axes = chad_define_skill ("Axes", 1, 1, 100);
maces = chad_define_skill ("Maces", 1, 1, 100);
staves = chad_define_skill ("Staves", 1, 1, 100);
bows = chad_define_skill ("Bows", 1, 1, 100);
crossbows = chad_define_skill ("Crossbows", 1, 1, 100);
slings = chad_define_skill ("Slings", 1, 1, 100);
shields = chad_define_skill ("Shields", 1, 1, 100);
armour = chad_define_skill ("Armour", 1, 1, 100);
alchemy = chad_define_skill ("Alchemy", 1, 1, 100);
medicine = chad_define_skill ("Medicine", 1, 1, 100);
mercantile = chad_define_skill ("Mercantile", 1, 1, 100);
farmer = chad_define_skill ("Farmer", 1, 1, 100);
miner = chad_define_skill ("Miner", 1, 1, 100);
lumber = chad_define_skill ("Lumber", 1, 1, 100);
traps = chad_define_skill ("Traps", 1, 1, 100);
water_magic = chad_define_skill ("Water Magic", 1, 1, 100);
earth_magic = chad_define_skill ("Earth Magic", 1, 1, 100);
wind_magic = chad_define_skill ("Wind Magic", 1, 1, 100);
black_magic = chad_define_skill ("Black Magic", 1, 1, 100);
rune_magic = chad_define_skill ("Rune Magic", 1, 1, 100);
summon_magic = chad_define_skill ("Summon Magic", 1, 1, 100);
ritual_magic = chad_define_skill ("Ritual Magic", 1, 1, 100);
charm_magic = chad_define_skill ("Charm Magic", 1, 1, 100);
}

static void define_values (void) {
coin = chad_define_value ("Coin", 1);
food = chad_define_value ("Food", 2);
wood = chad_define_value ("Wood", 5);
stone = chad_define_value ("Stone", 7);
iron = chad_define_value ("Iron", 19);
gold = chad_define_value ("Silver", 23);
silver = chad_define_value ("Gold", 29);
coal = chad_define_value ("Coal", 13);
gems = chad_define_value ("Gems", 31);
mana = chad_define_value ("Mana", 37);
}

static void define_effects (void) {
gain_minor_strength = chad_define_effect (CHAD_ENTITY_TRAIT, CHAD_TARGET_SELF | CHAD_TARGET_INCREASE, strength, 1);
gain_major_strength = chad_define_effect (CHAD_ENTITY_TRAIT, CHAD_TARGET_SELF | CHAD_TARGET_INCREASE, strength, 3);
gain_great_strength = chad_define_effect (CHAD_ENTITY_TRAIT, CHAD_TARGET_SELF | CHAD_TARGET_INCREASE, strength, 7);
}

static void define_mights (void) {
might = chad_define_might ("Might", gain_minor_strength);
}

static void define_magics (void) {
magic = chad_define_magic ("Magic", 3, gain_major_strength);
}

static void define_races (void) {
orc = chad_define_race ("Orc", strength, axes, wood);
human = chad_define_race ("Human", dexterity, medicine, iron);
elf = chad_define_race ("Elf", wisdom, rune_magic, gems);
}

static void define_items (void) {
iron_mace = chad_define_item ("Iron Mace", 2, CHAD_ITEM_WEAPON, gain_minor_strength);
iron_sword = chad_define_item ("Iron Sword", 3, CHAD_ITEM_WEAPON, gain_minor_strength);
iron_axe = chad_define_item ("Iron Axe", 2, CHAD_ITEM_WEAPON, gain_minor_strength);
}

static void define_units (void) {
gnoll = chad_define_unit ("Gnoll", "Dirt-Hut", orc, CHAD_UNIT_RANGE, 1, 2, 7, -1);
gnoll_shaman = chad_define_unit ("Gnoll Shaman", "Treehouse", orc, CHAD_UNIT_MAGIC, 1, 3, 7, -1);
goblin = chad_define_unit ("Goblin", "Dirty Shed", orc, CHAD_UNIT_MELEE, 2, 3, 7, -1);
hob_goblin = chad_define_unit ("Hob-Goblin", "Old Barracks", orc, CHAD_UNIT_MELEE | CHAD_UNIT_MAGIC, 3, 5, 7, -1);
thief = chad_define_unit ("Thief", "Thief Storehouse", orc, CHAD_UNIT_MELEE, 3, 7, 7, -1);
looter = chad_define_unit ("Looter", "Abandoned Manor", orc, CHAD_UNIT_RANGE, 5, 7, 7, -1);
warrior = chad_define_unit ("Warrior", "Longhouse", orc, CHAD_UNIT_MELEE, 7, 11, 7, -1);
shaman = chad_define_unit ("Shaman", "Cottage", orc, CHAD_UNIT_MAGIC, 7, 11, 7, -1);
chief = chad_define_unit ("Chief", "Campgrounds", orc, CHAD_UNIT_MELEE | CHAD_UNIT_RANGE, 11, 13, 7, -1);
wolf_rider = chad_define_unit ("Wolf-Rider", "Wold Den", orc, CHAD_UNIT_MELEE | CHAD_UNIT_RANGE, 17, 17, 7, -1);
boar_rider = chad_define_unit ("Boar-Rider", "Boar Ranch", orc, CHAD_UNIT_RANGE, 19, 23, 7, -1);
overlord = chad_define_unit ("Overlord", "Orcish Temple", orc, CHAD_UNIT_MELEE | CHAD_UNIT_MAGIC, 23, 13, 7, -1);
ogre = chad_define_unit ("Ogre", "Highlands", orc, CHAD_UNIT_MELEE, 29, 23, 7, -1);
ogre_mage = chad_define_unit ("Ogre Mage", "Highland Tower", orc, CHAD_UNIT_MELEE | CHAD_UNIT_MAGIC, 31, 29, 7, -1);
troll = chad_define_unit ("Troll", "Troll Den", orc, CHAD_UNIT_MELEE, 37, 31, 7, -1);
war_troll = chad_define_unit ("War Troll", "Cavern-Fort", orc, CHAD_UNIT_MELEE | CHAD_UNIT_RANGE, 41, 37, 7, -1);
basilisk = chad_define_unit ("Basilisk", "Dungeon", orc, CHAD_UNIT_MELEE | CHAD_UNIT_EXTRA, 53, 59, 7, -1);
wyvern = chad_define_unit ("Wyvern", "Swamp Pit", orc, CHAD_UNIT_MELEE | CHAD_UNIT_EXTRA, 59, 53, 7, -1);
peasant = chad_define_unit ("Peasant", "Farm", human, CHAD_UNIT_MELEE, 1, 1, 7, -1);
scout = chad_define_unit ("Scout", "Scout Shack", human, CHAD_UNIT_RANGE, 2, 3, 7, -1);
hunter = chad_define_unit ("Hunter", "Archery", human, CHAD_UNIT_RANGE, 2, 3, 7, -1);
swordman = chad_define_unit ("Swordman", "House of Slashing", human, CHAD_UNIT_MELEE, 3, 5, 7, -1);
axeman = chad_define_unit ("Axeman", "House of Cutting", human, CHAD_UNIT_MELEE, 5, 5, 7, -1);
crossbowman = chad_define_unit ("Crossbowman", "House of Shooting", human, CHAD_UNIT_RANGE, 5, 5, 7, -1);
horseman = chad_define_unit ("Horseman", "Horse Ranch", human, CHAD_UNIT_MELEE, 7, 11, 7, -1);
guard = chad_define_unit ("Guard", "Guard Barracks", human, CHAD_UNIT_MELEE, 7, 7, 7, -1);
elite_guard = chad_define_unit ("Elite Guard", "Guard Home", human, CHAD_UNIT_MELEE, 13, 11, 7, -1);
lancer = chad_define_unit ("Lancer", "Riding Meadow", human, CHAD_UNIT_MELEE | CHAD_UNIT_RANGE, 17, 17, 7, -1);
knight = chad_define_unit ("Knight", "Mansion of Honour", human, CHAD_UNIT_MELEE, 19, 23, 7, -1);
kingsman = chad_define_unit ("Kingsman", "King's Academy", human, CHAD_UNIT_MELEE, 19, 17, 7, -1);
mage = chad_define_unit ("Mage", "School of Mana", human, CHAD_UNIT_MAGIC, 23, 7, 7, -1);
arch_mage = chad_define_unit ("Arch-Mage", "Temple of Mana", human, CHAD_UNIT_MAGIC, 29, 11, 7, -1);
giant = chad_define_unit ("Giant", "Mound", human, CHAD_UNIT_MELEE, 41, 59, 7, -1);
war_giant = chad_define_unit ("War Giant", "Mound-Fort", human, CHAD_UNIT_MELEE | CHAD_UNIT_RANGE, 43, 67, 7, -1);
griffin = chad_define_unit ("Griffin", "Griffin Nest", human, CHAD_UNIT_MELEE, 47, 53, 7, -1);
roc = chad_define_unit ("Roc", "Heavenly Temple", human, CHAD_UNIT_MELEE | CHAD_UNIT_MAGIC, 53, 61, 7, -1);
sprite = chad_define_unit ("Sprite", "Little Lamp", elf, CHAD_UNIT_MELEE, 1, 1, 7, -1);
nature_spirit = chad_define_unit ("Nature Spirit", "Flower Palace", elf, CHAD_UNIT_MELEE, 1, 1, 7, -1);
half_elf = chad_define_unit ("Half-Elf", "Slums", elf, CHAD_UNIT_MELEE, 1, 3, 7, -1);
ranger = chad_define_unit ("Ranger", "Ranger Guild", elf, CHAD_UNIT_MELEE, 3, 5, 7, -1);
archer = chad_define_unit ("Archer", "Arrow House", elf, CHAD_UNIT_MELEE | CHAD_UNIT_RANGE, 3, 7, 7, -1);
elite_archer = chad_define_unit ("Elite Archer", "Arrow Fortress", elf, CHAD_UNIT_MELEE | CHAD_UNIT_RANGE, 5, 7, 7, -1);
blademaster = chad_define_unit ("Blademaster", "School of Blades", elf, CHAD_UNIT_MELEE | CHAD_UNIT_MAGIC, 7, 11, 7, -1);
water_mage = chad_define_unit ("Water Mage", "Water Temple", elf, CHAD_UNIT_MAGIC, 11, 11, 7, -1);
earth_mage = chad_define_unit ("Earth Mage", "Earth Temple", elf, CHAD_UNIT_MAGIC, 13, 13, 7, -1);
wind_mage = chad_define_unit ("Wind Mage", "Wind Temple", elf, CHAD_UNIT_MAGIC, 13, 17, 7, -1);
rune_mage = chad_define_unit ("Rune Mage", "Rune Monastery", elf, CHAD_UNIT_MAGIC, 17, 19, 7, -1);
runemaster = chad_define_unit ("Runemaster", "Ancient Ruins", elf, CHAD_UNIT_MAGIC, 19, 23, 7, -1);
sacrificer = chad_define_unit ("Sacrificer", "Altair", elf, CHAD_UNIT_MAGIC, 23, 19, 7, -1);
elk_rider = chad_define_unit ("Elk Rider", "Elk Ranch-House", elf, CHAD_UNIT_MELEE, 29, 23, 7, -1);
warmaster = chad_define_unit ("Warmaster", "Elven Fort", elf, CHAD_UNIT_MELEE | CHAD_UNIT_MAGIC, 41, 59, 7, -1);
coal_golem = chad_define_unit ("Coal Golem", "Old Coal Mine", elf, CHAD_UNIT_MELEE, 43, 53, 7, -1);
iron_golem = chad_define_unit ("Iron Golem", "Old Iron Mine", elf, CHAD_UNIT_MELEE, 47, 67, 7, -1);
sage = chad_define_unit ("Sage", "Cabin in the Woods", elf, CHAD_UNIT_RANGE | CHAD_UNIT_MAGIC, 67, 47, 7, -1);
}

static void define_blocks (void) {
(void) chad_define_block ("Ashland", 0, 12, -1, -1, -1);
(void) chad_define_block ("Ashdirt", 0, 6, -1, -1, -1);
(void) chad_define_block ("Ashdust", 0, 6, -1, -1, -1);

(void) chad_define_block ("Garbage", CHAD_BLOCK_RANDOM, 12, -1, -1, -1);

(void) chad_define_block ("Ashdirt", CHAD_BLOCK_UP, 1, 0, 1, -1);
(void) chad_define_block ("Ashdirt", CHAD_BLOCK_DOWN, 1, 0, 1, -1);
(void) chad_define_block ("Ashdirt", CHAD_BLOCK_LEFT, 1, 0, 1, -1);
(void) chad_define_block ("Ashdirt", CHAD_BLOCK_RIGHT, 1, 0, 1, -1);

(void) chad_define_block ("Ashdirt", CHAD_BLOCK_UP | CHAD_BLOCK_LEFT, 1, 0, 1, -1);
(void) chad_define_block ("Ashdirt", CHAD_BLOCK_UP | CHAD_BLOCK_RIGHT, 1, 0, 1, -1);
(void) chad_define_block ("Ashdirt", CHAD_BLOCK_DOWN | CHAD_BLOCK_LEFT, 1, 0, 1, -1);
(void) chad_define_block ("Ashdirt", CHAD_BLOCK_DOWN | CHAD_BLOCK_RIGHT, 1, 0, 1, -1);
(void) chad_define_block ("Ashdirt", CHAD_BLOCK_UP | CHAD_BLOCK_LEFT, 1, 1, 0, -1);
(void) chad_define_block ("Ashdirt", CHAD_BLOCK_UP | CHAD_BLOCK_RIGHT, 1, 1, 0, -1);
(void) chad_define_block ("Ashdirt", CHAD_BLOCK_DOWN | CHAD_BLOCK_LEFT, 1, 1, 0, -1);
(void) chad_define_block ("Ashdirt", CHAD_BLOCK_DOWN | CHAD_BLOCK_RIGHT, 1, 1, 0, -1);

(void) chad_define_block ("Ashdust", CHAD_BLOCK_UP, 1, 0, 2, -1);
(void) chad_define_block ("Ashdust", CHAD_BLOCK_DOWN, 1, 0, 2, -1);
(void) chad_define_block ("Ashdust", CHAD_BLOCK_LEFT, 1, 0, 2, -1);
(void) chad_define_block ("Ashdust", CHAD_BLOCK_RIGHT, 1, 0, 2, -1);

(void) chad_define_block ("Ashdust", CHAD_BLOCK_UP | CHAD_BLOCK_LEFT, 1, 0, 2, -1);
(void) chad_define_block ("Ashdust", CHAD_BLOCK_UP | CHAD_BLOCK_RIGHT, 1, 0, 2, -1);
(void) chad_define_block ("Ashdust", CHAD_BLOCK_DOWN | CHAD_BLOCK_LEFT, 1, 0, 2, -1);
(void) chad_define_block ("Ashdust", CHAD_BLOCK_DOWN | CHAD_BLOCK_RIGHT, 1, 0, 2, -1);
(void) chad_define_block ("Ashdust", CHAD_BLOCK_UP | CHAD_BLOCK_LEFT, 1, 2, 0, -1);
(void) chad_define_block ("Ashdust", CHAD_BLOCK_UP | CHAD_BLOCK_RIGHT, 1, 2, 0, -1);
(void) chad_define_block ("Ashdust", CHAD_BLOCK_DOWN | CHAD_BLOCK_LEFT, 1, 2, 0, -1);
(void) chad_define_block ("Ashdust", CHAD_BLOCK_DOWN | CHAD_BLOCK_RIGHT, 1, 2, 0, -1);
}

void game_configure (void) {
define_traits ();
define_skills ();
define_values ();
define_effects ();
define_mights ();
define_magics ();
define_races ();
define_items ();
define_units ();
define_blocks ();

(void) chad_define_world ("Ashlands", 0XBEEF, 0, chad_block_count);
chad_define_trait ("Strength", 1, 1, 10);
chad_define_trait ("Dexterity", 1, 1, 10);
chad_define_trait ("Wisdom", 1, 1, 10);

chad_define_skill ("Swords", 1, 1, 100);
chad_define_skill ("Axes", 1, 1, 100);
chad_define_skill ("Maces", 1, 1, 100);
chad_define_skill ("Staves", 1, 1, 100);
chad_define_skill ("Bows", 1, 1, 100);
chad_define_skill ("Crossbows", 1, 1, 100);
chad_define_skill ("Slings", 1, 1, 100);
chad_define_skill ("Shields", 1, 1, 100);
chad_define_skill ("Armour", 1, 1, 100);
chad_define_skill ("Alchemy", 1, 1, 100);
chad_define_skill ("Medicine", 1, 1, 100);
chad_define_skill ("Mercantile", 1, 1, 100);
chad_define_skill ("Farmer", 1, 1, 100);
chad_define_skill ("Miner", 1, 1, 100);
chad_define_skill ("Lumber", 1, 1, 100);
chad_define_skill ("Traps", 1, 1, 100);
chad_define_skill ("Water Magic", 1, 1, 100);
chad_define_skill ("Earth Magic", 1, 1, 100);
chad_define_skill ("Wind Magic", 1, 1, 100);
chad_define_skill ("Black Magic", 1, 1, 100);
chad_define_skill ("Rune Magic", 1, 1, 100);
chad_define_skill ("Summon Magic", 1, 1, 100);
chad_define_skill ("Ritual Magic", 1, 1, 100);
chad_define_skill ("Charm Magic", 1, 1, 100);

chad_define_value ("Coin", 1);
chad_define_value ("Food", 2);
chad_define_value ("Wood", 5);
chad_define_value ("Stone", 7);
chad_define_value ("Iron", 19);
chad_define_value ("Silver", 23);
chad_define_value ("Gold", 29);
chad_define_value ("Coal", 13);
chad_define_value ("Gems", 31);
chad_define_value ("Mana", 37);

chad_define_effect (CHAD_ENTITY_TRAIT, CHAD_TARGET_SELF | CHAD_TARGET_INCREASE, strength, 1);
chad_define_effect (CHAD_ENTITY_TRAIT, CHAD_TARGET_SELF | CHAD_TARGET_INCREASE, strength, 3);
chad_define_effect (CHAD_ENTITY_TRAIT, CHAD_TARGET_SELF | CHAD_TARGET_INCREASE, strength, 7);

chad_define_might ("Might", gain_minor_strength);

chad_define_magic ("Magic", 3, gain_major_strength);

chad_define_race ("Orc", strength, axes, wood);
chad_define_race ("Human", dexterity, medicine, iron);
chad_define_race ("Elf", wisdom, rune_magic, gems);

chad_define_item ("Iron Mace", 2, CHAD_ITEM_WEAPON, gain_minor_strength);
chad_define_item ("Iron Sword", 3, CHAD_ITEM_WEAPON, gain_minor_strength);
chad_define_item ("Iron Axe", 2, CHAD_ITEM_WEAPON, gain_minor_strength);

chad_define_unit ("Gnoll", "Dirt-Hut", orc, CHAD_UNIT_RANGE, 1, 2, 7, -1);
chad_define_unit ("Gnoll Shaman", "Treehouse", orc, CHAD_UNIT_MAGIC, 1, 3, 7, -1);
chad_define_unit ("Goblin", "Dirty Shed", orc, CHAD_UNIT_MELEE, 2, 3, 7, -1);
chad_define_unit ("Hob-Goblin", "Old Barracks", orc, CHAD_UNIT_MELEE | CHAD_UNIT_MAGIC, 3, 5, 7, -1);
chad_define_unit ("Thief", "Thief Storehouse", orc, CHAD_UNIT_MELEE, 3, 7, 7, -1);
chad_define_unit ("Looter", "Abandoned Manor", orc, CHAD_UNIT_RANGE, 5, 7, 7, -1);
chad_define_unit ("Warrior", "Longhouse", orc, CHAD_UNIT_MELEE, 7, 11, 7, -1);
chad_define_unit ("Shaman", "Cottage", orc, CHAD_UNIT_MAGIC, 7, 11, 7, -1);
chad_define_unit ("Chief", "Campgrounds", orc, CHAD_UNIT_MELEE | CHAD_UNIT_RANGE, 11, 13, 7, -1);
chad_define_unit ("Wolf-Rider", "Wold Den", orc, CHAD_UNIT_MELEE | CHAD_UNIT_RANGE, 17, 17, 7, -1);
chad_define_unit ("Boar-Rider", "Boar Ranch", orc, CHAD_UNIT_RANGE, 19, 23, 7, -1);
chad_define_unit ("Overlord", "Orcish Temple", orc, CHAD_UNIT_MELEE | CHAD_UNIT_MAGIC, 23, 13, 7, -1);
chad_define_unit ("Ogre", "Highlands", orc, CHAD_UNIT_MELEE, 29, 23, 7, -1);
chad_define_unit ("Ogre Mage", "Highland Tower", orc, CHAD_UNIT_MELEE | CHAD_UNIT_MAGIC, 31, 29, 7, -1);
chad_define_unit ("Troll", "Troll Den", orc, CHAD_UNIT_MELEE, 37, 31, 7, -1);
chad_define_unit ("War Troll", "Cavern-Fort", orc, CHAD_UNIT_MELEE | CHAD_UNIT_RANGE, 41, 37, 7, -1);
chad_define_unit ("Basilisk", "Dungeon", orc, CHAD_UNIT_MELEE | CHAD_UNIT_EXTRA, 53, 59, 7, -1);
chad_define_unit ("Wyvern", "Swamp Pit", orc, CHAD_UNIT_MELEE | CHAD_UNIT_EXTRA, 59, 53, 7, -1);
chad_define_unit ("Peasant", "Farm", human, CHAD_UNIT_MELEE, 1, 1, 7, -1);
chad_define_unit ("Scout", "Scout Shack", human, CHAD_UNIT_RANGE, 2, 3, 7, -1);
chad_define_unit ("Hunter", "Archery", human, CHAD_UNIT_RANGE, 2, 3, 7, -1);
chad_define_unit ("Swordman", "House of Slashing", human, CHAD_UNIT_MELEE, 3, 5, 7, -1);
chad_define_unit ("Axeman", "House of Cutting", human, CHAD_UNIT_MELEE, 5, 5, 7, -1);
chad_define_unit ("Crossbowman", "House of Shooting", human, CHAD_UNIT_RANGE, 5, 5, 7, -1);
chad_define_unit ("Horseman", "Horse Ranch", human, CHAD_UNIT_MELEE, 7, 11, 7, -1);
chad_define_unit ("Guard", "Guard Barracks", human, CHAD_UNIT_MELEE, 7, 7, 7, -1);
chad_define_unit ("Elite Guard", "Guard Home", human, CHAD_UNIT_MELEE, 13, 11, 7, -1);
chad_define_unit ("Lancer", "Riding Meadow", human, CHAD_UNIT_MELEE | CHAD_UNIT_RANGE, 17, 17, 7, -1);
chad_define_unit ("Knight", "Mansion of Honour", human, CHAD_UNIT_MELEE, 19, 23, 7, -1);
chad_define_unit ("Kingsman", "King's Academy", human, CHAD_UNIT_MELEE, 19, 17, 7, -1);
chad_define_unit ("Mage", "School of Mana", human, CHAD_UNIT_MAGIC, 23, 7, 7, -1);
chad_define_unit ("Arch-Mage", "Temple of Mana", human, CHAD_UNIT_MAGIC, 29, 11, 7, -1);
chad_define_unit ("Giant", "Mound", human, CHAD_UNIT_MELEE, 41, 59, 7, -1);
chad_define_unit ("War Giant", "Mound-Fort", human, CHAD_UNIT_MELEE | CHAD_UNIT_RANGE, 43, 67, 7, -1);
chad_define_unit ("Griffin", "Griffin Nest", human, CHAD_UNIT_MELEE, 47, 53, 7, -1);
chad_define_unit ("Roc", "Heavenly Temple", human, CHAD_UNIT_MELEE | CHAD_UNIT_MAGIC, 53, 61, 7, -1);
chad_define_unit ("Sprite", "Little Lamp", elf, CHAD_UNIT_MELEE, 1, 1, 7, -1);
chad_define_unit ("Nature Spirit", "Flower Palace", elf, CHAD_UNIT_MELEE, 1, 1, 7, -1);
chad_define_unit ("Half-Elf", "Slums", elf, CHAD_UNIT_MELEE, 1, 3, 7, -1);
chad_define_unit ("Ranger", "Ranger Guild", elf, CHAD_UNIT_MELEE, 3, 5, 7, -1);
chad_define_unit ("Archer", "Arrow House", elf, CHAD_UNIT_MELEE | CHAD_UNIT_RANGE, 3, 7, 7, -1);
chad_define_unit ("Elite Archer", "Arrow Fortress", elf, CHAD_UNIT_MELEE | CHAD_UNIT_RANGE, 5, 7, 7, -1);
chad_define_unit ("Blademaster", "School of Blades", elf, CHAD_UNIT_MELEE | CHAD_UNIT_MAGIC, 7, 11, 7, -1);
chad_define_unit ("Water Mage", "Water Temple", elf, CHAD_UNIT_MAGIC, 11, 11, 7, -1);
chad_define_unit ("Earth Mage", "Earth Temple", elf, CHAD_UNIT_MAGIC, 13, 13, 7, -1);
chad_define_unit ("Wind Mage", "Wind Temple", elf, CHAD_UNIT_MAGIC, 13, 17, 7, -1);
chad_define_unit ("Rune Mage", "Rune Monastery", elf, CHAD_UNIT_MAGIC, 17, 19, 7, -1);
chad_define_unit ("Runemaster", "Ancient Ruins", elf, CHAD_UNIT_MAGIC, 19, 23, 7, -1);
chad_define_unit ("Sacrificer", "Altair", elf, CHAD_UNIT_MAGIC, 23, 19, 7, -1);
chad_define_unit ("Elk Rider", "Elk Ranch-House", elf, CHAD_UNIT_MELEE, 29, 23, 7, -1);
chad_define_unit ("Warmaster", "Elven Fort", elf, CHAD_UNIT_MELEE | CHAD_UNIT_MAGIC, 41, 59, 7, -1);
chad_define_unit ("Coal Golem", "Old Coal Mine", elf, CHAD_UNIT_MELEE, 43, 53, 7, -1);
chad_define_unit ("Iron Golem", "Old Iron Mine", elf, CHAD_UNIT_MELEE, 47, 67, 7, -1);
chad_define_unit ("Sage", "Cabin in the Woods", elf, CHAD_UNIT_RANGE | CHAD_UNIT_MAGIC, 67, 47, 7, -1);

chad_define_block ("Ashland", 0, 12, -1, -1, -1);
chad_define_block ("Ashdirt", 0, 6, -1, -1, -1);
chad_define_block ("Ashdust", 0, 6, -1, -1, -1);

chad_define_block ("Garbage", CHAD_BLOCK_RANDOM, 12, -1, -1, -1);

chad_define_block ("Ashdirt", CHAD_BLOCK_UP, 1, 0, 1, -1);
chad_define_block ("Ashdirt", CHAD_BLOCK_DOWN, 1, 0, 1, -1);
chad_define_block ("Ashdirt", CHAD_BLOCK_LEFT, 1, 0, 1, -1);
chad_define_block ("Ashdirt", CHAD_BLOCK_RIGHT, 1, 0, 1, -1);

chad_define_block ("Ashdirt", CHAD_BLOCK_UP | CHAD_BLOCK_LEFT, 1, 0, 1, -1);
chad_define_block ("Ashdirt", CHAD_BLOCK_UP | CHAD_BLOCK_RIGHT, 1, 0, 1, -1);
chad_define_block ("Ashdirt", CHAD_BLOCK_DOWN | CHAD_BLOCK_LEFT, 1, 0, 1, -1);
chad_define_block ("Ashdirt", CHAD_BLOCK_DOWN | CHAD_BLOCK_RIGHT, 1, 0, 1, -1);
chad_define_block ("Ashdirt", CHAD_BLOCK_UP | CHAD_BLOCK_LEFT, 1, 1, 0, -1);
chad_define_block ("Ashdirt", CHAD_BLOCK_UP | CHAD_BLOCK_RIGHT, 1, 1, 0, -1);
chad_define_block ("Ashdirt", CHAD_BLOCK_DOWN | CHAD_BLOCK_LEFT, 1, 1, 0, -1);
chad_define_block ("Ashdirt", CHAD_BLOCK_DOWN | CHAD_BLOCK_RIGHT, 1, 1, 0, -1);

chad_define_block ("Ashdust", CHAD_BLOCK_UP, 1, 0, 2, -1);
chad_define_block ("Ashdust", CHAD_BLOCK_DOWN, 1, 0, 2, -1);
chad_define_block ("Ashdust", CHAD_BLOCK_LEFT, 1, 0, 2, -1);
chad_define_block ("Ashdust", CHAD_BLOCK_RIGHT, 1, 0, 2, -1);

chad_define_block ("Ashdust", CHAD_BLOCK_UP | CHAD_BLOCK_LEFT, 1, 0, 2, -1);
chad_define_block ("Ashdust", CHAD_BLOCK_UP | CHAD_BLOCK_RIGHT, 1, 0, 2, -1);
chad_define_block ("Ashdust", CHAD_BLOCK_DOWN | CHAD_BLOCK_LEFT, 1, 0, 2, -1);
chad_define_block ("Ashdust", CHAD_BLOCK_DOWN | CHAD_BLOCK_RIGHT, 1, 0, 2, -1);
chad_define_block ("Ashdust", CHAD_BLOCK_UP | CHAD_BLOCK_LEFT, 1, 2, 0, -1);
chad_define_block ("Ashdust", CHAD_BLOCK_UP | CHAD_BLOCK_RIGHT, 1, 2, 0, -1);
chad_define_block ("Ashdust", CHAD_BLOCK_DOWN | CHAD_BLOCK_LEFT, 1, 2, 0, -1);
chad_define_block ("Ashdust", CHAD_BLOCK_DOWN | CHAD_BLOCK_RIGHT, 1, 2, 0, -1);

chad_define_world ("Ashlands", 0XBEEF, 0, chad_block_count);

chad_configure ();
}

int strength, dexterity, wisdom;

int swords, axes, maces, staves, bows, crossbows, slings, shields, armour, alchemy, medicine, mercantile, farmer, miner, lumber, traps, water_magic, earth_magic, wind_magic,
black_magic, rune_magic, summon_magic, ritual_magic, charm_magic;

int coin, food, wood, stone, iron, gold, silver, coal, gems, mana;

int gain_minor_strength, gain_major_strength, gain_great_strength;

int might;

int magic;

int orc, human, elf;

int iron_mace, iron_sword, iron_axe;

int gnoll, gnoll_shaman, goblin, hob_goblin, thief, looter, warrior, shaman, chief, wolf_rider, boar_rider, overlord, ogre, ogre_mage, troll, war_troll, basilisk, wyvern, peasant,
scout, hunter, swordman, axeman, crossbowman, horseman, guard, elite_guard, lancer, knight, kingsman, mage, arch_mage, giant, war_giant, griffin, roc, sprite, nature_spirit,
half_elf, ranger, archer, elite_archer, blademaster, water_mage, earth_mage, wind_mage, rune_mage, runemaster, sacrificer, elk_rider, warmaster, coal_golem, iron_golem, sage;

+ 62
- 22
source/game.h Datei anzeigen

@@ -1,23 +1,63 @@
extern void game_configure (void);

extern int strength, dexterity, wisdom;

extern int swords, axes, maces, staves, bows, crossbows, slings, shields, armour, alchemy, medicine, mercantile, farmer, miner, lumber, traps, water_magic, earth_magic,
wind_magic, black_magic, rune_magic, summon_magic, ritual_magic, charm_magic;

extern int coin, food, wood, stone, iron, gold, silver, coal, gems, mana;

extern int gain_minor_strength, gain_major_strength, gain_great_strength;
#define CHAD_TRAIT_LIMIT ( 3)
#define CHAD_SKILL_LIMIT (24)
#define CHAD_VALUE_LIMIT (10)
#define CHAD_EFFECT_LIMIT ( 3)
#define CHAD_MIGHT_LIMIT ( 1)
#define CHAD_MAGIC_LIMIT ( 1)
#define CHAD_RACE_LIMIT ( 3)
#define CHAD_ITEM_LIMIT ( 3)
#define CHAD_UNIT_LIMIT (54)
#define CHAD_HERO_LIMIT ( 1)
#define CHAD_BLOCK_LIMIT (28)
#define CHAD_WORLD_LIMIT ( 1)
#define CHAD_WORLD_WIDTH (90)
#define CHAD_WORLD_HEIGHT (90)

#include <xolatile/chads.h>

enum {
strength, dexterity, wisdom
};

enum {
swords, axes, maces, staves, bows, crossbows, slings, shields,
armour, alchemy, medicine, mercantile, farmer, miner, lumber, traps,
water_magic, earth_magic, wind_magic, black_magic, rune_magic, summon_magic, ritual_magic, charm_magic
};

enum {
coin, food, wood, stone, iron, gold, silver, coal,
gems, mana
};

enum {
gain_minor_strength, gain_major_strength, gain_great_strength
};

enum {
might
};

enum {
magic
};

enum {
orc, human, elf
};

enum {
iron_mace, iron_sword, iron_axe
};

enum {
gnoll, gnoll_shaman, goblin, hob_goblin, thief, looter, warrior, shaman,
chief, wolf_rider, boar_rider, overlord, ogre, ogre_mage, troll, war_troll,
basilisk, wyvern, peasant, scout, hunter, swordman, axeman, crossbowman,
horseman, guard, elite_guard, lancer, knight, kingsman, mage, arch_mage,
giant, war_giant, griffin, roc, sprite, nature_spirit, half_elf, ranger,
archer, elite_archer, blademaster, water_mage, earth_mage, wind_mage, rune_mage, runemaster,
sacrificer, elk_rider, warmaster, coal_golem, iron_golem, sage
};

extern int might;

extern int magic;

extern int orc, human, elf;

extern int iron_mace, iron_sword, iron_axe;

extern int gnoll, gnoll_shaman, goblin, hob_goblin, thief, looter, warrior, shaman, chief, wolf_rider, boar_rider, overlord, ogre, ogre_mage, troll, war_troll, basilisk, wyvern,
peasant, scout, hunter, swordman, axeman, crossbowman, horseman, guard, elite_guard, lancer, knight, kingsman, mage, arch_mage, giant, war_giant, griffin, roc, sprite,
nature_spirit, half_elf, ranger, archer, elite_archer, blademaster, water_mage, earth_mage, wind_mage, rune_mage, runemaster, sacrificer, elk_rider, warmaster,
coal_golem, iron_golem, sage;
extern void game_configure (void);

+ 2
- 2
source/main.c Datei anzeigen

@@ -1,12 +1,12 @@
#include "core.h"
#include "game.h"
#include "render.h"
#include "engine.h"
#include "menu.h"

int main (void) {
game_configure ();

engine_configure ();
render_configure ();

menu_configure ();



+ 4
- 3
source/menu.c Datei anzeigen

@@ -1,6 +1,7 @@
#include "core.h"
#include "game.h"
#include "engine.h"
//~#include "engine.h"
#include "render.h"
#include "menu.h"

int define_menu_item (int menu,
@@ -26,8 +27,8 @@ void render_menu_item (int menu, int item, int x, int y) {
int u = (menu_icon [menu] [item] / 10) * ICON_SIZE;
int v = (menu_icon [menu] [item] % 10) * ICON_SIZE;

render_icon (u, v, ICON_SIZE, ICON_SIZE, x, y + item * ICON_SIZE);
render_text (menu_text [menu] [item], x + ICON_SIZE, y + item * ICON_SIZE);
render_sprite (u, v, ICON_SIZE, ICON_SIZE, x, y + item * ICON_SIZE);
render_string (menu_text [menu] [item], x + ICON_SIZE, y + item * ICON_SIZE);
}

void render_menu (int menu, int align, int x, int y) {


+ 43
- 0
source/render.c Datei anzeigen

@@ -0,0 +1,43 @@
#include "render.h"

float render_zoom = 2.0F;

Texture2D render_texture [render_texture_count];

void render_sprite (int sprite, int x, int y, int u, int v, int width, int height) {
DrawTextureRec (icons, (Rectangle) { u, v, width, height }, (Vector2) { x, y }, WHITE);
}

void render_string (char * string, int x, int y) {
DrawText (text, x + 6, y + 6, FONT_SIZE, WHITE);
}

static void render_clean_up (void) {
CloseWindow ();
}

void render_configure (void) {
InitWindow (1800, 900, "EAX");
SetExitKey (KEY_ESCAPE);
SetTargetFPS (60);

atexit (render_clean_up);

render_texture [ui] = LoadTexture ("sprite/menu/menu.png");

SetTextureFilter (render_texture [ui], TEXTURE_FILTER_POINT);

render_texture [traits] = LoadTexture ("sprite/menu/traits.png");
render_texture [skills] = LoadTexture ("sprite/menu/skills.png");
render_texture [values] = LoadTexture ("sprite/menu/values.png");
render_texture [units] = LoadTexture ("sprite/menu/units.png");
render_texture [blocks] = LoadTexture ("sprite/menu/blocks.png");

ashlands_data = LoadTexture ("sprite/world/ashlands.png");

//~Texture2D vvv = LoadTexture ("sprite/orc/manor.png");

unit_data [orc] = LoadTexture ("sprite/orc/units.png");
unit_data [human] = LoadTexture ("sprite/human/units.png");
unit_data [elf] = LoadTexture ("sprite/elf/units.png");
}

+ 21
- 0
source/render.h Datei anzeigen

@@ -0,0 +1,21 @@
#include <string.h>
#include <stdlib.h>
#include <raylib.h>

#define BASE_SIZE (16)
#define ICON_SIZE (32)
#define FONT_SIZE (24)

enum {
ui, traits, skills, values, units, blocks,
render_texture_count
};

extern float render_zoom;

extern Texture2D render_texture [render_texture_count];

extern void render_sprite (int sprite, int x, int y, int u, int v, int width, int height);
extern void render_string (char * string, int x, int y);

extern void render_configure (void);

+ 0
- 1
source/source.c Datei anzeigen

@@ -1,4 +1,3 @@

#include <fcntl.h>
#include <unistd.h>
#include <string.h>


+ 1
- 0
source/system.c Datei anzeigen

@@ -0,0 +1 @@


+ 1
- 0
source/system.h Datei anzeigen

@@ -0,0 +1 @@


Laden…
Abbrechen
Speichern