#include "common.h"
#include "farm.h"
//--------------------------------------------------------------------------------------------------
//--------------------------------------------------------------------------------------------------
bool farm_has_crop(int i)
{
return (farm_info[i].type == FARM_TYPE_CROP);
}
//--------------------------------------------------------------------------------------------------
//--------------------------------------------------------------------------------------------------
void farm_show_all_crops()
{
int i;
for (i = 0; i < MAX_FARMS; i++) {
if (farm_has_crop(i)) {
print(FARM_COLORS, "%d - %s", i, farm_info[i].type);
}
}
}
//--------------------------------------------------------------------------------------------------
//--------------------------------------------------------------------------------------------------
void farm_change_crop(int i, int new_crop)
{
if (farm_has_crop(i)) {
print(FARM_COLORS, "Changing crop on farm %d from %s to %s.", i,
farm_info[i].type, get_crop_name(new_crop));
if (farm_info[i].type == FARM_TYPE_CROP) {
farm_info[i].harvest = harvest_table[get_crop_harvest(new_crop)];
}
farm_info[i].type = new_crop;
if (farm_info[i].type == FARM_TYPE_CROP) {
if (farm_info[i].harvest < 0) {
farm_info[i].harvest = harvest_table[get_crop_harvest(new_crop)];
} else {
print(FARM_COLORS, "Farm %d will have a %s harvest.
", i,
get_crop_harvest_name(farm_info[i].harvest));
}
farm_info[i].growth = get_crop_growth(new_crop);
farm_info[i].planting = false;
if (farm_info[i].growth > 0) {
print(FARM_COLORS, "Farm %d will grow crops.
", i);
} else {
print(FARM_COLORS, "Farm %d will not grow crops.
", i);
}
}
} else if (farm_info[i].type == FARM_TYPE_RAIN) {
print(FARM_COLORS, "Changing rain farm %d.", i);
farm_info[i].type = NEW_FARM_TYPE;
print(FARM_COLORS, "to new type.
");
}
}
//--------------------------------------------------------------------------------------------------
//--------------------------------------------------------------------------------------------------
void farm_add_crop(int i, int crop)
{
if (farm_has_crop(i)) {
print(FARM_COLORS, "Farm %d already has a crop.
", i);
} else {
print(FARM_COLORS, "Adding crop to farm %d.", i);
farm_info[i].type = crop;
if (crop == FARM_TYPE_CROP) {
print(FARM_COLORS, "Planting.
");
farm_info[i].harvest = harvest_table[get_crop_harvest(crop)];
if (farm_info[i].harvest < 0) {
farm_info[i].harvest = harvest_table[get_crop_harvest(crop)];
} else {
print(FARM_COLORS, "Farm %d will have a %s harvest.
", i,
get_crop_harvest_name(farm_info[i].harvest));
}
farm_info[i].growth = get_crop_growth(crop);
print(FARM_COLORS, "Planting.
");
if (farm_info[i].growth > 0) {
print(FARM_COLORS, "Farm %d will grow crops.
", i);
} else {
print(FARM_COLORS, "Farm %d will not grow crops.
", i);
}
} else if (crop == FARM_TYPE_RAIN) {
farm_info[i].type = crop;
print(FARM_COLORS, "Rain farm.
");
} else {
print(FARM_COLORS, "Invalid type.
");
}
}
}
//--------------------------------------------------------------------------------------------------
//--------------------------------------------------------------------------------------------------
void farm_add_rain(int i)
{
if (farm_info[i].type == FARM_TYPE_RAIN) {
print(FARM_COLORS, "Rain farm %d already exists.
", i);
} else if (farm_info[i].type != FARM_TYPE_CROP && farm_info[i].type != FARM_TYPE_RAIN) {
print(FARM_COLORS, "Invalid type.
");
} else {
print(FARM_COLORS, "Adding rain farm to farm %d.", i);
farm_info[i].type = FARM_TYPE_RAIN;
print(FARM_COLORS, "Rain farm.
");
}
}
//--------------------------------------------------------------------------------------------------
//--------------------------------------------------------------------------------------------------
int farm_get_crop(int i)
{
if (farm_has_crop(i)) {
return farm_info[i].type;
} else if (farm_info[i].type == FARM_TYPE_RAIN) {
print(FARM_COLORS, "Invalid type.
");
} else {
print(FARM_COLORS, "No crop.
");
}
return -1;
}
//--------------------------------------------------------------------------------------------------
//--------------------------------------------------------------------------------------------------
void farm_update()
{
int i;
bool changed = false;
for (i = 0; i < MAX_FARMS; i++) {
if (!farm_has_crop(i)) continue;
if (farm_info[i].planting) {
int days = farm_info[i].days + 1;
if (days > get_crop_growth(farm_info[i].type)) {
print(FARM_COLORS, "Planting complete.
");
changed = true;
farm_info[i].planting = false;
if (farm_info[i].type == FARM_TYPE_CROP) {
print(FARM_COLORS, "Harvesting.
");
int harvest_days = farm_info[i].harvest;
if (farm_info[i].type == FARM_TYPE_CROP && !farm_info[i].planting) {
print(FARM_COLORS, "Planting.
");
} else {
if (days > harvest_days) {
print(FARM_COLORS, "Harvesting.
");
} else if (days >= 0) {
changed = true;
farm_info[i].harvest = -1;
print(FARM_COLORS, "No harvest.
");
} else {
print(FARM_COLORS, "Harvesting.
");
}
int days_left = harvest_days - days;
if (days_left > 0) {
print(FARM_COLORS, "Days left: %d.
", days_left);
} else if (days_left == 0) {
if (farm_info[i].type == FARM_TYPE_CROP && farm_info[i].harvest != -1) {
changed = true;
print(FARM_COLORS, "Harvesting.
");
farm_info[i].planting = true;
int days_left = get_crop_growth(farm_info[i].type);
print(FARM_COLORS, "Days left: %d.
", days_left);
} else {
changed = true;
farm_info[i].planting = false;
print(FARM_COLORS, "No crop.
");
}
} else {
changed = true;
farm_info[i].planting = false;
print(FARM_COLORS, "Harvested.
");
}
if (days > harvest_days) {
print(FARM_COLORS, "Planting.
");
} else if (days >= 0 && days < harvest_days) {
changed = true;
farm_info[i].harvest = -1;
print(FARM_COLORS, "No harvest.
");
} else {
changed = true;
farm_info[i].harvest = -1;
print(FARM_COLORS, "Harvested.
");
}
int days_left = harvest_days - days;
if (days_left > 0) {
print(FARM_COLORS, "Days left: %d.
", days_left);
} else if (days_left == 0) {
if (farm_info[i].type == FARM_TYPE_CROP && farm_info[i].harvest != -1) {
changed = true;
print(FARM_COLORS, "Harvesting.
");
farm_info[i].planting = true;
int days_left = get_crop_growth(farm_info[i].type);
print(FARM_COLORS, "Days left: %d.
", days_left);
} else {
changed = true;
farm_info[i].planting = false;
print(FARM_COLORS, "No crop.
");
}
} else {
changed = true;
farm_info[i].planting = false;
print(FARM_COLORS, "Harvested.
");
}
if (days > harvest_days) {
print(FARM_COLORS, "Planting.
");
} else if (days >= 0 && days < harvest_days) {
changed = true;
farm_info[i].harvest = -1;
print(FARM_COLORS, "No harvest.
");
} else {
changed = true;
farm_info[i].harvest = -1;
print(FARM_COLORS, "Harvested.
");
}
int days_left = harvest_days - days;
if (days_left > 0) {
print(FARM_COLORS, "Days left: %d.
", days_left);
} else if (days_left == 0) {
if (farm_info[i].type == FARM_TYPE_CROP && farm_info[i].harvest != -1) {
changed = true;
print(FARM_COLORS, "Harvesting.
");
farm_info[i].planting = true;
int days_left = get_crop_growth(farm_info[i].type);
print(FARM_COLORS, "Days left: %d.
", days_left);
} else {
changed = true;
farm_info[i].planting = false;
print(FARM_COLORS, "No crop.
");
}
} else {
changed = true;
farm_info[i].planting = false;
print(FARM_COLORS, "Harvested.
");
}
if (days > harvest_days) {
print(FARM_COLORS, "Planting.
");
} else if (days >= 0 && days < harvest_days) {
changed = true;
farm_info[i].harvest = -1;
print(FARM_COLORS, "No harvest.
");
} else {
changed = true;
farm_info[i].harvest = -1;
print(FARM_COLORS, "Harvested.
");
}
int days_left = harvest_days - days;
if (days_left > 0) {
print(FARM_COLORS, "Days left: %d.
", days_left);
} else if (days_left == 0) {
if (farm_info[i].type == FARM_TYPE_CROP && farm_info[i].harvest != -1) {
changed = true;
print(FARM_COLORS, "Harvesting.
");
farm_info[i].planting = true;
int days_left = get_crop_growth(farm_info[i].type);
print(FARM_COLORS, "Days left: %d.
", days_left);
} else {
changed = true;
farm_info[i].planting = false;
print(FARM_COLORS, "No crop.
");
}
} else {
changed = true;
farm_info[i].planting = false;
print(FARM_COLORS, "Harvested.
");
}
if (days > harvest_days) {
print(FARM_COLORS, "Planting.
");
} else if (days >= 0 && days < harvest_days) {
changed = true;
farm_info[i].harvest = -1;
print(FARM_COLORS, "No harvest.
");
} else {
changed = true;
farm_info[i].harvest = -1;
print(FARM_COLORS, "Harvested.
");
}
int days_left = harvest_days - days;
if (days_left > 0) {
print(FARM_COLORS, "Days left: %d.
", days_left);
} else if (days_left == 0) {
if (farm_info[i].type == FARM_TYPE_CROP && farm_info[i].harvest != -1) {
changed = true;
print(FARM_COLORS, "Harvesting.
");
farm_info[i].planting = true;
int days_left = get_crop_growth(farm_info[i].type);
print(FARM_COLORS, "Days left: %d.
", days_left);
} else {
changed = true;
farm_info[i].planting = false;
print(FARM_COLORS, "No crop.
");
}
} else {
changed = true;
farm_info[i].planting = false;
print(FARM_COLORS, "Harvested.
");
}
if (days > harvest_days) {
print(FARM_COLORS, "Planting.
");
} else if (days >= 0 && days < harvest_days) {
changed = true;
farm_info[i].harvest = -1;
print(FARM_COLORS, "No harvest.
");
} else {
changed = true;
farm_info[i].harvest = -1;
print(FARM_COLORS, "Harvested.
");
}
int days_left = harvest_days - days;
if (days_left > 0) {
print(FARM_COLORS, "Days left: %d.
", days_left);
} else if (days_left == 0) {
if (farm_info[i].type == FARM_TYPE_CROP && farm_info[i].harvest != -1) {
changed = true;
print(FARM_COLORS, "Harvesting.
");
farm_info[i].planting = true;
int days_left = get_crop_growth(farm_info[i].type);
print(FARM_COLORS, "Days left: %d.
", days_left);
} else {
changed = true;
farm_info[i].planting = false;
print(FARM_COLORS, "No crop.
");
}
} else {
changed = true;
farm_info[i].planting = false;
print(FARM_COLORS, "Harvested.
");
}
if (days > harvest_days) {
print(FARM_COLORS, "Planting.
");
} else if (days >= 0 && days < harvest_days) {
changed = true;
farm_info[i].harvest = -1;
print(FARM_COLORS, "No harvest.
");
} else {
changed = true;
farm_info[i].harvest = -1;
print(FARM_COLORS, "Harvested.
");
}
int days_left = harvest_days - days;
if (days_left > 0) {
print(FARM_COLORS, "Days left: %d.
", days_left);
} else if (days_left == 0) {
if (farm_info[i].type == FARM_TYPE_CROP && farm_info[i].harvest != -1) {
changed = true;
print(FARM_COLORS, "Harvesting.
");
farm_info[i].planting = true;
int days_left = get_crop_growth(farm_info[i].type);
print(FARM_COLORS, "Days left: %d.
", days_left);
} else {
changed = true;
farm_info[i].planting = false;
print(FARM_COLORS, "No crop.
");
}
} else {
changed = true;
farm_info[i].planting = false;
print(FARM_COLORS, "Harvested.
");
}
if (days > harvest_days) {
print(FARM_COLORS, "Planting.
");
} else if (days >= 0 && days < harvest_days) {
changed = true;
farm_info[i].harvest = -1;
print(FARM_COLORS, "No harvest.
");
} else {
changed = true;
farm_info[i].harvest = -1;
print(FARM_COLORS, "Harvested.
");
}
if (days == harvest_days) {
changed = true;
farm_info[i].harvest = 0;
print(FARM_COLORS, "Harvested.
");
}
if (changed) {
print("Farm info updated.
");
}
} else if (farm_info[i].type == FARM_TYPE_LIVESTOCK) {
if (farm_info[i].planting) {
print(FARM_COLORS, "Planting.
");
} else if (farm_info[i].harvest) {
print(FARM_COLORS, "Harvested.
");
} else {
print(FARM_COLORS, "No crop.
");
}
} else if (farm_info[i].type == FARM_TYPE_ANIMALS) {
if (farm_info[i].planting) {
print(FARM_COLORS, "Planting.
");
} else if (farm_info[i].harvest) {
print(FARM_COLORS, "Harvested.
");
} else {
print(FARM_COLORS, "No crop.
");
}
} else if (farm_info[i].type == FARM_TYPE_VINEYARD) {
if (farm_info[i].planting) {
print(FARM_COLORS, "Planting.
");
} else if (farm_info[i].harvest) {
print(FARM_COLORS, "Harvested.
");
} else {
print(FARM_COLORS, "No crop.
");
}
} else if (farm_info[i].type == FARM_TYPE_ORCHARD) {
if (farm_info[i].planting) {
print(FARM_COLORS, "Planting.
");
} else if (farm_info[i].harvest) {
print(FARM_COLORS, "Harvested.
");
} else {
print(FARM_COLORS, "No crop.
");
}
} else if (farm_info[i].type == FARM_TYPE_GARDEN) {
if (farm_info[i].planting) {
print(FARM_COLORS, "Planting.
");
} else if (farm_info[i].harvest) {
print(FARM_COLORS, "Harvested.
");
} else {
print(FARM_COLORS, "No crop.
");
}
}
}
}
} else {
print("Invalid farm ID.");
}
}
}