Changeset - r26758:f6e631eabddf
[Not reviewed]
master
0 4 0
Rubidium - 20 months ago 2023-01-13 21:30:18
rubidium@openttd.org
Codechange: pass the randomizer to use directly to the company face generation
4 files changed with 6 insertions and 8 deletions:
0 comments (0 inline, 0 general)
src/company_cmd.cpp
Show inline comments
 
@@ -573,7 +573,7 @@ Company *DoStartupNewCompany(bool is_ai,
 
	if (_company_manager_face != 0 && !is_ai && !_networking) {
 
		c->face = _company_manager_face;
 
	} else {
 
		RandomCompanyManagerFaceBits(c->face, (GenderEthnicity)Random(), false, false);
 
		RandomCompanyManagerFaceBits(c->face, (GenderEthnicity)Random(), false, _random);
 
	}
 

	
 
	SetDefaultCompanySettings(c->index);
src/company_gui.cpp
Show inline comments
 
@@ -1694,7 +1694,7 @@ public:
 

	
 
			/* Randomize face button */
 
			case WID_SCMF_RANDOM_NEW_FACE:
 
				RandomCompanyManagerFaceBits(this->face, this->ge, this->advanced);
 
				RandomCompanyManagerFaceBits(this->face, this->ge, this->advanced, _interactive_random);
 
				this->UpdateData();
 
				this->SetDirty();
 
				break;
src/company_manager_face.h
Show inline comments
 
@@ -199,15 +199,13 @@ static inline void ScaleAllCompanyManage
 
 * @param cmf the company manager's face to write the bits to
 
 * @param ge  the gender and ethnicity of the old company manager's face
 
 * @param adv if it for the advanced company manager's face window
 
 * @param interactive is the call from within the user interface?
 
 * @param randomizer the source of random to use for creating the manager face
 
 *
 
 * @pre scale 'ge' to a valid gender/ethnicity combination
 
 */
 
static inline void RandomCompanyManagerFaceBits(CompanyManagerFace &cmf, GenderEthnicity ge, bool adv, bool interactive = true)
 
static inline void RandomCompanyManagerFaceBits(CompanyManagerFace &cmf, GenderEthnicity ge, bool adv, Randomizer &randomizer)
 
{
 
	/* This method is called from a command when not interactive and
 
	 * then we must use Random to get the same result on all clients. */
 
	cmf = interactive ? InteractiveRandom() : Random(); // random all company manager's face bits
 
	cmf = randomizer.Next(); // random all company manager's face bits
 

	
 
	/* scale ge: 0 == GE_WM, 1 == GE_WF, 2 == GE_BM, 3 == GE_BF (and maybe in future: ...) */
 
	ge = (GenderEthnicity)((uint)ge % GE_END);
src/script/api/script_company.cpp
Show inline comments
 
@@ -99,7 +99,7 @@
 

	
 
	CompanyManagerFace cmf;
 
	GenderEthnicity ge = (GenderEthnicity)((gender == GENDER_FEMALE ? (1 << ::GENDER_FEMALE) : 0) | (::InteractiveRandom() & (1 << ETHNICITY_BLACK)));
 
	RandomCompanyManagerFaceBits(cmf, ge, false);
 
	RandomCompanyManagerFaceBits(cmf, ge, false, _interactive_random);
 

	
 
	return ScriptObject::Command<CMD_SET_COMPANY_MANAGER_FACE>::Do(cmf);
 
}
0 comments (0 inline, 0 general)