src/industry_cmd.cpp
changeset 9074 e6716c8260a1
parent 9036 6368fe55fd6d
child 9111 48ce04029fe4
--- a/src/industry_cmd.cpp	Wed Apr 30 17:42:08 2008 +0000
+++ b/src/industry_cmd.cpp	Thu May 01 22:51:53 2008 +0000
@@ -1391,7 +1391,7 @@
 	const IndustrySpec *indspec = GetIndustrySpec(type);
 	const Industry *i;
 
-	if (_patches.same_industry_close && indspec->accepts_cargo[0] == CT_INVALID)
+	if (_patches.same_industry_close && indspec->IsRawIndustry())
 		/* Allow primary industries to be placed close to any other industry */
 		return true;
 
@@ -1401,7 +1401,7 @@
 
 		/* check if an industry that accepts the same goods is nearby */
 		if (in_low_distance &&
-				indspec->accepts_cargo[0] != CT_INVALID && // not a primary industry?
+				!indspec->IsRawIndustry() && // not a primary industry?
 				indspec->accepts_cargo[0] == i->accepts_cargo[0] && (
 				/* at least one of those options must be true */
 				_game_mode != GM_EDITOR || // editor must not be stopped
@@ -1904,7 +1904,8 @@
 	const IndustrySpec *indspec = GetIndustrySpec(ind->type);
 
 	/* Check for acceptance of cargo */
-	for (uint j = 0; j < lengthof(ind->accepts_cargo) && ind->accepts_cargo[j] != CT_INVALID; j++) {
+	for (byte j = 0; j < lengthof(ind->accepts_cargo); j++) {
+		if (ind->accepts_cargo[j] == CT_INVALID) continue;
 		if (cargo == ind->accepts_cargo[j]) {
 			if (HasBit(indspec->callback_flags, CBM_IND_REFUSE_CARGO)) {
 				uint16 res = GetIndustryCallback(CBID_INDUSTRY_REFUSE_CARGO,
@@ -1918,7 +1919,8 @@
 	}
 
 	/* Check for produced cargo */
-	for (uint j = 0; j < lengthof(ind->produced_cargo) && ind->produced_cargo[j] != CT_INVALID; j++) {
+	for (byte j = 0; j < lengthof(ind->produced_cargo); j++) {
+		if (ind->produced_cargo[j] == CT_INVALID) continue;
 		if (cargo == ind->produced_cargo[j]) {
 			*c_produces = true;
 			break;
@@ -2080,7 +2082,8 @@
 
 		if (smooth_economy) {
 			closeit = true;
-			for (byte j = 0; j < 2 && i->produced_cargo[j] != CT_INVALID; j++){
+			for (byte j = 0; j < lengthof(i->produced_cargo); j++) {
+				if (i->produced_cargo[j] == CT_INVALID) continue;
 				uint32 r = Random();
 				int old_prod, new_prod, percent;
 				/* If over 60% is transported, mult is 1, else mult is -1. */