770 lines
25 KiB
C++
770 lines
25 KiB
C++
|
#include <math.h>
|
||
|
#include <iostream>
|
||
|
#include <assets.h>
|
||
|
#include <entity.h>
|
||
|
#include <SFML/Graphics.hpp>
|
||
|
#include <world_generator.h>
|
||
|
|
||
|
// Constructor
|
||
|
world_generator::world_generator()
|
||
|
{
|
||
|
wall_count = 0;
|
||
|
mob_count = 0;
|
||
|
mission = 1;
|
||
|
theme = 1;
|
||
|
maze = true;
|
||
|
min_npc_spawned = false;
|
||
|
}
|
||
|
|
||
|
// Generates the playing area and npc mechs
|
||
|
void world_generator::generate_world(assets &resources, std::vector<entity> &entities, int entity_count)
|
||
|
{
|
||
|
int e = 0;
|
||
|
entities = std::vector<entity>(entity_count);
|
||
|
|
||
|
// Border
|
||
|
for (int i = 0; i < 153; i++)
|
||
|
{
|
||
|
entities[e].position.x = 60;
|
||
|
entities[e].position.y = 40 + i * 4;
|
||
|
entities[e].type = "wall";
|
||
|
entities[e].icon.setTexture(resources.wall_icon_texture);
|
||
|
e++;
|
||
|
}
|
||
|
|
||
|
for (int i = 0; i < 153; i++)
|
||
|
{
|
||
|
entities[e].position.x = 550;
|
||
|
entities[e].position.y = 40 + i * 4;
|
||
|
entities[e].type = "wall";
|
||
|
entities[e].icon.setTexture(resources.wall_icon_texture);
|
||
|
e++;
|
||
|
}
|
||
|
|
||
|
for (int i = 0; i < 122; i++)
|
||
|
{
|
||
|
entities[e].position.x = 60 + i * 4;
|
||
|
entities[e].position.y = 40;
|
||
|
entities[e].type = "wall";
|
||
|
entities[e].icon.setTexture(resources.wall_icon_texture);
|
||
|
e++;
|
||
|
}
|
||
|
|
||
|
for (int i = 0; i < 122; i++)
|
||
|
{
|
||
|
entities[e].position.x = 60 + i * 4;
|
||
|
entities[e].position.y = 650;
|
||
|
entities[e].type = "wall";
|
||
|
entities[e].icon.setTexture(resources.wall_icon_texture);
|
||
|
e++;
|
||
|
}
|
||
|
|
||
|
if (maze == true)
|
||
|
{
|
||
|
// Wall
|
||
|
for (int i = 0; i < 60; i++)
|
||
|
{
|
||
|
entities[e].position.x = 180;
|
||
|
entities[e].position.y = 40 + i * 4;
|
||
|
entities[e].type = "wall";
|
||
|
entities[e].icon.setTexture(resources.wall_icon_texture);
|
||
|
e++;
|
||
|
}
|
||
|
|
||
|
// Wall
|
||
|
for (int i = 0; i < 125; i++)
|
||
|
{
|
||
|
entities[e].position.x = 300;
|
||
|
entities[e].position.y = 154 + i * 4;
|
||
|
entities[e].type = "wall";
|
||
|
entities[e].icon.setTexture(resources.wall_icon_texture);
|
||
|
e++;
|
||
|
}
|
||
|
|
||
|
// Wall
|
||
|
for (int i = 0; i < 120; i++)
|
||
|
{
|
||
|
entities[e].position.x = 420;
|
||
|
entities[e].position.y = 40 + i * 4;
|
||
|
entities[e].type = "wall";
|
||
|
entities[e].icon.setTexture(resources.wall_icon_texture);
|
||
|
e++;
|
||
|
}
|
||
|
|
||
|
// Wall
|
||
|
for (int i = 0; i < 60; i++)
|
||
|
{
|
||
|
entities[e].position.x = 60 + i * 4;
|
||
|
entities[e].position.y = 400;
|
||
|
entities[e].type = "wall";
|
||
|
entities[e].icon.setTexture(resources.wall_icon_texture);
|
||
|
e++;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
wall_count = e;
|
||
|
|
||
|
for (int i = wall_count; i < entity_count; i++)
|
||
|
{
|
||
|
int r = rand() % 1000;
|
||
|
|
||
|
if (r < 1000 && r >= 950)
|
||
|
{
|
||
|
entities[e].type = "tree";
|
||
|
if (maze == true)
|
||
|
{
|
||
|
entities[e].position.x = 75 + ( rand() % ( 165 - 75 + 1 ) );
|
||
|
entities[e].position.y = 75 + ( rand() % ( 645 - 75 + 1 ) );
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
entities[e].position.x = 70 + ( rand() % ( 540 - 70 + 1 ) );
|
||
|
entities[e].position.y = 50 + ( rand() % ( 640 - 50 + 1 ) );
|
||
|
}
|
||
|
|
||
|
if (theme == 1)
|
||
|
{
|
||
|
entities[e].sprite.setTexture(resources.tree_texture);
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
entities[e].sprite.setTexture(resources.tree_3_texture);
|
||
|
}
|
||
|
}
|
||
|
else if (r < 950 && r >= 900)
|
||
|
{
|
||
|
entities[e].type = "tree";
|
||
|
if (maze == true)
|
||
|
{
|
||
|
entities[e].position.x = 195 + ( rand() % ( 285 - 195 + 1 ) );
|
||
|
entities[e].position.y = 75 + ( rand() % ( 645 - 75 + 1 ) );
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
entities[e].position.x = 70 + ( rand() % ( 540 - 70 + 1 ) );
|
||
|
entities[e].position.y = 50 + ( rand() % ( 640 - 50 + 1 ) );
|
||
|
}
|
||
|
|
||
|
if (theme == 1)
|
||
|
{
|
||
|
entities[e].sprite.setTexture(resources.tree_texture);
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
entities[e].sprite.setTexture(resources.tree_3_texture);
|
||
|
}
|
||
|
}
|
||
|
else if (r < 900 && r >= 850)
|
||
|
{
|
||
|
entities[e].type = "tree";
|
||
|
if (maze == true)
|
||
|
{
|
||
|
entities[e].position.x = 315 + ( rand() % ( 405 - 315 + 1 ) );
|
||
|
entities[e].position.y = 75 + ( rand() % ( 645 - 75 + 1 ) );
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
entities[e].position.x = 70 + ( rand() % ( 540 - 70 + 1 ) );
|
||
|
entities[e].position.y = 50 + ( rand() % ( 640 - 50 + 1 ) );
|
||
|
}
|
||
|
|
||
|
if (theme == 1)
|
||
|
{
|
||
|
entities[e].sprite.setTexture(resources.tree_texture);
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
entities[e].sprite.setTexture(resources.tree_3_texture);
|
||
|
}
|
||
|
}
|
||
|
else if (r < 850 && r >= 800)
|
||
|
{
|
||
|
entities[e].type = "tree";
|
||
|
if (maze == true)
|
||
|
{
|
||
|
entities[e].position.x = 435 + ( rand() % ( 530 - 435 + 1 ) );
|
||
|
entities[e].position.y = 75 + ( rand() % ( 645 - 75 + 1 ) );
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
entities[e].position.x = 70 + ( rand() % ( 540 - 70 + 1 ) );
|
||
|
entities[e].position.y = 50 + ( rand() % ( 640 - 50 + 1 ) );
|
||
|
}
|
||
|
|
||
|
if (theme == 1)
|
||
|
{
|
||
|
entities[e].sprite.setTexture(resources.tree_texture);
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
entities[e].sprite.setTexture(resources.tree_3_texture);
|
||
|
}
|
||
|
}
|
||
|
else if (r < 800 && r >= 750)
|
||
|
{
|
||
|
entities[e].type = "tree_2";
|
||
|
if (maze == true)
|
||
|
{
|
||
|
entities[e].position.x = 75 + ( rand() % ( 175 - 75 + 1 ) );
|
||
|
entities[e].position.y = 200 + ( rand() % ( 350 - 200 + 1 ) );
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
entities[e].position.x = 70 + ( rand() % ( 540 - 70 + 1 ) );
|
||
|
entities[e].position.y = 50 + ( rand() % ( 640 - 50 + 1 ) );
|
||
|
}
|
||
|
|
||
|
if (theme == 1)
|
||
|
{
|
||
|
entities[e].sprite.setTexture(resources.tree_2_texture);
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
entities[e].sprite.setTexture(resources.tree_4_texture);
|
||
|
}
|
||
|
}
|
||
|
else if (r < 750 && r >= 700)
|
||
|
{
|
||
|
entities[e].type = "tree_2";
|
||
|
if (maze == true)
|
||
|
{
|
||
|
entities[e].position.x = 195 + ( rand() % ( 285 - 195 + 1 ) );
|
||
|
entities[e].position.y = 200 + ( rand() % ( 350 - 200 + 1 ) );
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
entities[e].position.x = 70 + ( rand() % ( 540 - 70 + 1 ) );
|
||
|
entities[e].position.y = 50 + ( rand() % ( 640 - 50 + 1 ) );
|
||
|
}
|
||
|
|
||
|
if (theme == 1)
|
||
|
{
|
||
|
entities[e].sprite.setTexture(resources.tree_2_texture);
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
entities[e].sprite.setTexture(resources.tree_4_texture);
|
||
|
}
|
||
|
}
|
||
|
else if (r < 700 && r >= 650)
|
||
|
{
|
||
|
entities[e].type = "tree_2";
|
||
|
if (maze == true)
|
||
|
{
|
||
|
entities[e].position.x = 435 + ( rand() % ( 530 - 435 + 1 ) );
|
||
|
entities[e].position.y = 75 + ( rand() % ( 645 - 75 + 1 ) );
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
entities[e].position.x = 70 + ( rand() % ( 540 - 70 + 1 ) );
|
||
|
entities[e].position.y = 50 + ( rand() % ( 640 - 50 + 1 ) );
|
||
|
}
|
||
|
|
||
|
if (theme == 1)
|
||
|
{
|
||
|
entities[e].sprite.setTexture(resources.tree_2_texture);
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
entities[e].sprite.setTexture(resources.tree_4_texture);
|
||
|
}
|
||
|
}
|
||
|
else if (r < 650 && r >= 600)
|
||
|
{
|
||
|
entities[e].type = "tree_2";
|
||
|
if (maze == true)
|
||
|
{
|
||
|
entities[e].position.x = 435 + ( rand() % ( 530 - 435 + 1 ) );
|
||
|
entities[e].position.y = 75 + ( rand() % ( 645 - 75 + 1 ) );
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
entities[e].position.x = 70 + ( rand() % ( 540 - 70 + 1 ) );
|
||
|
entities[e].position.y = 50 + ( rand() % ( 640 - 50 + 1 ) );
|
||
|
}
|
||
|
|
||
|
if (theme == 1)
|
||
|
{
|
||
|
entities[e].sprite.setTexture(resources.tree_2_texture);
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
entities[e].sprite.setTexture(resources.tree_4_texture);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
int weapons_modifier = mission < 3 ? 0 : mission > 5 ? 3 : mission - 2 ;
|
||
|
int armor_modifier = mission < 3 ? 1000 : mission > 5 ? 3000 : (mission - 2) * 1000;
|
||
|
|
||
|
r = std::rand() % 10000;
|
||
|
|
||
|
if ((r < 10000 && r >= 10000 - mission * 2) || min_npc_spawned == false)
|
||
|
{
|
||
|
if (mob_count < mission)
|
||
|
{
|
||
|
entities[e].id = e;
|
||
|
entities[e].type = "mob";
|
||
|
entities[e].sub_type = "mech";
|
||
|
entities[e].sprite.setTexture(resources.mech_texture, true);
|
||
|
entities[e].icon.setTexture(resources.mob_icon_texture);
|
||
|
|
||
|
int upgrade_chance = rand() % 100;
|
||
|
if (upgrade_chance >= 75)
|
||
|
{
|
||
|
int rand_upgrade = rand() % 100;
|
||
|
if (rand_upgrade >= 50)
|
||
|
{
|
||
|
entities[e].entity_mech.guns_modifier = weapons_modifier;
|
||
|
entities[e].entity_mech.cannons_modifier = weapons_modifier;
|
||
|
entities[e].entity_mech.cooler_modifier = weapons_modifier;
|
||
|
entities[e].entity_mech.cooler_integrity = armor_modifier;
|
||
|
entities[e].entity_mech.max_cooler_integrity = armor_modifier;
|
||
|
entities[e].entity_mech.reactor_integrity = armor_modifier;
|
||
|
entities[e].entity_mech.max_reactor_integrity = armor_modifier;
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
entities[e].entity_mech.reactor_integrity = armor_modifier;
|
||
|
entities[e].entity_mech.max_reactor_integrity = armor_modifier;
|
||
|
entities[e].entity_mech.cockpit_integrity = armor_modifier;
|
||
|
entities[e].entity_mech.max_cockpit_integrity = armor_modifier;
|
||
|
entities[e].entity_mech.left_arm_integrity = armor_modifier;
|
||
|
entities[e].entity_mech.max_left_arm_integrity = armor_modifier;
|
||
|
entities[e].entity_mech.right_arm_integrity = armor_modifier;
|
||
|
entities[e].entity_mech.max_right_arm_integrity = armor_modifier;
|
||
|
entities[e].entity_mech.left_leg_integrity = armor_modifier;
|
||
|
entities[e].entity_mech.max_left_leg_integrity = armor_modifier;
|
||
|
entities[e].entity_mech.right_leg_integrity = armor_modifier;
|
||
|
entities[e].entity_mech.max_right_leg_integrity = armor_modifier;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
if (maze == true)
|
||
|
{
|
||
|
entities[e].position.x = 75 + ( rand() % ( 175 - 75 + 1 ) );
|
||
|
entities[e].position.y = 200 + ( rand() % ( 350 - 200 + 1 ) );
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
entities[e].position.x = 70 + ( rand() % ( 540 - 70 + 1 ) );
|
||
|
entities[e].position.y = 50 + ( rand() % ( 640 - 50 + 1 ) );
|
||
|
}
|
||
|
|
||
|
mob_count++;
|
||
|
min_npc_spawned = true;
|
||
|
}
|
||
|
}
|
||
|
else if (r < 10000 - mission * 2 && r >= 10000 - mission * 4 && mob_count < mission)
|
||
|
{
|
||
|
entities[e].id = e;
|
||
|
entities[e].type = "mob";
|
||
|
entities[e].sub_type = "mech";
|
||
|
entities[e].sprite.setTexture(resources.mech_texture, true);
|
||
|
entities[e].icon.setTexture(resources.mob_icon_texture);
|
||
|
|
||
|
int upgrade_chance = rand() % 100;
|
||
|
if (upgrade_chance >= 75)
|
||
|
{
|
||
|
int rand_upgrade = rand() % 100;
|
||
|
if (rand_upgrade >= 50)
|
||
|
{
|
||
|
entities[e].entity_mech.guns_modifier = weapons_modifier;
|
||
|
entities[e].entity_mech.cannons_modifier = weapons_modifier;
|
||
|
entities[e].entity_mech.cooler_modifier = weapons_modifier;
|
||
|
entities[e].entity_mech.cooler_integrity = armor_modifier;
|
||
|
entities[e].entity_mech.max_cooler_integrity = armor_modifier;
|
||
|
entities[e].entity_mech.reactor_integrity = armor_modifier;
|
||
|
entities[e].entity_mech.max_reactor_integrity = armor_modifier;
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
entities[e].entity_mech.reactor_integrity = armor_modifier;
|
||
|
entities[e].entity_mech.max_reactor_integrity = armor_modifier;
|
||
|
entities[e].entity_mech.cockpit_integrity = armor_modifier;
|
||
|
entities[e].entity_mech.max_cockpit_integrity = armor_modifier;
|
||
|
entities[e].entity_mech.left_arm_integrity = armor_modifier;
|
||
|
entities[e].entity_mech.max_left_arm_integrity = armor_modifier;
|
||
|
entities[e].entity_mech.right_arm_integrity = armor_modifier;
|
||
|
entities[e].entity_mech.max_right_arm_integrity = armor_modifier;
|
||
|
entities[e].entity_mech.left_leg_integrity = armor_modifier;
|
||
|
entities[e].entity_mech.max_left_leg_integrity = armor_modifier;
|
||
|
entities[e].entity_mech.right_leg_integrity = armor_modifier;
|
||
|
entities[e].entity_mech.max_right_leg_integrity = armor_modifier;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
if (maze == true)
|
||
|
{
|
||
|
entities[e].position.x = 195 + ( rand() % ( 285 - 195 + 1 ) );
|
||
|
entities[e].position.y = 200 + ( rand() % ( 350 - 200 + 1 ) );
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
entities[e].position.x = 70 + ( rand() % ( 540 - 70 + 1 ) );
|
||
|
entities[e].position.y = 50 + ( rand() % ( 640 - 50 + 1 ) );
|
||
|
}
|
||
|
|
||
|
mob_count++;
|
||
|
}
|
||
|
else if (r < 10000 - mission * 4 && r >= 10000 - mission * 6 && mob_count < mission)
|
||
|
{
|
||
|
entities[e].id = e;
|
||
|
entities[e].type = "mob";
|
||
|
entities[e].sub_type = "mech";
|
||
|
entities[e].sprite.setTexture(resources.mech_texture, true);
|
||
|
entities[e].icon.setTexture(resources.mob_icon_texture);
|
||
|
|
||
|
int upgrade_chance = rand() % 100;
|
||
|
if (upgrade_chance >= 75)
|
||
|
{
|
||
|
int rand_upgrade = rand() % 100;
|
||
|
if (rand_upgrade >= 50)
|
||
|
{
|
||
|
entities[e].entity_mech.guns_modifier = weapons_modifier;
|
||
|
entities[e].entity_mech.cannons_modifier = weapons_modifier;
|
||
|
entities[e].entity_mech.cooler_modifier = weapons_modifier;
|
||
|
entities[e].entity_mech.cooler_integrity = armor_modifier;
|
||
|
entities[e].entity_mech.max_cooler_integrity = armor_modifier;
|
||
|
entities[e].entity_mech.reactor_integrity = armor_modifier;
|
||
|
entities[e].entity_mech.max_reactor_integrity = armor_modifier;
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
entities[e].entity_mech.reactor_integrity = armor_modifier;
|
||
|
entities[e].entity_mech.max_reactor_integrity = armor_modifier;
|
||
|
entities[e].entity_mech.cockpit_integrity = armor_modifier;
|
||
|
entities[e].entity_mech.max_cockpit_integrity = armor_modifier;
|
||
|
entities[e].entity_mech.left_arm_integrity = armor_modifier;
|
||
|
entities[e].entity_mech.max_left_arm_integrity = armor_modifier;
|
||
|
entities[e].entity_mech.right_arm_integrity = armor_modifier;
|
||
|
entities[e].entity_mech.max_right_arm_integrity = armor_modifier;
|
||
|
entities[e].entity_mech.left_leg_integrity = armor_modifier;
|
||
|
entities[e].entity_mech.max_left_leg_integrity = armor_modifier;
|
||
|
entities[e].entity_mech.right_leg_integrity = armor_modifier;
|
||
|
entities[e].entity_mech.max_right_leg_integrity = armor_modifier;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
if (maze == true)
|
||
|
{
|
||
|
entities[e].position.x = 315 + ( rand() % ( 405 - 315 + 1 ) );
|
||
|
entities[e].position.y = 75 + ( rand() % ( 645 - 75 + 1 ) );
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
entities[e].position.x = 70 + ( rand() % ( 540 - 70 + 1 ) );
|
||
|
entities[e].position.y = 50 + ( rand() % ( 640 - 50 + 1 ) );
|
||
|
}
|
||
|
|
||
|
mob_count++;
|
||
|
}
|
||
|
else if (r < 10000 - mission * 6 && r >= 10000 - mission * 8 && mob_count < mission)
|
||
|
{
|
||
|
entities[e].id = e;
|
||
|
entities[e].type = "mob";
|
||
|
entities[e].sub_type = "mech";
|
||
|
entities[e].sprite.setTexture(resources.mech_texture, true);
|
||
|
entities[e].icon.setTexture(resources.mob_icon_texture);
|
||
|
|
||
|
int upgrade_chance = rand() % 100;
|
||
|
if (upgrade_chance >= 75)
|
||
|
{
|
||
|
int rand_upgrade = rand() % 100;
|
||
|
if (rand_upgrade >= 50)
|
||
|
{
|
||
|
entities[e].entity_mech.guns_modifier = weapons_modifier;
|
||
|
entities[e].entity_mech.cannons_modifier = weapons_modifier;
|
||
|
entities[e].entity_mech.cooler_modifier = weapons_modifier;
|
||
|
entities[e].entity_mech.cooler_integrity = armor_modifier;
|
||
|
entities[e].entity_mech.max_cooler_integrity = armor_modifier;
|
||
|
entities[e].entity_mech.reactor_integrity = armor_modifier;
|
||
|
entities[e].entity_mech.max_reactor_integrity = armor_modifier;
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
entities[e].entity_mech.reactor_integrity = armor_modifier;
|
||
|
entities[e].entity_mech.max_reactor_integrity = armor_modifier;
|
||
|
entities[e].entity_mech.cockpit_integrity = armor_modifier;
|
||
|
entities[e].entity_mech.max_cockpit_integrity = armor_modifier;
|
||
|
entities[e].entity_mech.left_arm_integrity = armor_modifier;
|
||
|
entities[e].entity_mech.max_left_arm_integrity = armor_modifier;
|
||
|
entities[e].entity_mech.right_arm_integrity = armor_modifier;
|
||
|
entities[e].entity_mech.max_right_arm_integrity = armor_modifier;
|
||
|
entities[e].entity_mech.left_leg_integrity = armor_modifier;
|
||
|
entities[e].entity_mech.max_left_leg_integrity = armor_modifier;
|
||
|
entities[e].entity_mech.right_leg_integrity = armor_modifier;
|
||
|
entities[e].entity_mech.max_right_leg_integrity = armor_modifier;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
if (maze == true)
|
||
|
{
|
||
|
entities[e].position.x = 435 + ( rand() % ( 530 - 435 + 1 ) );
|
||
|
entities[e].position.y = 75 + ( rand() % ( 645 - 75 + 1 ) );
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
entities[e].position.x = 70 + ( rand() % ( 540 - 70 + 1 ) );
|
||
|
entities[e].position.y = 50 + ( rand() % ( 640 - 50 + 1 ) );
|
||
|
}
|
||
|
|
||
|
mob_count++;
|
||
|
}
|
||
|
|
||
|
e++;
|
||
|
}
|
||
|
|
||
|
mob_count = 0;
|
||
|
min_npc_spawned = false;
|
||
|
}
|
||
|
|
||
|
// Reverses placement direction of walls which don't render correctly when placed with ascending depth with respect to the camera
|
||
|
void world_generator::flip_walls_vertical(std::vector<entity> &entities, int entity_count, bool inverse)
|
||
|
{
|
||
|
if (inverse == true)
|
||
|
{
|
||
|
int e = 0;
|
||
|
|
||
|
// Border
|
||
|
for (int i = 0; i < 153; i++)
|
||
|
{
|
||
|
entities[e].position.x = 60;
|
||
|
entities[e].position.y = 648 - i * 4;
|
||
|
e++;
|
||
|
}
|
||
|
|
||
|
for (int i = 0; i < 153; i++)
|
||
|
{
|
||
|
entities[e].position.x = 550;
|
||
|
entities[e].position.y = 648 - i * 4;
|
||
|
e++;
|
||
|
}
|
||
|
|
||
|
for (int i = 0; i < 122; i++)
|
||
|
{
|
||
|
e++;
|
||
|
}
|
||
|
|
||
|
for (int i = 0; i < 122; i++)
|
||
|
{
|
||
|
e++;
|
||
|
}
|
||
|
|
||
|
if (maze == true)
|
||
|
{
|
||
|
// Wall
|
||
|
for (int i = 0; i < 60; i++)
|
||
|
{
|
||
|
entities[e].position.x = 180 ;
|
||
|
entities[e].position.y = 275 - i * 4;
|
||
|
e++;
|
||
|
}
|
||
|
|
||
|
// Wall
|
||
|
for (int i = 0; i < 125; i++)
|
||
|
{
|
||
|
entities[e].position.x = 300;
|
||
|
entities[e].position.y = 650 - i * 4;
|
||
|
e++;
|
||
|
}
|
||
|
|
||
|
// Wall
|
||
|
for (int i = 0; i < 120; i++)
|
||
|
{
|
||
|
entities[e].position.x = 420;
|
||
|
entities[e].position.y = 515 - i * 4;
|
||
|
e++;
|
||
|
}
|
||
|
|
||
|
// Wall
|
||
|
for (int i = 0; i < 60; i++)
|
||
|
{
|
||
|
e++;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
int e = 0;
|
||
|
|
||
|
// Border
|
||
|
for (int i = 0; i < 153; i++)
|
||
|
{
|
||
|
entities[e].position.x = 60;
|
||
|
entities[e].position.y = 40 + i * 4;
|
||
|
e++;
|
||
|
}
|
||
|
|
||
|
for (int i = 0; i < 153; i++)
|
||
|
{
|
||
|
entities[e].position.x = 550;
|
||
|
entities[e].position.y = 40 + i * 4;
|
||
|
e++;
|
||
|
}
|
||
|
|
||
|
for (int i = 0; i < 122; i++)
|
||
|
{
|
||
|
e++;
|
||
|
}
|
||
|
|
||
|
for (int i = 0; i < 122; i++)
|
||
|
{
|
||
|
e++;
|
||
|
}
|
||
|
|
||
|
if (maze == true)
|
||
|
{
|
||
|
// Wall
|
||
|
for (int i = 0; i < 60; i++)
|
||
|
{
|
||
|
entities[e].position.x = 180;
|
||
|
entities[e].position.y = 40 + i * 4;
|
||
|
e++;
|
||
|
}
|
||
|
|
||
|
// Wall
|
||
|
for (int i = 0; i < 125; i++)
|
||
|
{
|
||
|
entities[e].position.x = 300;
|
||
|
entities[e].position.y = 154 + i * 4;
|
||
|
e++;
|
||
|
}
|
||
|
|
||
|
// Wall
|
||
|
for (int i = 0; i < 120; i++)
|
||
|
{
|
||
|
entities[e].position.x = 420;
|
||
|
entities[e].position.y = 40 + i * 4;
|
||
|
e++;
|
||
|
}
|
||
|
|
||
|
// Wall
|
||
|
for (int i = 0; i < 60; i++)
|
||
|
{
|
||
|
e++;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// Reverses placement direction of walls which don't render correctly when placed with ascending depth with respect to the camera
|
||
|
void world_generator::flip_walls_horizontal(std::vector<entity> &entities, int entity_count, bool inverse)
|
||
|
{
|
||
|
if (inverse == true)
|
||
|
{
|
||
|
int e = 0;
|
||
|
|
||
|
// Border
|
||
|
for (int i = 0; i < 153; i++)
|
||
|
{
|
||
|
e++;
|
||
|
}
|
||
|
|
||
|
for (int i = 0; i < 153; i++)
|
||
|
{
|
||
|
e++;
|
||
|
}
|
||
|
|
||
|
for (int i = 0; i < 122; i++)
|
||
|
{
|
||
|
entities[e].position.x = 550 - i * 4;
|
||
|
entities[e].position.y = 40;
|
||
|
e++;
|
||
|
}
|
||
|
|
||
|
for (int i = 0; i < 122; i++)
|
||
|
{
|
||
|
entities[e].position.x = 550 - i * 4;
|
||
|
entities[e].position.y = 650;
|
||
|
e++;
|
||
|
}
|
||
|
|
||
|
if (maze == true)
|
||
|
{
|
||
|
// Wall
|
||
|
for (int i = 0; i < 60; i++)
|
||
|
{
|
||
|
e++;
|
||
|
}
|
||
|
|
||
|
// Wall
|
||
|
for (int i = 0; i < 125; i++)
|
||
|
{
|
||
|
e++;
|
||
|
}
|
||
|
|
||
|
// Wall
|
||
|
for (int i = 0; i < 120; i++)
|
||
|
{
|
||
|
e++;
|
||
|
}
|
||
|
|
||
|
// Wall
|
||
|
for (int i = 0; i < 60; i++)
|
||
|
{
|
||
|
entities[e].position.x = 300 - i * 4;
|
||
|
entities[e].position.y = 400;
|
||
|
e++;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
int e = 0;
|
||
|
|
||
|
// Border
|
||
|
for (int i = 0; i < 153; i++)
|
||
|
{
|
||
|
e++;
|
||
|
}
|
||
|
|
||
|
for (int i = 0; i < 153; i++)
|
||
|
{
|
||
|
e++;
|
||
|
}
|
||
|
|
||
|
for (int i = 0; i < 122; i++)
|
||
|
{
|
||
|
entities[e].position.x = 60 + i * 4;
|
||
|
entities[e].position.y = 40;
|
||
|
e++;
|
||
|
}
|
||
|
|
||
|
for (int i = 0; i < 122; i++)
|
||
|
{
|
||
|
entities[e].position.x = 60 + i * 4;
|
||
|
entities[e].position.y = 650;
|
||
|
e++;
|
||
|
}
|
||
|
|
||
|
if (maze == true)
|
||
|
{
|
||
|
// Wall
|
||
|
for (int i = 0; i < 60; i++)
|
||
|
{
|
||
|
e++;
|
||
|
}
|
||
|
|
||
|
// Wall
|
||
|
for (int i = 0; i < 125; i++)
|
||
|
{
|
||
|
e++;
|
||
|
}
|
||
|
|
||
|
// Wall
|
||
|
for (int i = 0; i < 120; i++)
|
||
|
{
|
||
|
e++;
|
||
|
}
|
||
|
|
||
|
// Wall
|
||
|
for (int i = 0; i < 60; i++)
|
||
|
{
|
||
|
entities[e].position.x = 60 + i * 4;
|
||
|
entities[e].position.y = 400;
|
||
|
e++;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|