#include "../../Minecraft.World/Platform/stdafx.h" #include #include #include "../../Minecraft.Client/Minecraft.h" #include "../../Minecraft.Client/Player/MultiPlayerLocalPlayer.h" #include "Tutorial.h" #include "TutorialConstraints.h" #include "ControllerTask.h" ControllerTask::ControllerTask(Tutorial *tutorial, int descriptionId, bool enablePreCompletion, bool showMinimumTime, int mappings[], unsigned int mappingsLength, int iCompletionMaskA[], int iCompletionMaskACount, int iSouthpawMappings[], unsigned int uiSouthpawMappingsCount) : TutorialTask( tutorial, descriptionId, enablePreCompletion, NULL, showMinimumTime ) { for(unsigned int i = 0; i < mappingsLength; ++i) { constraints.push_back( new InputConstraint( mappings[i] ) ); completedMappings[mappings[i]] = false; } if(uiSouthpawMappingsCount > 0 ) m_bHasSouthpaw = true; for(unsigned int i = 0; i < uiSouthpawMappingsCount; ++i) { southpawCompletedMappings[iSouthpawMappings[i]] = false; } m_iCompletionMaskA= new int [iCompletionMaskACount]; for(int i=0;iplayer->yRot; m_lastPitch = pMinecraft->player->xRot; m_initialized = true; } else { float deltaYaw = fabs(pMinecraft->player->yRot - m_lastYaw); float deltaPitch = fabs(pMinecraft->player->xRot - m_lastPitch); m_lastYaw = pMinecraft->player->yRot; m_lastPitch = pMinecraft->player->xRot; const float LOOK_THRESHOLD = 0.1f; if (deltaYaw > LOOK_THRESHOLD || deltaPitch > LOOK_THRESHOLD) return true; } // check for controller button input bool bAllComplete = true; int iCurrent = 0; if (m_bHasSouthpaw && app.GetGameSettings(pMinecraft->player->GetXboxPad(), eGameSetting_ControlSouthPaw)) { for (auto it = southpawCompletedMappings.begin(); it != southpawCompletedMappings.end(); ++it) { if (!it->second) { if (InputManager.GetValue(pMinecraft->player->GetXboxPad(), it->first) > 0) { it->second = true; m_uiCompletionMask |= 1 << iCurrent; } else { bAllComplete = false; } } iCurrent++; } } else { for (auto it = completedMappings.begin(); it != completedMappings.end(); ++it) { if (!it->second) { if (InputManager.GetValue(pMinecraft->player->GetXboxPad(), it->first) > 0) { it->second = true; m_uiCompletionMask |= 1 << iCurrent; } else { bAllComplete = false; } } iCurrent++; } } // completion mask check if (m_iCompletionMaskA && CompletionMaskIsValid()) bIsCompleted = true; else bIsCompleted = bAllComplete; return bIsCompleted; } bool ControllerTask::CompletionMaskIsValid() { for(int i=0;i