mirror of https://github.com/OpenTTD/OpenTTD.git
Codechange: pass the randomizer to use directly to the company face generation
This commit is contained in:
parent
5e6dac6fd4
commit
b3b8c3fd2d
|
@ -573,7 +573,7 @@ Company *DoStartupNewCompany(bool is_ai, CompanyID company = INVALID_COMPANY)
|
||||||
if (_company_manager_face != 0 && !is_ai && !_networking) {
|
if (_company_manager_face != 0 && !is_ai && !_networking) {
|
||||||
c->face = _company_manager_face;
|
c->face = _company_manager_face;
|
||||||
} else {
|
} else {
|
||||||
RandomCompanyManagerFaceBits(c->face, (GenderEthnicity)Random(), false, false);
|
RandomCompanyManagerFaceBits(c->face, (GenderEthnicity)Random(), false, _random);
|
||||||
}
|
}
|
||||||
|
|
||||||
SetDefaultCompanySettings(c->index);
|
SetDefaultCompanySettings(c->index);
|
||||||
|
|
|
@ -1694,7 +1694,7 @@ public:
|
||||||
|
|
||||||
/* Randomize face button */
|
/* Randomize face button */
|
||||||
case WID_SCMF_RANDOM_NEW_FACE:
|
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->UpdateData();
|
||||||
this->SetDirty();
|
this->SetDirty();
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -199,15 +199,13 @@ static inline void ScaleAllCompanyManagerFaceBits(CompanyManagerFace &cmf)
|
||||||
* @param cmf the company manager's face to write the bits to
|
* @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 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 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
|
* @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
|
cmf = randomizer.Next(); // random all company manager's face bits
|
||||||
* then we must use Random to get the same result on all clients. */
|
|
||||||
cmf = interactive ? InteractiveRandom() : Random(); // 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: ...) */
|
/* scale ge: 0 == GE_WM, 1 == GE_WF, 2 == GE_BM, 3 == GE_BF (and maybe in future: ...) */
|
||||||
ge = (GenderEthnicity)((uint)ge % GE_END);
|
ge = (GenderEthnicity)((uint)ge % GE_END);
|
||||||
|
|
|
@ -99,7 +99,7 @@
|
||||||
|
|
||||||
CompanyManagerFace cmf;
|
CompanyManagerFace cmf;
|
||||||
GenderEthnicity ge = (GenderEthnicity)((gender == GENDER_FEMALE ? (1 << ::GENDER_FEMALE) : 0) | (::InteractiveRandom() & (1 << ETHNICITY_BLACK)));
|
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);
|
return ScriptObject::Command<CMD_SET_COMPANY_MANAGER_FACE>::Do(cmf);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue