Skip to content

Commit

Permalink
Merge pull request OpenEnroth#1879 from captainurist/macos_fixes_608
Browse files Browse the repository at this point in the history
Cleanup
  • Loading branch information
pskelton authored Nov 10, 2024
2 parents ed6a77a + c2fab3b commit d4b5373
Show file tree
Hide file tree
Showing 5 changed files with 32 additions and 10 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/macos.yml
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ jobs:
- name: Set up Xcode
uses: maxim-lobanov/setup-xcode@v1
with:
xcode-version: 14.3
xcode-version: 15.4

- name: Checkout
uses: actions/checkout@v4.2.2
Expand Down
2 changes: 1 addition & 1 deletion src/Engine/Engine.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -566,7 +566,7 @@ void DoPrepareWorld(bool bLoading, int _1_fullscreen_loading_2_box) {
if (isMapIndoor(engine->_transitionMapId))
loadAndPrepareBLV(engine->_transitionMapId, bLoading);
else
loadAndPrepareODM(engine->_transitionMapId, bLoading, 0);
loadAndPrepareODM(engine->_transitionMapId, bLoading);

pNPCStats->setNPCNamesOnLoad();
engine->_461103_load_level_sub();
Expand Down
6 changes: 3 additions & 3 deletions src/Engine/Graphics/Outdoor.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1958,7 +1958,7 @@ void UpdateActors_ODM() {
/**
* @offset 0x47A384
*/
static void loadAndPrepareODMInternal(MapId mapid, ODMRenderParams *thisa) {
static void loadAndPrepareODMInternal(MapId mapid) {
MapInfo *map_info;
bool outdoor_was_respawned;
unsigned int respawn_interval = 0;
Expand Down Expand Up @@ -2014,11 +2014,11 @@ static void loadAndPrepareODMInternal(MapId mapid, ODMRenderParams *thisa) {
MM7Initialization();
}

void loadAndPrepareODM(MapId mapid, bool bLoading, ODMRenderParams *a2) {
void loadAndPrepareODM(MapId mapid, bool bLoading) {
pGameLoadingUI_ProgressBar->Reset(27);
uCurrentlyLoadedLevelType = LEVEL_OUTDOOR;

loadAndPrepareODMInternal(mapid, a2);
loadAndPrepareODMInternal(mapid);
if (!bLoading)
TeleportToStartingPoint(uLevel_StartingPointType);

Expand Down
2 changes: 1 addition & 1 deletion src/Engine/Graphics/Outdoor.h
Original file line number Diff line number Diff line change
Expand Up @@ -135,7 +135,7 @@ void SetUnderwaterFog();
/**
* @offset 0x4610AA
*/
void loadAndPrepareODM(MapId mapid, bool bLoading, ODMRenderParams *a2);
void loadAndPrepareODM(MapId mapid, bool bLoading);
Color GetLevelFogColor();
int sub_47C3D7_get_fog_specular(int unused, int a2, float a3);
Vec2i WorldPosToGrid(Vec3f worldPos);
Expand Down
30 changes: 26 additions & 4 deletions test/Bin/GameTest/GameTests_1000.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
#include "Engine/Engine.h"
#include "Engine/LOD.h"
#include "Engine/PriceCalculator.h"
#include "Engine/Graphics/Outdoor.h"
#include "Engine/Graphics/ParticleEngine.h"

#include "Media/Audio/AudioPlayer.h"
Expand Down Expand Up @@ -162,33 +163,54 @@ GAME_TEST(Issues, Issue1175) {
}

GAME_TEST(Issues, Issue1191) {
// Warlock's dragon should add +3 to Self magic skills. Dragon also consumes food when resting.
auto foodTape = tapes.food();
auto timeTape = tapes.time();
test.playTraceFromTestData("issue_1191.mm7", "issue_1191.json");

EXPECT_EQ(pParty->pCharacters[0].classType, CLASS_WARLOCK);
EXPECT_EQ(pParty->pCharacters[0].getSkillValue(CHARACTER_SKILL_FIRE).level(), 7);
EXPECT_EQ(pParty->pCharacters[0].getActualSkillValue(CHARACTER_SKILL_FIRE).level(), 10);
EXPECT_EQ(pParty->pCharacters[0].getSkillValue(CHARACTER_SKILL_AIR).level(), 1);
EXPECT_EQ(pParty->pCharacters[0].getActualSkillValue(CHARACTER_SKILL_AIR).level(), 4);
EXPECT_EQ(pParty->pCharacters[0].getSkillValue(CHARACTER_SKILL_WATER).level(), 1);
EXPECT_EQ(pParty->pCharacters[0].getActualSkillValue(CHARACTER_SKILL_WATER).level(), 4);
EXPECT_EQ(pParty->pCharacters[0].getSkillValue(CHARACTER_SKILL_EARTH).level(), 1);
EXPECT_EQ(pParty->pCharacters[0].getActualSkillValue(CHARACTER_SKILL_EARTH).level(), 4);

EXPECT_EQ(pParty->pCharacters[0].getSkillValue(CHARACTER_SKILL_SPIRIT).level(), 1);
EXPECT_EQ(pParty->pCharacters[0].getActualSkillValue(CHARACTER_SKILL_SPIRIT).level(), 4);
EXPECT_EQ(pParty->pCharacters[0].getSkillValue(CHARACTER_SKILL_MIND).level(), 4);
EXPECT_EQ(pParty->pCharacters[0].getActualSkillValue(CHARACTER_SKILL_MIND).level(), 9); // 4, +3 dragon, +2 Ruler's ring
EXPECT_EQ(pParty->pCharacters[0].getSkillValue(CHARACTER_SKILL_BODY).level(), 1);
EXPECT_EQ(pParty->pCharacters[0].getActualSkillValue(CHARACTER_SKILL_BODY).level(), 4);
EXPECT_EQ(pParty->pCharacters[0].getSkillValue(CHARACTER_SKILL_DARK).level(), 0);
EXPECT_EQ(pParty->pCharacters[0].getActualSkillValue(CHARACTER_SKILL_DARK).level(), 0);
EXPECT_EQ(pParty->pCharacters[0].getSkillValue(CHARACTER_SKILL_LIGHT).level(), 0);
EXPECT_EQ(pParty->pCharacters[0].getActualSkillValue(CHARACTER_SKILL_LIGHT).level(), 0);

EXPECT_EQ(pParty->pCharacters[2].classType, CLASS_WARLOCK);
EXPECT_EQ(pParty->pCharacters[2].getSkillValue(CHARACTER_SKILL_FIRE).level(), 1);
EXPECT_EQ(pParty->pCharacters[2].getActualSkillValue(CHARACTER_SKILL_FIRE).level(), 4);
EXPECT_LE(pParty->pCharacters[2].getSkillValue(CHARACTER_SKILL_AIR).level(), 0);
EXPECT_LE(pParty->pCharacters[2].getActualSkillValue(CHARACTER_SKILL_AIR).level(), 3); // She has no skill. 0 or 3 skill level is fine
EXPECT_EQ(pParty->pCharacters[2].getSkillValue(CHARACTER_SKILL_WATER).level(), 1);
EXPECT_EQ(pParty->pCharacters[2].getActualSkillValue(CHARACTER_SKILL_WATER).level(), 4);
EXPECT_EQ(pParty->pCharacters[2].getSkillValue(CHARACTER_SKILL_EARTH).level(), 10);
EXPECT_EQ(pParty->pCharacters[2].getActualSkillValue(CHARACTER_SKILL_EARTH).level(), 18); // 10, +3 dragon, +5 ring

EXPECT_EQ(pParty->pCharacters[2].getSkillValue(CHARACTER_SKILL_SPIRIT).level(), 10);
EXPECT_EQ(pParty->pCharacters[2].getActualSkillValue(CHARACTER_SKILL_SPIRIT).level(), 13);
EXPECT_EQ(pParty->pCharacters[2].getSkillValue(CHARACTER_SKILL_MIND).level(), 1);
EXPECT_EQ(pParty->pCharacters[2].getActualSkillValue(CHARACTER_SKILL_MIND).level(), 4);
EXPECT_EQ(pParty->pCharacters[2].getSkillValue(CHARACTER_SKILL_BODY).level(), 10);
EXPECT_EQ(pParty->pCharacters[2].getActualSkillValue(CHARACTER_SKILL_BODY).level(), 18); // 10, +3 dragon, +5 ring
EXPECT_EQ(pParty->pCharacters[2].getSkillValue(CHARACTER_SKILL_DARK).level(), 0);
EXPECT_EQ(pParty->pCharacters[2].getActualSkillValue(CHARACTER_SKILL_DARK).level(), 0);
EXPECT_EQ(pParty->pCharacters[2].getSkillValue(CHARACTER_SKILL_LIGHT).level(), 0);
EXPECT_EQ(pParty->pCharacters[2].getActualSkillValue(CHARACTER_SKILL_LIGHT).level(), 0);

EXPECT_EQ(foodTape.delta(), -3);
EXPECT_EQ(pParty->GetFood(), 7);
EXPECT_GT(timeTape.delta(), Duration::fromHours(8));
EXPECT_EQ(pOutdoor->getNumFoodRequiredToRestInCurrentPos(pParty->pos), 2);
EXPECT_EQ(foodTape.delta(), -3); // Dragon consumed 1 additional food.
}

GAME_TEST(Issues, Issue1196) {
Expand Down

0 comments on commit d4b5373

Please sign in to comment.