@@ -2,19 +2,19 @@ | |||
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/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 | |||
clang -g -ansi -Weverything -Werror -Ofast -c -o ./source/engine.o ./source/engine.c | |||
clang -g -ansi -Weverything -Werror -Ofast -c -o ./source/render.o ./source/render.c | |||
clang -g -ansi -Weverything -Werror -Ofast -c -o ./source/game.o ./source/game.c | |||
clang -g -ansi -Weverything -Werror -Ofast -c -o ./source/menu.o ./source/menu.c | |||
#~clang -g -ansi -Weverything -Werror -Ofast -c -o ./source/source.o ./source/source.c | |||
clang -g -ansi -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/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 -g -ansi -Wall -Wextra -Wpedantic -Werror -Ofast -c -o ./source/engine.o ./source/engine.c | |||
gcc -g -ansi -Wall -Wextra -Wpedantic -Werror -Ofast -c -o ./source/render.o ./source/render.c | |||
gcc -g -ansi -Wall -Wextra -Wpedantic -Werror -Ofast -c -o ./source/game.o ./source/game.c | |||
gcc -g -ansi -Wall -Wextra -Wpedantic -Werror -Ofast -c -o ./source/menu.o ./source/menu.c | |||
#~gcc -g -ansi -Wall -Wextra -Wpedantic -Werror -Ofast -c -o ./source/source.o ./source/source.c | |||
gcc -g -ansi -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/game.o ./source/engine.o ./source/menu.o ./source/render.o -lraylib | |||
@@ -1,10 +1,12 @@ | |||
#include "engine.h" | |||
void view_unit (int race, int unit, int x, int y) { | |||
int u = 0; | |||
int v = (unit - race * 18) * BASE_SIZE; | |||
int width = BASE_SIZE; | |||
int height = BASE_SIZE; | |||
int u, v, width, height; | |||
u = 0; | |||
v = (unit - race * 18) * BASE_SIZE; | |||
width = BASE_SIZE; | |||
height = BASE_SIZE; | |||
switch (race) { | |||
case orc: render_sprite (orcs, x, y, u, v, width, height); break; | |||
@@ -15,56 +17,91 @@ void view_unit (int race, int unit, int x, int y) { | |||
} | |||
void view_menu (int menu, int align, int x, int y) { | |||
int width = (int) strlen (menu_text [menu] [0]); | |||
int height = menu_items [menu]; | |||
int aligned_x = (align == 0) ? x : ((render_width () - ICON_SIZE * width) / 2); | |||
int aligned_y = (align == 0) ? y : ((render_height () - ICON_SIZE * height) / 2); | |||
int item; | |||
int item, width, height, aligned_x, aligned_y, u, v; | |||
if (menu_show [menu] == 0) { | |||
return; | |||
} | |||
width = (int) strlen (menu_text [menu] [0]); | |||
height = menu_items [menu]; | |||
aligned_x = (align == 0) ? x : ((render_width () - ICON_SIZE * width) / 2); | |||
aligned_y = (align == 0) ? y : ((render_height () - ICON_SIZE * height) / 2); | |||
for (item = 0; item < menu_items [menu]; ++item) { | |||
int u = (menu_icon [menu] [item] / 10) * ICON_SIZE; | |||
int v = (menu_icon [menu] [item] % 10) * ICON_SIZE; | |||
u = (menu_icon [menu] [item] / 10) * ICON_SIZE; | |||
v = (menu_icon [menu] [item] % 10) * ICON_SIZE; | |||
render_sprite (ui, aligned_x, aligned_y + item * ICON_SIZE, u, v, ICON_SIZE, ICON_SIZE); | |||
render_string (menu_text [menu] [item], aligned_x + ICON_SIZE, aligned_y + item * ICON_SIZE); | |||
} | |||
} | |||
void view_hud (int alpha, int width, int height, int x, int y) { | |||
int i, j, u, v; | |||
u = width % ICON_SIZE; | |||
v = height % ICON_SIZE; | |||
width /= ICON_SIZE; | |||
height /= ICON_SIZE; | |||
if (alpha == 0) { | |||
for (i = 0; i < width - 1; ++i) { | |||
for (j = 0; j < height - 1; ++j) { | |||
render_sprite (neonui, x + i * ICON_SIZE + ICON_SIZE / 2, y + j * ICON_SIZE + ICON_SIZE / 2, 0, 0, ICON_SIZE, ICON_SIZE); | |||
} | |||
render_sprite (neonui, x + i * ICON_SIZE + ICON_SIZE / 2, y + height * ICON_SIZE + ICON_SIZE / 2, 0, 0, u, ICON_SIZE); | |||
} | |||
render_sprite (neonui, x + width * ICON_SIZE + ICON_SIZE / 2, y + height * ICON_SIZE + ICON_SIZE / 2, 0, 0, ICON_SIZE, v); | |||
} | |||
for (i = 1; i < width; ++i) { | |||
render_sprite (neonui, x + i * ICON_SIZE, y, 560, 0, ICON_SIZE, ICON_SIZE); | |||
render_sprite (neonui, x + i * ICON_SIZE, y + ICON_SIZE * (height - 1) + v, 560, 0, ICON_SIZE, ICON_SIZE); | |||
} | |||
for (i = 1; i < height - 1; ++i) { | |||
render_sprite (neonui, x, y + i * ICON_SIZE, 256, 128, ICON_SIZE, ICON_SIZE); | |||
render_sprite (neonui, x + ICON_SIZE * (width - 1) + u, y + i * ICON_SIZE + v, 256, 128, ICON_SIZE, ICON_SIZE); | |||
} | |||
render_sprite (neonui, x, y, 288, 0, 3 * ICON_SIZE, 3 * ICON_SIZE); | |||
render_sprite (neonui, x + ICON_SIZE * (width - 3) + u, y, 384, 0, 3 * ICON_SIZE, 3 * ICON_SIZE); | |||
render_sprite (neonui, x, y + ICON_SIZE * (height - 3) + v, 288, 96, 3 * ICON_SIZE, 3 * ICON_SIZE); | |||
render_sprite (neonui, x + ICON_SIZE * (width - 3) + u, y + ICON_SIZE * (height - 3) + v, 384, 96, 3 * ICON_SIZE, 3 * ICON_SIZE); | |||
} | |||
void view_neon_menu (int menu, int align, int x, int y) { | |||
int item; | |||
int item, width, height, aligned_x, aligned_y, offset_x, offset_y, i, j; | |||
if (menu_show [menu] == 0) { | |||
return; | |||
} | |||
int width = (int) strlen (menu_text [menu] [0]) + 4; | |||
int height = menu_items [menu] + 4; | |||
width = (int) strlen (menu_text [menu] [0]) + 4; | |||
height = menu_items [menu] + 4; | |||
int aligned_x = (align == 0) ? x : ((render_width () - ICON_SIZE * width) / 2); | |||
int aligned_y = (align == 0) ? y : ((render_height () - ICON_SIZE * height) / 2); | |||
aligned_x = (align == 0) ? x : ((render_width () - ICON_SIZE * width) / 2); | |||
aligned_y = (align == 0) ? y : ((render_height () - ICON_SIZE * height) / 2); | |||
int offset_x = ICON_SIZE * (width - 3); | |||
int offset_y = ICON_SIZE * (height - 3); | |||
offset_x = ICON_SIZE * (width - 3); | |||
offset_y = ICON_SIZE * (height - 3); | |||
for (int p = 0; p < width - 1; ++p) { | |||
for (int q = 0; q < height - 1; ++q) { | |||
render_sprite (neonui, aligned_x + p * ICON_SIZE + ICON_SIZE / 2, aligned_y + q * ICON_SIZE + ICON_SIZE / 2, 0, 0, ICON_SIZE, ICON_SIZE); | |||
for (i = 0; i < width - 1; ++i) { | |||
for (j = 0; j < height - 1; ++j) { | |||
render_sprite (neonui, aligned_x + i * ICON_SIZE + ICON_SIZE / 2, aligned_y + j * ICON_SIZE + ICON_SIZE / 2, 0, 0, ICON_SIZE, ICON_SIZE); | |||
} | |||
} | |||
for (int n = 1; n < width - 1; ++n) { | |||
render_sprite (neonui, aligned_x + n * ICON_SIZE, aligned_y, 560, 0, ICON_SIZE, ICON_SIZE); | |||
render_sprite (neonui, aligned_x + n * ICON_SIZE, aligned_y + ICON_SIZE * (height - 1), 560, 0, ICON_SIZE, ICON_SIZE); | |||
for (i = 1; i < width - 1; ++i) { | |||
render_sprite (neonui, aligned_x + i * ICON_SIZE, aligned_y, 560, 0, ICON_SIZE, ICON_SIZE); | |||
render_sprite (neonui, aligned_x + i * ICON_SIZE, aligned_y + ICON_SIZE * (height - 1), 560, 0, ICON_SIZE, ICON_SIZE); | |||
} | |||
for (int n = 1; n < height - 1; ++n) { | |||
render_sprite (neonui, aligned_x, aligned_y + n * ICON_SIZE, 256, 128, ICON_SIZE, ICON_SIZE); | |||
render_sprite (neonui, aligned_x + ICON_SIZE * (width - 1), aligned_y + n * ICON_SIZE, 256, 128, ICON_SIZE, ICON_SIZE); | |||
for (i = 1; i < height - 1; ++i) { | |||
render_sprite (neonui, aligned_x, aligned_y + i * ICON_SIZE, 256, 128, ICON_SIZE, ICON_SIZE); | |||
render_sprite (neonui, aligned_x + ICON_SIZE * (width - 1), aligned_y + i * ICON_SIZE, 256, 128, ICON_SIZE, ICON_SIZE); | |||
} | |||
render_sprite (neonui, aligned_x, aligned_y, 288, 0, 3 * ICON_SIZE, 3 * ICON_SIZE); | |||
@@ -76,10 +113,10 @@ void view_neon_menu (int menu, int align, int x, int y) { | |||
aligned_y += 2 * ICON_SIZE; | |||
for (item = 0; item < menu_items [menu]; ++item) { | |||
int u = (menu_icon [menu] [item] / 10) * ICON_SIZE; | |||
int v = (menu_icon [menu] [item] % 10) * ICON_SIZE; | |||
i = (menu_icon [menu] [item] / 10) * ICON_SIZE; | |||
j = (menu_icon [menu] [item] % 10) * ICON_SIZE; | |||
render_sprite (ui, aligned_x, aligned_y + item * ICON_SIZE, u, v, ICON_SIZE, ICON_SIZE); | |||
render_sprite (ui, aligned_x, aligned_y + item * ICON_SIZE, i, j, ICON_SIZE, ICON_SIZE); | |||
render_string (menu_text [menu] [item], aligned_x + ICON_SIZE, aligned_y + item * ICON_SIZE); | |||
} | |||
@@ -89,11 +126,10 @@ void view_map (void) { | |||
int x, y; | |||
for (x = 0; x < CHAD_WORLD_WIDTH; ++x) { | |||
for (y = 0; y < CHAD_WORLD_HEIGHT; ++y) { | |||
int index = chad_world [0] [x] [y]; | |||
int catch = (y * y + x + x / (y + 1) + y / (x + 1)) % chad_block_change [index]; | |||
if (x * BASE_SIZE * render_zoom > render_width () - SIDE_SIZE) break; | |||
render_sprite (ashlands, (int) (x * BASE_SIZE * render_zoom), (int) (y * BASE_SIZE * render_zoom), catch * BASE_SIZE, index * BASE_SIZE, BASE_SIZE, BASE_SIZE); | |||
for (y = 0; y < CHAD_WORLD_HEIGHT; ++y) { | |||
render_sprite (ashlands, (int) (x * BASE_SIZE * render_zoom), (int) (y * BASE_SIZE * render_zoom), 0, chad_world [0] [x] [y] * BASE_SIZE, BASE_SIZE, BASE_SIZE); | |||
} | |||
} | |||
} | |||
@@ -105,3 +141,7 @@ void view_base_1 (int index, int x, int y) { | |||
void view_base_2 (int index, int x, int y) { | |||
render_sprite (base_2, x, y, 0, index * 10 * BASE_SIZE, 15 * BASE_SIZE, 10 * BASE_SIZE); | |||
} | |||
void view_side_hud (void) { | |||
return; | |||
} |
@@ -11,6 +11,8 @@ extern void view_unit (int race, int unit, int x, int y); | |||
extern void view_menu (int menu, int align, int x, int y); | |||
extern void view_hud (int alpha, int width, int height, int x, int y); | |||
extern void view_neon_menu (int menu, int align, int x, int y); | |||
extern void view_map (void); | |||
@@ -18,4 +20,6 @@ extern void view_map (void); | |||
extern void view_base_1 (int index, int x, int y); | |||
extern void view_base_2 (int index, int x, int y); | |||
extern void view_side_hud (void); | |||
#endif |
@@ -63,56 +63,56 @@ void game_configure (void) { | |||
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 ("Thief", "Thief Storehouse", orc, CHAD_UNIT_MELEE, 3, 7, 5, -1); | |||
chad_define_unit ("Looter", "Abandoned Manor", orc, CHAD_UNIT_RANGE, 5, 7, 5, -1); | |||
chad_define_unit ("Warrior", "Longhouse", orc, CHAD_UNIT_MELEE, 7, 11, 5, -1); | |||
chad_define_unit ("Shaman", "Cottage", orc, CHAD_UNIT_MAGIC, 7, 11, 3, -1); | |||
chad_define_unit ("Chief", "Campgrounds", orc, CHAD_UNIT_MELEE | CHAD_UNIT_RANGE, 11, 13, 3, -1); | |||
chad_define_unit ("Wolf-Rider", "Wold Den", orc, CHAD_UNIT_MELEE | CHAD_UNIT_RANGE, 17, 17, 2, -1); | |||
chad_define_unit ("Boar-Rider", "Boar Ranch", orc, CHAD_UNIT_RANGE, 19, 23, 2, -1); | |||
chad_define_unit ("Overlord", "Orcish Temple", orc, CHAD_UNIT_MELEE | CHAD_UNIT_MAGIC, 23, 13, 2, -1); | |||
chad_define_unit ("Ogre", "Highlands", orc, CHAD_UNIT_MELEE, 29, 23, 2, -1); | |||
chad_define_unit ("Ogre Mage", "Highland Tower", orc, CHAD_UNIT_MELEE | CHAD_UNIT_MAGIC, 31, 29, 2, -1); | |||
chad_define_unit ("Troll", "Troll Den", orc, CHAD_UNIT_MELEE, 37, 31, 1, -1); | |||
chad_define_unit ("War Troll", "Cavern-Fort", orc, CHAD_UNIT_MELEE | CHAD_UNIT_RANGE, 41, 37, 1, -1); | |||
chad_define_unit ("Basilisk", "Dungeon", orc, CHAD_UNIT_MELEE | CHAD_UNIT_EXTRA, 53, 59, 1, -1); | |||
chad_define_unit ("Wyvern", "Swamp Pit", orc, CHAD_UNIT_MELEE | CHAD_UNIT_EXTRA, 59, 53, 1, -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 ("Axeman", "House of Cutting", human, CHAD_UNIT_MELEE, 5, 5, 5, -1); | |||
chad_define_unit ("Crossbowman", "House of Shooting", human, CHAD_UNIT_RANGE, 5, 5, 5, -1); | |||
chad_define_unit ("Horseman", "Horse Ranch", human, CHAD_UNIT_MELEE, 7, 11, 5, -1); | |||
chad_define_unit ("Guard", "Guard Barracks", human, CHAD_UNIT_MELEE, 7, 7, 3, -1); | |||
chad_define_unit ("Elite Guard", "Guard Home", human, CHAD_UNIT_MELEE, 13, 11, 3, -1); | |||
chad_define_unit ("Lancer", "Riding Meadow", human, CHAD_UNIT_MELEE | CHAD_UNIT_RANGE, 17, 17, 2, -1); | |||
chad_define_unit ("Knight", "Mansion of Honour", human, CHAD_UNIT_MELEE, 19, 23, 2, -1); | |||
chad_define_unit ("Kingsman", "King's Academy", human, CHAD_UNIT_MELEE, 19, 17, 2, -1); | |||
chad_define_unit ("Mage", "School of Mana", human, CHAD_UNIT_MAGIC, 23, 7, 2, -1); | |||
chad_define_unit ("Arch-Mage", "Temple of Mana", human, CHAD_UNIT_MAGIC, 29, 11, 2, -1); | |||
chad_define_unit ("Giant", "Mound", human, CHAD_UNIT_MELEE, 41, 59, 1, -1); | |||
chad_define_unit ("War Giant", "Mound-Fort", human, CHAD_UNIT_MELEE | CHAD_UNIT_RANGE, 43, 67, 1, -1); | |||
chad_define_unit ("Griffin", "Griffin Nest", human, CHAD_UNIT_MELEE, 47, 53, 1, -1); | |||
chad_define_unit ("Roc", "Heavenly Temple", human, CHAD_UNIT_MELEE | CHAD_UNIT_MAGIC, 53, 61, 1, -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_unit ("Archer", "Arrow House", elf, CHAD_UNIT_MELEE | CHAD_UNIT_RANGE, 3, 7, 5, -1); | |||
chad_define_unit ("Elite Archer", "Arrow Fortress", elf, CHAD_UNIT_MELEE | CHAD_UNIT_RANGE, 5, 7, 5, -1); | |||
chad_define_unit ("Blademaster", "School of Blades", elf, CHAD_UNIT_MELEE | CHAD_UNIT_MAGIC, 7, 11, 5, -1); | |||
chad_define_unit ("Water Mage", "Water Temple", elf, CHAD_UNIT_MAGIC, 11, 11, 3, -1); | |||
chad_define_unit ("Earth Mage", "Earth Temple", elf, CHAD_UNIT_MAGIC, 13, 13, 3, -1); | |||
chad_define_unit ("Wind Mage", "Wind Temple", elf, CHAD_UNIT_MAGIC, 13, 17, 2, -1); | |||
chad_define_unit ("Rune Mage", "Rune Monastery", elf, CHAD_UNIT_MAGIC, 17, 19, 2, -1); | |||
chad_define_unit ("Runemaster", "Ancient Ruins", elf, CHAD_UNIT_MAGIC, 19, 23, 2, -1); | |||
chad_define_unit ("Sacrificer", "Altair", elf, CHAD_UNIT_MAGIC, 23, 19, 2, -1); | |||
chad_define_unit ("Elk Rider", "Elk Ranch-House", elf, CHAD_UNIT_MELEE, 29, 23, 2, -1); | |||
chad_define_unit ("Warmaster", "Elven Fort", elf, CHAD_UNIT_MELEE | CHAD_UNIT_MAGIC, 41, 59, 1, -1); | |||
chad_define_unit ("Coal Golem", "Old Coal Mine", elf, CHAD_UNIT_MELEE, 43, 53, 1, -1); | |||
chad_define_unit ("Iron Golem", "Old Iron Mine", elf, CHAD_UNIT_MELEE, 47, 67, 1, -1); | |||
chad_define_unit ("Sage", "Cabin in the Woods", elf, CHAD_UNIT_RANGE | CHAD_UNIT_MAGIC, 67, 47, 1, -1); | |||
chad_define_block ("Ashland", 0, 12, -1, -1, -1); | |||
chad_define_block ("Ashdirt", 0, 6, -1, -1, -1); | |||
@@ -11,39 +11,44 @@ int main (void) { | |||
menu_configure (); | |||
while (! WindowShouldClose ()) { | |||
Color tint = { 0, 0, 0, 0 }; | |||
BeginDrawing (); | |||
ClearBackground (BLACK); | |||
ClearBackground (tint); | |||
view_map (); | |||
view_base_1 (0, 100, 100); | |||
view_base_1 (1, 100, 400); | |||
view_base_2 (0, 1300, 100); | |||
view_base_2 (1, 1300, 500); | |||
//~for (int i = 0; i < 18; ++i) { | |||
//~view_unit (orc, i, 900 + 32 * i, 32); | |||
//~view_unit (human, i, 900 + 32 * i, 64); | |||
//~view_unit (elf, i, 900 + 32 * i, 96); | |||
//~} | |||
view_base_1 (0, 32, 128); | |||
view_base_1 (1, 32, 512); | |||
view_base_2 (0, 1024, 128); | |||
view_base_2 (1, 1024, 512); | |||
/* | |||
for (int i = 0; i < 18; ++i) { | |||
view_unit (orc, i, 900 + 32 * i, 32); | |||
view_unit (human, i, 900 + 32 * i, 64); | |||
view_unit (elf, i, 900 + 32 * i, 96); | |||
} | |||
*/ | |||
if (IsKeyPressed (KEY_RIGHT)) { menu_show [menu_traits] = menu_show [menu_traits] ? 0 : 1; } | |||
if (IsKeyPressed (KEY_LEFT)) { menu_show [menu_skills] = menu_show [menu_skills] ? 0 : 1; } | |||
if (IsKeyPressed (KEY_DOWN)) { menu_show [menu_values] = menu_show [menu_values] ? 0 : 1; } | |||
view_hud (0, SIDE_SIZE, render_height (), render_width () - SIDE_SIZE, 0); | |||
view_hud (1, render_width () - SIDE_SIZE, render_height (), 0, 0); | |||
view_neon_menu (menu_resources, 1, 0, 0); | |||
view_neon_menu (menu_traits, 1, 0, 0); | |||
view_neon_menu (menu_skills, 1, 0, 0); | |||
view_neon_menu (menu_values, 1, 0, 0); | |||
/* | |||
Rectangle source = { 0, 0, BASE_SIZE * 15, BASE_SIZE * 10 }; | |||
Rectangle destination = { 128, 128, BASE_SIZE * 15 * zoom, BASE_SIZE * 10 * zoom }; | |||
//~Rectangle source = { 0, 0, BASE_SIZE * 15, BASE_SIZE * 10 }; | |||
//~Rectangle destination = { 128, 128, BASE_SIZE * 15 * zoom, BASE_SIZE * 10 * zoom }; | |||
//~DrawTexturePro (vvv, source, destination, (Vector2) { 0, 0 }, 0.0F, WHITE); | |||
DrawTexturePro (vvv, source, destination, (Vector2) { 0, 0 }, 0.0F, WHITE); | |||
*/ | |||
EndDrawing (); | |||
} | |||
@@ -2,21 +2,38 @@ | |||
float render_zoom = 2.0; | |||
Texture2D render_texture [render_texture_count]; | |||
static Texture2D render_texture [render_texture_count]; | |||
static Font font = { 0 }; | |||
static Color tint = { 255, 255, 255, 255 }; | |||
static Vector2 dump = { 0, 0 }; | |||
int render_width (void) { return (GetScreenWidth ()); } | |||
int render_height (void) { return (GetScreenHeight ()); } | |||
void render_sprite (int sprite, int x, int y, int u, int v, int width, int height) { | |||
Rectangle source = { u, v, width, height }; | |||
Rectangle destination = { x, y, width * ((sprite <= ui) ? 1 : render_zoom), height * ((sprite <= ui) ? 1 : render_zoom) }; | |||
Vector2 origin = { 0, 0 }; | |||
Rectangle source, destination; | |||
source.x = u; | |||
source.y = v; | |||
source.width = width; | |||
source.height = height; | |||
destination.x = x; | |||
destination.y = y; | |||
destination.width = width * ((sprite <= ui) ? 1 : render_zoom); | |||
destination.height = height * ((sprite <= ui) ? 1 : render_zoom); | |||
DrawTexturePro (render_texture [sprite], source, destination, origin, 0.0, WHITE); | |||
DrawTexturePro (render_texture [sprite], source, destination, dump, 0.0, tint); | |||
} | |||
void render_string (char * string, int x, int y) { | |||
DrawText (string, x + 4, y + 4, FONT_SIZE, WHITE); | |||
Vector2 position = { 4, 4 }; | |||
position.x += x; | |||
position.y += y; | |||
DrawTextPro (font, string, position, dump, 0.0, FONT_SIZE, 4, tint); | |||
} | |||
static void render_clean_up (void) { | |||
@@ -28,6 +45,8 @@ void render_configure (void) { | |||
SetExitKey (KEY_ESCAPE); | |||
SetTargetFPS (60); | |||
font = LoadFont ("sprite/gothic.ttf"); | |||
atexit (render_clean_up); | |||
render_texture [neonui] = LoadTexture ("sprite/neonui.png"); | |||
@@ -4,9 +4,10 @@ | |||
#include <stdlib.h> | |||
#include <raylib.h> | |||
#define BASE_SIZE (16) | |||
#define ICON_SIZE (32) | |||
#define FONT_SIZE (24) | |||
#define BASE_SIZE ( 16) | |||
#define ICON_SIZE ( 32) | |||
#define FONT_SIZE ( 24) | |||
#define SIDE_SIZE (480) | |||
enum { | |||
neonui, | |||
@@ -17,8 +18,6 @@ enum { | |||
extern float render_zoom; | |||
extern Texture2D render_texture [render_texture_count]; | |||
extern int render_width (void); | |||
extern int render_height (void); | |||