#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.");

}

}

}

Reply to this note

Please Login to reply.

Discussion

No replies yet.