summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/include/world.h1
-rw-r--r--src/scenes/place_detail.c5
-rw-r--r--src/world.c24
3 files changed, 23 insertions, 7 deletions
diff --git a/src/include/world.h b/src/include/world.h
index a719e57..d2e9bfc 100644
--- a/src/include/world.h
+++ b/src/include/world.h
@@ -124,6 +124,7 @@ typedef struct t_truck_dealer
#define JOB_OFFER_REWARD_PER_CONNECTION 160
#define MAX_SHIPDAYS 4
+#define MIN_POSSIBLE_SHIPDAYS 2
typedef struct t_job_offer
{
diff --git a/src/scenes/place_detail.c b/src/scenes/place_detail.c
index 4519cfa..b174b5b 100644
--- a/src/scenes/place_detail.c
+++ b/src/scenes/place_detail.c
@@ -1580,13 +1580,10 @@ static void place_detail_draw_location_stats(platform_window* window)
{
font* fnt = fnt_rd20;
float text_pad = scale * 40.0;
-
- //s32 w = (area.w * 0.9 - (offset*2));
-
s32 text_x = area.x + text_pad + (area.w*0.75);
s32 text_y = area.y + text_pad + (area.w*0.05);
- DRAW_STARS(text_x, text_y, "Score: ", 5);
+ DRAW_STARS(text_x, text_y, "Score: ", (int)round(_active_location->score * 5));
}
static void place_detail_draw_title(platform_window* window)
diff --git a/src/world.c b/src/world.c
index 3226937..ab90371 100644
--- a/src/world.c
+++ b/src/world.c
@@ -12,8 +12,9 @@ float dotsize = 5;
static s32 get_random_number(s32 min, s32 max)
{
- log_assert(min < max, "Min cannot be larger than max");
+ log_assert(min <= max, "Min cannot be larger than max");
// it is assumed srand has been initialized at world load.
+ if (min == max) return min;
return min + rand() % (max-min);
}
@@ -652,6 +653,21 @@ static void world_find_location_deep(s32 depth, world_location* source, array* b
}
}
+static s32 world_get_max_ship_days_for_location(world_location* location)
+{
+ s32 shipdays = (int)round(MAX_SHIPDAYS*location->score);
+ if (shipdays < MIN_POSSIBLE_SHIPDAYS) shipdays = MIN_POSSIBLE_SHIPDAYS;
+ return shipdays;
+}
+
+static s32 world_get_max_depth_for_location(world_location* location)
+{
+ s32 max_depth = 6;
+ s32 location_depth = (int)round(max_depth*location->score);
+ if (location_depth < 1) location_depth = 1;
+ return location_depth;
+}
+
static void world_assign_new_job_offers(world* world)
{
for (s32 i = 0; i < world->locations.length; i++)
@@ -668,7 +684,8 @@ static void world_assign_new_job_offers(world* world)
job_offer new_offer = (job_offer){world->next_id++, world->simulation_time+DAYS(10), company, product, 0, {DAY_INVALID,DAY_INVALID,DAY_INVALID,DAY_INVALID}, 0};
new_offer.connections = array_create(sizeof(world_location*));
- s32 amount_of_shipdays = get_random_number(1, MAX_SHIPDAYS+1);
+ s32 max_shipdays = world_get_max_ship_days_for_location(location);
+ s32 amount_of_shipdays = get_random_number(1, max_shipdays+1);
for (s32 s = 0; s < amount_of_shipdays; s++) {
s32 random_day = get_random_number(0, NUM_DAYS);
if (!job_offer_has_ship_day(&new_offer, random_day)) {
@@ -679,7 +696,8 @@ static void world_assign_new_job_offers(world* world)
}
}
- s32 amount_of_connections = get_random_number(1, 5) + 1; // +1 because we add original location to connection list.
+ s32 max_depth = world_get_max_depth_for_location(location);
+ s32 amount_of_connections = get_random_number(1, max_depth + 1) + 1; // +1 because we add original location to connection list.
array_push(&new_offer.connections, &location);
world_find_location_deep(amount_of_connections, location, &new_offer.connections);