Skip to content

Commit

Permalink
ENGINES: Fix appearance loading in KotOR games
Browse files Browse the repository at this point in the history
  • Loading branch information
vkremianskii authored and DrMcCoy committed Jun 11, 2018
1 parent dfdddec commit 1d8fe48
Show file tree
Hide file tree
Showing 4 changed files with 21 additions and 24 deletions.
24 changes: 10 additions & 14 deletions src/engines/kotor/creature.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -276,21 +276,17 @@ void Creature::getPartModels(PartModels &parts, uint32 state) {

_modelType = appearance.getString("modeltype");

parts.body = appearance.getString(Common::UString("model") + state);
Common::UString race = appearance.getString("race");
if (parts.body.empty() ||
// Special case, e.g., sith guards in korr_m35aa
(!race.empty() && parts.body.stricmp("N_Smuggler") == 0))
parts.body = race;

parts.bodyTexture = appearance.getString(Common::UString("tex") + state);
if (!parts.bodyTexture.empty())
parts.bodyTexture += "01";

if (parts.bodyTexture.empty() ||
// Special case, e.g., sith guards in korr_m35aa
(!race.empty() && parts.bodyTexture.stricmp("N_Smuggler01") == 0))
// TODO: load state based on character equipment
if (appearance.getString("label").beginsWith("Party_"))
state = 'b';

if (_modelType == "B") {
parts.body = appearance.getString(Common::UString("model") + state);
parts.bodyTexture = appearance.getString(Common::UString("tex") + state) + "01";
} else {
parts.body = appearance.getString("race");
parts.bodyTexture = appearance.getString("racetex");
}

if ((_modelType == "B") || (_modelType == "P")) {
const int headNormalID = appearance.getInt("normalhead");
Expand Down
2 changes: 1 addition & 1 deletion src/engines/kotor/creature.h
Original file line number Diff line number Diff line change
Expand Up @@ -152,7 +152,7 @@ class Creature : public Object {
void loadPortrait(const Aurora::GFF3Struct &gff);
void loadAppearance();

void getPartModels(PartModels &parts, uint32 state = 'b');
void getPartModels(PartModels &parts, uint32 state = 'a');
void loadBody(PartModels &parts);
void loadHead(PartModels &parts);

Expand Down
17 changes: 9 additions & 8 deletions src/engines/kotor2/creature.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -209,16 +209,17 @@ void Creature::getPartModels(PartModels &parts, uint32 state) {

_modelType = appearance.getString("modeltype");

parts.body = appearance.getString(Common::UString("model") + state);
if (parts.body.empty())
// TODO: load state based on character equipment
if (appearance.getString("label").beginsWith("Party_"))
state = 'b';

if (_modelType == "B") {
parts.body = appearance.getString(Common::UString("model") + state);
parts.bodyTexture = appearance.getString(Common::UString("tex") + state) + "01";
} else {
parts.body = appearance.getString("race");

parts.bodyTexture = appearance.getString(Common::UString("tex") + state);
if (!parts.bodyTexture.empty())
parts.bodyTexture += "01";

if (parts.bodyTexture.empty())
parts.bodyTexture = appearance.getString("racetex");
}

if ((_modelType == "B") || (_modelType == "P")) {
const int headNormalID = appearance.getInt("normalhead");
Expand Down
2 changes: 1 addition & 1 deletion src/engines/kotor2/creature.h
Original file line number Diff line number Diff line change
Expand Up @@ -131,7 +131,7 @@ class Creature : public Object {
void loadPortrait(const Aurora::GFF3Struct &gff);
void loadAppearance();

void getPartModels(PartModels &parts, uint32 state = 'b');
void getPartModels(PartModels &parts, uint32 state = 'a');
void loadBody(PartModels &parts);
void loadHead(PartModels &parts);

Expand Down

0 comments on commit 1d8fe48

Please sign in to comment.