economy.c
changeset 534 17ab2f22ff74
parent 523 1184a22723ad
child 541 e1cd34389f79
equal deleted inserted replaced
533:f512d1b9bc17 534:17ab2f22ff74
   379 			InitNewsItemStructs();
   379 			InitNewsItemStructs();
   380 			DeleteWindowById(WC_NEWS_WINDOW, 0);
   380 			DeleteWindowById(WC_NEWS_WINDOW, 0);
   381 		}
   381 		}
   382 
   382 
   383 // Show bankrupt news
   383 // Show bankrupt news
   384 		SET_DPARAM16(0, p->name_1);
   384 		SetDParam(0, p->name_1);
   385 		SET_DPARAM32(1, p->name_2);
   385 		SetDParam(1, p->name_2);
   386 		AddNewsItem( (StringID)(owner + 16*3), NEWS_FLAGS(NM_CALLBACK, 0, NT_COMPANY_INFO, DNC_BANKRUPCY),0,0);
   386 		AddNewsItem( (StringID)(owner + 16*3), NEWS_FLAGS(NM_CALLBACK, 0, NT_COMPANY_INFO, DNC_BANKRUPCY),0,0);
   387 
   387 
   388 		if (IS_HUMAN_PLAYER(owner)) {
   388 		if (IS_HUMAN_PLAYER(owner)) {
   389 			p->bankrupt_asked = 255;
   389 			p->bankrupt_asked = 255;
   390 			p->bankrupt_timeout = 0x456;
   390 			p->bankrupt_timeout = 0x456;
   404 
   404 
   405 	p = DEREF_PLAYER(WP(w,news_d).ni->string_id & 15);
   405 	p = DEREF_PLAYER(WP(w,news_d).ni->string_id & 15);
   406 	DrawPlayerFace(p->face, p->player_color, 2, 23);
   406 	DrawPlayerFace(p->face, p->player_color, 2, 23);
   407 	GfxFillRect(3, 23, 3+91, 23+118, 0x4323);
   407 	GfxFillRect(3, 23, 3+91, 23+118, 0x4323);
   408 
   408 
   409 	SET_DPARAM16(0, p->president_name_1);
   409 	SetDParam(0, p->president_name_1);
   410 	SET_DPARAM32(1, p->president_name_2);
   410 	SetDParam(1, p->president_name_2);
   411 
   411 
   412 	DrawStringMultiCenter(49, 148, STR_7058_PRESIDENT, 94);
   412 	DrawStringMultiCenter(49, 148, STR_7058_PRESIDENT, 94);
   413 
   413 
   414 	switch(WP(w,news_d).ni->string_id >> 4) {
   414 	switch(WP(w,news_d).ni->string_id >> 4) {
   415 	case 1:
   415 	case 1:
   416 		DrawStringCentered(w->width>>1, 1, STR_7056_TRANSPORT_COMPANY_IN_TROUBLE, 0);
   416 		DrawStringCentered(w->width>>1, 1, STR_7056_TRANSPORT_COMPANY_IN_TROUBLE, 0);
   417 
   417 
   418 		SET_DPARAM16(0, p->name_1);
   418 		SetDParam(0, p->name_1);
   419 		SET_DPARAM32(1, p->name_2);
   419 		SetDParam(1, p->name_2);
   420 
   420 
   421 		DrawStringMultiCenter(
   421 		DrawStringMultiCenter(
   422 			((w->width - 101) >> 1) + 98,
   422 			((w->width - 101) >> 1) + 98,
   423 			90,
   423 			90,
   424 			STR_7057_WILL_BE_SOLD_OFF_OR_DECLARED,
   424 			STR_7057_WILL_BE_SOLD_OFF_OR_DECLARED,
   428 	case 2: {
   428 	case 2: {
   429 		int32 price;
   429 		int32 price;
   430 
   430 
   431 		DrawStringCentered(w->width>>1, 1, STR_7059_TRANSPORT_COMPANY_MERGER, 0);
   431 		DrawStringCentered(w->width>>1, 1, STR_7059_TRANSPORT_COMPANY_MERGER, 0);
   432 		COPY_IN_DPARAM(0,WP(w,news_d).ni->params, 2);
   432 		COPY_IN_DPARAM(0,WP(w,news_d).ni->params, 2);
   433 		SET_DPARAM16(2, p->name_1);
   433 		SetDParam(2, p->name_1);
   434 		SET_DPARAM32(3, p->name_2);
   434 		SetDParam(3, p->name_2);
   435 		price = WP(w,news_d).ni->params[2];
   435 		price = WP(w,news_d).ni->params[2];
   436 		SET_DPARAM32(4, price);
   436 		SetDParam(4, price);
   437 		DrawStringMultiCenter(
   437 		DrawStringMultiCenter(
   438 			((w->width - 101) >> 1) + 98,
   438 			((w->width - 101) >> 1) + 98,
   439 			90,
   439 			90,
   440 			price==0 ? STR_707F_HAS_BEEN_TAKEN_OVER_BY : STR_705A_HAS_BEEN_SOLD_TO_FOR,
   440 			price==0 ? STR_707F_HAS_BEEN_TAKEN_OVER_BY : STR_705A_HAS_BEEN_SOLD_TO_FOR,
   441 			w->width - 101);
   441 			w->width - 101);
   452 			w->width - 101);
   452 			w->width - 101);
   453 		break;
   453 		break;
   454 
   454 
   455 	case 4:
   455 	case 4:
   456 		DrawStringCentered(w->width>>1, 1, STR_705E_NEW_TRANSPORT_COMPANY_LAUNCHED, 0);
   456 		DrawStringCentered(w->width>>1, 1, STR_705E_NEW_TRANSPORT_COMPANY_LAUNCHED, 0);
   457 		SET_DPARAM16(0, p->name_1);
   457 		SetDParam(0, p->name_1);
   458 		SET_DPARAM32(1, p->name_2);
   458 		SetDParam(1, p->name_2);
   459 		COPY_IN_DPARAM(2,WP(w,news_d).ni->params, 2);
   459 		COPY_IN_DPARAM(2,WP(w,news_d).ni->params, 2);
   460 		DrawStringMultiCenter(
   460 		DrawStringMultiCenter(
   461 			((w->width - 101) >> 1) + 98,
   461 			((w->width - 101) >> 1) + 98,
   462 			90,
   462 			90,
   463 			STR_705F_STARTS_CONSTRUCTION_NEAR,
   463 			STR_705F_STARTS_CONSTRUCTION_NEAR,
   473 {
   473 {
   474 	Player *p = DEREF_PLAYER(ni->string_id & 0xF);
   474 	Player *p = DEREF_PLAYER(ni->string_id & 0xF);
   475 
   475 
   476 	switch(ni->string_id >> 4) {
   476 	switch(ni->string_id >> 4) {
   477 	case 1:
   477 	case 1:
   478 		SET_DPARAM16(0, STR_7056_TRANSPORT_COMPANY_IN_TROUBLE);
   478 		SetDParam(0, STR_7056_TRANSPORT_COMPANY_IN_TROUBLE);
   479 		SET_DPARAM16(1, STR_7057_WILL_BE_SOLD_OFF_OR_DECLARED);
   479 		SetDParam(1, STR_7057_WILL_BE_SOLD_OFF_OR_DECLARED);
   480 		SET_DPARAM16(2, p->name_1);
   480 		SetDParam(2, p->name_1);
   481 		SET_DPARAM32(3, p->name_2);
   481 		SetDParam(3, p->name_2);
   482 		return STR_02B6;
   482 		return STR_02B6;
   483 	case 2:
   483 	case 2:
   484 		SET_DPARAM16(0, STR_7059_TRANSPORT_COMPANY_MERGER);
   484 		SetDParam(0, STR_7059_TRANSPORT_COMPANY_MERGER);
   485 		SET_DPARAM16(1, STR_705A_HAS_BEEN_SOLD_TO_FOR);
   485 		SetDParam(1, STR_705A_HAS_BEEN_SOLD_TO_FOR);
   486 		COPY_IN_DPARAM(2,ni->params, 2);
   486 		COPY_IN_DPARAM(2,ni->params, 2);
   487 		SET_DPARAM16(4, p->name_1);
   487 		SetDParam(4, p->name_1);
   488 		SET_DPARAM32(5, p->name_2);
   488 		SetDParam(5, p->name_2);
   489 		COPY_IN_DPARAM(6,ni->params + 2, 1);
   489 		COPY_IN_DPARAM(6,ni->params + 2, 1);
   490 		return STR_02B6;
   490 		return STR_02B6;
   491 	case 3:
   491 	case 3:
   492 		SET_DPARAM16(0, STR_705C_BANKRUPT);
   492 		SetDParam(0, STR_705C_BANKRUPT);
   493 		SET_DPARAM16(1, STR_705D_HAS_BEEN_CLOSED_DOWN_BY);
   493 		SetDParam(1, STR_705D_HAS_BEEN_CLOSED_DOWN_BY);
   494 		COPY_IN_DPARAM(2,ni->params, 2);
   494 		COPY_IN_DPARAM(2,ni->params, 2);
   495 		return STR_02B6;
   495 		return STR_02B6;
   496 	case 4:
   496 	case 4:
   497 		SET_DPARAM16(0, STR_705E_NEW_TRANSPORT_COMPANY_LAUNCHED);
   497 		SetDParam(0, STR_705E_NEW_TRANSPORT_COMPANY_LAUNCHED);
   498 		SET_DPARAM16(1, STR_705F_STARTS_CONSTRUCTION_NEAR);
   498 		SetDParam(1, STR_705F_STARTS_CONSTRUCTION_NEAR);
   499 		SET_DPARAM16(2, p->name_1);
   499 		SetDParam(2, p->name_1);
   500 		SET_DPARAM32(3, p->name_2);
   500 		SetDParam(3, p->name_2);
   501 		COPY_IN_DPARAM(4,ni->params, 2);
   501 		COPY_IN_DPARAM(4,ni->params, 2);
   502 		return STR_02B6;
   502 		return STR_02B6;
   503 	default:
   503 	default:
   504 		NOT_REACHED();
   504 		NOT_REACHED();
   505 	}
   505 	}
   714 	Town *t;
   714 	Town *t;
   715 	Station *st;
   715 	Station *st;
   716 	Pair tp;
   716 	Pair tp;
   717 
   717 
   718 	/* if mode is false, convert into plural */
   718 	/* if mode is false, convert into plural */
   719 	SET_DPARAM16(0, _cargoc.names_s[s->cargo_type] + (mode?0:32));
   719 	SetDParam(0, _cargoc.names_s[s->cargo_type] + (mode?0:32));
   720 
   720 
   721 	if (s->age < 12) {
   721 	if (s->age < 12) {
   722 		if (!(s->cargo_type == CT_PASSENGERS || s->cargo_type == CT_MAIL)) {
   722 		if (!(s->cargo_type == CT_PASSENGERS || s->cargo_type == CT_MAIL)) {
   723 			SET_DPARAM16(1, STR_2029);
   723 			SetDParam(1, STR_2029);
   724 			i = DEREF_INDUSTRY(s->from);
   724 			i = DEREF_INDUSTRY(s->from);
   725 			tile = i->xy;
   725 			tile = i->xy;
   726 			SET_DPARAM16(2, i->town->townnametype);
   726 			SetDParam(2, i->town->townnametype);
   727 			SET_DPARAM32(3, i->town->townnameparts);
   727 			SetDParam(3, i->town->townnameparts);
   728 
   728 
   729 			SET_DPARAM16(4, i->type + STR_4802_COAL_MINE);
   729 			SetDParam(4, i->type + STR_4802_COAL_MINE);
   730 
   730 
   731 			if (s->cargo_type != CT_GOODS && s->cargo_type != CT_FOOD) {
   731 			if (s->cargo_type != CT_GOODS && s->cargo_type != CT_FOOD) {
   732 				SET_DPARAM16(5, STR_2029);
   732 				SetDParam(5, STR_2029);
   733 				i = DEREF_INDUSTRY(s->to);
   733 				i = DEREF_INDUSTRY(s->to);
   734 				tile2 = i->xy;
   734 				tile2 = i->xy;
   735 				SET_DPARAM16(8, i->type + STR_4802_COAL_MINE);
   735 				SetDParam(8, i->type + STR_4802_COAL_MINE);
   736 				SET_DPARAM16(6, i->town->townnametype);
   736 				SetDParam(6, i->town->townnametype);
   737 				SET_DPARAM32(7, i->town->townnameparts);
   737 				SetDParam(7, i->town->townnameparts);
   738 			} else {
   738 			} else {
   739 				t = DEREF_TOWN(s->to);
   739 				t = DEREF_TOWN(s->to);
   740 				tile2 = t->xy;
   740 				tile2 = t->xy;
   741 				SET_DPARAM16(5, t->townnametype);
   741 				SetDParam(5, t->townnametype);
   742 				SET_DPARAM32(6, t->townnameparts);
   742 				SetDParam(6, t->townnameparts);
   743 			}
   743 			}
   744 		} else {
   744 		} else {
   745 			t = DEREF_TOWN(s->from);
   745 			t = DEREF_TOWN(s->from);
   746 			tile = t->xy;
   746 			tile = t->xy;
   747 			SET_DPARAM16(1, t->townnametype);
   747 			SetDParam(1, t->townnametype);
   748 			SET_DPARAM32(2, t->townnameparts);
   748 			SetDParam(2, t->townnameparts);
   749 
   749 
   750 			t = DEREF_TOWN(s->to);
   750 			t = DEREF_TOWN(s->to);
   751 			tile2 = t->xy;
   751 			tile2 = t->xy;
   752 			SET_DPARAM16(3, t->townnametype);
   752 			SetDParam(3, t->townnametype);
   753 			SET_DPARAM32(4, t->townnameparts);
   753 			SetDParam(4, t->townnameparts);
   754 		}
   754 		}
   755 	} else {
   755 	} else {
   756 		st = DEREF_STATION(s->from);
   756 		st = DEREF_STATION(s->from);
   757 		tile = st->xy;
   757 		tile = st->xy;
   758 		SET_DPARAM16(1, st->index);
   758 		SetDParam(1, st->index);
   759 
   759 
   760 		st = DEREF_STATION(s->to);
   760 		st = DEREF_STATION(s->to);
   761 		tile2 = st->xy;
   761 		tile2 = st->xy;
   762 		SET_DPARAM16(2, st->index);
   762 		SetDParam(2, st->index);
   763 	}
   763 	}
   764 
   764 
   765 	tp.a = tile;
   765 	tp.a = tile;
   766 	tp.b = tile2;
   766 	tp.b = tile2;
   767 
   767 
  1116 			/* Add a news item */
  1116 			/* Add a news item */
  1117 			pair = SetupSubsidyDecodeParam(s, 0);
  1117 			pair = SetupSubsidyDecodeParam(s, 0);
  1118 			INJECT_DPARAM(2);
  1118 			INJECT_DPARAM(2);
  1119 
  1119 
  1120 			p = DEREF_PLAYER(_current_player);
  1120 			p = DEREF_PLAYER(_current_player);
  1121 			SET_DPARAM16(0, p->name_1);
  1121 			SetDParam(0, p->name_1);
  1122 			SET_DPARAM32(1, p->name_2);
  1122 			SetDParam(1, p->name_2);
  1123 			AddNewsItem(
  1123 			AddNewsItem(
  1124 				STR_2031_SERVICE_SUBSIDY_AWARDED + _opt.diff.subsidy_multiplier,
  1124 				STR_2031_SERVICE_SUBSIDY_AWARDED + _opt.diff.subsidy_multiplier,
  1125 				NEWS_FLAGS(NM_NORMAL, NF_TILE, NT_SUBSIDIES, 0),
  1125 				NEWS_FLAGS(NM_NORMAL, NF_TILE, NT_SUBSIDIES, 0),
  1126 				pair.a, pair.b);
  1126 				pair.a, pair.b);
  1127 
  1127 
  1414 {
  1414 {
  1415 	Player *owner;
  1415 	Player *owner;
  1416 	int i,pi;
  1416 	int i,pi;
  1417 	int64 value;
  1417 	int64 value;
  1418 
  1418 
  1419 	SET_DPARAM16(0, p->name_1);
  1419 	SetDParam(0, p->name_1);
  1420 	SET_DPARAM32(1, p->name_2);
  1420 	SetDParam(1, p->name_2);
  1421 	SET_DPARAM32(2, p->bankrupt_value);
  1421 	SetDParam(2, p->bankrupt_value);
  1422 	AddNewsItem( (StringID)(_current_player + 16*2), NEWS_FLAGS(NM_CALLBACK, 0, NT_COMPANY_INFO, DNC_BANKRUPCY),0,0);
  1422 	AddNewsItem( (StringID)(_current_player + 16*2), NEWS_FLAGS(NM_CALLBACK, 0, NT_COMPANY_INFO, DNC_BANKRUPCY),0,0);
  1423 
  1423 
  1424 	// original code does this a little bit differently
  1424 	// original code does this a little bit differently
  1425 	pi = p->index;
  1425 	pi = p->index;
  1426 	ChangeOwnershipOfPlayerItems(pi, _current_player);
  1426 	ChangeOwnershipOfPlayerItems(pi, _current_player);