1 Commits
Author SHA1 Message Date
552eden 1005e64629 added 360 support and fixed vita again again 2026-08-13 00:04:53 +03:00
111 changed files with 1977 additions and 2571 deletions
-3
View File
@@ -1,3 +0,0 @@
[submodule "Minecraft.Server"]
path = Minecraft.Server
url = https://gitea.str1k3r.xyz/cafeberry/Cafeberry-Server.git
+2 -4
View File
@@ -402,7 +402,6 @@ void Chunk::rebuild()
} }
Tile *tile = Tile::tiles[tileId]; Tile *tile = Tile::tiles[tileId];
if (!tile) continue;
if (currentLayer == 0 && tile->isEntityTile()) if (currentLayer == 0 && tile->isEntityTile())
{ {
shared_ptr<TileEntity> et = region->getTileEntity(x, y, z); shared_ptr<TileEntity> et = region->getTileEntity(x, y, z);
@@ -740,9 +739,9 @@ void Chunk::rebuild_SPU()
{ {
// 4J - get tile from those copied into our local array in earlier optimisation // 4J - get tile from those copied into our local array in earlier optimisation
unsigned char tileId = pOutData->getTile(x,y,z); unsigned char tileId = pOutData->getTile(x,y,z);
if (tileId > 0 && tileId != 0xff) if (tileId > 0)
{ {
if (currentLayer == 0 && Tile::tiles[tileId] && Tile::tiles[tileId]->isEntityTile()) if (currentLayer == 0 && Tile::tiles[tileId]->isEntityTile())
{ {
shared_ptr<TileEntity> et = region.getTileEntity(x, y, z); shared_ptr<TileEntity> et = region.getTileEntity(x, y, z);
if (TileEntityRenderDispatcher::instance->hasRenderer(et)) if (TileEntityRenderDispatcher::instance->hasRenderer(et))
@@ -755,7 +754,6 @@ void Chunk::rebuild_SPU()
{ {
Tile *tile = Tile::tiles[tileId]; Tile *tile = Tile::tiles[tileId];
if (!tile) continue;
int renderLayer = tile->getRenderLayer(); int renderLayer = tile->getRenderLayer();
if (renderLayer != currentLayer) if (renderLayer != currentLayer)
+42 -26
View File
@@ -1,4 +1,5 @@
#include "stdafx.h" #include "stdafx.h"
#include "Common\LivePrivileges.h"
#include "ClientConnection.h" #include "ClientConnection.h"
#include "MultiPlayerLevel.h" #include "MultiPlayerLevel.h"
#include "MultiPlayerLocalPlayer.h" #include "MultiPlayerLocalPlayer.h"
@@ -776,7 +777,6 @@ void ClientConnection::handleAddPlayer(shared_ptr<AddPlayerPacket> packet)
player->yRotp = packet->yRot; player->yRotp = packet->yRot;
player->yHeadRot = packet->yHeadRot * 360 / 256.0f; player->yHeadRot = packet->yHeadRot * 360 / 256.0f;
player->setXuid(packet->xuid); player->setXuid(packet->xuid);
player->setOnlineXuid(packet->OnlineXuid);
#ifdef _DURANGO #ifdef _DURANGO
// On Durango request player display name from network manager // On Durango request player display name from network manager
@@ -789,11 +789,11 @@ void ClientConnection::handleAddPlayer(shared_ptr<AddPlayerPacket> packet)
#if defined _WINDOWS64 || defined DISABLE_PSN || defined _DISABLE_XBLIVE #if defined _WINDOWS64 || defined DISABLE_PSN || defined _DISABLE_XBLIVE
{ {
PlayerUID netXuid = packet->OnlineXuid; PlayerUID pktXuid = player->getXuid();
const PlayerUID WIN64_XUID_BASE = (PlayerUID)0xe000d45248242f2e; const PlayerUID WIN64_XUID_BASE = (PlayerUID)0xe000d45248242f2e;
if (netXuid >= WIN64_XUID_BASE && netXuid < WIN64_XUID_BASE + MINECRAFT_NET_MAX_PLAYERS) if (pktXuid >= WIN64_XUID_BASE && pktXuid < WIN64_XUID_BASE + MINECRAFT_NET_MAX_PLAYERS)
{ {
BYTE smallId = (BYTE)(netXuid - WIN64_XUID_BASE); BYTE smallId = (BYTE)(pktXuid - WIN64_XUID_BASE);
INetworkPlayer *np = g_NetworkManager.GetPlayerBySmallId(smallId); INetworkPlayer *np = g_NetworkManager.GetPlayerBySmallId(smallId);
if (np != NULL) if (np != NULL)
{ {
@@ -955,6 +955,39 @@ void ClientConnection::handleMoveEntitySmall(shared_ptr<MoveEntityPacketSmall> p
void ClientConnection::handleRemoveEntity(shared_ptr<RemoveEntitiesPacket> packet) void ClientConnection::handleRemoveEntity(shared_ptr<RemoveEntitiesPacket> packet)
{ {
#if defined _WINDOWS64 || defined DISABLE_PSN || defined _DISABLE_XBLIVE
if (!g_NetworkManager.IsHost())
{
for (int i = 0; i < packet->ids.length; i++)
{
shared_ptr<Entity> entity = getEntity(packet->ids[i]);
if (entity != NULL && entity->GetType() == eTYPE_PLAYER)
{
shared_ptr<Player> player = dynamic_pointer_cast<Player>(entity);
if (player != NULL)
{
PlayerUID xuid = player->getXuid();
INetworkPlayer *np = g_NetworkManager.GetPlayerByXuid(xuid);
if (np != NULL)
{
NetworkPlayerXbox *npx = (NetworkPlayerXbox *)np;
IQNetPlayer *qp = npx->GetQNetPlayer();
if (qp != NULL)
{
extern CPlatformNetworkManagerStub *g_pPlatformNetworkManager;
g_pPlatformNetworkManager->NotifyPlayerLeaving(qp);
qp->m_smallId = 0;
qp->m_isRemote = false;
qp->m_isHostPlayer = false;
qp->m_gamertag[0] = 0;
qp->SetCustomDataValue(0);
}
}
}
}
}
}
#endif
for (int i = 0; i < packet->ids.length; i++) for (int i = 0; i < packet->ids.length; i++)
{ {
level->removeEntity(packet->ids[i]); level->removeEntity(packet->ids[i]);
@@ -1036,7 +1069,6 @@ void ClientConnection::handleChunkVisibility(shared_ptr<ChunkVisibilityPacket> p
void ClientConnection::handleChunkTilesUpdate(shared_ptr<ChunkTilesUpdatePacket> packet) void ClientConnection::handleChunkTilesUpdate(shared_ptr<ChunkTilesUpdatePacket> packet)
{ {
// 4J - changed to encode level in packet // 4J - changed to encode level in packet
if (packet->levelIdx >= minecraft->levels.length) return;
MultiPlayerLevel *dimensionLevel = (MultiPlayerLevel *)minecraft->levels[packet->levelIdx]; MultiPlayerLevel *dimensionLevel = (MultiPlayerLevel *)minecraft->levels[packet->levelIdx];
if( dimensionLevel ) if( dimensionLevel )
{ {
@@ -1106,7 +1138,6 @@ void ClientConnection::handleChunkTilesUpdate(shared_ptr<ChunkTilesUpdatePacket>
void ClientConnection::handleBlockRegionUpdate(shared_ptr<BlockRegionUpdatePacket> packet) void ClientConnection::handleBlockRegionUpdate(shared_ptr<BlockRegionUpdatePacket> packet)
{ {
// 4J - changed to encode level in packet // 4J - changed to encode level in packet
if (packet->levelIdx >= minecraft->levels.length) return;
MultiPlayerLevel *dimensionLevel = (MultiPlayerLevel *)minecraft->levels[packet->levelIdx]; MultiPlayerLevel *dimensionLevel = (MultiPlayerLevel *)minecraft->levels[packet->levelIdx];
if( dimensionLevel ) if( dimensionLevel )
{ {
@@ -1164,8 +1195,6 @@ void ClientConnection::handleTileUpdate(shared_ptr<TileUpdatePacket> packet)
destroyTilePacket = true; destroyTilePacket = true;
} }
// 4J - changed to encode level in packet // 4J - changed to encode level in packet
if (packet->levelIdx >= minecraft->levels.length) return;
MultiPlayerLevel *dimensionLevel = (MultiPlayerLevel *)minecraft->levels[packet->levelIdx]; MultiPlayerLevel *dimensionLevel = (MultiPlayerLevel *)minecraft->levels[packet->levelIdx];
if( dimensionLevel ) if( dimensionLevel )
{ {
@@ -1827,8 +1856,8 @@ void ClientConnection::handlePreLogin(shared_ptr<PreLoginPacket> packet)
} }
} }
#ifdef _XBOX // A LAN build has no Live friends list or UGC entitlements
#if !defined(_DISABLE_XBLIVE) #if defined _XBOX && !defined _DISABLE_XBLIVE
if(!g_NetworkManager.IsHost() && !app.GetGameHostOption(eGameHostOption_FriendsOfFriends)) if(!g_NetworkManager.IsHost() && !app.GetGameHostOption(eGameHostOption_FriendsOfFriends))
{ {
if(m_userIndex == ProfileManager.GetPrimaryPad() ) if(m_userIndex == ProfileManager.GetPrimaryPad() )
@@ -1972,16 +2001,6 @@ void ClientConnection::handlePreLogin(shared_ptr<PreLoginPacket> packet)
} }
} }
} }
#else
// Offline/system-link games have no Xbox Live friend list, so grant all
// pre-login permissions (the Xbox Live-only checks above would otherwise
// fail and reject the client's own pre-login before Login is ever sent).
canPlay = TRUE;
canPlayLocal = TRUE;
isAtLeastOneFriend = TRUE;
isFriendsWithHost = TRUE;
cantPlayContentRestricted = FALSE;
#endif // _DISABLE_XBLIVE
#else #else
// TODO - handle this kind of things for non-360 platforms // TODO - handle this kind of things for non-360 platforms
canPlay = TRUE; canPlay = TRUE;
@@ -2270,7 +2289,7 @@ void ClientConnection::handlePreLogin(shared_ptr<PreLoginPacket> packet)
ProfileManager.GetXUID(m_userIndex,&offlineXUID,false); ProfileManager.GetXUID(m_userIndex,&offlineXUID,false);
} }
BOOL allAllowed, friendsAllowed; BOOL allAllowed, friendsAllowed;
ProfileManager.AllowedPlayerCreatedContent(m_userIndex,true,&allAllowed,&friendsAllowed); Live_AllowedPlayerCreatedContent(m_userIndex,true,&allAllowed,&friendsAllowed);
app.DebugPrintf("ClientConnection::handlePreLogin SENDING LoginPacket (user %d)\n", m_userIndex); app.DebugPrintf("ClientConnection::handlePreLogin SENDING LoginPacket (user %d)\n", m_userIndex);
send( shared_ptr<LoginPacket>( new LoginPacket(minecraft->user->name, SharedConstants::NETWORK_PROTOCOL_VERSION, offlineXUID, onlineXUID, (allAllowed!=TRUE && friendsAllowed==TRUE), send( shared_ptr<LoginPacket>( new LoginPacket(minecraft->user->name, SharedConstants::NETWORK_PROTOCOL_VERSION, offlineXUID, onlineXUID, (allAllowed!=TRUE && friendsAllowed==TRUE),
packet->m_ugcPlayersVersion, app.GetPlayerSkinId(m_userIndex), app.GetPlayerCapeId(m_userIndex), ProfileManager.IsGuest( m_userIndex )))); packet->m_ugcPlayersVersion, app.GetPlayerSkinId(m_userIndex), app.GetPlayerCapeId(m_userIndex), ProfileManager.IsGuest( m_userIndex ))));
@@ -2322,7 +2341,6 @@ void ClientConnection::handleAddMob(shared_ptr<AddMobPacket> packet)
float xRot = packet->xRot * 360 / 256.0f; float xRot = packet->xRot * 360 / 256.0f;
shared_ptr<LivingEntity> mob = dynamic_pointer_cast<LivingEntity>(EntityIO::newById(packet->type, level)); shared_ptr<LivingEntity> mob = dynamic_pointer_cast<LivingEntity>(EntityIO::newById(packet->type, level));
if (mob == NULL) return;
mob->xp = packet->x; mob->xp = packet->x;
mob->yp = packet->y; mob->yp = packet->y;
mob->zp = packet->z; mob->zp = packet->z;
@@ -3566,12 +3584,10 @@ void ClientConnection::handleCustomPayload(shared_ptr<CustomPayloadPacket> custo
} }
#else #else
UIScene *scene = ui.GetTopScene(m_userIndex, eUILayer_Scene); UIScene *scene = ui.GetTopScene(m_userIndex, eUILayer_Scene);
UIScene_TradingMenu *screen = dynamic_cast<UIScene_TradingMenu *>(scene); UIScene_TradingMenu *screen = (UIScene_TradingMenu *)scene;
if (screen != NULL) trader = screen->getMerchant();
trader = screen->getMerchant();
#endif #endif
if (trader == NULL) return;
MerchantRecipeList *recipeList = MerchantRecipeList::createFromStream(&input); MerchantRecipeList *recipeList = MerchantRecipeList::createFromStream(&input);
trader->overrideOffers(recipeList); trader->overrideOffers(recipeList);
} }
-29
View File
@@ -1,7 +1,5 @@
 
#include "stdafx.h" #include "stdafx.h"
#include <time.h>
#include "..\..\Minecraft.World\net.minecraft.world.entity.item.h" #include "..\..\Minecraft.World\net.minecraft.world.entity.item.h"
#include "..\..\Minecraft.World\net.minecraft.world.entity.player.h" #include "..\..\Minecraft.World\net.minecraft.world.entity.player.h"
#include "..\..\Minecraft.World\net.minecraft.world.level.tile.entity.h" #include "..\..\Minecraft.World\net.minecraft.world.level.tile.entity.h"
@@ -238,26 +236,6 @@ void CMinecraftApp::DebugPrintf(const char *szFormat, ...)
vsnprintf(buf, sizeof(buf), szFormat, ap); vsnprintf(buf, sizeof(buf), szFormat, ap);
va_end(ap); va_end(ap);
OutputDebugStringA(buf); OutputDebugStringA(buf);
#ifdef _DEDICATED_SERVER
bool hasContent = false;
for (const char *p = buf; *p; p++) {
if (*p != ' ' && *p != '\t' && *p != '\n' && *p != '\r' && *p != '=') {
hasContent = true;
break;
}
}
if (hasContent)
{
size_t len = strlen(buf);
while (len > 0 && (buf[len-1] == '\n' || buf[len-1] == '\r'))
buf[--len] = '\0';
time_t now = time(NULL);
struct tm t;
localtime_s(&t, &now);
printf("[%02d:%02d:%02d] [Server thread/INFO]: %s\n", t.tm_hour, t.tm_min, t.tm_sec, buf);
}
#endif
#endif #endif
} }
@@ -320,9 +298,6 @@ LPCWSTR CMinecraftApp::GetString(int iID)
{ {
//return L"Değişiklikler ve Yenilikler"; //return L"Değişiklikler ve Yenilikler";
//return L"ÕÕÕÕÖÖÖÖ"; //return L"ÕÕÕÕÖÖÖÖ";
#ifdef _DEDICATED_SERVER
if (!app.m_stringTable) return L"";
#endif
return app.m_stringTable->getString(iID); return app.m_stringTable->getString(iID);
} }
@@ -4914,13 +4889,11 @@ void CMinecraftApp::SignInChangeCallback(LPVOID pParam,bool bPrimaryPlayerChange
// 4J Stu - On PS4 we can also cause to exit players if they are signed out here, but we shouldn't do that if // 4J Stu - On PS4 we can also cause to exit players if they are signed out here, but we shouldn't do that if
// we are going to switch to an offline game as it will likely crash due to incompatible parallel processes // we are going to switch to an offline game as it will likely crash due to incompatible parallel processes
bool switchToOffline = false; bool switchToOffline = false;
#ifndef _DISABLE_XBLIVE
// If it's an online game, and the primary profile is no longer signed into LIVE then we act as if disconnected // If it's an online game, and the primary profile is no longer signed into LIVE then we act as if disconnected
if( !ProfileManager.IsSignedInLive( ProfileManager.GetLockedProfile() ) && !g_NetworkManager.IsLocalGame() ) if( !ProfileManager.IsSignedInLive( ProfileManager.GetLockedProfile() ) && !g_NetworkManager.IsLocalGame() )
{ {
switchToOffline = true; switchToOffline = true;
} }
#endif
//printf("Old: %x, New: %x, Changed: %x\n", m_ulLastSignInData, ulSignInData, changedPlayers); //printf("Old: %x, New: %x, Changed: %x\n", m_ulLastSignInData, ulSignInData, changedPlayers);
for(unsigned int i = 0; i < XUSER_MAX_COUNT; ++i) for(unsigned int i = 0; i < XUSER_MAX_COUNT; ++i)
@@ -4985,7 +4958,6 @@ void CMinecraftApp::SignInChangeCallback(LPVOID pParam,bool bPrimaryPlayerChange
g_NetworkManager.HandleSignInChange(); g_NetworkManager.HandleSignInChange();
} }
#ifndef _DISABLE_XBLIVE
// Some menus require the player to be signed in to live, so if this callback happens and the primary player is // Some menus require the player to be signed in to live, so if this callback happens and the primary player is
// no longer signed in then nav back // no longer signed in then nav back
else if ( pApp->GetLiveLinkRequired() && !ProfileManager.IsSignedInLive( ProfileManager.GetLockedProfile() ) ) else if ( pApp->GetLiveLinkRequired() && !ProfileManager.IsSignedInLive( ProfileManager.GetLockedProfile() ) )
@@ -4997,7 +4969,6 @@ void CMinecraftApp::SignInChangeCallback(LPVOID pParam,bool bPrimaryPlayerChange
pApp->SetAction(iPrimaryPlayer,eAppAction_EthernetDisconnected); pApp->SetAction(iPrimaryPlayer,eAppAction_EthernetDisconnected);
} }
} }
#endif
#if ( defined __PS3__ || defined __ORBIS__ || defined _DURANGO || defined __PSVITA__ ) #if ( defined __PS3__ || defined __ORBIS__ || defined _DURANGO || defined __PSVITA__ )
// 4J-JEV: Need to kick of loading of profile data for sub-sign in players. // 4J-JEV: Need to kick of loading of profile data for sub-sign in players.
@@ -1,7 +1,7 @@
/* /*
base64.cpp and base64.h base64.cpp and base64.h
Copyright (C) 2004-2008 René Nyffenegger Copyright (C) 2004-2008 René Nyffenegger
This source code is provided 'as-is', without any express or implied This source code is provided 'as-is', without any express or implied
warranty. In no event will the author be held liable for any damages warranty. In no event will the author be held liable for any damages
@@ -21,7 +21,7 @@
3. This notice may not be removed or altered from any source distribution. 3. This notice may not be removed or altered from any source distribution.
René Nyffenegger rene.nyffenegger@adp-gmbh.ch René Nyffenegger rene.nyffenegger@adp-gmbh.ch
*/ */
@@ -41,7 +41,7 @@ static inline bool is_base64(unsigned char c) {
} }
// 4J ADDED, // 4J ADDED,
std::string base64_encode(const std::string& str) std::string base64_encode(std::string str)
{ {
return base64_encode( reinterpret_cast<const unsigned char*>(str.c_str()), str.length() ); return base64_encode( reinterpret_cast<const unsigned char*>(str.c_str()), str.length() );
} }
@@ -2,6 +2,6 @@
#include <string> #include <string>
std::string base64_encode(const std::string& str); std::string base64_encode(std::string str);
std::string base64_encode(unsigned char const* , unsigned int len); std::string base64_encode(unsigned char const* , unsigned int len);
std::string base64_decode(std::string const& s); std::string base64_decode(std::string const& s);
+32
View File
@@ -0,0 +1,32 @@
#pragma once
// Wrappers around the 4J profile library's Xbox Live entitlement queries.
// Include this after stdafx.h; it needs ProfileManager to be declared.
inline bool Live_MultiplayerAllowed(int iPad)
{
#ifdef _DISABLE_XBLIVE
return true;
#else
return ProfileManager.IsSignedInLive(iPad) && ProfileManager.AllowedToPlayMultiplayer(iPad);
#endif
}
inline bool Live_AllowedToPlayMultiplayer(int iPad)
{
#ifdef _DISABLE_XBLIVE
return true;
#else
return ProfileManager.AllowedToPlayMultiplayer(iPad);
#endif
}
inline void Live_AllowedPlayerCreatedContent(int iPad, bool thisQuadrantOnly, BOOL *allAllowed, BOOL *friendsAllowed)
{
#ifdef _DISABLE_XBLIVE
if(allAllowed != NULL) *allAllowed = TRUE;
if(friendsAllowed != NULL) *friendsAllowed = TRUE;
#else
ProfileManager.AllowedPlayerCreatedContent(iPad, thisQuadrantOnly, allAllowed, friendsAllowed);
#endif
}
@@ -1,4 +1,5 @@
#include "stdafx.h" #include "stdafx.h"
#include "..\LivePrivileges.h"
#include "..\..\..\Minecraft.World\StringHelpers.h" #include "..\..\..\Minecraft.World\StringHelpers.h"
#include "..\..\..\Minecraft.World\AABB.h" #include "..\..\..\Minecraft.World\AABB.h"
#include "..\..\..\Minecraft.World\Vec3.h" #include "..\..\..\Minecraft.World\Vec3.h"
@@ -100,14 +101,12 @@ void CGameNetworkManager::DoWork()
{ {
case XN_LIVE_LINK_STATE_CHANGED: case XN_LIVE_LINK_STATE_CHANGED:
{ {
#ifndef _DISABLE_XBLIVE
int iPrimaryPlayer = g_NetworkManager.GetPrimaryPad(); int iPrimaryPlayer = g_NetworkManager.GetPrimaryPad();
bool bConnected = (pNotification->uiParam!=0)?true:false; bool bConnected = (pNotification->uiParam!=0)?true:false;
if((g_NetworkManager.GetLockedProfile()!=-1) && iPrimaryPlayer!=-1 && bConnected == false && g_NetworkManager.IsInSession() ) if((g_NetworkManager.GetLockedProfile()!=-1) && iPrimaryPlayer!=-1 && bConnected == false && g_NetworkManager.IsInSession() )
{ {
app.SetAction(iPrimaryPlayer,eAppAction_EthernetDisconnected); app.SetAction(iPrimaryPlayer,eAppAction_EthernetDisconnected);
} }
#endif
} }
break; break;
case XN_LIVE_INVITE_ACCEPTED: case XN_LIVE_INVITE_ACCEPTED:
@@ -784,11 +783,7 @@ int CGameNetworkManager::JoinFromInvite_SignInReturned(void *pParam,bool bContin
app.DebugPrintf("JoinFromInvite_SignInReturned, iPad %d\n",iPad); app.DebugPrintf("JoinFromInvite_SignInReturned, iPad %d\n",iPad);
// It's possible that the player has not signed in - they can back out // It's possible that the player has not signed in - they can back out
#ifndef _DISABLE_XBLIVE
if(ProfileManager.IsSignedIn(iPad) && ProfileManager.IsSignedInLive(iPad) ) if(ProfileManager.IsSignedIn(iPad) && ProfileManager.IsSignedInLive(iPad) )
#else
if(ProfileManager.IsSignedIn(iPad))
#endif
{ {
app.DebugPrintf("JoinFromInvite_SignInReturned, passed sign-in tests\n"); app.DebugPrintf("JoinFromInvite_SignInReturned, passed sign-in tests\n");
int localUsersMask = 0; int localUsersMask = 0;
@@ -800,9 +795,7 @@ int CGameNetworkManager::JoinFromInvite_SignInReturned(void *pParam,bool bContin
if(ProfileManager.IsSignedIn(index) ) if(ProfileManager.IsSignedIn(index) )
{ {
++joiningUsers; ++joiningUsers;
#ifndef _DISABLE_XBLIVE if( !Live_AllowedToPlayMultiplayer(index) ) noPrivileges = true;
if( !ProfileManager.AllowedToPlayMultiplayer(index) ) noPrivileges = true;
#endif
localUsersMask |= GetLocalPlayerMask( index ); localUsersMask |= GetLocalPlayerMask( index );
} }
} }
@@ -873,14 +866,12 @@ int CGameNetworkManager::JoinFromInvite_SignInReturned(void *pParam,bool bContin
void CGameNetworkManager::UpdateAndSetGameSessionData(INetworkPlayer *pNetworkPlayerLeaving) void CGameNetworkManager::UpdateAndSetGameSessionData(INetworkPlayer *pNetworkPlayerLeaving)
{ {
#ifndef _DEDICATED_SERVER
Minecraft *pMinecraft = Minecraft::GetInstance(); Minecraft *pMinecraft = Minecraft::GetInstance();
TexturePack *tPack = pMinecraft->skins->getSelected(); TexturePack *tPack = pMinecraft->skins->getSelected();
s_pPlatformNetworkManager->SetSessionTexturePackParentId( tPack->getDLCParentPackId() ); s_pPlatformNetworkManager->SetSessionTexturePackParentId( tPack->getDLCParentPackId() );
s_pPlatformNetworkManager->SetSessionSubTexturePackId( tPack->getDLCSubPackId() ); s_pPlatformNetworkManager->SetSessionSubTexturePackId( tPack->getDLCSubPackId() );
s_pPlatformNetworkManager->UpdateAndSetGameSessionData( pNetworkPlayerLeaving ); s_pPlatformNetworkManager->UpdateAndSetGameSessionData( pNetworkPlayerLeaving );
#endif
} }
void CGameNetworkManager::SendInviteGUI(int quadrant) void CGameNetworkManager::SendInviteGUI(int quadrant)
@@ -900,12 +891,6 @@ bool CGameNetworkManager::IsNetworkThreadRunning()
int CGameNetworkManager::RunNetworkGameThreadProc( void* lpParameter ) int CGameNetworkManager::RunNetworkGameThreadProc( void* lpParameter )
{ {
if( g_NetworkManager.m_bNetworkThreadRunning )
{
return -1;
}
g_NetworkManager.m_bNetworkThreadRunning = true;
// Share AABB & Vec3 pools with default (main thread) - should be ok as long as we don't tick the main thread whilst this thread is running // Share AABB & Vec3 pools with default (main thread) - should be ok as long as we don't tick the main thread whilst this thread is running
AABB::UseDefaultThreadStorage(); AABB::UseDefaultThreadStorage();
Vec3::UseDefaultThreadStorage(); Vec3::UseDefaultThreadStorage();
@@ -913,6 +898,7 @@ int CGameNetworkManager::RunNetworkGameThreadProc( void* lpParameter )
Tile::CreateNewThreadStorage(); Tile::CreateNewThreadStorage();
IntCache::CreateNewThreadStorage(); IntCache::CreateNewThreadStorage();
g_NetworkManager.m_bNetworkThreadRunning = true;
bool success = g_NetworkManager._RunNetworkGame(lpParameter); bool success = g_NetworkManager._RunNetworkGame(lpParameter);
g_NetworkManager.m_bNetworkThreadRunning = false; g_NetworkManager.m_bNetworkThreadRunning = false;
if( !success) if( !success)
@@ -920,7 +906,7 @@ int CGameNetworkManager::RunNetworkGameThreadProc( void* lpParameter )
TexturePack *tPack = Minecraft::GetInstance()->skins->getSelected(); TexturePack *tPack = Minecraft::GetInstance()->skins->getSelected();
while ( tPack->isLoadingData() || (Minecraft::GetInstance()->skins->needsUIUpdate() || ui.IsReloadingSkin()) ) while ( tPack->isLoadingData() || (Minecraft::GetInstance()->skins->needsUIUpdate() || ui.IsReloadingSkin()) )
{ {
Sleep(0); Sleep(1);
} }
ui.CleanUpSkinReload(); ui.CleanUpSkinReload();
if(app.GetDisconnectReason() == DisconnectPacket::eDisconnect_None) if(app.GetDisconnectReason() == DisconnectPacket::eDisconnect_None)
@@ -957,7 +943,7 @@ int CGameNetworkManager::ServerThreadProc( void* lpParameter )
{ {
while((Minecraft::GetInstance()->skins->needsUIUpdate() || ui.IsReloadingSkin())) while((Minecraft::GetInstance()->skins->needsUIUpdate() || ui.IsReloadingSkin()))
{ {
Sleep(0); Sleep(1);
} }
param->levelGen->loadBaseSaveData(); param->levelGen->loadBaseSaveData();
} }
@@ -999,7 +985,7 @@ int CGameNetworkManager::ExitAndJoinFromInviteThreadProc( void* lpParam )
while( g_NetworkManager.IsInSession() ) while( g_NetworkManager.IsInSession() )
{ {
Sleep(0); Sleep(1);
} }
// Xbox should always be online when receiving invites - on PS3 we need to check & ask the user to sign in // Xbox should always be online when receiving invites - on PS3 we need to check & ask the user to sign in
@@ -1275,7 +1261,7 @@ int CGameNetworkManager::ChangeSessionTypeThreadProc( void* lpParam )
// wait for the current session to end // wait for the current session to end
while( g_NetworkManager.IsInSession() ) while( g_NetworkManager.IsInSession() )
{ {
Sleep(0); Sleep(1);
} }
// Reset this flag as the we don't need to know that we only lost the room only from this point onwards, the behaviour is exactly the same // Reset this flag as the we don't need to know that we only lost the room only from this point onwards, the behaviour is exactly the same
@@ -1542,7 +1528,6 @@ void CGameNetworkManager::CreateSocket( INetworkPlayer *pNetworkPlayer, bool loc
// Add this user to the game server if the game is started already // Add this user to the game server if the game is started already
if( g_NetworkManager.IsHost() && g_NetworkManager.IsInGameplay() ) if( g_NetworkManager.IsHost() && g_NetworkManager.IsInGameplay() )
{ {
app.DebugPrintf("Adding incoming socket for smallId=%d\n", pNetworkPlayer->GetSmallId());
Socket::addIncomingSocket(socket); Socket::addIncomingSocket(socket);
} }
@@ -1681,7 +1666,6 @@ void CGameNetworkManager::GameInviteReceived( int userIndex, const INVITE_INFO *
{ {
if (ProfileManager.IsSignedIn(i) && (i == ProfileManager.GetPrimaryPad() || isLocalMultiplayerAvailable)) if (ProfileManager.IsSignedIn(i) && (i == ProfileManager.GetPrimaryPad() || isLocalMultiplayerAvailable))
{ {
#ifndef _DISABLE_XBLIVE
if (isSignedInLive && !ProfileManager.IsSignedInLive(i)) if (isSignedInLive && !ProfileManager.IsSignedInLive(i))
{ {
// Record the first non signed in live pad // Record the first non signed in live pad
@@ -1689,9 +1673,6 @@ void CGameNetworkManager::GameInviteReceived( int userIndex, const INVITE_INFO *
} }
isSignedInLive = isSignedInLive && ProfileManager.IsSignedInLive(i); isSignedInLive = isSignedInLive && ProfileManager.IsSignedInLive(i);
#else
isSignedInLive = true;
#endif
} }
} }
@@ -1763,9 +1744,7 @@ void CGameNetworkManager::GameInviteReceived( int userIndex, const INVITE_INFO *
if(index==userIndex || pMinecraft->localplayers[index]!=NULL ) if(index==userIndex || pMinecraft->localplayers[index]!=NULL )
{ {
++joiningUsers; ++joiningUsers;
#ifndef _DISABLE_XBLIVE if( !Live_AllowedToPlayMultiplayer(index) ) noPrivileges = true;
if( !ProfileManager.AllowedToPlayMultiplayer(index) ) noPrivileges = true;
#endif
localUsersMask |= GetLocalPlayerMask( index ); localUsersMask |= GetLocalPlayerMask( index );
} }
} }
@@ -1779,7 +1758,7 @@ void CGameNetworkManager::GameInviteReceived( int userIndex, const INVITE_INFO *
#if defined(__PS3__) || defined(__PSVITA__) #if defined(__PS3__) || defined(__PSVITA__)
ProfileManager.GetChatAndContentRestrictions(userIndex,false,&noUGC,&bContentRestricted,NULL); ProfileManager.GetChatAndContentRestrictions(userIndex,false,&noUGC,&bContentRestricted,NULL);
#else #else
ProfileManager.AllowedPlayerCreatedContent(ProfileManager.GetPrimaryPad(),false,&pccAllowed,&pccFriendsAllowed); Live_AllowedPlayerCreatedContent(ProfileManager.GetPrimaryPad(),false,&pccAllowed,&pccFriendsAllowed);
if(!pccAllowed && !pccFriendsAllowed) noUGC = true; if(!pccAllowed && !pccFriendsAllowed) noUGC = true;
#endif #endif
@@ -1920,8 +1899,7 @@ void CGameNetworkManager::HandleInviteWhenInMenus( int userIndex, const INVITE_I
if(!app.IsLocalMultiplayerAvailable()) if(!app.IsLocalMultiplayerAvailable())
#endif #endif
{ {
#ifndef _DISABLE_XBLIVE bool noPrivileges=!Live_AllowedToPlayMultiplayer(userIndex);
bool noPrivileges=!ProfileManager.AllowedToPlayMultiplayer(userIndex);
if(noPrivileges) if(noPrivileges)
{ {
@@ -1931,7 +1909,6 @@ void CGameNetworkManager::HandleInviteWhenInMenus( int userIndex, const INVITE_I
} }
else else
{ {
#endif
ProfileManager.SetLockedProfile(userIndex); ProfileManager.SetLockedProfile(userIndex);
ProfileManager.SetPrimaryPad(userIndex); ProfileManager.SetPrimaryPad(userIndex);
@@ -1954,9 +1931,7 @@ void CGameNetworkManager::HandleInviteWhenInMenus( int userIndex, const INVITE_I
{ {
app.DebugPrintf( "Failed joining game from invite\n" ); app.DebugPrintf( "Failed joining game from invite\n" );
} }
#ifndef _DISABLE_XBLIVE
} }
#endif
} }
else else
{ {
@@ -1,4 +1,4 @@
#include "stdafx.h" #include "stdafx.h"
#include "NetworkSocketLayer.h" #include "NetworkSocketLayer.h"
#include "..\..\Common\Network\PlatformNetworkManager.h" #include "..\..\Common\Network\PlatformNetworkManager.h"
@@ -39,7 +39,7 @@ BYTE NetworkSocketLayer::s_nextSmallId = 1;
CRITICAL_SECTION NetworkSocketLayer::s_sendLock; CRITICAL_SECTION NetworkSocketLayer::s_sendLock;
CRITICAL_SECTION NetworkSocketLayer::s_connectionsLock; CRITICAL_SECTION NetworkSocketLayer::s_connectionsLock;
RemoteConnection NetworkSocketLayer::s_connections[NETWORK_LAN_MAX_CLIENTS + 1]; std::vector<RemoteConnection> NetworkSocketLayer::s_connections;
C4JThread* NetworkSocketLayer::s_advertiseThread = NULL; C4JThread* NetworkSocketLayer::s_advertiseThread = NULL;
volatile bool NetworkSocketLayer::s_advertising = false; volatile bool NetworkSocketLayer::s_advertising = false;
@@ -55,15 +55,9 @@ std::vector<LANSession> NetworkSocketLayer::s_discoveredSessions;
CRITICAL_SECTION NetworkSocketLayer::s_disconnectLock; CRITICAL_SECTION NetworkSocketLayer::s_disconnectLock;
std::vector<BYTE> NetworkSocketLayer::s_disconnectedSmallIds; std::vector<BYTE> NetworkSocketLayer::s_disconnectedSmallIds;
CRITICAL_SECTION NetworkSocketLayer::s_pendingJoinLock;
std::vector<BYTE> NetworkSocketLayer::s_pendingJoinSmallIds;
CRITICAL_SECTION NetworkSocketLayer::s_freeSmallIdLock; CRITICAL_SECTION NetworkSocketLayer::s_freeSmallIdLock;
std::vector<BYTE> NetworkSocketLayer::s_freeSmallIds; std::vector<BYTE> NetworkSocketLayer::s_freeSmallIds;
CRITICAL_SECTION NetworkSocketLayer::s_earlyDataLock;
std::vector<BYTE> NetworkSocketLayer::s_earlyDataBuffers[NETWORK_LAN_MAX_CLIENTS + 1];
// only goes true on a successful Initialize(), and a failed one gets retried // only goes true on a successful Initialize(), and a failed one gets retried
static bool s_locksCreated = false; static bool s_locksCreated = false;
#if defined _WINDOWS64 #if defined _WINDOWS64
@@ -89,22 +83,30 @@ bool NetworkSocketLayer::Initialize()
InitializeCriticalSection(&s_advertiseLock); InitializeCriticalSection(&s_advertiseLock);
InitializeCriticalSection(&s_discoveryLock); InitializeCriticalSection(&s_discoveryLock);
InitializeCriticalSection(&s_disconnectLock); InitializeCriticalSection(&s_disconnectLock);
InitializeCriticalSection(&s_pendingJoinLock);
InitializeCriticalSection(&s_freeSmallIdLock); InitializeCriticalSection(&s_freeSmallIdLock);
InitializeCriticalSection(&s_earlyDataLock);
for (int i = 0; i < NETWORK_LAN_MAX_CLIENTS + 1; i++)
{
s_connections[i].tcpSocket = INVALID_SOCKET;
s_connections[i].smallId = 0;
s_connections[i].recvThread = NULL;
s_connections[i].active = false;
InitializeCriticalSection(&s_connections[i].sendLock);
}
s_locksCreated = true; s_locksCreated = true;
} }
#if defined _WINDOWS64 || defined _XBOX #if defined _WINDOWS64 || defined _XBOX
#if defined _XBOX
// XNet has to be up before Winsock, and it has to be up insecure.
static bool s_xnetStarted = false;
if (!s_xnetStarted)
{
XNetStartupParams xnsp;
memset(&xnsp, 0, sizeof(xnsp));
xnsp.cfgSizeOfStruct = sizeof(XNetStartupParams);
xnsp.cfgFlags = XNET_STARTUP_BYPASS_SECURITY;
int xnetResult = XNetStartup(&xnsp);
if (xnetResult != 0)
{
app.DebugPrintf("XNetStartup failed: %d\n", xnetResult);
return false;
}
s_xnetStarted = true;
}
#endif
WSADATA wsaData; WSADATA wsaData;
int result = WSAStartup(MAKEWORD(2, 2), &wsaData); int result = WSAStartup(MAKEWORD(2, 2), &wsaData);
if (result != 0) if (result != 0)
@@ -143,9 +145,7 @@ bool NetworkSocketLayer::Initialize()
s_initialized = true; s_initialized = true;
#ifndef _DEDICATED_SERVER
StartDiscovery(); StartDiscovery();
#endif
return true; return true;
} }
@@ -186,7 +186,7 @@ void NetworkSocketLayer::Shutdown()
EnterCriticalSection(&s_connectionsLock); EnterCriticalSection(&s_connectionsLock);
for (int i = 0; i < NETWORK_LAN_MAX_CLIENTS + 1; i++) for (size_t i = 0; i < s_connections.size(); i++)
{ {
s_connections[i].active = false; s_connections[i].active = false;
#if defined _WINDOWS64 || defined _XBOX #if defined _WINDOWS64 || defined _XBOX
@@ -196,16 +196,9 @@ void NetworkSocketLayer::Shutdown()
#endif #endif
{ {
closesocket(s_connections[i].tcpSocket); closesocket(s_connections[i].tcpSocket);
s_connections[i].tcpSocket = INVALID_SOCKET;
} }
if (s_connections[i].recvThread != NULL)
{
s_connections[i].recvThread->WaitForCompletion(2000);
delete s_connections[i].recvThread;
s_connections[i].recvThread = NULL;
}
DeleteCriticalSection(&s_connections[i].sendLock);
} }
s_connections.clear();
LeaveCriticalSection(&s_connectionsLock); LeaveCriticalSection(&s_connectionsLock);
if (s_acceptThread != NULL) if (s_acceptThread != NULL)
@@ -230,8 +223,6 @@ void NetworkSocketLayer::Shutdown()
DeleteCriticalSection(&s_discoveryLock); DeleteCriticalSection(&s_discoveryLock);
DeleteCriticalSection(&s_disconnectLock); DeleteCriticalSection(&s_disconnectLock);
s_disconnectedSmallIds.clear(); s_disconnectedSmallIds.clear();
DeleteCriticalSection(&s_pendingJoinLock);
s_pendingJoinSmallIds.clear();
DeleteCriticalSection(&s_freeSmallIdLock); DeleteCriticalSection(&s_freeSmallIdLock);
s_freeSmallIds.clear(); s_freeSmallIds.clear();
s_locksCreated = false; s_locksCreated = false;
@@ -247,14 +238,6 @@ bool NetworkSocketLayer::HostGame(int port)
s_isHost = true; s_isHost = true;
s_localSmallId = 0; s_localSmallId = 0;
s_hostSmallId = 0; s_hostSmallId = 0;
s_connected = false;
s_active = false;
if (s_hostConnectionSocket != INVALID_SOCKET)
{
closesocket(s_hostConnectionSocket);
s_hostConnectionSocket = INVALID_SOCKET;
}
s_nextSmallId = 1; s_nextSmallId = 1;
s_hostGamePort = port; s_hostGamePort = port;
@@ -522,15 +505,17 @@ bool NetworkSocketLayer::JoinGame(const char *ip, int port)
s_hostConnectionSocket = INVALID_SOCKET; s_hostConnectionSocket = INVALID_SOCKET;
} }
int iResult = 0; int iResult;
struct sockaddr_in addr = {}; struct sockaddr_in addr = {};
addr.sin_family = AF_INET; addr.sin_family = AF_INET;
addr.sin_port = htons((WORD)port); addr.sin_port = htons((WORD)port);
unsigned long ipAddr = inet_addr(ip); // The discovery broadcast always hands an ip and a LAN has no reason to run a DNS server, so only fall back to XNetDnsLookup for actual host names.
if (ipAddr != INADDR_NONE) unsigned long literalAddr = inet_addr(ip);
if (literalAddr != INADDR_NONE)
{ {
addr.sin_addr.s_addr = ipAddr; addr.sin_addr.s_addr = literalAddr;
} }
else else
{ {
@@ -549,7 +534,7 @@ bool NetworkSocketLayer::JoinGame(const char *ip, int port)
if (pDns->iStatus != 0 || pDns->cina == 0) if (pDns->iStatus != 0 || pDns->cina == 0)
{ {
app.DebugPrintf("pDns->iStatus failed for %s - %d\n", ip, iResult); app.DebugPrintf("pDns->iStatus failed for %s - %d\n", ip, pDns->iStatus);
XNetDnsRelease(pDns); XNetDnsRelease(pDns);
return false; return false;
} }
@@ -807,9 +792,6 @@ bool NetworkSocketLayer::JoinGame(const char *ip, int port)
} }
s_localSmallId = assignedSmallId; s_localSmallId = assignedSmallId;
DWORD noTimeout = 0;
setsockopt(s_hostConnectionSocket, SOL_SOCKET, SO_RCVTIMEO, (const char *)&noTimeout, sizeof(noTimeout));
app.DebugPrintf("LAN: Connected to %s:%d, assigned smallId=%d\n", ip, port, s_localSmallId); app.DebugPrintf("LAN: Connected to %s:%d, assigned smallId=%d\n", ip, port, s_localSmallId);
s_active = true; s_active = true;
@@ -825,9 +807,9 @@ bool NetworkSocketLayer::JoinGame(const char *ip, int port)
bool NetworkSocketLayer::SendOnSocket(SOCKET sock, const void *data, int dataSize) bool NetworkSocketLayer::SendOnSocket(SOCKET sock, const void *data, int dataSize)
{ {
#if defined _WINDOWS64 || defined _XBOX #if defined _WINDOWS64 || defined _XBOX
if (sock == INVALID_SOCKET || dataSize <= 0 || dataSize > NETWORK_LAN_MAX_PACKET_SIZE) return false; if (sock == INVALID_SOCKET || dataSize <= 0) return false;
#elif defined __PS3__ || defined __ORBIS__ || defined __PSVITA__ #elif defined __PS3__ || defined __ORBIS__ || defined __PSVITA__
if (sock < 0 || dataSize <= 0 || dataSize > NETWORK_LAN_MAX_PACKET_SIZE) return false; if (sock < 0 || dataSize <= 0) return false;
#endif #endif
EnterCriticalSection(&s_sendLock); EnterCriticalSection(&s_sendLock);
@@ -848,7 +830,10 @@ bool NetworkSocketLayer::SendOnSocket(SOCKET sock, const void *data, int dataSiz
#elif defined __PS3__ || defined __ORBIS__ || defined __PSVITA__ #elif defined __PS3__ || defined __ORBIS__ || defined __PSVITA__
if (sent < 0 || sent == 0) if (sent < 0 || sent == 0)
#endif #endif
{
LeaveCriticalSection(&s_sendLock);
return false; return false;
}
totalSent += sent; totalSent += sent;
} }
@@ -862,10 +847,14 @@ bool NetworkSocketLayer::SendOnSocket(SOCKET sock, const void *data, int dataSiz
#elif defined __PS3__ || defined __ORBIS__ || defined __PSVITA__ #elif defined __PS3__ || defined __ORBIS__ || defined __PSVITA__
if (sent < 0 || sent == 0) if (sent < 0 || sent == 0)
#endif #endif
{
LeaveCriticalSection(&s_sendLock);
return false; return false;
}
totalSent += sent; totalSent += sent;
} }
LeaveCriticalSection(&s_sendLock);
return true; return true;
} }
@@ -875,38 +864,31 @@ bool NetworkSocketLayer::SendToSmallId(BYTE targetSmallId, const void *data, int
if (s_isHost) if (s_isHost)
{ {
EnterCriticalSection(&s_connectionsLock); SOCKET sock = GetSocketForSmallId(targetSmallId);
if (targetSmallId >= NETWORK_LAN_MAX_CLIENTS + 1 || !s_connections[targetSmallId].active) #if defined _WINDOWS64 || defined _XBOX
{ if (sock == INVALID_SOCKET) return false;
LeaveCriticalSection(&s_connectionsLock); #elif defined __PS3__ || defined __ORBIS__ || defined __PSVITA__
return false; if (sock < 0) return false;
} #endif
SOCKET sock = s_connections[targetSmallId].tcpSocket; return SendOnSocket(sock, data, dataSize);
CRITICAL_SECTION *pLock = &s_connections[targetSmallId].sendLock;
LeaveCriticalSection(&s_connectionsLock);
EnterCriticalSection(pLock);
bool result = SendOnSocket(sock, data, dataSize);
LeaveCriticalSection(pLock);
return result;
} }
else else
{ {
EnterCriticalSection(&s_sendLock); return SendOnSocket(s_hostConnectionSocket, data, dataSize);
bool result = SendOnSocket(s_hostConnectionSocket, data, dataSize);
LeaveCriticalSection(&s_sendLock);
return result;
} }
} }
SOCKET NetworkSocketLayer::GetSocketForSmallId(BYTE smallId) SOCKET NetworkSocketLayer::GetSocketForSmallId(BYTE smallId)
{ {
EnterCriticalSection(&s_connectionsLock); EnterCriticalSection(&s_connectionsLock);
if (smallId < NETWORK_LAN_MAX_CLIENTS + 1 && s_connections[smallId].active) for (size_t i = 0; i < s_connections.size(); i++)
{ {
SOCKET sock = s_connections[smallId].tcpSocket; if (s_connections[i].smallId == smallId && s_connections[i].active)
LeaveCriticalSection(&s_connectionsLock); {
return sock; SOCKET sock = s_connections[i].tcpSocket;
LeaveCriticalSection(&s_connectionsLock);
return sock;
}
} }
LeaveCriticalSection(&s_connectionsLock); LeaveCriticalSection(&s_connectionsLock);
#if defined _WINDOWS64 || defined _XBOX #if defined _WINDOWS64 || defined _XBOX
@@ -935,13 +917,9 @@ void NetworkSocketLayer::HandleDataReceived(BYTE fromSmallId, BYTE toSmallId, un
if (pPlayerFrom == NULL || pPlayerTo == NULL) if (pPlayerFrom == NULL || pPlayerTo == NULL)
{ {
if (s_isHost && fromSmallId > 0 && fromSmallId < NETWORK_LAN_MAX_CLIENTS + 1) // dropping here is silent and looks identical to the peer never sending
{ app.DebugPrintf("LAN: DROPPED %u bytes - from smallId=%d(%s) to smallId=%d(%s)\n",
EnterCriticalSection(&s_earlyDataLock); dataSize, fromSmallId, pPlayerFrom ? "ok" : "NULL", toSmallId, pPlayerTo ? "ok" : "NULL");
s_earlyDataBuffers[fromSmallId].insert(
s_earlyDataBuffers[fromSmallId].end(), data, data + dataSize);
LeaveCriticalSection(&s_earlyDataLock);
}
return; return;
} }
@@ -950,13 +928,6 @@ void NetworkSocketLayer::HandleDataReceived(BYTE fromSmallId, BYTE toSmallId, un
::Socket *pSocket = pPlayerFrom->GetSocket(); ::Socket *pSocket = pPlayerFrom->GetSocket();
if (pSocket != NULL) if (pSocket != NULL)
pSocket->pushDataToQueue(data, dataSize, false); pSocket->pushDataToQueue(data, dataSize, false);
else
{
EnterCriticalSection(&s_earlyDataLock);
s_earlyDataBuffers[fromSmallId].insert(
s_earlyDataBuffers[fromSmallId].end(), data, data + dataSize);
LeaveCriticalSection(&s_earlyDataLock);
}
} }
else else
{ {
@@ -966,26 +937,6 @@ void NetworkSocketLayer::HandleDataReceived(BYTE fromSmallId, BYTE toSmallId, un
} }
} }
void NetworkSocketLayer::FlushPendingData()
{
EnterCriticalSection(&s_earlyDataLock);
for (int i = 1; i < NETWORK_LAN_MAX_CLIENTS + 1; i++)
{
if (s_earlyDataBuffers[i].empty()) continue;
INetworkPlayer *pPlayer = g_NetworkManager.GetPlayerBySmallId((BYTE)i);
if (pPlayer == NULL) continue;
::Socket *pSocket = pPlayer->GetSocket();
if (pSocket == NULL) continue;
pSocket->pushDataToQueue(s_earlyDataBuffers[i].data(),
(DWORD)s_earlyDataBuffers[i].size(), false);
s_earlyDataBuffers[i].clear();
}
LeaveCriticalSection(&s_earlyDataLock);
}
int NetworkSocketLayer::AcceptThreadProc(LPVOID param) int NetworkSocketLayer::AcceptThreadProc(LPVOID param)
{ {
while (s_active) while (s_active)
@@ -1015,7 +966,7 @@ int NetworkSocketLayer::AcceptThreadProc(LPVOID param)
setsockopt(clientSocket, IPPROTO_TCP, TCP_NODELAY, (const char *)&noDelay, sizeof(noDelay)); setsockopt(clientSocket, IPPROTO_TCP, TCP_NODELAY, (const char *)&noDelay, sizeof(noDelay));
extern QNET_STATE _iQNetStubState; extern QNET_STATE _iQNetStubState;
if (_iQNetStubState != QNET_STATE_GAME_PLAY && _iQNetStubState != QNET_STATE_SESSION_STARTING) if (_iQNetStubState != QNET_STATE_GAME_PLAY)
{ {
app.DebugPrintf("Win64 LAN: Rejecting connection, game not ready\n"); app.DebugPrintf("Win64 LAN: Rejecting connection, game not ready\n");
closesocket(clientSocket); closesocket(clientSocket);
@@ -1051,19 +1002,15 @@ int NetworkSocketLayer::AcceptThreadProc(LPVOID param)
continue; continue;
} }
RemoteConnection &conn = s_connections[assignedSmallId]; RemoteConnection conn;
EnterCriticalSection(&s_connectionsLock);
if (conn.recvThread != NULL)
{
conn.recvThread->WaitForCompletion(2000);
delete conn.recvThread;
conn.recvThread = NULL;
}
conn.tcpSocket = clientSocket; conn.tcpSocket = clientSocket;
conn.smallId = assignedSmallId; conn.smallId = assignedSmallId;
conn.active = true; conn.active = true;
conn.recvThread = NULL;
EnterCriticalSection(&s_connectionsLock);
s_connections.push_back(conn);
int connIdx = (int)s_connections.size() - 1;
LeaveCriticalSection(&s_connectionsLock); LeaveCriticalSection(&s_connectionsLock);
app.DebugPrintf("Win64 LAN: Client connected, assigned smallId=%d\n", assignedSmallId); app.DebugPrintf("Win64 LAN: Client connected, assigned smallId=%d\n", assignedSmallId);
@@ -1073,17 +1020,17 @@ int NetworkSocketLayer::AcceptThreadProc(LPVOID param)
extern void Win64_SetupRemoteQNetPlayer(IQNetPlayer *player, BYTE smallId, bool isHost, bool isLocal); extern void Win64_SetupRemoteQNetPlayer(IQNetPlayer *player, BYTE smallId, bool isHost, bool isLocal);
Win64_SetupRemoteQNetPlayer(qnetPlayer, assignedSmallId, false, false); Win64_SetupRemoteQNetPlayer(qnetPlayer, assignedSmallId, false, false);
EnterCriticalSection(&s_pendingJoinLock); extern CPlatformNetworkManagerStub *g_pPlatformNetworkManager;
s_pendingJoinSmallIds.push_back(assignedSmallId); g_pPlatformNetworkManager->NotifyPlayerJoined(qnetPlayer);
LeaveCriticalSection(&s_pendingJoinLock);
DWORD *threadParam = new DWORD; DWORD *threadParam = new DWORD;
*threadParam = assignedSmallId; *threadParam = connIdx;
C4JThread* hThread = new C4JThread(RecvThreadProc, threadParam, "RecvThreadProc"); C4JThread* hThread = new C4JThread(RecvThreadProc, threadParam, "RecvThreadProc");
hThread->Run(); hThread->Run();
EnterCriticalSection(&s_connectionsLock); EnterCriticalSection(&s_connectionsLock);
s_connections[assignedSmallId].recvThread = hThread; if (connIdx < (int)s_connections.size())
s_connections[connIdx].recvThread = hThread;
LeaveCriticalSection(&s_connectionsLock); LeaveCriticalSection(&s_connectionsLock);
} }
return 0; return 0;
@@ -1091,16 +1038,17 @@ int NetworkSocketLayer::AcceptThreadProc(LPVOID param)
int NetworkSocketLayer::RecvThreadProc(LPVOID param) int NetworkSocketLayer::RecvThreadProc(LPVOID param)
{ {
BYTE clientSmallId = (BYTE)*(DWORD *)param; DWORD connIdx = *(DWORD *)param;
delete (DWORD *)param; delete (DWORD *)param;
EnterCriticalSection(&s_connectionsLock); EnterCriticalSection(&s_connectionsLock);
if (clientSmallId >= NETWORK_LAN_MAX_CLIENTS + 1 || !s_connections[clientSmallId].active) if (connIdx >= (DWORD)s_connections.size())
{ {
LeaveCriticalSection(&s_connectionsLock); LeaveCriticalSection(&s_connectionsLock);
return 0; return 0;
} }
SOCKET sock = s_connections[clientSmallId].tcpSocket; SOCKET sock = s_connections[connIdx].tcpSocket;
BYTE clientSmallId = s_connections[connIdx].smallId;
LeaveCriticalSection(&s_connectionsLock); LeaveCriticalSection(&s_connectionsLock);
std::vector<BYTE> recvBuf; std::vector<BYTE> recvBuf;
@@ -1121,7 +1069,7 @@ int NetworkSocketLayer::RecvThreadProc(LPVOID param)
((uint32_t)header[2] << 8) | ((uint32_t)header[2] << 8) |
((uint32_t)header[3]); ((uint32_t)header[3]);
if (packetSize <= 0 || (unsigned int)packetSize > NETWORK_LAN_MAX_PACKET_SIZE) if (packetSize <= 0 || packetSize > NETWORK_LAN_MAX_PACKET_SIZE)
{ {
app.DebugPrintf("LAN: Invalid packet size %d from client smallId=%d (max=%d)\n", app.DebugPrintf("LAN: Invalid packet size %d from client smallId=%d (max=%d)\n",
packetSize, packetSize,
@@ -1146,11 +1094,18 @@ int NetworkSocketLayer::RecvThreadProc(LPVOID param)
} }
EnterCriticalSection(&s_connectionsLock); EnterCriticalSection(&s_connectionsLock);
s_connections[clientSmallId].active = false; for (size_t i = 0; i < s_connections.size(); i++)
if (s_connections[clientSmallId].tcpSocket != INVALID_SOCKET)
{ {
closesocket(s_connections[clientSmallId].tcpSocket); if (s_connections[i].smallId == clientSmallId)
s_connections[clientSmallId].tcpSocket = INVALID_SOCKET; {
s_connections[i].active = false;
if (s_connections[i].tcpSocket != INVALID_SOCKET)
{
closesocket(s_connections[i].tcpSocket);
s_connections[i].tcpSocket = INVALID_SOCKET;
}
break;
}
} }
LeaveCriticalSection(&s_connectionsLock); LeaveCriticalSection(&s_connectionsLock);
@@ -1182,41 +1137,20 @@ void NetworkSocketLayer::PushFreeSmallId(BYTE smallId)
LeaveCriticalSection(&s_freeSmallIdLock); LeaveCriticalSection(&s_freeSmallIdLock);
} }
bool NetworkSocketLayer::PopPendingJoinSmallId(BYTE *outSmallId)
{
bool found = false;
EnterCriticalSection(&s_pendingJoinLock);
if (!s_pendingJoinSmallIds.empty())
{
*outSmallId = s_pendingJoinSmallIds.back();
s_pendingJoinSmallIds.pop_back();
found = true;
}
LeaveCriticalSection(&s_pendingJoinLock);
return found;
}
bool NetworkSocketLayer::IsSmallIdConnected(BYTE smallId)
{
if (smallId >= NETWORK_LAN_MAX_CLIENTS + 1) return false;
return s_connections[smallId].active;
}
void NetworkSocketLayer::CloseConnectionBySmallId(BYTE smallId) void NetworkSocketLayer::CloseConnectionBySmallId(BYTE smallId)
{ {
EnterCriticalSection(&s_connectionsLock); EnterCriticalSection(&s_connectionsLock);
if (smallId < NETWORK_LAN_MAX_CLIENTS + 1 && s_connections[smallId].active && s_connections[smallId].tcpSocket != INVALID_SOCKET) for (size_t i = 0; i < s_connections.size(); i++)
{ {
closesocket(s_connections[smallId].tcpSocket); if (s_connections[i].smallId == smallId && s_connections[i].active && s_connections[i].tcpSocket != INVALID_SOCKET)
s_connections[smallId].tcpSocket = INVALID_SOCKET; {
app.DebugPrintf("Win64 LAN: Force-closed TCP connection for smallId=%d\n", smallId); closesocket(s_connections[i].tcpSocket);
s_connections[i].tcpSocket = INVALID_SOCKET;
app.DebugPrintf("Win64 LAN: Force-closed TCP connection for smallId=%d\n", smallId);
break;
}
} }
LeaveCriticalSection(&s_connectionsLock); LeaveCriticalSection(&s_connectionsLock);
EnterCriticalSection(&s_earlyDataLock);
if (smallId < NETWORK_LAN_MAX_CLIENTS + 1)
s_earlyDataBuffers[smallId].clear();
LeaveCriticalSection(&s_earlyDataLock);
} }
int NetworkSocketLayer::ClientRecvThreadProc(LPVOID param) int NetworkSocketLayer::ClientRecvThreadProc(LPVOID param)
@@ -1237,9 +1171,9 @@ int NetworkSocketLayer::ClientRecvThreadProc(LPVOID param)
break; break;
} }
int packetSize = ((uint32_t)header[0] << 24) | ((uint32_t)header[1] << 16) | ((uint32_t)header[2] << 8) | (uint32_t)header[3]; int packetSize = (header[0] << 24) | (header[1] << 16) | (header[2] << 8) | header[3];
if (packetSize <= 0 || (unsigned int)packetSize > NETWORK_LAN_MAX_PACKET_SIZE) if (packetSize <= 0 || packetSize > NETWORK_LAN_MAX_PACKET_SIZE)
{ {
app.DebugPrintf("LAN: Invalid packet size %d from host\n", packetSize); app.DebugPrintf("LAN: Invalid packet size %d from host\n", packetSize);
break; break;
@@ -1248,6 +1182,7 @@ int NetworkSocketLayer::ClientRecvThreadProc(LPVOID param)
if ((int)recvBuf.size() < packetSize) if ((int)recvBuf.size() < packetSize)
{ {
recvBuf.resize(packetSize); recvBuf.resize(packetSize);
app.DebugPrintf("LAN: Resized client recv buffer to %d bytes\n", packetSize);
} }
if (!RecvExact(s_hostConnectionSocket, &recvBuf[0], packetSize)) if (!RecvExact(s_hostConnectionSocket, &recvBuf[0], packetSize))
@@ -1288,11 +1223,6 @@ bool NetworkSocketLayer::StartAdvertising(int gamePort, const wchar_t *hostName,
s_advertiseData.texturePackParentId = texPackId; s_advertiseData.texturePackParentId = texPackId;
s_advertiseData.subTexturePackId = subTexId; s_advertiseData.subTexturePackId = subTexId;
s_advertiseData.isJoinable = 0; s_advertiseData.isJoinable = 0;
#ifdef _DEDICATED_SERVER
s_advertiseData.isDedicatedServer = 1;
#else
s_advertiseData.isDedicatedServer = 0;
#endif
s_hostGamePort = gamePort; s_hostGamePort = gamePort;
LeaveCriticalSection(&s_advertiseLock); LeaveCriticalSection(&s_advertiseLock);
@@ -1325,7 +1255,7 @@ void NetworkSocketLayer::StopAdvertising()
{ {
s_advertising = false; s_advertising = false;
#if defined _WINDOWS64 #if defined _WINDOWS64 || defined _XBOX
if (s_advertiseSock != INVALID_SOCKET) if (s_advertiseSock != INVALID_SOCKET)
{ {
closesocket(s_advertiseSock); closesocket(s_advertiseSock);
@@ -1359,10 +1289,9 @@ void NetworkSocketLayer::UpdateAdvertisePlayerNames(BYTE count, const char playe
EnterCriticalSection(&s_advertiseLock); EnterCriticalSection(&s_advertiseLock);
memset(s_advertiseData.playerNames, 0, sizeof(s_advertiseData.playerNames)); memset(s_advertiseData.playerNames, 0, sizeof(s_advertiseData.playerNames));
s_advertiseData.playerCount = count; s_advertiseData.playerCount = count;
for (int i = 0; i < count && i < NETWORK_LAN_BROADCAST_PLAYERS; i++) for (int i = 0; i < count && i < 8; i++)
{ {
memcpy(s_advertiseData.playerNames[i], playerNames[i], memcpy(s_advertiseData.playerNames[i], playerNames[i], XUSER_NAME_SIZE);
NETWORK_LAN_PLAYER_NAME_SIZE < (int)XUSER_NAME_SIZE ? NETWORK_LAN_PLAYER_NAME_SIZE : (int)XUSER_NAME_SIZE);
} }
LeaveCriticalSection(&s_advertiseLock); LeaveCriticalSection(&s_advertiseLock);
} }
@@ -1585,8 +1514,8 @@ std::vector<LANSession> NetworkSocketLayer::GetDiscoveredSessions()
int NetworkSocketLayer::DiscoveryThreadProc(LPVOID param) int NetworkSocketLayer::DiscoveryThreadProc(LPVOID param)
{ {
app.DebugPrintf("Discovery thread started\n");
char recvBuf[1024]; char recvBuf[1024];
const size_t MAX_DISCOVERED_SESSIONS = 64;
while (s_discovering) while (s_discovering)
{ {
@@ -1609,7 +1538,7 @@ int NetworkSocketLayer::DiscoveryThreadProc(LPVOID param)
(struct sockaddr *)&senderAddr, &senderLen); (struct sockaddr *)&senderAddr, &senderLen);
#endif #endif
#ifdef _WINDOWS64 #if defined _WINDOWS64 || defined _XBOX
if (recvLen == SOCKET_ERROR) if (recvLen == SOCKET_ERROR)
{ {
continue; continue;
@@ -1635,11 +1564,6 @@ int NetworkSocketLayer::DiscoveryThreadProc(LPVOID param)
if (broadcast->magic != NETWORK_LAN_BROADCAST_MAGIC) if (broadcast->magic != NETWORK_LAN_BROADCAST_MAGIC)
continue; continue;
broadcast->hostName[31] = L'\0';
for (int pn = 0; pn < NETWORK_LAN_BROADCAST_PLAYERS; pn++)
broadcast->playerNames[pn][XUSER_NAME_SIZE - 1] = '\0';
char senderIP[64]; char senderIP[64];
#if defined _XBOX #if defined _XBOX
unsigned char *ipBytes = (unsigned char *)&senderAddr.sin_addr; unsigned char *ipBytes = (unsigned char *)&senderAddr.sin_addr;
@@ -1673,7 +1597,6 @@ int NetworkSocketLayer::DiscoveryThreadProc(LPVOID param)
s_discoveredSessions[i].texturePackParentId = broadcast->texturePackParentId; s_discoveredSessions[i].texturePackParentId = broadcast->texturePackParentId;
s_discoveredSessions[i].subTexturePackId = broadcast->subTexturePackId; s_discoveredSessions[i].subTexturePackId = broadcast->subTexturePackId;
s_discoveredSessions[i].isJoinable = (broadcast->isJoinable != 0); s_discoveredSessions[i].isJoinable = (broadcast->isJoinable != 0);
s_discoveredSessions[i].isDedicatedServer = (broadcast->isDedicatedServer != 0);
s_discoveredSessions[i].lastSeenTick = now; s_discoveredSessions[i].lastSeenTick = now;
memcpy(s_discoveredSessions[i].playerNames, broadcast->playerNames, sizeof(broadcast->playerNames)); memcpy(s_discoveredSessions[i].playerNames, broadcast->playerNames, sizeof(broadcast->playerNames));
found = true; found = true;
@@ -1683,12 +1606,6 @@ int NetworkSocketLayer::DiscoveryThreadProc(LPVOID param)
if (!found) if (!found)
{ {
if (s_discoveredSessions.size() >= MAX_DISCOVERED_SESSIONS)
{
LeaveCriticalSection(&s_discoveryLock);
continue;
}
LANSession session; LANSession session;
memset(&session, 0, sizeof(session)); memset(&session, 0, sizeof(session));
strncpy(session.hostIP, senderIP, sizeof(session.hostIP) - 1); strncpy(session.hostIP, senderIP, sizeof(session.hostIP) - 1);
@@ -1707,7 +1624,6 @@ int NetworkSocketLayer::DiscoveryThreadProc(LPVOID param)
session.texturePackParentId = broadcast->texturePackParentId; session.texturePackParentId = broadcast->texturePackParentId;
session.subTexturePackId = broadcast->subTexturePackId; session.subTexturePackId = broadcast->subTexturePackId;
session.isJoinable = (broadcast->isJoinable != 0); session.isJoinable = (broadcast->isJoinable != 0);
session.isDedicatedServer = (broadcast->isDedicatedServer != 0);
session.lastSeenTick = now; session.lastSeenTick = now;
memcpy(session.playerNames, broadcast->playerNames, sizeof(broadcast->playerNames)); memcpy(session.playerNames, broadcast->playerNames, sizeof(broadcast->playerNames));
s_discoveredSessions.push_back(session); s_discoveredSessions.push_back(session);
@@ -35,10 +35,9 @@
#define NETWORK_LAN_DEFAULT_PORT 25565 #define NETWORK_LAN_DEFAULT_PORT 25565
#define NETWORK_LAN_MAX_CLIENTS 7 #define NETWORK_LAN_MAX_CLIENTS 7
#define NETWORK_LAN_RECV_BUFFER_SIZE 65536 #define NETWORK_LAN_RECV_BUFFER_SIZE 65536
#define NETWORK_LAN_MAX_PACKET_SIZE (3 * 1024 * 1024) #define NETWORK_LAN_MAX_PACKET_SIZE (4 * 1024 * 1024)
#define NETWORK_LAN_DISCOVERY_PORT 25566 #define NETWORK_LAN_DISCOVERY_PORT 25566
#define NETWORK_LAN_BROADCAST_MAGIC 0x4D434C4E #define NETWORK_LAN_BROADCAST_MAGIC 0x4D434C4E
#define NETWORK_LAN_BROADCAST_PLAYERS 8
#ifdef __PS3__ #ifdef __PS3__
typedef int SOCKET; typedef int SOCKET;
@@ -101,8 +100,6 @@ typedef SceNetSocklen_t socklen_t;
class Socket; class Socket;
#define NETWORK_LAN_PLAYER_NAME_SIZE 32
#pragma pack(push, 1) #pragma pack(push, 1)
struct LANBroadcast struct LANBroadcast
{ {
@@ -116,8 +113,7 @@ struct LANBroadcast
DWORD texturePackParentId; DWORD texturePackParentId;
BYTE subTexturePackId; BYTE subTexturePackId;
BYTE isJoinable; BYTE isJoinable;
BYTE isDedicatedServer; char playerNames[8][XUSER_NAME_SIZE];
char playerNames[NETWORK_LAN_BROADCAST_PLAYERS][NETWORK_LAN_PLAYER_NAME_SIZE];
}; };
#pragma pack(pop) #pragma pack(pop)
@@ -133,9 +129,8 @@ struct LANSession
unsigned int texturePackParentId; unsigned int texturePackParentId;
unsigned char subTexturePackId; unsigned char subTexturePackId;
bool isJoinable; bool isJoinable;
bool isDedicatedServer;
DWORD lastSeenTick; DWORD lastSeenTick;
char playerNames[NETWORK_LAN_BROADCAST_PLAYERS][NETWORK_LAN_PLAYER_NAME_SIZE]; char playerNames[8][XUSER_NAME_SIZE];
}; };
struct RemoteConnection struct RemoteConnection
@@ -144,7 +139,6 @@ struct RemoteConnection
BYTE smallId; BYTE smallId;
C4JThread* recvThread; C4JThread* recvThread;
volatile bool active; volatile bool active;
CRITICAL_SECTION sendLock;
}; };
class NetworkSocketLayer class NetworkSocketLayer
@@ -169,16 +163,11 @@ public:
static SOCKET GetSocketForSmallId(BYTE smallId); static SOCKET GetSocketForSmallId(BYTE smallId);
static void HandleDataReceived(BYTE fromSmallId, BYTE toSmallId, unsigned char *data, unsigned int dataSize); static void HandleDataReceived(BYTE fromSmallId, BYTE toSmallId, unsigned char *data, unsigned int dataSize);
static void FlushPendingData();
static bool PopDisconnectedSmallId(BYTE *outSmallId); static bool PopDisconnectedSmallId(BYTE *outSmallId);
static void PushFreeSmallId(BYTE smallId); static void PushFreeSmallId(BYTE smallId);
static void CloseConnectionBySmallId(BYTE smallId); static void CloseConnectionBySmallId(BYTE smallId);
static bool PopPendingJoinSmallId(BYTE *outSmallId);
static bool IsSmallIdConnected(BYTE smallId);
static bool StartAdvertising(int gamePort, const wchar_t *hostName, unsigned int gameSettings, unsigned int texPackId, unsigned char subTexId, unsigned short netVer); static bool StartAdvertising(int gamePort, const wchar_t *hostName, unsigned int gameSettings, unsigned int texPackId, unsigned char subTexId, unsigned short netVer);
static void StopAdvertising(); static void StopAdvertising();
static void UpdateAdvertisePlayerCount(BYTE count); static void UpdateAdvertisePlayerCount(BYTE count);
@@ -215,7 +204,7 @@ private:
static CRITICAL_SECTION s_sendLock; static CRITICAL_SECTION s_sendLock;
static CRITICAL_SECTION s_connectionsLock; static CRITICAL_SECTION s_connectionsLock;
static RemoteConnection s_connections[NETWORK_LAN_MAX_CLIENTS + 1]; static std::vector<RemoteConnection> s_connections;
static SOCKET s_advertiseSock; static SOCKET s_advertiseSock;
static C4JThread* s_advertiseThread; static C4JThread* s_advertiseThread;
@@ -233,14 +222,8 @@ private:
static CRITICAL_SECTION s_disconnectLock; static CRITICAL_SECTION s_disconnectLock;
static std::vector<BYTE> s_disconnectedSmallIds; static std::vector<BYTE> s_disconnectedSmallIds;
static CRITICAL_SECTION s_pendingJoinLock;
static std::vector<BYTE> s_pendingJoinSmallIds;
static CRITICAL_SECTION s_freeSmallIdLock; static CRITICAL_SECTION s_freeSmallIdLock;
static std::vector<BYTE> s_freeSmallIds; static std::vector<BYTE> s_freeSmallIds;
static CRITICAL_SECTION s_earlyDataLock;
static std::vector<BYTE> s_earlyDataBuffers[NETWORK_LAN_MAX_CLIENTS + 1];
}; };
extern bool g_MultiplayerHost; extern bool g_MultiplayerHost;
File diff suppressed because it is too large Load Diff
@@ -1,172 +1,171 @@
#pragma once #pragma once
using namespace std; using namespace std;
#include <vector> #include <vector>
#include "..\..\..\Minecraft.World\C4JThread.h" #include "..\..\..\Minecraft.World\C4JThread.h"
#include "NetworkPlayerInterface.h" #include "NetworkPlayerInterface.h"
#include "PlatformNetworkManagerInterface.h" #include "PlatformNetworkManagerInterface.h"
#include "SessionInfo.h" #include "SessionInfo.h"
class CPlatformNetworkManagerStub : public CPlatformNetworkManager class CPlatformNetworkManagerStub : public CPlatformNetworkManager
{ {
friend class CGameNetworkManager; friend class CGameNetworkManager;
public: public:
virtual bool Initialise(CGameNetworkManager *pGameNetworkManager, int flagIndexSize); virtual bool Initialise(CGameNetworkManager *pGameNetworkManager, int flagIndexSize);
virtual void Terminate(); virtual void Terminate();
virtual int GetJoiningReadyPercentage(); virtual int GetJoiningReadyPercentage();
virtual int CorrectErrorIDS(int IDS); virtual int CorrectErrorIDS(int IDS);
virtual void DoWork(); virtual void DoWork();
virtual int GetPlayerCount(); virtual int GetPlayerCount();
virtual int GetOnlinePlayerCount(); virtual int GetOnlinePlayerCount();
virtual int GetLocalPlayerMask(int playerIndex); virtual int GetLocalPlayerMask(int playerIndex);
virtual bool AddLocalPlayerByUserIndex( int userIndex ); virtual bool AddLocalPlayerByUserIndex( int userIndex );
virtual bool RemoveLocalPlayerByUserIndex( int userIndex ); virtual bool RemoveLocalPlayerByUserIndex( int userIndex );
virtual INetworkPlayer *GetLocalPlayerByUserIndex( int userIndex ); virtual INetworkPlayer *GetLocalPlayerByUserIndex( int userIndex );
virtual INetworkPlayer *GetPlayerByIndex(int playerIndex); virtual INetworkPlayer *GetPlayerByIndex(int playerIndex);
virtual INetworkPlayer * GetPlayerByXuid(PlayerUID xuid); virtual INetworkPlayer * GetPlayerByXuid(PlayerUID xuid);
virtual INetworkPlayer * GetPlayerBySmallId(unsigned char smallId); virtual INetworkPlayer * GetPlayerBySmallId(unsigned char smallId);
virtual bool ShouldMessageForFullSession(); virtual bool ShouldMessageForFullSession();
virtual INetworkPlayer *GetHostPlayer(); virtual INetworkPlayer *GetHostPlayer();
virtual bool IsHost(); virtual bool IsHost();
virtual bool JoinGameFromInviteInfo( int userIndex, int userMask, const INVITE_INFO *pInviteInfo); virtual bool JoinGameFromInviteInfo( int userIndex, int userMask, const INVITE_INFO *pInviteInfo);
virtual bool LeaveGame(bool bMigrateHost); virtual bool LeaveGame(bool bMigrateHost);
virtual bool IsInSession(); virtual bool IsInSession();
virtual bool IsInGameplay(); virtual bool IsInGameplay();
virtual bool IsReadyToPlayOrIdle(); virtual bool IsReadyToPlayOrIdle();
virtual bool IsInStatsEnabledSession(); virtual bool IsInStatsEnabledSession();
virtual bool SessionHasSpace(unsigned int spaceRequired = 1); virtual bool SessionHasSpace(unsigned int spaceRequired = 1);
virtual void SendInviteGUI(int quadrant); virtual void SendInviteGUI(int quadrant);
virtual bool IsAddingPlayer(); virtual bool IsAddingPlayer();
virtual void HostGame(int localUsersMask, bool bOnlineGame, bool bIsPrivate, unsigned char publicSlots = MINECRAFT_NET_MAX_PLAYERS, unsigned char privateSlots = 0); virtual void HostGame(int localUsersMask, bool bOnlineGame, bool bIsPrivate, unsigned char publicSlots = MINECRAFT_NET_MAX_PLAYERS, unsigned char privateSlots = 0);
virtual int JoinGame(FriendSessionInfo *searchResult, int localUsersMask, int primaryUserIndex ); virtual int JoinGame(FriendSessionInfo *searchResult, int localUsersMask, int primaryUserIndex );
virtual bool SetLocalGame(bool isLocal); virtual bool SetLocalGame(bool isLocal);
virtual bool IsLocalGame() { return m_bIsOfflineGame; } virtual bool IsLocalGame() { return m_bIsOfflineGame; }
virtual void SetPrivateGame(bool isPrivate); virtual void SetPrivateGame(bool isPrivate);
virtual bool IsPrivateGame() { return m_bIsPrivateGame; } virtual bool IsPrivateGame() { return m_bIsPrivateGame; }
virtual bool IsLeavingGame() { return m_bLeavingGame; } virtual bool IsLeavingGame() { return m_bLeavingGame; }
virtual void ResetLeavingGame() { m_bLeavingGame = false; } virtual void ResetLeavingGame() { m_bLeavingGame = false; }
virtual void RegisterPlayerChangedCallback(int iPad, void (*callback)(void *callbackParam, INetworkPlayer *pPlayer, bool leaving), void *callbackParam); virtual void RegisterPlayerChangedCallback(int iPad, void (*callback)(void *callbackParam, INetworkPlayer *pPlayer, bool leaving), void *callbackParam);
virtual void UnRegisterPlayerChangedCallback(int iPad, void (*callback)(void *callbackParam, INetworkPlayer *pPlayer, bool leaving), void *callbackParam); virtual void UnRegisterPlayerChangedCallback(int iPad, void (*callback)(void *callbackParam, INetworkPlayer *pPlayer, bool leaving), void *callbackParam);
virtual void HandleSignInChange(); virtual void HandleSignInChange();
virtual void SetGamePlayState(); virtual bool _RunNetworkGame();
virtual bool _RunNetworkGame();
private:
private: bool isSystemPrimaryPlayer(IQNetPlayer *pQNetPlayer);
bool isSystemPrimaryPlayer(IQNetPlayer *pQNetPlayer); virtual bool _LeaveGame(bool bMigrateHost, bool bLeaveRoom);
virtual bool _LeaveGame(bool bMigrateHost, bool bLeaveRoom); virtual void _HostGame(int dwUsersMask, unsigned char publicSlots = MINECRAFT_NET_MAX_PLAYERS, unsigned char privateSlots = 0);
virtual void _HostGame(int dwUsersMask, unsigned char publicSlots = MINECRAFT_NET_MAX_PLAYERS, unsigned char privateSlots = 0); virtual bool _StartGame();
virtual bool _StartGame();
IQNet * m_pIQNet; // pointer to QNet interface
IQNet * m_pIQNet; // pointer to QNet interface
HANDLE m_notificationListener;
HANDLE m_notificationListener;
vector<IQNetPlayer *> m_machineQNetPrimaryPlayers; // collection of players that we deem to be the main one for that system
vector<IQNetPlayer *> m_machineQNetPrimaryPlayers; // collection of players that we deem to be the main one for that system
bool m_bLeavingGame;
bool m_bLeavingGame; bool m_bLeaveGameOnTick;
bool m_bLeaveGameOnTick; bool m_migrateHostOnLeave;
bool m_migrateHostOnLeave; bool m_bHostChanged;
bool m_bHostChanged;
bool m_bIsOfflineGame;
bool m_bIsOfflineGame; bool m_bIsPrivateGame;
bool m_bIsPrivateGame; int m_flagIndexSize;
int m_flagIndexSize;
// This is only maintained by the host, and is not valid on client machines
// This is only maintained by the host, and is not valid on client machines GameSessionData m_hostGameSessionData;
GameSessionData m_hostGameSessionData; CGameNetworkManager *m_pGameNetworkManager;
CGameNetworkManager *m_pGameNetworkManager; public:
public: virtual void UpdateAndSetGameSessionData(INetworkPlayer *pNetworkPlayerLeaving = NULL);
virtual void UpdateAndSetGameSessionData(INetworkPlayer *pNetworkPlayerLeaving = NULL);
private:
private: // TODO 4J Stu - Do we need to be able to have more than one of these?
// TODO 4J Stu - Do we need to be able to have more than one of these? void (*playerChangedCallback[XUSER_MAX_COUNT])(void *callbackParam, INetworkPlayer *pPlayer, bool leaving);
void (*playerChangedCallback[XUSER_MAX_COUNT])(void *callbackParam, INetworkPlayer *pPlayer, bool leaving); void *playerChangedCallbackParam[XUSER_MAX_COUNT];
void *playerChangedCallbackParam[XUSER_MAX_COUNT];
static int RemovePlayerOnSocketClosedThreadProc( void* lpParam );
static int RemovePlayerOnSocketClosedThreadProc( void* lpParam ); virtual bool RemoveLocalPlayer( INetworkPlayer *pNetworkPlayer );
virtual bool RemoveLocalPlayer( INetworkPlayer *pNetworkPlayer );
// Things for handling per-system flags
// Things for handling per-system flags class PlayerFlags
class PlayerFlags {
{ public:
public: INetworkPlayer *m_pNetworkPlayer;
INetworkPlayer *m_pNetworkPlayer; unsigned char *flags;
unsigned char *flags; unsigned int count;
unsigned int count; PlayerFlags(INetworkPlayer *pNetworkPlayer, unsigned int count);
PlayerFlags(INetworkPlayer *pNetworkPlayer, unsigned int count); ~PlayerFlags();
~PlayerFlags(); };
}; vector<PlayerFlags *> m_playerFlags;
vector<PlayerFlags *> m_playerFlags; void SystemFlagAddPlayer(INetworkPlayer *pNetworkPlayer);
void SystemFlagAddPlayer(INetworkPlayer *pNetworkPlayer); void SystemFlagRemovePlayer(INetworkPlayer *pNetworkPlayer);
void SystemFlagRemovePlayer(INetworkPlayer *pNetworkPlayer); void SystemFlagReset();
void SystemFlagReset(); public:
public: virtual void SystemFlagSet(INetworkPlayer *pNetworkPlayer, int index);
virtual void SystemFlagSet(INetworkPlayer *pNetworkPlayer, int index); virtual bool SystemFlagGet(INetworkPlayer *pNetworkPlayer, int index);
virtual bool SystemFlagGet(INetworkPlayer *pNetworkPlayer, int index);
// For telemetry
// For telemetry private:
private: float m_lastPlayerEventTimeStart;
float m_lastPlayerEventTimeStart;
public:
public: wstring GatherStats();
wstring GatherStats(); wstring GatherRTTStats();
wstring GatherRTTStats();
private:
private: vector<FriendSessionInfo *> friendsSessions[XUSER_MAX_COUNT];
vector<FriendSessionInfo *> friendsSessions[XUSER_MAX_COUNT]; int m_searchResultsCount[XUSER_MAX_COUNT];
int m_searchResultsCount[XUSER_MAX_COUNT]; int m_lastSearchStartTime[XUSER_MAX_COUNT];
int m_lastSearchStartTime[XUSER_MAX_COUNT];
// The results that will be filled in with the current search
// The results that will be filled in with the current search XSESSION_SEARCHRESULT_HEADER *m_pSearchResults[XUSER_MAX_COUNT];
XSESSION_SEARCHRESULT_HEADER *m_pSearchResults[XUSER_MAX_COUNT]; XNQOS *m_pQoSResult[XUSER_MAX_COUNT];
XNQOS *m_pQoSResult[XUSER_MAX_COUNT];
// The results from the previous search, which are currently displayed in the game
// The results from the previous search, which are currently displayed in the game XSESSION_SEARCHRESULT_HEADER *m_pCurrentSearchResults[XUSER_MAX_COUNT];
XSESSION_SEARCHRESULT_HEADER *m_pCurrentSearchResults[XUSER_MAX_COUNT]; XNQOS *m_pCurrentQoSResult[XUSER_MAX_COUNT];
XNQOS *m_pCurrentQoSResult[XUSER_MAX_COUNT]; int m_currentSearchResultsCount[XUSER_MAX_COUNT];
int m_currentSearchResultsCount[XUSER_MAX_COUNT];
int m_lastSearchPad;
int m_lastSearchPad; bool m_bSearchResultsReady;
bool m_bSearchResultsReady; bool m_bSearchPending;
bool m_bSearchPending; LPVOID m_pSearchParam;
LPVOID m_pSearchParam; void (*m_SessionsUpdatedCallback)(LPVOID pParam);
void (*m_SessionsUpdatedCallback)(LPVOID pParam);
C4JThread* m_SearchingThread;
C4JThread* m_SearchingThread;
void TickSearch();
void TickSearch(); void SearchForGames();
void SearchForGames(); static int SearchForGamesThreadProc( void* lpParameter );
static int SearchForGamesThreadProc( void* lpParameter );
void SetSearchResultsReady(int resultCount = 0);
void SetSearchResultsReady(int resultCount = 0);
vector<INetworkPlayer *>currentNetworkPlayers;
vector<INetworkPlayer *>currentNetworkPlayers; INetworkPlayer *addNetworkPlayer(IQNetPlayer *pQNetPlayer);
INetworkPlayer *addNetworkPlayer(IQNetPlayer *pQNetPlayer); void removeNetworkPlayer(IQNetPlayer *pQNetPlayer);
void removeNetworkPlayer(IQNetPlayer *pQNetPlayer); static INetworkPlayer *getNetworkPlayer(IQNetPlayer *pQNetPlayer);
static INetworkPlayer *getNetworkPlayer(IQNetPlayer *pQNetPlayer);
virtual void SetSessionTexturePackParentId( int id );
virtual void SetSessionTexturePackParentId( int id ); virtual void SetSessionSubTexturePackId( int id );
virtual void SetSessionSubTexturePackId( int id ); virtual void Notify(int ID, ULONG_PTR Param);
virtual void Notify(int ID, ULONG_PTR Param);
public:
public: virtual vector<FriendSessionInfo *> *GetSessionList(int iPad, int localPlayers, bool partyOnly);
virtual vector<FriendSessionInfo *> *GetSessionList(int iPad, int localPlayers, bool partyOnly); virtual bool GetGameSessionInfo(int iPad, SessionID sessionId,FriendSessionInfo *foundSession);
virtual bool GetGameSessionInfo(int iPad, SessionID sessionId,FriendSessionInfo *foundSession); virtual void SetSessionsUpdatedCallback( void (*SessionsUpdatedCallback)(LPVOID pParam), LPVOID pSearchParam );
virtual void SetSessionsUpdatedCallback( void (*SessionsUpdatedCallback)(LPVOID pParam), LPVOID pSearchParam ); virtual void GetFullFriendSessionInfo( FriendSessionInfo *foundSession, void (* FriendSessionUpdatedFn)(bool success, void *pParam), void *pParam );
virtual void GetFullFriendSessionInfo( FriendSessionInfo *foundSession, void (* FriendSessionUpdatedFn)(bool success, void *pParam), void *pParam ); virtual void ForceFriendsSessionRefresh();
virtual void ForceFriendsSessionRefresh();
public:
public: void NotifyPlayerJoined( IQNetPlayer *pQNetPlayer );
void NotifyPlayerJoined( IQNetPlayer *pQNetPlayer ); void NotifyPlayerLeaving( IQNetPlayer *pQNetPlayer );
void NotifyPlayerLeaving( IQNetPlayer *pQNetPlayer );
#ifndef _XBOX
#ifndef _XBOX void FakeLocalPlayerJoined() { NotifyPlayerJoined(m_pIQNet->GetLocalPlayerByUserIndex(0)); }
void FakeLocalPlayerJoined() { NotifyPlayerJoined(m_pIQNet->GetLocalPlayerByUserIndex(0)); } #endif
#endif };
};
@@ -79,7 +79,6 @@ typedef struct _GameSessionData
bool isReadyToJoin; // 1 byte bool isReadyToJoin; // 1 byte
bool isJoinable; // 1 byte bool isJoinable; // 1 byte
bool isDedicatedServer; // 1 byte
char hostIP[64]; // 64 bytes char hostIP[64]; // 64 bytes
int hostPort; // 4 bytes int hostPort; // 4 bytes
@@ -98,7 +97,6 @@ typedef struct _GameSessionData
subTexturePackId = 0; subTexturePackId = 0;
isReadyToJoin = false; isReadyToJoin = false;
isJoinable = true; isJoinable = true;
isDedicatedServer = false;
memset(hostIP, 0, sizeof(hostIP)); memset(hostIP, 0, sizeof(hostIP));
hostPort = 0; hostPort = 0;
memset(hostName, 0, sizeof(hostName)); memset(hostName, 0, sizeof(hostName));
@@ -959,19 +959,11 @@ void UIScene_CreateWorldMenu::checkStateAndStartGame()
else else
{ {
//ProfileManager.RequestSignInUI(false, false, false, true, false,&CScene_MultiGameCreate::StartGame_SignInReturned, this,ProfileManager.GetPrimaryPad()); //ProfileManager.RequestSignInUI(false, false, false, true, false,&CScene_MultiGameCreate::StartGame_SignInReturned, this,ProfileManager.GetPrimaryPad());
#if defined(_WINDOWS64) || defined(DISABLE_PSN) || defined(_DISABLE_XBLIVE)
SignInInfo info;
info.Func = &UIScene_CreateWorldMenu::StartGame_SignInReturned;
info.lpParam = this;
info.requireOnline = m_MoreOptionsParams.bOnlineGame;
UIScene_CreateWorldMenu::StartGame_SignInReturned(this, true, ProfileManager.GetPrimaryPad());
#else
SignInInfo info; SignInInfo info;
info.Func = &UIScene_CreateWorldMenu::StartGame_SignInReturned; info.Func = &UIScene_CreateWorldMenu::StartGame_SignInReturned;
info.lpParam = this; info.lpParam = this;
info.requireOnline = m_MoreOptionsParams.bOnlineGame; info.requireOnline = m_MoreOptionsParams.bOnlineGame;
ui.NavigateToScene(ProfileManager.GetPrimaryPad(),eUIScene_QuadrantSignin,&info); ui.NavigateToScene(ProfileManager.GetPrimaryPad(),eUIScene_QuadrantSignin,&info);
#endif
} }
} }
else else
@@ -1350,16 +1342,12 @@ int UIScene_CreateWorldMenu::ConfirmCreateReturned(void *pParam,int iPad,C4JStor
if(isClientSide && app.IsLocalMultiplayerAvailable()) if(isClientSide && app.IsLocalMultiplayerAvailable())
{ {
#if defined(_WINDOWS64) || defined(DISABLE_PSN) || defined(_DISABLE_XBLIVE)
UIScene_CreateWorldMenu::StartGame_SignInReturned(pClass, true, ProfileManager.GetPrimaryPad());
#else
//ProfileManager.RequestSignInUI(false, false, false, true, false,&UIScene_CreateWorldMenu::StartGame_SignInReturned, pClass,ProfileManager.GetPrimaryPad()); //ProfileManager.RequestSignInUI(false, false, false, true, false,&UIScene_CreateWorldMenu::StartGame_SignInReturned, pClass,ProfileManager.GetPrimaryPad());
SignInInfo info; SignInInfo info;
info.Func = &UIScene_CreateWorldMenu::StartGame_SignInReturned; info.Func = &UIScene_CreateWorldMenu::StartGame_SignInReturned;
info.lpParam = pClass; info.lpParam = pClass;
info.requireOnline = pClass->m_MoreOptionsParams.bOnlineGame; info.requireOnline = pClass->m_MoreOptionsParams.bOnlineGame;
ui.NavigateToScene(ProfileManager.GetPrimaryPad(),eUIScene_QuadrantSignin,&info); ui.NavigateToScene(ProfileManager.GetPrimaryPad(),eUIScene_QuadrantSignin,&info);
#endif
} }
else else
{ {
@@ -7,7 +7,7 @@
#include "..\..\MinecraftServer.h" #include "..\..\MinecraftServer.h"
#include "..\..\..\Minecraft.World\net.minecraft.world.level.h" #include "..\..\..\Minecraft.World\net.minecraft.world.level.h"
#include "..\..\..\Minecraft.World\net.minecraft.world.h" #include "..\..\..\Minecraft.World\net.minecraft.world.h"
#include "..\..\Common\Network\NetworkSocketLayer.h" #include "..\..\Common\Network\NetworkSocketLayer.h"
#define UPDATE_PLAYERS_TIMER_ID 0 #define UPDATE_PLAYERS_TIMER_ID 0
#define UPDATE_PLAYERS_TIMER_TIME 30000 #define UPDATE_PLAYERS_TIMER_TIME 30000
@@ -368,7 +368,7 @@ void UIScene_JoinMenu::checkPrivilegeCallback(LPVOID lpParam, bool hasPrivilege,
void UIScene_JoinMenu::StartSharedLaunchFlow() void UIScene_JoinMenu::StartSharedLaunchFlow()
{ {
const bool bManualJoin = (g_MultiplayerJoin == true); const bool bManualJoin = (g_MultiplayerJoin == true);
if (bManualJoin) if (bManualJoin)
{ {
JoinGame(this); JoinGame(this);
@@ -431,7 +431,7 @@ void UIScene_JoinMenu::JoinGame(UIScene_JoinMenu* pClass)
{ {
return; return;
} }
const bool bManualJoin = (g_MultiplayerJoin == true); const bool bManualJoin = (g_MultiplayerJoin == true);
DWORD dwSignedInUsers = 0; DWORD dwSignedInUsers = 0;
bool noPrivileges = false; bool noPrivileges = false;
@@ -600,21 +600,6 @@ void UIScene_JoinMenu::JoinGame(UIScene_JoinMenu* pClass)
ui.NavigateToHomeMenu(); ui.NavigateToHomeMenu();
} }
} }
else
{
LoadingInputParams *loadingParams = new LoadingInputParams();
loadingParams->func = &CGameNetworkManager::RunNetworkGameThreadProc;
loadingParams->lpParam = NULL;
UIFullscreenProgressCompletionData *completionData = new UIFullscreenProgressCompletionData();
completionData->bShowBackground = TRUE;
completionData->bShowLogo = TRUE;
completionData->type = e_ProgressCompletion_CloseAllPlayersUIScenes;
completionData->iPad = DEFAULT_XUI_MENU_USER;
loadingParams->completionData = completionData;
ui.NavigateToScene(ProfileManager.GetPrimaryPad(), eUIScene_FullscreenProgress, loadingParams);
}
} }
} }
@@ -1446,12 +1446,7 @@ int UIScene_LoadMenu::LoadDataComplete(void *pParam)
#endif #endif
else else
{ {
#if defined(_WINDOWS64) || defined(DISABLE_PSN) || defined(_DISABLE_XBLIVE)
DWORD dwLocalUsersMask = CGameNetworkManager::GetLocalPlayerMask(ProfileManager.GetPrimaryPad());
StartGameFromSave(pClass, dwLocalUsersMask);
#else
pClass->m_bRequestQuadrantSignin = true; pClass->m_bRequestQuadrantSignin = true;
#endif
} }
} }
} }
@@ -1597,7 +1597,7 @@ void UIScene_LoadOrJoinMenu::LoadLevelGen(LevelGenerationOptions *levelGen)
bool isClientSide = false; bool isClientSide = false;
bool isPrivate = false; bool isPrivate = false;
// TODO int maxPlayers = MINECRAFT_NET_MAX_PLAYERS; // TODO int maxPlayers = MINECRAFT_NET_MAX_PLAYERS;
int maxPlayers = MINECRAFT_NET_MAX_PLAYERS; int maxPlayers = 8;
if( app.GetTutorialMode() ) if( app.GetTutorialMode() )
{ {
@@ -8,7 +8,7 @@
#include "UIScene_MainMenu.h" #include "UIScene_MainMenu.h"
#ifdef __ORBIS__ #ifdef __ORBIS__
#include <error_dialog.h> #include <error_dialog.h>
#include "..\..\Common\Network\NetworkSocketLayer.h" #include "..\..\Common\Network\NetworkSocketLayer.h"
#endif #endif
Random *UIScene_MainMenu::random = new Random(); Random *UIScene_MainMenu::random = new Random();
@@ -319,7 +319,7 @@ void UIScene_MainMenu::handlePress(F64 controlId, F64 childId)
//CD - Added for audio //CD - Added for audio
ui.PlayUISFX(eSFX_Press); ui.PlayUISFX(eSFX_Press);
if(g_MultiplayerJoin) if(g_MultiplayerJoin)
{ {
// request only completes after the platform network timeout. // request only completes after the platform network timeout.
// this needs to be done before hand or else the PS4 crashes ill need to look more into this // this needs to be done before hand or else the PS4 crashes ill need to look more into this
@@ -386,10 +386,6 @@ void UIScene_MainMenu::handlePress(F64 controlId, F64 childId)
ui.NavigateToScene(primaryPad,eUIScene_TrialExitUpsell); ui.NavigateToScene(primaryPad,eUIScene_TrialExitUpsell);
} }
break; break;
#elif defined _WINDOWS64
case eControl_Exit:
app.ExitGame();
break;
#endif #endif
#ifdef _DURANGO #ifdef _DURANGO
@@ -1112,7 +1108,7 @@ void UIScene_MainMenu::RefreshChatAndContentRestrictionsReturned_PlayGame(void *
int primaryPad = ProfileManager.GetPrimaryPad(); int primaryPad = ProfileManager.GetPrimaryPad();
UIScene_MainMenu* pClass = (UIScene_MainMenu*)pParam; UIScene_MainMenu* pClass = (UIScene_MainMenu*)pParam;
const bool bManualJoin = (g_MultiplayerJoin == true); const bool bManualJoin = (g_MultiplayerJoin == true);
if (bManualJoin) if (bManualJoin)
{ {
CreateLoad_SignInReturned(pClass, true, primaryPad); CreateLoad_SignInReturned(pClass, true, primaryPad);
@@ -1,4 +1,5 @@
#include "stdafx.h" #include "stdafx.h"
#include "..\LivePrivileges.h"
#include <xuiresource.h> #include <xuiresource.h>
#include <xuiapp.h> #include <xuiapp.h>
#include <assert.h> #include <assert.h>
@@ -76,19 +77,7 @@ HRESULT CScene_LoadGameSettings::OnInit( XUIMessageInit* pInitData, BOOL& bHandl
XuiControlSetText(m_ButtonLoad,app.GetString(IDS_LOAD)); XuiControlSetText(m_ButtonLoad,app.GetString(IDS_LOAD));
XuiControlSetText(m_pTexturePacksList->m_hObj,app.GetString(IDS_DLC_MENU_TEXTUREPACKS)); XuiControlSetText(m_pTexturePacksList->m_hObj,app.GetString(IDS_DLC_MENU_TEXTUREPACKS));
#ifndef _DISABLE_XBLIVE m_bMultiplayerAllowed = Live_MultiplayerAllowed( m_iPad );
#ifndef _DISABLE_XBLIVE
#ifndef _DISABLE_XBLIVE
m_bMultiplayerAllowed = ProfileManager.IsSignedInLive( m_iPad ) && ProfileManager.AllowedToPlayMultiplayer(m_iPad);
#else
m_bMultiplayerAllowed = true;
#endif
#else
m_bMultiplayerAllowed = true;
#endif
#else
m_bMultiplayerAllowed = true;
#endif
// 4J-PB - read the settings for the online flag. We'll only save this setting if the user changed it. // 4J-PB - read the settings for the online flag. We'll only save this setting if the user changed it.
bool bGameSetting_Online=(app.GetGameSettings(m_iPad,eGameSetting_Online)!=0); bool bGameSetting_Online=(app.GetGameSettings(m_iPad,eGameSetting_Online)!=0);
m_MoreOptionsParams.bOnlineSettingChangedBySystem=false; m_MoreOptionsParams.bOnlineSettingChangedBySystem=false;
@@ -753,10 +742,7 @@ HRESULT CScene_LoadGameSettings::OnTimer( XUIMessageTimer *pTimer, BOOL& bHandle
{ {
case GAME_CREATE_ONLINE_TIMER_ID: case GAME_CREATE_ONLINE_TIMER_ID:
{ {
bool bMultiplayerAllowed = true; bool bMultiplayerAllowed = Live_MultiplayerAllowed( m_iPad );
#ifndef _DISABLE_XBLIVE
bMultiplayerAllowed = ProfileManager.IsSignedInLive( m_iPad ) && ProfileManager.AllowedToPlayMultiplayer(m_iPad);
#endif
if(bMultiplayerAllowed != m_bMultiplayerAllowed) if(bMultiplayerAllowed != m_bMultiplayerAllowed)
{ {
@@ -874,7 +860,7 @@ int CScene_LoadGameSettings::LoadSaveDataReturned(void *pParam,bool bContinue)
bool noUGC = false; bool noUGC = false;
BOOL pccAllowed = TRUE; BOOL pccAllowed = TRUE;
BOOL pccFriendsAllowed = TRUE; BOOL pccFriendsAllowed = TRUE;
ProfileManager.AllowedPlayerCreatedContent(ProfileManager.GetPrimaryPad(),false,&pccAllowed,&pccFriendsAllowed); Live_AllowedPlayerCreatedContent(ProfileManager.GetPrimaryPad(),false,&pccAllowed,&pccFriendsAllowed);
if(!pccAllowed && !pccFriendsAllowed) noUGC = true; if(!pccAllowed && !pccFriendsAllowed) noUGC = true;
if(isClientSide && noUGC ) if(isClientSide && noUGC )
@@ -1030,9 +1016,7 @@ int CScene_LoadGameSettings::StartGame_SignInReturned(void *pParam,bool bContinu
{ {
if(ProfileManager.IsSignedIn(index) ) if(ProfileManager.IsSignedIn(index) )
{ {
#ifndef _DISABLE_XBLIVE if( !Live_AllowedToPlayMultiplayer(index) ) noPrivileges = true;
if( !ProfileManager.AllowedToPlayMultiplayer(index) ) noPrivileges = true;
#endif
dwLocalUsersMask |= CGameNetworkManager::GetLocalPlayerMask(index); dwLocalUsersMask |= CGameNetworkManager::GetLocalPlayerMask(index);
} }
} }
@@ -1041,7 +1025,7 @@ int CScene_LoadGameSettings::StartGame_SignInReturned(void *pParam,bool bContinu
bool noUGC = false; bool noUGC = false;
BOOL pccAllowed = TRUE; BOOL pccAllowed = TRUE;
BOOL pccFriendsAllowed = TRUE; BOOL pccFriendsAllowed = TRUE;
ProfileManager.AllowedPlayerCreatedContent(ProfileManager.GetPrimaryPad(), false, &pccAllowed,&pccFriendsAllowed); Live_AllowedPlayerCreatedContent(ProfileManager.GetPrimaryPad(), false, &pccAllowed,&pccFriendsAllowed);
if(!pccAllowed && !pccFriendsAllowed) noUGC = true; if(!pccAllowed && !pccFriendsAllowed) noUGC = true;
if(isClientSide && (noPrivileges || noUGC) ) if(isClientSide && (noPrivileges || noUGC) )
@@ -1424,7 +1408,7 @@ void CScene_LoadGameSettings::LoadLevelGen(LevelGenerationOptions *levelGen)
bool noUGC = false; bool noUGC = false;
BOOL pccAllowed = TRUE; BOOL pccAllowed = TRUE;
BOOL pccFriendsAllowed = TRUE; BOOL pccFriendsAllowed = TRUE;
ProfileManager.AllowedPlayerCreatedContent(ProfileManager.GetPrimaryPad(),false,&pccAllowed,&pccFriendsAllowed); Live_AllowedPlayerCreatedContent(ProfileManager.GetPrimaryPad(),false,&pccAllowed,&pccFriendsAllowed);
if(!pccAllowed && !pccFriendsAllowed) noUGC = true; if(!pccAllowed && !pccFriendsAllowed) noUGC = true;
if(isClientSide && noUGC ) if(isClientSide && noUGC )
@@ -1,4 +1,5 @@
#include "stdafx.h" #include "stdafx.h"
#include "..\LivePrivileges.h"
#include "..\..\..\Minecraft.World\Random.h" #include "..\..\..\Minecraft.World\Random.h"
#include "..\..\..\Minecraft.World\StringHelpers.h" #include "..\..\..\Minecraft.World\StringHelpers.h"
#include "XUI_MultiGameCreate.h" #include "XUI_MultiGameCreate.h"
@@ -67,19 +68,7 @@ HRESULT CScene_MultiGameCreate::OnInit( XUIMessageInit* pInitData, BOOL& bHandle
m_iPad=params->iPad; m_iPad=params->iPad;
delete params; delete params;
#ifndef _DISABLE_XBLIVE m_bMultiplayerAllowed = Live_MultiplayerAllowed( m_iPad );
#ifndef _DISABLE_XBLIVE
#ifndef _DISABLE_XBLIVE
m_bMultiplayerAllowed = ProfileManager.IsSignedInLive( m_iPad ) && ProfileManager.AllowedToPlayMultiplayer(m_iPad);
#else
m_bMultiplayerAllowed = true;
#endif
#else
m_bMultiplayerAllowed = true;
#endif
#else
m_bMultiplayerAllowed = true;
#endif
// 4J-PB - read the settings for the online flag. We'll only save this setting if the user changed it. // 4J-PB - read the settings for the online flag. We'll only save this setting if the user changed it.
bool bGameSetting_Online=(app.GetGameSettings(m_iPad,eGameSetting_Online)!=0); bool bGameSetting_Online=(app.GetGameSettings(m_iPad,eGameSetting_Online)!=0);
m_MoreOptionsParams.bOnlineSettingChangedBySystem=false; m_MoreOptionsParams.bOnlineSettingChangedBySystem=false;
@@ -488,7 +477,7 @@ HRESULT CScene_MultiGameCreate::OnNotifyPressEx(HXUIOBJ hObjPressed, XUINotifyPr
bool noUGC = false; bool noUGC = false;
BOOL pccAllowed = TRUE; BOOL pccAllowed = TRUE;
BOOL pccFriendsAllowed = TRUE; BOOL pccFriendsAllowed = TRUE;
ProfileManager.AllowedPlayerCreatedContent(ProfileManager.GetPrimaryPad(),false,&pccAllowed,&pccFriendsAllowed); Live_AllowedPlayerCreatedContent(ProfileManager.GetPrimaryPad(),false,&pccAllowed,&pccFriendsAllowed);
if(!pccAllowed && !pccFriendsAllowed) noUGC = true; if(!pccAllowed && !pccFriendsAllowed) noUGC = true;
if(isClientSide && noUGC ) if(isClientSide && noUGC )
@@ -593,7 +582,7 @@ int CScene_MultiGameCreate::WarningTrialTexturePackReturned(void *pParam,int iPa
bool noUGC = false; bool noUGC = false;
BOOL pccAllowed = TRUE; BOOL pccAllowed = TRUE;
BOOL pccFriendsAllowed = TRUE; BOOL pccFriendsAllowed = TRUE;
ProfileManager.AllowedPlayerCreatedContent(ProfileManager.GetPrimaryPad(),false,&pccAllowed,&pccFriendsAllowed); Live_AllowedPlayerCreatedContent(ProfileManager.GetPrimaryPad(),false,&pccAllowed,&pccFriendsAllowed);
if(!pccAllowed && !pccFriendsAllowed) noUGC = true; if(!pccAllowed && !pccFriendsAllowed) noUGC = true;
if(isClientSide && noUGC ) if(isClientSide && noUGC )
@@ -675,10 +664,7 @@ HRESULT CScene_MultiGameCreate::OnTimer( XUIMessageTimer *pTimer, BOOL& bHandled
case GAME_CREATE_ONLINE_TIMER_ID: case GAME_CREATE_ONLINE_TIMER_ID:
{ {
bool bMultiplayerAllowed = true; bool bMultiplayerAllowed = Live_MultiplayerAllowed( m_iPad );
#ifndef _DISABLE_XBLIVE
bMultiplayerAllowed = ProfileManager.IsSignedInLive( m_iPad ) && ProfileManager.AllowedToPlayMultiplayer(m_iPad);
#endif
if(bMultiplayerAllowed != m_bMultiplayerAllowed) if(bMultiplayerAllowed != m_bMultiplayerAllowed)
{ {
@@ -793,7 +779,7 @@ int CScene_MultiGameCreate::ConfirmCreateReturned(void *pParam,int iPad,C4JStora
bool noUGC = false; bool noUGC = false;
BOOL pccAllowed = TRUE; BOOL pccAllowed = TRUE;
BOOL pccFriendsAllowed = TRUE; BOOL pccFriendsAllowed = TRUE;
ProfileManager.AllowedPlayerCreatedContent(ProfileManager.GetPrimaryPad(),false,&pccAllowed,&pccFriendsAllowed); Live_AllowedPlayerCreatedContent(ProfileManager.GetPrimaryPad(),false,&pccAllowed,&pccFriendsAllowed);
if(!pccAllowed && !pccFriendsAllowed) noUGC = true; if(!pccAllowed && !pccFriendsAllowed) noUGC = true;
if(isClientSide && noUGC ) if(isClientSide && noUGC )
@@ -839,9 +825,7 @@ int CScene_MultiGameCreate::StartGame_SignInReturned(void *pParam,bool bContinue
{ {
if(ProfileManager.IsSignedIn(index) ) if(ProfileManager.IsSignedIn(index) )
{ {
#ifndef _DISABLE_XBLIVE if( !Live_AllowedToPlayMultiplayer(index) ) noPrivileges = true;
if( !ProfileManager.AllowedToPlayMultiplayer(index) ) noPrivileges = true;
#endif
dwLocalUsersMask |= CGameNetworkManager::GetLocalPlayerMask(index); dwLocalUsersMask |= CGameNetworkManager::GetLocalPlayerMask(index);
} }
} }
@@ -850,7 +834,7 @@ int CScene_MultiGameCreate::StartGame_SignInReturned(void *pParam,bool bContinue
bool noUGC = false; bool noUGC = false;
BOOL pccAllowed = TRUE; BOOL pccAllowed = TRUE;
BOOL pccFriendsAllowed = TRUE; BOOL pccFriendsAllowed = TRUE;
ProfileManager.AllowedPlayerCreatedContent(ProfileManager.GetPrimaryPad(),false,&pccAllowed,&pccFriendsAllowed); Live_AllowedPlayerCreatedContent(ProfileManager.GetPrimaryPad(),false,&pccAllowed,&pccFriendsAllowed);
if(!pccAllowed && !pccFriendsAllowed) noUGC = true; if(!pccAllowed && !pccFriendsAllowed) noUGC = true;
if(isClientSide && (noPrivileges || noUGC) ) if(isClientSide && (noPrivileges || noUGC) )
@@ -6,6 +6,7 @@
#include "..\..\..\Minecraft.World\StringHelpers.h" #include "..\..\..\Minecraft.World\StringHelpers.h"
#include "XUI_MultiGameInfo.h" #include "XUI_MultiGameInfo.h"
#include "XUI_MultiGameJoinLoad.h" #include "XUI_MultiGameJoinLoad.h"
#include "..\LivePrivileges.h"
#include "..\..\..\Minecraft.World\LevelSettings.h" #include "..\..\..\Minecraft.World\LevelSettings.h"
#include "..\..\..\Minecraft.World\Difficulty.h" #include "..\..\..\Minecraft.World\Difficulty.h"
@@ -37,7 +38,19 @@ HRESULT CScene_MultiGameInfo::OnInit( XUIMessageInit* pInitData, BOOL& bHandled
// 4J-PB - don't delete this - it's part of the joinload structure // 4J-PB - don't delete this - it's part of the joinload structure
//delete initData; //delete initData;
#ifndef _DISABLE_XBLIVE #ifdef _DISABLE_XBLIVE
// No gamercards on a LAN session - the names come straight out of the broadcast
for(unsigned int i = 0; i < MINECRAFT_NET_MAX_PLAYERS; ++i)
{
if( m_selectedSession->data.players[i] == 0 || m_selectedSession->data.szPlayers[i][0] == 0 )
{
break;
}
playersList.InsertItems(i,1);
playersList.SetText(i, convStringToWstring( m_selectedSession->data.szPlayers[i] ).c_str() );
}
#else
for(unsigned int i = 0; i < MINECRAFT_NET_MAX_PLAYERS; ++i) for(unsigned int i = 0; i < MINECRAFT_NET_MAX_PLAYERS; ++i)
{ {
if( m_selectedSession->data.players[i] != NULL ) if( m_selectedSession->data.players[i] != NULL )
@@ -223,7 +236,11 @@ HRESULT CScene_MultiGameInfo::OnNotifySetFocus(HXUIOBJ hObjSource, XUINotifyFocu
{ {
if( playersList.TreeHasFocus() && playersList.GetItemCount() > 0 ) if( playersList.TreeHasFocus() && playersList.GetItemCount() > 0 )
{ {
#ifdef _DISABLE_XBLIVE
ui.SetTooltips( DEFAULT_XUI_MENU_USER, -1, IDS_TOOLTIPS_BACK );
#else
ui.SetTooltips( DEFAULT_XUI_MENU_USER, -1, IDS_TOOLTIPS_BACK, -1, IDS_TOOLTIPS_VIEW_GAMERCARD ); ui.SetTooltips( DEFAULT_XUI_MENU_USER, -1, IDS_TOOLTIPS_BACK, -1, IDS_TOOLTIPS_VIEW_GAMERCARD );
#endif
bHandled = TRUE; bHandled = TRUE;
} }
return S_OK; return S_OK;
@@ -274,9 +291,7 @@ void CScene_MultiGameInfo::JoinGame(CScene_MultiGameInfo* pClass)
if(ProfileManager.IsSignedIn(index) ) if(ProfileManager.IsSignedIn(index) )
{ {
++dwSignedInUsers; ++dwSignedInUsers;
#ifndef _DISABLE_XBLIVE if( !Live_AllowedToPlayMultiplayer(index) ) noPrivileges = true;
if( !ProfileManager.AllowedToPlayMultiplayer(index) ) noPrivileges = true;
#endif
dwLocalUsersMask |= CGameNetworkManager::GetLocalPlayerMask(index); dwLocalUsersMask |= CGameNetworkManager::GetLocalPlayerMask(index);
} }
} }
@@ -286,9 +301,7 @@ void CScene_MultiGameInfo::JoinGame(CScene_MultiGameInfo* pClass)
if(ProfileManager.IsSignedIn(ProfileManager.GetPrimaryPad()) ) if(ProfileManager.IsSignedIn(ProfileManager.GetPrimaryPad()) )
{ {
++dwSignedInUsers; ++dwSignedInUsers;
#ifndef _DISABLE_XBLIVE if( !Live_AllowedToPlayMultiplayer(ProfileManager.GetPrimaryPad()) ) noPrivileges = true;
if( !ProfileManager.AllowedToPlayMultiplayer(ProfileManager.GetPrimaryPad()) ) noPrivileges = true;
#endif
dwLocalUsersMask |= CGameNetworkManager::GetLocalPlayerMask(ProfileManager.GetPrimaryPad()); dwLocalUsersMask |= CGameNetworkManager::GetLocalPlayerMask(ProfileManager.GetPrimaryPad());
} }
} }
@@ -297,7 +310,7 @@ void CScene_MultiGameInfo::JoinGame(CScene_MultiGameInfo* pClass)
bool noUGC = false; bool noUGC = false;
BOOL pccAllowed = TRUE; BOOL pccAllowed = TRUE;
BOOL pccFriendsAllowed = TRUE; BOOL pccFriendsAllowed = TRUE;
ProfileManager.AllowedPlayerCreatedContent(ProfileManager.GetPrimaryPad(),false,&pccAllowed,&pccFriendsAllowed); Live_AllowedPlayerCreatedContent(ProfileManager.GetPrimaryPad(),false,&pccAllowed,&pccFriendsAllowed);
if(!pccAllowed && !pccFriendsAllowed) noUGC = true; if(!pccAllowed && !pccFriendsAllowed) noUGC = true;
if(noUGC) if(noUGC)
@@ -352,21 +365,6 @@ void CScene_MultiGameInfo::JoinGame(CScene_MultiGameInfo* pClass)
app.NavigateToHomeMenu(); app.NavigateToHomeMenu();
} }
} }
else
{
LoadingInputParams *loadingParams = new LoadingInputParams();
loadingParams->func = &CGameNetworkManager::RunNetworkGameThreadProc;
loadingParams->lpParam = NULL;
UIFullscreenProgressCompletionData *completionData = new UIFullscreenProgressCompletionData();
completionData->bShowBackground = TRUE;
completionData->bShowLogo = TRUE;
completionData->type = e_ProgressCompletion_CloseAllPlayersUIScenes;
completionData->iPad = DEFAULT_XUI_MENU_USER;
loadingParams->completionData = completionData;
app.NavigateToScene(ProfileManager.GetPrimaryPad(), eUIScene_FullscreenProgress, loadingParams);
}
} }
} }
@@ -18,6 +18,7 @@
#include "XUI_LoadSettings.h" #include "XUI_LoadSettings.h"
#include "XUI_MultiGameInfo.h" #include "XUI_MultiGameInfo.h"
#include "XUI_MultiGameJoinLoad.h" #include "XUI_MultiGameJoinLoad.h"
#include "..\LivePrivileges.h"
#include "XUI_MultiGameCreate.h" #include "XUI_MultiGameCreate.h"
#include "..\..\MinecraftServer.h" #include "..\..\MinecraftServer.h"
#include "..\..\Options.h" #include "..\..\Options.h"
@@ -73,12 +74,8 @@ HRESULT CScene_MultiGameJoinLoad::OnInit( XUIMessageInit* pInitData, BOOL& bHand
// } // }
m_initData= new JoinMenuInitData(); m_initData= new JoinMenuInitData();
#ifndef _DISABLE_XBLIVE m_bMultiplayerAllowed = Live_MultiplayerAllowed( m_iPad );
m_bMultiplayerAllowed = ProfileManager.IsSignedInLive( m_iPad ) && ProfileManager.AllowedToPlayMultiplayer(m_iPad);
#else
m_bMultiplayerAllowed = true;
#endif
XPARTY_USER_LIST partyList; XPARTY_USER_LIST partyList;
if((XPartyGetUserList( &partyList ) != XPARTY_E_NOT_IN_PARTY ) && (partyList.dwUserCount>1)) if((XPartyGetUserList( &partyList ) != XPARTY_E_NOT_IN_PARTY ) && (partyList.dwUserCount>1))
@@ -772,12 +769,8 @@ HRESULT CScene_MultiGameJoinLoad::OnNavReturn(HXUIOBJ hSceneFrom,BOOL& rfHandled
// start the texture pack timer again // start the texture pack timer again
XuiSetTimer(m_hObj,CHECKFORAVAILABLETEXTUREPACKS_TIMER_ID,CHECKFORAVAILABLETEXTUREPACKS_TIMER_TIME); XuiSetTimer(m_hObj,CHECKFORAVAILABLETEXTUREPACKS_TIMER_ID,CHECKFORAVAILABLETEXTUREPACKS_TIMER_TIME);
#ifndef _DISABLE_XBLIVE m_bMultiplayerAllowed = Live_MultiplayerAllowed( m_iPad );
m_bMultiplayerAllowed = ProfileManager.IsSignedInLive( m_iPad ) && ProfileManager.AllowedToPlayMultiplayer(m_iPad);
#else
m_bMultiplayerAllowed = true;
#endif
// re-enable button presses // re-enable button presses
m_bIgnoreInput=false; m_bIgnoreInput=false;
@@ -1651,10 +1644,7 @@ HRESULT CScene_MultiGameJoinLoad::OnTimer( XUIMessageTimer *pTimer, BOOL& bHandl
m_bInParty=false; m_bInParty=false;
} }
bool bMultiplayerAllowed = true; bool bMultiplayerAllowed = Live_MultiplayerAllowed( m_iPad );
#ifndef _DISABLE_XBLIVE
bMultiplayerAllowed = ProfileManager.IsSignedInLive( m_iPad ) && ProfileManager.AllowedToPlayMultiplayer(m_iPad);
#endif
if(bMultiplayerAllowed != m_bMultiplayerAllowed) if(bMultiplayerAllowed != m_bMultiplayerAllowed)
{ {
if( bMultiplayerAllowed ) if( bMultiplayerAllowed )
@@ -1,4 +1,5 @@
#include "stdafx.h" #include "stdafx.h"
#include "..\LivePrivileges.h"
#include "XUI_MultiGameCreate.h" #include "XUI_MultiGameCreate.h"
#include "XUI_MultiGameLaunchMoreOptions.h" #include "XUI_MultiGameLaunchMoreOptions.h"
#include "..\..\TexturePackRepository.h" #include "..\..\TexturePackRepository.h"
@@ -99,7 +100,7 @@ HRESULT CScene_MultiGameLaunchMoreOptions::OnInit( XUIMessageInit* pInitData, BO
m_CheckboxInviteOnly.SetCheck(m_params->bInviteOnly); m_CheckboxInviteOnly.SetCheck(m_params->bInviteOnly);
m_CheckboxAllowFoF.SetCheck(m_params->bAllowFriendsOfFriends); m_CheckboxAllowFoF.SetCheck(m_params->bAllowFriendsOfFriends);
m_bMultiplayerAllowed = ProfileManager.IsSignedInLive( m_params->iPad ) && ProfileManager.AllowedToPlayMultiplayer(m_params->iPad); m_bMultiplayerAllowed = Live_MultiplayerAllowed( m_params->iPad );
if(m_params->bOnlineSettingChangedBySystem) if(m_params->bOnlineSettingChangedBySystem)
{ {
m_CheckboxOnline.SetCheck(FALSE); m_CheckboxOnline.SetCheck(FALSE);
@@ -270,7 +271,7 @@ HRESULT CScene_MultiGameLaunchMoreOptions::OnTimer( XUIMessageTimer *pTimer, BOO
// 4J-PB - TODO - Don't think we can do this - if a 2nd player signs in here with an offline profile, the signed in LIVE player gets re-logged in, and bMultiplayerAllowed is false briefly // 4J-PB - TODO - Don't think we can do this - if a 2nd player signs in here with an offline profile, the signed in LIVE player gets re-logged in, and bMultiplayerAllowed is false briefly
if( pTimer->nId == GAME_CREATE_ONLINE_TIMER_ID) if( pTimer->nId == GAME_CREATE_ONLINE_TIMER_ID)
{ {
bool bMultiplayerAllowed = ProfileManager.IsSignedInLive( m_params->iPad ) && ProfileManager.AllowedToPlayMultiplayer(m_params->iPad); bool bMultiplayerAllowed = Live_MultiplayerAllowed( m_params->iPad );
if(bMultiplayerAllowed != m_bMultiplayerAllowed) if(bMultiplayerAllowed != m_bMultiplayerAllowed)
{ {
+4 -5
View File
@@ -145,11 +145,10 @@ void EnderDragonRenderer::render(shared_ptr<Entity> _mob, double x, double y, do
int steps = 8; int steps = 8;
for (int i = 0; i <= steps; i++) for (int i = 0; i <= steps; i++)
{ {
int idx = i % steps; double d=i % steps * PI * 2 / steps;
double d = idx * PI * 2 / steps; float s = sin(i % steps * PI * 2 / steps) * 0.75f;
float s = sin(d) * 0.75f; float c = cos(i % steps * PI * 2 / steps) * 0.75f;
float c = cos(d) * 0.75f; float u = i % steps * 1.0f / steps;
float u = idx * 1.0f / steps;
//t->color(0x000000); //t->color(0x000000);
t->vertexUV(s * 0.2f, c * 0.2f, 0, u, v1); t->vertexUV(s * 0.2f, c * 0.2f, 0, u, v1);
//t->color(0xffffff); //t->color(0xffffff);
@@ -94,17 +94,6 @@ void EntityRenderDispatcher::staticCtor()
instance = new EntityRenderDispatcher(); instance = new EntityRenderDispatcher();
} }
EntityRenderDispatcher::~EntityRenderDispatcher()
{
AUTO_VAR(itEnd, renderers.end());
for( classToRendererMap::iterator it = renderers.begin(); it != itEnd; it++ )
{
delete it->second;
it->second = NULL;
}
renderers.clear();
}
EntityRenderDispatcher::EntityRenderDispatcher() EntityRenderDispatcher::EntityRenderDispatcher()
{ {
glEnable(GL_LIGHTING); glEnable(GL_LIGHTING);
+1 -2
View File
@@ -1,7 +1,7 @@
#pragma once #pragma once
#include "EntityRenderer.h" #include "EntityRenderer.h"
#include "..\Minecraft.World\Entity.h"
#include "..\Minecraft.World\JavaIntHash.h" #include "..\Minecraft.World\JavaIntHash.h"
class Entity;
class font; class font;
using namespace std; using namespace std;
@@ -37,7 +37,6 @@ public:
private: private:
EntityRenderDispatcher(); EntityRenderDispatcher();
~EntityRenderDispatcher();
public: public:
EntityRenderer *getRenderer(eINSTANCEOF e); EntityRenderer *getRenderer(eINSTANCEOF e);
+17 -158
View File
@@ -78,7 +78,6 @@ HRESULT XPartyGetUserList(XPARTY_USER_LIST *pUserList) { return S_OK; }
DWORD XContentGetThumbnail(DWORD dwUserIndex, const XCONTENT_DATA *pContentData, PBYTE pbThumbnail, PDWORD pcbThumbnail, PXOVERLAPPED *pOverlapped) { return 0; } DWORD XContentGetThumbnail(DWORD dwUserIndex, const XCONTENT_DATA *pContentData, PBYTE pbThumbnail, PDWORD pcbThumbnail, PXOVERLAPPED *pOverlapped) { return 0; }
void XShowAchievementsUI(int i) {} void XShowAchievementsUI(int i) {}
DWORD XBackgroundDownloadSetMode(XBACKGROUND_DOWNLOAD_MODE Mode) { return 0; } DWORD XBackgroundDownloadSetMode(XBACKGROUND_DOWNLOAD_MODE Mode) { return 0; }
DWORD XamBackgroundDownloadSetMode(XBACKGROUND_DOWNLOAD_MODE Mode) { return 0; }
#ifndef _DURANGO #ifndef _DURANGO
void PIXAddNamedCounter(int a, char *b, ...) {} void PIXAddNamedCounter(int a, char *b, ...) {}
@@ -355,7 +354,7 @@ DWORD XEnableGuestSignin(BOOL fEnable) { return 0; }
/////////////////////////////////////////////// Profile library /////////////////////////////////////////////// Profile library
#ifdef _WINDOWS64 #ifdef _WINDOWS64
static void *profileData[4]; static void *profileData[4];
static bool s_bProfileIsFullVersion = true; static bool s_bProfileIsFullVersion;
void C_4JProfile::Initialise( DWORD dwTitleID, void C_4JProfile::Initialise( DWORD dwTitleID,
DWORD dwOfferID, DWORD dwOfferID,
unsigned short usProfileVersion, unsigned short usProfileVersion,
@@ -374,7 +373,6 @@ void C_4JProfile::Initialise( DWORD dwTitleID,
GAME_SETTINGS *pGameSettings = (GAME_SETTINGS *)profileData[i]; GAME_SETTINGS *pGameSettings = (GAME_SETTINGS *)profileData[i];
pGameSettings->ucMenuSensitivity=100; //eGameSetting_Sensitivity_InMenu pGameSettings->ucMenuSensitivity=100; //eGameSetting_Sensitivity_InMenu
pGameSettings->ucInterfaceOpacity=80; //eGameSetting_Sensitivity_InMenu pGameSettings->ucInterfaceOpacity=80; //eGameSetting_Sensitivity_InMenu
pGameSettings->ucGamma=100; //eGameSetting_Gamma
pGameSettings->usBitmaskValues|=0x0200; //eGameSetting_DisplaySplitscreenGamertags - on pGameSettings->usBitmaskValues|=0x0200; //eGameSetting_DisplaySplitscreenGamertags - on
pGameSettings->usBitmaskValues|=0x0400; //eGameSetting_Hints - on pGameSettings->usBitmaskValues|=0x0400; //eGameSetting_Hints - on
pGameSettings->usBitmaskValues|=0x1000; //eGameSetting_Autosave - 2 pGameSettings->usBitmaskValues|=0x1000; //eGameSetting_Autosave - 2
@@ -438,95 +436,7 @@ DWORD IQNetPlayer::GetCurrentRtt() { return 0; }
bool IQNetPlayer::IsHost() { return m_isHostPlayer; } bool IQNetPlayer::IsHost() { return m_isHostPlayer; }
bool IQNetPlayer::IsGuest() { return false; } bool IQNetPlayer::IsGuest() { return false; }
bool IQNetPlayer::IsLocal() { return !m_isRemote; } bool IQNetPlayer::IsLocal() { return !m_isRemote; }
static void Win64_BuildSplitName(int iPad, char *outName, int outSize); PlayerUID IQNetPlayer::GetXuid() { return (PlayerUID)(0xe000d45248242f2e + m_smallId); }
PlayerUID IQNetPlayer::GetXuid()
{
#if defined(_WINDOWS64) || defined(DISABLE_PSN) || defined(_DISABLE_XBLIVE)
if (!m_isRemote)
{
int idx = (int)(this - &IQNet::m_player[0]);
if (idx == 0)
{
extern char g_Win64Username[17];
return Win64_UsernameToXuid(g_Win64Username);
}
if (idx > 0 && idx < XUSER_MAX_COUNT)
{
char splitName[32];
Win64_BuildSplitName(idx, splitName, sizeof(splitName));
return Win64_UsernameToXuid(splitName);
}
}
#endif
return (PlayerUID)(0xe000d45248242f2e + m_smallId);
}
PlayerUID Win64_UsernameToXuid(const char* username)
{
uint64_t hash = 14695981039346656037ULL;
for (const char* p = username; *p; ++p)
{
hash ^= (uint64_t)(unsigned char)(*p);
hash *= 1099511628211ULL;
}
const uint64_t WIN64_XUID_BASE = 0xe000d45248242f2e;
if (hash >= WIN64_XUID_BASE && hash <= WIN64_XUID_BASE + MINECRAFT_NET_MAX_PLAYERS)
hash = WIN64_XUID_BASE + MINECRAFT_NET_MAX_PLAYERS + 1;
if (hash == 0)
hash = 1;
return (PlayerUID)hash;
}
PlayerUID Win64_UsernameToXuid(const wchar_t* username)
{
char narrow[64];
int i = 0;
for (; username[i] && i < 63; ++i)
narrow[i] = (char)(unsigned char)(username[i] & 0xFF);
narrow[i] = 0;
return Win64_UsernameToXuid(narrow);
}
static void Win64_BuildSplitName(int iPad, char *outName, int outSize)
{
extern char g_Win64Username[17];
char candidate[32];
sprintf(candidate, "%s_%d", g_Win64Username, iPad);
for (DWORD i = 0; i < MINECRAFT_NET_MAX_PLAYERS; i++)
{
if (!IQNet::m_player[i].m_isRemote) continue;
if (IQNet::m_player[i].m_gamertag[0] == 0) continue;
char remoteName[64];
int j = 0;
for (; IQNet::m_player[i].m_gamertag[j] && j < 63; ++j)
remoteName[j] = (char)(unsigned char)(IQNet::m_player[i].m_gamertag[j] & 0xFF);
remoteName[j] = 0;
#if defined(_MSC_VER)
if (_stricmp(candidate, remoteName) == 0)
#else
if (strcasecmp(candidate, remoteName) == 0)
#endif
{
sprintf(candidate, "%s_%d_L", g_Win64Username, iPad);
break;
}
}
strncpy(outName, candidate, outSize - 1);
outName[outSize - 1] = 0;
}
static void Win64_BuildSplitNameW(int iPad, wchar_t *outName, int outSize)
{
char narrow[32];
Win64_BuildSplitName(iPad, narrow, sizeof(narrow));
for (int i = 0; i < outSize - 1 && narrow[i]; ++i)
{
outName[i] = (wchar_t)(unsigned char)narrow[i];
outName[i + 1] = 0;
}
}
LPCWSTR IQNetPlayer::GetGamertag() { return m_gamertag; } LPCWSTR IQNetPlayer::GetGamertag() { return m_gamertag; }
int IQNetPlayer::GetSessionIndex() { return m_smallId; } int IQNetPlayer::GetSessionIndex() { return m_smallId; }
bool IQNetPlayer::IsTalking() { return false; } bool IQNetPlayer::IsTalking() { return false; }
@@ -547,8 +457,6 @@ bool IQNet::s_isHosting = true;
QNET_STATE _iQNetStubState = QNET_STATE_IDLE; QNET_STATE _iQNetStubState = QNET_STATE_IDLE;
bool g_connectedToDedicatedServer = false;
void Win64_SetupRemoteQNetPlayer(IQNetPlayer *player, BYTE smallId, bool isHost, bool isLocal) void Win64_SetupRemoteQNetPlayer(IQNetPlayer *player, BYTE smallId, bool isHost, bool isLocal)
{ {
player->m_smallId = smallId; player->m_smallId = smallId;
@@ -561,30 +469,15 @@ void Win64_SetupRemoteQNetPlayer(IQNetPlayer *player, BYTE smallId, bool isHost,
static bool Win64_IsActivePlayer(IQNetPlayer *p, DWORD index); static bool Win64_IsActivePlayer(IQNetPlayer *p, DWORD index);
HRESULT IQNet::AddLocalPlayerByUserIndex(DWORD dwUserIndex) HRESULT IQNet::AddLocalPlayerByUserIndex(DWORD dwUserIndex){ return S_OK; }
{
// no E_FAIL on PS3.
if (dwUserIndex >= MINECRAFT_NET_MAX_PLAYERS) return (HRESULT)0x80004005L;
m_player[dwUserIndex].m_isRemote = false;
m_player[dwUserIndex].m_smallId = (BYTE)dwUserIndex;
if (dwUserIndex > 0)
{
wchar_t splitNameW[32];
Win64_BuildSplitNameW((int)dwUserIndex, splitNameW, 32);
wcsncpy(m_player[dwUserIndex].m_gamertag, splitNameW, 32 - 1);
m_player[dwUserIndex].m_gamertag[32 - 1] = 0;
}
if (dwUserIndex >= (DWORD)s_playerCount)
s_playerCount = dwUserIndex + 1;
return S_OK;
}
IQNetPlayer *IQNet::GetHostPlayer() { return &m_player[0]; } IQNetPlayer *IQNet::GetHostPlayer() { return &m_player[0]; }
IQNetPlayer *IQNet::GetLocalPlayerByUserIndex(DWORD dwUserIndex) IQNetPlayer *IQNet::GetLocalPlayerByUserIndex(DWORD dwUserIndex)
{ {
if (s_isHosting) if (s_isHosting)
{ {
if (dwUserIndex < MINECRAFT_NET_MAX_PLAYERS && if (dwUserIndex < MINECRAFT_NET_MAX_PLAYERS &&
!m_player[dwUserIndex].m_isRemote) !m_player[dwUserIndex].m_isRemote &&
Win64_IsActivePlayer(&m_player[dwUserIndex], dwUserIndex))
return &m_player[dwUserIndex]; return &m_player[dwUserIndex];
return NULL; return NULL;
} }
@@ -599,15 +492,8 @@ IQNetPlayer *IQNet::GetLocalPlayerByUserIndex(DWORD dwUserIndex)
} }
static bool Win64_IsActivePlayer(IQNetPlayer *p, DWORD index) static bool Win64_IsActivePlayer(IQNetPlayer *p, DWORD index)
{ {
if (index == 0) if (index == 0) return true;
{ return (p->GetCustomDataValue() != 0);
extern bool g_connectedToDedicatedServer;
if (g_connectedToDedicatedServer && !IQNet::s_isHosting)
return false;
return true;
}
if (p->GetCustomDataValue() != 0) return true;
return (p->m_isRemote && p->m_gamertag[0] != 0);
} }
IQNetPlayer *IQNet::GetPlayerByIndex(DWORD dwPlayerIndex) IQNetPlayer *IQNet::GetPlayerByIndex(DWORD dwPlayerIndex)
@@ -688,7 +574,7 @@ void C_4JProfile::SetTrialTextStringTable(CXuiStringTable *pStringTable,int i
void C_4JProfile::SetTrialAwardText(eAwardType AwardType,int iTitle,int iText) {} void C_4JProfile::SetTrialAwardText(eAwardType AwardType,int iTitle,int iText) {}
int C_4JProfile::GetLockedProfile() { return 0; } int C_4JProfile::GetLockedProfile() { return 0; }
void C_4JProfile::SetLockedProfile(int iProf) {} void C_4JProfile::SetLockedProfile(int iProf) {}
bool C_4JProfile::IsSignedIn(int iQuadrant) { return (iQuadrant >= 0 && iQuadrant < XUSER_MAX_COUNT); } bool C_4JProfile::IsSignedIn(int iQuadrant) { return ( iQuadrant == 0); }
bool C_4JProfile::IsSignedInLive(int iProf) { return true; } bool C_4JProfile::IsSignedInLive(int iProf) { return true; }
bool C_4JProfile::IsGuest(int iQuadrant) { return false; } bool C_4JProfile::IsGuest(int iQuadrant) { return false; }
UINT C_4JProfile::RequestSignInUI(bool bFromInvite,bool bLocalGame,bool bNoGuestsAllowed,bool bMultiplayerSignIn,bool bAddUser, int( *Func)(LPVOID,const bool, const int iPad),LPVOID lpParam,int iQuadrant) { return 0; } UINT C_4JProfile::RequestSignInUI(bool bFromInvite,bool bLocalGame,bool bNoGuestsAllowed,bool bMultiplayerSignIn,bool bAddUser, int( *Func)(LPVOID,const bool, const int iPad),LPVOID lpParam,int iQuadrant) { return 0; }
@@ -698,21 +584,16 @@ void C_4JProfile::SetPrimaryPlayerChanged(bool bVal) {}
bool C_4JProfile::QuerySigninStatus(void) { return true; } bool C_4JProfile::QuerySigninStatus(void) { return true; }
void C_4JProfile::GetXUID(int iPad, PlayerUID *pXuid,bool bOnlineXuid) void C_4JProfile::GetXUID(int iPad, PlayerUID *pXuid,bool bOnlineXuid)
{ {
if (iPad == 0) if (iPad != 0)
{ {
extern char g_Win64Username[17]; // previously INVALID_XUID
*pXuid = Win64_UsernameToXuid(g_Win64Username); *pXuid = 0;
} return;
else if (iPad > 0 && iPad < XUSER_MAX_COUNT)
{
char splitName[32];
Win64_BuildSplitName(iPad, splitName, sizeof(splitName));
*pXuid = Win64_UsernameToXuid(splitName);
} }
if (IQNet::s_isHosting)
*pXuid = 0xe000d45248242f2e;
else else
{ *pXuid = 0xe000d45248242f2e + NetworkSocketLayer::GetLocalSmallId();
*pXuid = INVALID_XUID;
}
} }
BOOL C_4JProfile::AreXUIDSEqual(PlayerUID xuid1,PlayerUID xuid2) { return xuid1 == xuid2; } BOOL C_4JProfile::AreXUIDSEqual(PlayerUID xuid1,PlayerUID xuid2) { return xuid1 == xuid2; }
BOOL C_4JProfile::XUIDIsGuest(PlayerUID xuid) { return false; } BOOL C_4JProfile::XUIDIsGuest(PlayerUID xuid) { return false; }
@@ -741,30 +622,8 @@ char fakeGamerTag[32] = "PlayerName";
void SetFakeGamertag(char *name){ strcpy_s(fakeGamerTag, name); } void SetFakeGamertag(char *name){ strcpy_s(fakeGamerTag, name); }
char* C_4JProfile::GetGamertag(int iPad){ return fakeGamerTag; } char* C_4JProfile::GetGamertag(int iPad){ return fakeGamerTag; }
#else #else
static char s_win64SplitNames[4][32]; char* C_4JProfile::GetGamertag(int iPad){ extern char g_Win64Username[17]; return g_Win64Username; }
char* C_4JProfile::GetGamertag(int iPad) wstring C_4JProfile::GetDisplayName(int iPad){ extern wchar_t g_Win64UsernameW[17]; return g_Win64UsernameW; }
{
extern char g_Win64Username[17];
if (iPad == 0) return g_Win64Username;
if (iPad > 0 && iPad < XUSER_MAX_COUNT)
{
Win64_BuildSplitName(iPad, s_win64SplitNames[iPad], sizeof(s_win64SplitNames[iPad]));
return s_win64SplitNames[iPad];
}
return g_Win64Username;
}
wstring C_4JProfile::GetDisplayName(int iPad)
{
extern wchar_t g_Win64UsernameW[17];
if (iPad == 0) return g_Win64UsernameW;
if (iPad > 0 && iPad < XUSER_MAX_COUNT)
{
wchar_t buf[32];
Win64_BuildSplitNameW(iPad, buf, 32);
return buf;
}
return g_Win64UsernameW;
}
#endif #endif
bool C_4JProfile::IsFullVersion() { return s_bProfileIsFullVersion; } bool C_4JProfile::IsFullVersion() { return s_bProfileIsFullVersion; }
void C_4JProfile::SetSignInChangeCallback(void ( *Func)(LPVOID, bool, unsigned int),LPVOID lpParam) {} void C_4JProfile::SetSignInChangeCallback(void ( *Func)(LPVOID, bool, unsigned int),LPVOID lpParam) {}
+27 -33
View File
@@ -105,6 +105,8 @@ GameRenderer::GameRenderer(Minecraft *mc)
zoom = 1; zoom = 1;
zoom_x = 0; zoom_x = 0;
zoom_y = 0; zoom_y = 0;
rainXa = NULL;
rainZa = NULL;
lastActiveTime = Minecraft::currentTimeMillis(); lastActiveTime = Minecraft::currentTimeMillis();
lastNsTime = 0; lastNsTime = 0;
random = new Random(); random = new Random();
@@ -179,9 +181,8 @@ GameRenderer::GameRenderer(Minecraft *mc)
// 4J Stu Added to go with 1.8.2 change // 4J Stu Added to go with 1.8.2 change
GameRenderer::~GameRenderer() GameRenderer::~GameRenderer()
{ {
delete random; if(rainXa != NULL) delete [] rainXa;
delete cameraPos; if(rainZa != NULL) delete [] rainZa;
delete lb;
} }
void GameRenderer::tick(bool first) // 4J - add bFirst void GameRenderer::tick(bool first) // 4J - add bFirst
@@ -837,21 +838,19 @@ void GameRenderer::updateLightTexture(float a)
Level *level = player->level; // 4J - was mc->level when it was just to update the one light texture Level *level = player->level; // 4J - was mc->level when it was just to update the one light texture
float skyDarken1 = level->getSkyDarken((float) 1); float skyDarken1 = level->getSkyDarken((float) 1);
float darken = skyDarken1 * 0.95f + 0.05f;
float rsGsMul = skyDarken1 * 0.65f + 0.35f;
float blockMul = blr * 0.1f + 1.5f;
for (int i = 0; i < 256; i++) for (int i = 0; i < 256; i++)
{ {
float darken = skyDarken1 * 0.95f + 0.05f;
float sky = level->dimension->brightnessRamp[i / 16] * darken; float sky = level->dimension->brightnessRamp[i / 16] * darken;
float block = level->dimension->brightnessRamp[i % 16] * blockMul; float block = level->dimension->brightnessRamp[i % 16] * (blr * 0.1f + 1.5f);
if (level->skyFlashTime > 0) if (level->skyFlashTime > 0)
{ {
sky = level->dimension->brightnessRamp[i / 16]; sky = level->dimension->brightnessRamp[i / 16];
} }
float rs = sky * rsGsMul; float rs = sky * (skyDarken1 * 0.65f + 0.35f);
float gs = sky * rsGsMul; float gs = sky * (skyDarken1 * 0.65f + 0.35f);
float bs = sky; float bs = sky;
float rb = block; float rb = block;
@@ -1527,30 +1526,27 @@ void GameRenderer::tickRain()
int x = x0 + random->nextInt(r) - random->nextInt(r); int x = x0 + random->nextInt(r) - random->nextInt(r);
int z = z0 + random->nextInt(r) - random->nextInt(r); int z = z0 + random->nextInt(r) - random->nextInt(r);
int y = level->getTopRainBlock(x, z); int y = level->getTopRainBlock(x, z);
if (y <= y0 + r && y >= y0 - r) int t = level->getTile(x, y - 1, z);
Biome *biome = level->getBiome(x,z);
if (y <= y0 + r && y >= y0 - r && biome->hasRain() && biome->getTemperature() >= 0.2f)
{ {
int t = level->getTile(x, y - 1, z); float xa = random->nextFloat();
Biome *biome = level->getBiome(x,z); float za = random->nextFloat();
if (biome->hasRain() && biome->getTemperature() >= 0.2f) if (t > 0)
{ {
float xa = random->nextFloat(); if (Tile::tiles[t]->material == Material::lava)
float za = random->nextFloat();
if (t > 0)
{ {
if (Tile::tiles[t]->material == Material::lava) mc->particleEngine->add( shared_ptr<SmokeParticle>( new SmokeParticle(level, x + xa, y + 0.1f - Tile::tiles[t]->getShapeY0(), z + za, 0, 0, 0) ) );
}
else
{
if (random->nextInt(++rainPosSamples) == 0)
{ {
mc->particleEngine->add( shared_ptr<SmokeParticle>( new SmokeParticle(level, x + xa, y + 0.1f - Tile::tiles[t]->getShapeY0(), z + za, 0, 0, 0) ) ); rainPosX = x + xa;
} rainPosY = y + 0.1f - Tile::tiles[t]->getShapeY0();
else rainPosZ = z + za;
{
if (random->nextInt(++rainPosSamples) == 0)
{
rainPosX = x + xa;
rainPosY = y + 0.1f - Tile::tiles[t]->getShapeY0();
rainPosZ = z + za;
}
mc->particleEngine->add( shared_ptr<WaterDropParticle>( new WaterDropParticle(level, x + xa, y + 0.1f - Tile::tiles[t]->getShapeY0(), z + za) ) );
} }
mc->particleEngine->add( shared_ptr<WaterDropParticle>( new WaterDropParticle(level, x + xa, y + 0.1f - Tile::tiles[t]->getShapeY0(), z + za) ) );
} }
} }
} }
@@ -1585,12 +1581,10 @@ void GameRenderer::renderSnowAndRain(float a)
turnOnLightLayer(a); turnOnLightLayer(a);
static float rainXa[32 * 32]; if (rainXa == NULL)
static float rainZa[32 * 32];
static bool rainArraysInitialized = false;
if (!rainArraysInitialized)
{ {
rainArraysInitialized = true; rainXa = new float[32 * 32];
rainZa = new float[32 * 32];
for (int z = 0; z < 32; z++) for (int z = 0; z < 32; z++)
{ {
+2
View File
@@ -128,6 +128,8 @@ private:
void tickRain(); void tickRain();
private: private:
// 4J - brought forward from 1.8.2 // 4J - brought forward from 1.8.2
float *rainXa;
float *rainZa;
protected: protected:
void renderSnowAndRain(float a); void renderSnowAndRain(float a);
volatile int xMod; volatile int xMod;
+4 -4
View File
@@ -10,7 +10,7 @@ ResourceLocation HorseRenderer::HORSE_DONKEY_LOCATION = ResourceLocation(TN_MOB_
ResourceLocation HorseRenderer::HORSE_ZOMBIE_LOCATION = ResourceLocation(TN_MOB_HORSE_ZOMBIE); ResourceLocation HorseRenderer::HORSE_ZOMBIE_LOCATION = ResourceLocation(TN_MOB_HORSE_ZOMBIE);
ResourceLocation HorseRenderer::HORSE_SKELETON_LOCATION = ResourceLocation(TN_MOB_HORSE_SKELETON); ResourceLocation HorseRenderer::HORSE_SKELETON_LOCATION = ResourceLocation(TN_MOB_HORSE_SKELETON);
std::map<wstring, ResourceLocation> HorseRenderer::LAYERED_LOCATION_CACHE; std::map<wstring, ResourceLocation *> HorseRenderer::LAYERED_LOCATION_CACHE;
HorseRenderer::HorseRenderer(Model *model, float f) : MobRenderer(model, f) HorseRenderer::HorseRenderer(Model *model, float f) : MobRenderer(model, f)
{ {
@@ -114,14 +114,14 @@ ResourceLocation *HorseRenderer::getOrCreateLayeredTextureLocation(shared_ptr<En
ResourceLocation *location; ResourceLocation *location;
if (it != LAYERED_LOCATION_CACHE.end()) if (it != LAYERED_LOCATION_CACHE.end())
{ {
location = &(it->second); location = it->second;
} }
else else
{ {
LAYERED_LOCATION_CACHE[textureName] = ResourceLocation(horse->getLayeredTextureLayers()); LAYERED_LOCATION_CACHE[textureName] = new ResourceLocation(horse->getLayeredTextureLayers());
it = LAYERED_LOCATION_CACHE.find(textureName); it = LAYERED_LOCATION_CACHE.find(textureName);
location = &(it->second); location = it->second;
} }
return location; return location;
+1 -1
View File
@@ -8,7 +8,7 @@ class PathfinderMob;
class HorseRenderer : public MobRenderer class HorseRenderer : public MobRenderer
{ {
private: private:
static std::map<wstring, ResourceLocation> LAYERED_LOCATION_CACHE; static std::map<wstring, ResourceLocation *> LAYERED_LOCATION_CACHE;
static ResourceLocation HORSE_LOCATION; static ResourceLocation HORSE_LOCATION;
static ResourceLocation HORSE_MULE_LOCATION; static ResourceLocation HORSE_MULE_LOCATION;
-4
View File
@@ -1964,11 +1964,7 @@ bool LevelRenderer::updateDirtyChunks()
{ {
if( (!onlyRebuild) || if( (!onlyRebuild) ||
globalChunkFlags[ pClipChunk->globalIdx ] & CHUNK_FLAG_COMPILED || globalChunkFlags[ pClipChunk->globalIdx ] & CHUNK_FLAG_COMPILED ||
#ifdef _WINDOWS64
( distSq < 96 * 96 ) ) // Always rebuild really near things or else building (say) at tower up into empty blocks when we are low on memory will not create render data
#else
( distSq < 20 * 20 ) ) // Always rebuild really near things or else building (say) at tower up into empty blocks when we are low on memory will not create render data ( distSq < 20 * 20 ) ) // Always rebuild really near things or else building (say) at tower up into empty blocks when we are low on memory will not create render data
#endif
{ {
considered++; considered++;
// Is this chunk nearer than our nearest? // Is this chunk nearer than our nearest?
+1 -3
View File
@@ -52,9 +52,7 @@ public:
static const int CHUNK_SIZE = 16; static const int CHUNK_SIZE = 16;
#endif #endif
static const int CHUNK_Y_COUNT = Level::maxBuildHeight / CHUNK_SIZE; static const int CHUNK_Y_COUNT = Level::maxBuildHeight / CHUNK_SIZE;
#if defined _WINDOWS64 #if ( defined _XBOX_ONE || defined _WINDOWS64 )
static const int MAX_COMMANDBUFFER_ALLOCATIONS = 2047 * 1024 * 1024; // whisper - added (wow)
#elif ( defined _XBOX_ONE )
static const int MAX_COMMANDBUFFER_ALLOCATIONS = 512 * 1024 * 1024; // 4J - added static const int MAX_COMMANDBUFFER_ALLOCATIONS = 512 * 1024 * 1024; // 4J - added
#elif defined __ORBIS__ #elif defined __ORBIS__
static const int MAX_COMMANDBUFFER_ALLOCATIONS = 448 * 1024 * 1024; // 4J - added - hard limit is 512 so giving a lot of headroom here for fragmentation (have seen 16MB lost to fragmentation in multiplayer crash dump before) static const int MAX_COMMANDBUFFER_ALLOCATIONS = 448 * 1024 * 1024; // 4J - added - hard limit is 512 so giving a lot of headroom here for fragmentation (have seen 16MB lost to fragmentation in multiplayer crash dump before)
+3 -3
View File
@@ -531,7 +531,7 @@ void LivingEntityRenderer::renderNameTag(shared_ptr<LivingEntity> mob, const wst
int offs = 0; int offs = 0;
wstring playerName; wstring playerName;
WCHAR wchName[8]; WCHAR wchName[2];
if(mob->instanceof(eTYPE_PLAYER)) if(mob->instanceof(eTYPE_PLAYER))
{ {
@@ -551,7 +551,7 @@ void LivingEntityRenderer::renderNameTag(shared_ptr<LivingEntity> mob, const wst
} }
else else
{ {
memset(wchName,0,sizeof(wchName)); memset(wchName,0,sizeof(WCHAR)*2);
swprintf(wchName, 2, L"%d",player->getPlayerIndex()+1); swprintf(wchName, 2, L"%d",player->getPlayerIndex()+1);
playerName=wchName; playerName=wchName;
player->SetPlayerNameValidState(false); player->SetPlayerNameValidState(false);
@@ -561,7 +561,7 @@ void LivingEntityRenderer::renderNameTag(shared_ptr<LivingEntity> mob, const wst
playerName=name; playerName=name;
break; break;
case Player::ePlayerNameValid_False: case Player::ePlayerNameValid_False:
memset(wchName,0,sizeof(wchName)d); memset(wchName,0,sizeof(WCHAR)*2);
swprintf(wchName, 2, L"%d",player->getPlayerIndex()+1); swprintf(wchName, 2, L"%d",player->getPlayerIndex()+1);
playerName=wchName; playerName=wchName;
break; break;
+228 -196
View File
@@ -1027,7 +1027,7 @@ xcopy /q /y /i /s /e $(ProjectDir)DurangoMedia\CU $(LayoutDir)Image\Loose\CU</C
<BufferSecurityCheck>false</BufferSecurityCheck> <BufferSecurityCheck>false</BufferSecurityCheck>
<PrecompiledHeaderOutputFile>$(OutDir)$(ProjectName).pch</PrecompiledHeaderOutputFile> <PrecompiledHeaderOutputFile>$(OutDir)$(ProjectName).pch</PrecompiledHeaderOutputFile>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary> <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<PreprocessorDefinitions>_LARGE_WORLDS;_DEBUG_MENUS_ENABLED;_CRT_NON_CONFORMING_SWPRINTFS;_CRT_SECURE_NO_WARNINGS;_WINDOWS64;%(PreprocessorDefinitions)</PreprocessorDefinitions> <PreprocessorDefinitions>_DEBUG_MENUS_ENABLED;_CRT_NON_CONFORMING_SWPRINTFS;_CRT_SECURE_NO_WARNINGS;_WINDOWS64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<CallAttributedProfiling>Disabled</CallAttributedProfiling> <CallAttributedProfiling>Disabled</CallAttributedProfiling>
<AdditionalIncludeDirectories>Windows64\Iggy\include;$(ProjectDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>Windows64\Iggy\include;$(ProjectDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<RuntimeTypeInfo>true</RuntimeTypeInfo> <RuntimeTypeInfo>true</RuntimeTypeInfo>
@@ -4085,6 +4085,7 @@ xcopy /q /y /i /s /e $(ProjectDir)Durango\CU $(LayoutDir)Image\Loose\CU</Comman
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|ORBIS'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|ORBIS'">true</ExcludedFromBuild>
</ClInclude> </ClInclude>
<ClInclude Include="Common\Network\NetworkSocketLayer.h" /> <ClInclude Include="Common\Network\NetworkSocketLayer.h" />
<ClInclude Include="Common\LivePrivileges.h" />
<ClInclude Include="Common\Potion_Macros.h" /> <ClInclude Include="Common\Potion_Macros.h" />
<ClInclude Include="Common\Telemetry\TelemetryManager.h" /> <ClInclude Include="Common\Telemetry\TelemetryManager.h" />
<ClInclude Include="Common\Trial\TrialMode.h" /> <ClInclude Include="Common\Trial\TrialMode.h" />
@@ -16586,6 +16587,7 @@ xcopy /q /y /i /s /e $(ProjectDir)Durango\CU $(LayoutDir)Image\Loose\CU</Comman
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='CONTENTPACKAGE_SYMBOLS|Xbox 360'">false</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='CONTENTPACKAGE_SYMBOLS|Xbox 360'">false</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ReleaseForArt|Xbox 360'">false</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ReleaseForArt|Xbox 360'">false</ExcludedFromBuild>
</ClInclude> </ClInclude>
<ClInclude Include="Xbox\Network\extra.h" />
<ClInclude Include="Xbox\Network\NetworkPlayerXbox.h"> <ClInclude Include="Xbox\Network\NetworkPlayerXbox.h">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Durango'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Durango'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Durango'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Durango'">true</ExcludedFromBuild>
@@ -23464,18 +23466,6 @@ xcopy /q /y /i /s /e $(ProjectDir)Durango\CU $(LayoutDir)Image\Loose\CU</Comman
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|PS3'">false</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|PS3'">false</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ContentPackage_Vita|PS3'">false</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ContentPackage_Vita|PS3'">false</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|PSVita'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|PSVita'">true</ExcludedFromBuild>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='ContentPackage|Xbox 360'">CompileAsC</CompileAs>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='CONTENTPACKAGE_SYMBOLS|Xbox 360'">CompileAsC</CompileAs>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='ReleaseForArt|Xbox 360'">CompileAsC</CompileAs>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='ContentPackage_NO_TU|Xbox 360'">CompileAsC</CompileAs>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Xbox 360'">CompileAsC</CompileAs>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Xbox 360'">CompileAsC</CompileAs>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ContentPackage|Xbox 360'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='CONTENTPACKAGE_SYMBOLS|Xbox 360'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ReleaseForArt|Xbox 360'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ContentPackage_NO_TU|Xbox 360'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Xbox 360'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Xbox 360'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ContentPackage|x64'">NotUsing</PrecompiledHeader> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ContentPackage|x64'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='CONTENTPACKAGE_SYMBOLS|x64'">NotUsing</PrecompiledHeader> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='CONTENTPACKAGE_SYMBOLS|x64'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ReleaseForArt|x64'">NotUsing</PrecompiledHeader> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ReleaseForArt|x64'">NotUsing</PrecompiledHeader>
@@ -23500,7 +23490,21 @@ xcopy /q /y /i /s /e $(ProjectDir)Durango\CU $(LayoutDir)Image\Loose\CU</Comman
<StringPooling Condition="'$(Configuration)|$(Platform)'=='ContentPackage|Durango'"> <StringPooling Condition="'$(Configuration)|$(Platform)'=='ContentPackage|Durango'">
</StringPooling> </StringPooling>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ContentPackage|Durango'">NotUsing</PrecompiledHeader> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ContentPackage|Durango'">NotUsing</PrecompiledHeader>
</ClCompile> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ContentPackage|Xbox 360'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='CONTENTPACKAGE_SYMBOLS|Xbox 360'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ReleaseForArt|Xbox 360'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ContentPackage_NO_TU|Xbox 360'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Xbox 360'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Xbox 360'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ContentPackage_Vita|Xbox 360'">NotUsing</PrecompiledHeader>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='ContentPackage|Xbox 360'">CompileAsC</CompileAs>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='CONTENTPACKAGE_SYMBOLS|Xbox 360'">CompileAsC</CompileAs>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='ReleaseForArt|Xbox 360'">CompileAsC</CompileAs>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='ContentPackage_NO_TU|Xbox 360'">CompileAsC</CompileAs>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Xbox 360'">CompileAsC</CompileAs>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Xbox 360'">CompileAsC</CompileAs>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='ContentPackage_Vita|Xbox 360'">CompileAsC</CompileAs>
</ClCompile>
<ClCompile Include="Common\zlib\compress.c"> <ClCompile Include="Common\zlib\compress.c">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ContentPackage|Xbox 360'">false</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ContentPackage|Xbox 360'">false</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='CONTENTPACKAGE_SYMBOLS|Xbox 360'">false</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='CONTENTPACKAGE_SYMBOLS|Xbox 360'">false</ExcludedFromBuild>
@@ -23522,18 +23526,6 @@ xcopy /q /y /i /s /e $(ProjectDir)Durango\CU $(LayoutDir)Image\Loose\CU</Comman
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|PS3'">false</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|PS3'">false</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ContentPackage_Vita|PS3'">false</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ContentPackage_Vita|PS3'">false</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|PSVita'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|PSVita'">true</ExcludedFromBuild>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='ContentPackage|Xbox 360'">CompileAsC</CompileAs>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='CONTENTPACKAGE_SYMBOLS|Xbox 360'">CompileAsC</CompileAs>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='ReleaseForArt|Xbox 360'">CompileAsC</CompileAs>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='ContentPackage_NO_TU|Xbox 360'">CompileAsC</CompileAs>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Xbox 360'">CompileAsC</CompileAs>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Xbox 360'">CompileAsC</CompileAs>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ContentPackage|Xbox 360'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='CONTENTPACKAGE_SYMBOLS|Xbox 360'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ReleaseForArt|Xbox 360'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ContentPackage_NO_TU|Xbox 360'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Xbox 360'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Xbox 360'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ContentPackage|x64'">NotUsing</PrecompiledHeader> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ContentPackage|x64'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='CONTENTPACKAGE_SYMBOLS|x64'">NotUsing</PrecompiledHeader> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='CONTENTPACKAGE_SYMBOLS|x64'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ReleaseForArt|x64'">NotUsing</PrecompiledHeader> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ReleaseForArt|x64'">NotUsing</PrecompiledHeader>
@@ -23556,7 +23548,21 @@ xcopy /q /y /i /s /e $(ProjectDir)Durango\CU $(LayoutDir)Image\Loose\CU</Comman
<CompileAsWinRT Condition="'$(Configuration)|$(Platform)'=='Debug|Durango'">false</CompileAsWinRT> <CompileAsWinRT Condition="'$(Configuration)|$(Platform)'=='Debug|Durango'">false</CompileAsWinRT>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ContentPackage|Durango'">NotUsing</PrecompiledHeader> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ContentPackage|Durango'">NotUsing</PrecompiledHeader>
<CompileAsWinRT Condition="'$(Configuration)|$(Platform)'=='ContentPackage|Durango'">false</CompileAsWinRT> <CompileAsWinRT Condition="'$(Configuration)|$(Platform)'=='ContentPackage|Durango'">false</CompileAsWinRT>
</ClCompile> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ContentPackage|Xbox 360'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='CONTENTPACKAGE_SYMBOLS|Xbox 360'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ReleaseForArt|Xbox 360'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ContentPackage_NO_TU|Xbox 360'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Xbox 360'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Xbox 360'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ContentPackage_Vita|Xbox 360'">NotUsing</PrecompiledHeader>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='ContentPackage|Xbox 360'">CompileAsC</CompileAs>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='CONTENTPACKAGE_SYMBOLS|Xbox 360'">CompileAsC</CompileAs>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='ReleaseForArt|Xbox 360'">CompileAsC</CompileAs>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='ContentPackage_NO_TU|Xbox 360'">CompileAsC</CompileAs>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Xbox 360'">CompileAsC</CompileAs>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Xbox 360'">CompileAsC</CompileAs>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='ContentPackage_Vita|Xbox 360'">CompileAsC</CompileAs>
</ClCompile>
<ClCompile Include="Common\zlib\crc32.c"> <ClCompile Include="Common\zlib\crc32.c">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ContentPackage|Xbox 360'">false</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ContentPackage|Xbox 360'">false</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='CONTENTPACKAGE_SYMBOLS|Xbox 360'">false</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='CONTENTPACKAGE_SYMBOLS|Xbox 360'">false</ExcludedFromBuild>
@@ -23578,18 +23584,6 @@ xcopy /q /y /i /s /e $(ProjectDir)Durango\CU $(LayoutDir)Image\Loose\CU</Comman
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|PS3'">false</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|PS3'">false</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ContentPackage_Vita|PS3'">false</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ContentPackage_Vita|PS3'">false</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|PSVita'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|PSVita'">true</ExcludedFromBuild>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='ContentPackage|Xbox 360'">CompileAsC</CompileAs>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='CONTENTPACKAGE_SYMBOLS|Xbox 360'">CompileAsC</CompileAs>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='ReleaseForArt|Xbox 360'">CompileAsC</CompileAs>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='ContentPackage_NO_TU|Xbox 360'">CompileAsC</CompileAs>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Xbox 360'">CompileAsC</CompileAs>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Xbox 360'">CompileAsC</CompileAs>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ContentPackage|Xbox 360'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='CONTENTPACKAGE_SYMBOLS|Xbox 360'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ReleaseForArt|Xbox 360'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ContentPackage_NO_TU|Xbox 360'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Xbox 360'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Xbox 360'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ContentPackage|x64'">NotUsing</PrecompiledHeader> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ContentPackage|x64'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='CONTENTPACKAGE_SYMBOLS|x64'">NotUsing</PrecompiledHeader> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='CONTENTPACKAGE_SYMBOLS|x64'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ReleaseForArt|x64'">NotUsing</PrecompiledHeader> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ReleaseForArt|x64'">NotUsing</PrecompiledHeader>
@@ -23612,7 +23606,21 @@ xcopy /q /y /i /s /e $(ProjectDir)Durango\CU $(LayoutDir)Image\Loose\CU</Comman
<CompileAsWinRT Condition="'$(Configuration)|$(Platform)'=='Debug|Durango'">false</CompileAsWinRT> <CompileAsWinRT Condition="'$(Configuration)|$(Platform)'=='Debug|Durango'">false</CompileAsWinRT>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ContentPackage|Durango'">NotUsing</PrecompiledHeader> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ContentPackage|Durango'">NotUsing</PrecompiledHeader>
<CompileAsWinRT Condition="'$(Configuration)|$(Platform)'=='ContentPackage|Durango'">false</CompileAsWinRT> <CompileAsWinRT Condition="'$(Configuration)|$(Platform)'=='ContentPackage|Durango'">false</CompileAsWinRT>
</ClCompile> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ContentPackage|Xbox 360'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='CONTENTPACKAGE_SYMBOLS|Xbox 360'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ReleaseForArt|Xbox 360'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ContentPackage_NO_TU|Xbox 360'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Xbox 360'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Xbox 360'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ContentPackage_Vita|Xbox 360'">NotUsing</PrecompiledHeader>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='ContentPackage|Xbox 360'">CompileAsC</CompileAs>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='CONTENTPACKAGE_SYMBOLS|Xbox 360'">CompileAsC</CompileAs>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='ReleaseForArt|Xbox 360'">CompileAsC</CompileAs>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='ContentPackage_NO_TU|Xbox 360'">CompileAsC</CompileAs>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Xbox 360'">CompileAsC</CompileAs>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Xbox 360'">CompileAsC</CompileAs>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='ContentPackage_Vita|Xbox 360'">CompileAsC</CompileAs>
</ClCompile>
<ClCompile Include="Common\zlib\deflate.c"> <ClCompile Include="Common\zlib\deflate.c">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ContentPackage|Xbox 360'">false</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ContentPackage|Xbox 360'">false</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='CONTENTPACKAGE_SYMBOLS|Xbox 360'">false</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='CONTENTPACKAGE_SYMBOLS|Xbox 360'">false</ExcludedFromBuild>
@@ -23634,18 +23642,6 @@ xcopy /q /y /i /s /e $(ProjectDir)Durango\CU $(LayoutDir)Image\Loose\CU</Comman
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|PS3'">false</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|PS3'">false</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ContentPackage_Vita|PS3'">false</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ContentPackage_Vita|PS3'">false</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|PSVita'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|PSVita'">true</ExcludedFromBuild>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='ContentPackage|Xbox 360'">CompileAsC</CompileAs>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='CONTENTPACKAGE_SYMBOLS|Xbox 360'">CompileAsC</CompileAs>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='ReleaseForArt|Xbox 360'">CompileAsC</CompileAs>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='ContentPackage_NO_TU|Xbox 360'">CompileAsC</CompileAs>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Xbox 360'">CompileAsC</CompileAs>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Xbox 360'">CompileAsC</CompileAs>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ContentPackage|Xbox 360'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='CONTENTPACKAGE_SYMBOLS|Xbox 360'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ReleaseForArt|Xbox 360'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ContentPackage_NO_TU|Xbox 360'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Xbox 360'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Xbox 360'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ContentPackage|x64'">NotUsing</PrecompiledHeader> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ContentPackage|x64'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='CONTENTPACKAGE_SYMBOLS|x64'">NotUsing</PrecompiledHeader> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='CONTENTPACKAGE_SYMBOLS|x64'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ReleaseForArt|x64'">NotUsing</PrecompiledHeader> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ReleaseForArt|x64'">NotUsing</PrecompiledHeader>
@@ -23668,7 +23664,21 @@ xcopy /q /y /i /s /e $(ProjectDir)Durango\CU $(LayoutDir)Image\Loose\CU</Comman
<CompileAsWinRT Condition="'$(Configuration)|$(Platform)'=='Debug|Durango'">false</CompileAsWinRT> <CompileAsWinRT Condition="'$(Configuration)|$(Platform)'=='Debug|Durango'">false</CompileAsWinRT>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ContentPackage|Durango'">NotUsing</PrecompiledHeader> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ContentPackage|Durango'">NotUsing</PrecompiledHeader>
<CompileAsWinRT Condition="'$(Configuration)|$(Platform)'=='ContentPackage|Durango'">false</CompileAsWinRT> <CompileAsWinRT Condition="'$(Configuration)|$(Platform)'=='ContentPackage|Durango'">false</CompileAsWinRT>
</ClCompile> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ContentPackage|Xbox 360'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='CONTENTPACKAGE_SYMBOLS|Xbox 360'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ReleaseForArt|Xbox 360'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ContentPackage_NO_TU|Xbox 360'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Xbox 360'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Xbox 360'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ContentPackage_Vita|Xbox 360'">NotUsing</PrecompiledHeader>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='ContentPackage|Xbox 360'">CompileAsC</CompileAs>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='CONTENTPACKAGE_SYMBOLS|Xbox 360'">CompileAsC</CompileAs>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='ReleaseForArt|Xbox 360'">CompileAsC</CompileAs>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='ContentPackage_NO_TU|Xbox 360'">CompileAsC</CompileAs>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Xbox 360'">CompileAsC</CompileAs>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Xbox 360'">CompileAsC</CompileAs>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='ContentPackage_Vita|Xbox 360'">CompileAsC</CompileAs>
</ClCompile>
<ClCompile Include="Common\zlib\gzclose.c"> <ClCompile Include="Common\zlib\gzclose.c">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ContentPackage|Xbox 360'">false</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ContentPackage|Xbox 360'">false</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='CONTENTPACKAGE_SYMBOLS|Xbox 360'">false</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='CONTENTPACKAGE_SYMBOLS|Xbox 360'">false</ExcludedFromBuild>
@@ -23690,18 +23700,6 @@ xcopy /q /y /i /s /e $(ProjectDir)Durango\CU $(LayoutDir)Image\Loose\CU</Comman
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|PS3'">false</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|PS3'">false</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ContentPackage_Vita|PS3'">false</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ContentPackage_Vita|PS3'">false</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|PSVita'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|PSVita'">true</ExcludedFromBuild>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='ContentPackage|Xbox 360'">CompileAsC</CompileAs>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='CONTENTPACKAGE_SYMBOLS|Xbox 360'">CompileAsC</CompileAs>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='ReleaseForArt|Xbox 360'">CompileAsC</CompileAs>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='ContentPackage_NO_TU|Xbox 360'">CompileAsC</CompileAs>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Xbox 360'">CompileAsC</CompileAs>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Xbox 360'">CompileAsC</CompileAs>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ContentPackage|Xbox 360'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='CONTENTPACKAGE_SYMBOLS|Xbox 360'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ReleaseForArt|Xbox 360'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ContentPackage_NO_TU|Xbox 360'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Xbox 360'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Xbox 360'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ContentPackage|x64'">NotUsing</PrecompiledHeader> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ContentPackage|x64'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='CONTENTPACKAGE_SYMBOLS|x64'">NotUsing</PrecompiledHeader> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='CONTENTPACKAGE_SYMBOLS|x64'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ReleaseForArt|x64'">NotUsing</PrecompiledHeader> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ReleaseForArt|x64'">NotUsing</PrecompiledHeader>
@@ -23731,7 +23729,21 @@ xcopy /q /y /i /s /e $(ProjectDir)Durango\CU $(LayoutDir)Image\Loose\CU</Comman
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ContentPackage_Vita|ORBIS'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ContentPackage_Vita|ORBIS'">true</ExcludedFromBuild>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ContentPackage|Durango'">NotUsing</PrecompiledHeader> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ContentPackage|Durango'">NotUsing</PrecompiledHeader>
<CompileAsWinRT Condition="'$(Configuration)|$(Platform)'=='ContentPackage|Durango'">false</CompileAsWinRT> <CompileAsWinRT Condition="'$(Configuration)|$(Platform)'=='ContentPackage|Durango'">false</CompileAsWinRT>
</ClCompile> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ContentPackage|Xbox 360'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='CONTENTPACKAGE_SYMBOLS|Xbox 360'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ReleaseForArt|Xbox 360'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ContentPackage_NO_TU|Xbox 360'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Xbox 360'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Xbox 360'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ContentPackage_Vita|Xbox 360'">NotUsing</PrecompiledHeader>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='ContentPackage|Xbox 360'">CompileAsC</CompileAs>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='CONTENTPACKAGE_SYMBOLS|Xbox 360'">CompileAsC</CompileAs>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='ReleaseForArt|Xbox 360'">CompileAsC</CompileAs>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='ContentPackage_NO_TU|Xbox 360'">CompileAsC</CompileAs>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Xbox 360'">CompileAsC</CompileAs>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Xbox 360'">CompileAsC</CompileAs>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='ContentPackage_Vita|Xbox 360'">CompileAsC</CompileAs>
</ClCompile>
<ClCompile Include="Common\zlib\gzlib.c"> <ClCompile Include="Common\zlib\gzlib.c">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ContentPackage|Xbox 360'">false</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ContentPackage|Xbox 360'">false</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='CONTENTPACKAGE_SYMBOLS|Xbox 360'">false</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='CONTENTPACKAGE_SYMBOLS|Xbox 360'">false</ExcludedFromBuild>
@@ -23753,18 +23765,6 @@ xcopy /q /y /i /s /e $(ProjectDir)Durango\CU $(LayoutDir)Image\Loose\CU</Comman
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|PS3'">false</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|PS3'">false</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ContentPackage_Vita|PS3'">false</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ContentPackage_Vita|PS3'">false</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|PSVita'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|PSVita'">true</ExcludedFromBuild>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='ContentPackage|Xbox 360'">CompileAsC</CompileAs>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='CONTENTPACKAGE_SYMBOLS|Xbox 360'">CompileAsC</CompileAs>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='ReleaseForArt|Xbox 360'">CompileAsC</CompileAs>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='ContentPackage_NO_TU|Xbox 360'">CompileAsC</CompileAs>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Xbox 360'">CompileAsC</CompileAs>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Xbox 360'">CompileAsC</CompileAs>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ContentPackage|Xbox 360'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='CONTENTPACKAGE_SYMBOLS|Xbox 360'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ReleaseForArt|Xbox 360'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ContentPackage_NO_TU|Xbox 360'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Xbox 360'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Xbox 360'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ContentPackage|x64'">NotUsing</PrecompiledHeader> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ContentPackage|x64'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='CONTENTPACKAGE_SYMBOLS|x64'">NotUsing</PrecompiledHeader> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='CONTENTPACKAGE_SYMBOLS|x64'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ReleaseForArt|x64'">NotUsing</PrecompiledHeader> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ReleaseForArt|x64'">NotUsing</PrecompiledHeader>
@@ -23794,7 +23794,21 @@ xcopy /q /y /i /s /e $(ProjectDir)Durango\CU $(LayoutDir)Image\Loose\CU</Comman
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ContentPackage_Vita|ORBIS'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ContentPackage_Vita|ORBIS'">true</ExcludedFromBuild>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ContentPackage|Durango'">NotUsing</PrecompiledHeader> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ContentPackage|Durango'">NotUsing</PrecompiledHeader>
<CompileAsWinRT Condition="'$(Configuration)|$(Platform)'=='ContentPackage|Durango'">false</CompileAsWinRT> <CompileAsWinRT Condition="'$(Configuration)|$(Platform)'=='ContentPackage|Durango'">false</CompileAsWinRT>
</ClCompile> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ContentPackage|Xbox 360'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='CONTENTPACKAGE_SYMBOLS|Xbox 360'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ReleaseForArt|Xbox 360'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ContentPackage_NO_TU|Xbox 360'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Xbox 360'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Xbox 360'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ContentPackage_Vita|Xbox 360'">NotUsing</PrecompiledHeader>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='ContentPackage|Xbox 360'">CompileAsC</CompileAs>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='CONTENTPACKAGE_SYMBOLS|Xbox 360'">CompileAsC</CompileAs>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='ReleaseForArt|Xbox 360'">CompileAsC</CompileAs>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='ContentPackage_NO_TU|Xbox 360'">CompileAsC</CompileAs>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Xbox 360'">CompileAsC</CompileAs>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Xbox 360'">CompileAsC</CompileAs>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='ContentPackage_Vita|Xbox 360'">CompileAsC</CompileAs>
</ClCompile>
<ClCompile Include="Common\zlib\gzread.c"> <ClCompile Include="Common\zlib\gzread.c">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ContentPackage|Xbox 360'">false</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ContentPackage|Xbox 360'">false</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='CONTENTPACKAGE_SYMBOLS|Xbox 360'">false</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='CONTENTPACKAGE_SYMBOLS|Xbox 360'">false</ExcludedFromBuild>
@@ -23816,18 +23830,6 @@ xcopy /q /y /i /s /e $(ProjectDir)Durango\CU $(LayoutDir)Image\Loose\CU</Comman
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|PS3'">false</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|PS3'">false</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ContentPackage_Vita|PS3'">false</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ContentPackage_Vita|PS3'">false</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|PSVita'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|PSVita'">true</ExcludedFromBuild>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='ContentPackage|Xbox 360'">CompileAsC</CompileAs>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='CONTENTPACKAGE_SYMBOLS|Xbox 360'">CompileAsC</CompileAs>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='ReleaseForArt|Xbox 360'">CompileAsC</CompileAs>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='ContentPackage_NO_TU|Xbox 360'">CompileAsC</CompileAs>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Xbox 360'">CompileAsC</CompileAs>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Xbox 360'">CompileAsC</CompileAs>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ContentPackage|Xbox 360'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='CONTENTPACKAGE_SYMBOLS|Xbox 360'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ReleaseForArt|Xbox 360'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ContentPackage_NO_TU|Xbox 360'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Xbox 360'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Xbox 360'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ContentPackage|x64'">NotUsing</PrecompiledHeader> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ContentPackage|x64'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='CONTENTPACKAGE_SYMBOLS|x64'">NotUsing</PrecompiledHeader> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='CONTENTPACKAGE_SYMBOLS|x64'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ReleaseForArt|x64'">NotUsing</PrecompiledHeader> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ReleaseForArt|x64'">NotUsing</PrecompiledHeader>
@@ -23857,7 +23859,21 @@ xcopy /q /y /i /s /e $(ProjectDir)Durango\CU $(LayoutDir)Image\Loose\CU</Comman
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ContentPackage_Vita|ORBIS'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ContentPackage_Vita|ORBIS'">true</ExcludedFromBuild>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ContentPackage|Durango'">NotUsing</PrecompiledHeader> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ContentPackage|Durango'">NotUsing</PrecompiledHeader>
<CompileAsWinRT Condition="'$(Configuration)|$(Platform)'=='ContentPackage|Durango'">false</CompileAsWinRT> <CompileAsWinRT Condition="'$(Configuration)|$(Platform)'=='ContentPackage|Durango'">false</CompileAsWinRT>
</ClCompile> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ContentPackage|Xbox 360'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='CONTENTPACKAGE_SYMBOLS|Xbox 360'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ReleaseForArt|Xbox 360'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ContentPackage_NO_TU|Xbox 360'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Xbox 360'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Xbox 360'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ContentPackage_Vita|Xbox 360'">NotUsing</PrecompiledHeader>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='ContentPackage|Xbox 360'">CompileAsC</CompileAs>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='CONTENTPACKAGE_SYMBOLS|Xbox 360'">CompileAsC</CompileAs>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='ReleaseForArt|Xbox 360'">CompileAsC</CompileAs>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='ContentPackage_NO_TU|Xbox 360'">CompileAsC</CompileAs>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Xbox 360'">CompileAsC</CompileAs>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Xbox 360'">CompileAsC</CompileAs>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='ContentPackage_Vita|Xbox 360'">CompileAsC</CompileAs>
</ClCompile>
<ClCompile Include="Common\zlib\gzwrite.c"> <ClCompile Include="Common\zlib\gzwrite.c">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ContentPackage|Xbox 360'">false</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ContentPackage|Xbox 360'">false</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='CONTENTPACKAGE_SYMBOLS|Xbox 360'">false</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='CONTENTPACKAGE_SYMBOLS|Xbox 360'">false</ExcludedFromBuild>
@@ -23879,18 +23895,6 @@ xcopy /q /y /i /s /e $(ProjectDir)Durango\CU $(LayoutDir)Image\Loose\CU</Comman
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|PS3'">false</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|PS3'">false</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ContentPackage_Vita|PS3'">false</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ContentPackage_Vita|PS3'">false</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|PSVita'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|PSVita'">true</ExcludedFromBuild>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='ContentPackage|Xbox 360'">CompileAsC</CompileAs>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='CONTENTPACKAGE_SYMBOLS|Xbox 360'">CompileAsC</CompileAs>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='ReleaseForArt|Xbox 360'">CompileAsC</CompileAs>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='ContentPackage_NO_TU|Xbox 360'">CompileAsC</CompileAs>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Xbox 360'">CompileAsC</CompileAs>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Xbox 360'">CompileAsC</CompileAs>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ContentPackage|Xbox 360'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='CONTENTPACKAGE_SYMBOLS|Xbox 360'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ReleaseForArt|Xbox 360'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ContentPackage_NO_TU|Xbox 360'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Xbox 360'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Xbox 360'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ContentPackage|x64'">NotUsing</PrecompiledHeader> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ContentPackage|x64'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='CONTENTPACKAGE_SYMBOLS|x64'">NotUsing</PrecompiledHeader> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='CONTENTPACKAGE_SYMBOLS|x64'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ReleaseForArt|x64'">NotUsing</PrecompiledHeader> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ReleaseForArt|x64'">NotUsing</PrecompiledHeader>
@@ -23920,7 +23924,21 @@ xcopy /q /y /i /s /e $(ProjectDir)Durango\CU $(LayoutDir)Image\Loose\CU</Comman
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ContentPackage_Vita|ORBIS'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ContentPackage_Vita|ORBIS'">true</ExcludedFromBuild>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ContentPackage|Durango'">NotUsing</PrecompiledHeader> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ContentPackage|Durango'">NotUsing</PrecompiledHeader>
<CompileAsWinRT Condition="'$(Configuration)|$(Platform)'=='ContentPackage|Durango'">false</CompileAsWinRT> <CompileAsWinRT Condition="'$(Configuration)|$(Platform)'=='ContentPackage|Durango'">false</CompileAsWinRT>
</ClCompile> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ContentPackage|Xbox 360'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='CONTENTPACKAGE_SYMBOLS|Xbox 360'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ReleaseForArt|Xbox 360'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ContentPackage_NO_TU|Xbox 360'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Xbox 360'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Xbox 360'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ContentPackage_Vita|Xbox 360'">NotUsing</PrecompiledHeader>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='ContentPackage|Xbox 360'">CompileAsC</CompileAs>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='CONTENTPACKAGE_SYMBOLS|Xbox 360'">CompileAsC</CompileAs>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='ReleaseForArt|Xbox 360'">CompileAsC</CompileAs>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='ContentPackage_NO_TU|Xbox 360'">CompileAsC</CompileAs>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Xbox 360'">CompileAsC</CompileAs>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Xbox 360'">CompileAsC</CompileAs>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='ContentPackage_Vita|Xbox 360'">CompileAsC</CompileAs>
</ClCompile>
<ClCompile Include="Common\zlib\infback.c"> <ClCompile Include="Common\zlib\infback.c">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ContentPackage|Xbox 360'">false</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ContentPackage|Xbox 360'">false</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='CONTENTPACKAGE_SYMBOLS|Xbox 360'">false</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='CONTENTPACKAGE_SYMBOLS|Xbox 360'">false</ExcludedFromBuild>
@@ -23942,18 +23960,6 @@ xcopy /q /y /i /s /e $(ProjectDir)Durango\CU $(LayoutDir)Image\Loose\CU</Comman
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|PS3'">false</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|PS3'">false</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ContentPackage_Vita|PS3'">false</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ContentPackage_Vita|PS3'">false</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|PSVita'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|PSVita'">true</ExcludedFromBuild>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='ContentPackage|Xbox 360'">CompileAsC</CompileAs>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='CONTENTPACKAGE_SYMBOLS|Xbox 360'">CompileAsC</CompileAs>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='ReleaseForArt|Xbox 360'">CompileAsC</CompileAs>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='ContentPackage_NO_TU|Xbox 360'">CompileAsC</CompileAs>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Xbox 360'">CompileAsC</CompileAs>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Xbox 360'">CompileAsC</CompileAs>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ContentPackage|Xbox 360'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='CONTENTPACKAGE_SYMBOLS|Xbox 360'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ReleaseForArt|Xbox 360'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ContentPackage_NO_TU|Xbox 360'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Xbox 360'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Xbox 360'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ContentPackage|x64'">NotUsing</PrecompiledHeader> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ContentPackage|x64'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='CONTENTPACKAGE_SYMBOLS|x64'">NotUsing</PrecompiledHeader> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='CONTENTPACKAGE_SYMBOLS|x64'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ReleaseForArt|x64'">NotUsing</PrecompiledHeader> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ReleaseForArt|x64'">NotUsing</PrecompiledHeader>
@@ -23976,7 +23982,21 @@ xcopy /q /y /i /s /e $(ProjectDir)Durango\CU $(LayoutDir)Image\Loose\CU</Comman
<CompileAsWinRT Condition="'$(Configuration)|$(Platform)'=='Debug|Durango'">false</CompileAsWinRT> <CompileAsWinRT Condition="'$(Configuration)|$(Platform)'=='Debug|Durango'">false</CompileAsWinRT>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ContentPackage|Durango'">NotUsing</PrecompiledHeader> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ContentPackage|Durango'">NotUsing</PrecompiledHeader>
<CompileAsWinRT Condition="'$(Configuration)|$(Platform)'=='ContentPackage|Durango'">false</CompileAsWinRT> <CompileAsWinRT Condition="'$(Configuration)|$(Platform)'=='ContentPackage|Durango'">false</CompileAsWinRT>
</ClCompile> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ContentPackage|Xbox 360'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='CONTENTPACKAGE_SYMBOLS|Xbox 360'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ReleaseForArt|Xbox 360'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ContentPackage_NO_TU|Xbox 360'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Xbox 360'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Xbox 360'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ContentPackage_Vita|Xbox 360'">NotUsing</PrecompiledHeader>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='ContentPackage|Xbox 360'">CompileAsC</CompileAs>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='CONTENTPACKAGE_SYMBOLS|Xbox 360'">CompileAsC</CompileAs>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='ReleaseForArt|Xbox 360'">CompileAsC</CompileAs>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='ContentPackage_NO_TU|Xbox 360'">CompileAsC</CompileAs>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Xbox 360'">CompileAsC</CompileAs>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Xbox 360'">CompileAsC</CompileAs>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='ContentPackage_Vita|Xbox 360'">CompileAsC</CompileAs>
</ClCompile>
<ClCompile Include="Common\zlib\inffast.c"> <ClCompile Include="Common\zlib\inffast.c">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ContentPackage|Xbox 360'">false</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ContentPackage|Xbox 360'">false</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='CONTENTPACKAGE_SYMBOLS|Xbox 360'">false</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='CONTENTPACKAGE_SYMBOLS|Xbox 360'">false</ExcludedFromBuild>
@@ -23998,18 +24018,6 @@ xcopy /q /y /i /s /e $(ProjectDir)Durango\CU $(LayoutDir)Image\Loose\CU</Comman
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|PS3'">false</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|PS3'">false</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ContentPackage_Vita|PS3'">false</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ContentPackage_Vita|PS3'">false</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|PSVita'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|PSVita'">true</ExcludedFromBuild>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='ContentPackage|Xbox 360'">CompileAsC</CompileAs>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='CONTENTPACKAGE_SYMBOLS|Xbox 360'">CompileAsC</CompileAs>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='ReleaseForArt|Xbox 360'">CompileAsC</CompileAs>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='ContentPackage_NO_TU|Xbox 360'">CompileAsC</CompileAs>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Xbox 360'">CompileAsC</CompileAs>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Xbox 360'">CompileAsC</CompileAs>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ContentPackage|Xbox 360'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='CONTENTPACKAGE_SYMBOLS|Xbox 360'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ReleaseForArt|Xbox 360'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ContentPackage_NO_TU|Xbox 360'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Xbox 360'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Xbox 360'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ContentPackage|x64'">NotUsing</PrecompiledHeader> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ContentPackage|x64'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='CONTENTPACKAGE_SYMBOLS|x64'">NotUsing</PrecompiledHeader> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='CONTENTPACKAGE_SYMBOLS|x64'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ReleaseForArt|x64'">NotUsing</PrecompiledHeader> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ReleaseForArt|x64'">NotUsing</PrecompiledHeader>
@@ -24032,7 +24040,21 @@ xcopy /q /y /i /s /e $(ProjectDir)Durango\CU $(LayoutDir)Image\Loose\CU</Comman
<CompileAsWinRT Condition="'$(Configuration)|$(Platform)'=='Debug|Durango'">false</CompileAsWinRT> <CompileAsWinRT Condition="'$(Configuration)|$(Platform)'=='Debug|Durango'">false</CompileAsWinRT>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ContentPackage|Durango'">NotUsing</PrecompiledHeader> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ContentPackage|Durango'">NotUsing</PrecompiledHeader>
<CompileAsWinRT Condition="'$(Configuration)|$(Platform)'=='ContentPackage|Durango'">false</CompileAsWinRT> <CompileAsWinRT Condition="'$(Configuration)|$(Platform)'=='ContentPackage|Durango'">false</CompileAsWinRT>
</ClCompile> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ContentPackage|Xbox 360'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='CONTENTPACKAGE_SYMBOLS|Xbox 360'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ReleaseForArt|Xbox 360'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ContentPackage_NO_TU|Xbox 360'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Xbox 360'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Xbox 360'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ContentPackage_Vita|Xbox 360'">NotUsing</PrecompiledHeader>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='ContentPackage|Xbox 360'">CompileAsC</CompileAs>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='CONTENTPACKAGE_SYMBOLS|Xbox 360'">CompileAsC</CompileAs>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='ReleaseForArt|Xbox 360'">CompileAsC</CompileAs>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='ContentPackage_NO_TU|Xbox 360'">CompileAsC</CompileAs>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Xbox 360'">CompileAsC</CompileAs>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Xbox 360'">CompileAsC</CompileAs>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='ContentPackage_Vita|Xbox 360'">CompileAsC</CompileAs>
</ClCompile>
<ClCompile Include="Common\zlib\inflate.c"> <ClCompile Include="Common\zlib\inflate.c">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ContentPackage|Xbox 360'">false</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ContentPackage|Xbox 360'">false</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='CONTENTPACKAGE_SYMBOLS|Xbox 360'">false</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='CONTENTPACKAGE_SYMBOLS|Xbox 360'">false</ExcludedFromBuild>
@@ -24054,18 +24076,6 @@ xcopy /q /y /i /s /e $(ProjectDir)Durango\CU $(LayoutDir)Image\Loose\CU</Comman
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|PS3'">false</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|PS3'">false</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ContentPackage_Vita|PS3'">false</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ContentPackage_Vita|PS3'">false</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|PSVita'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|PSVita'">true</ExcludedFromBuild>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='ContentPackage|Xbox 360'">CompileAsC</CompileAs>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='CONTENTPACKAGE_SYMBOLS|Xbox 360'">CompileAsC</CompileAs>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='ReleaseForArt|Xbox 360'">CompileAsC</CompileAs>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='ContentPackage_NO_TU|Xbox 360'">CompileAsC</CompileAs>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Xbox 360'">CompileAsC</CompileAs>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Xbox 360'">CompileAsC</CompileAs>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ContentPackage|Xbox 360'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='CONTENTPACKAGE_SYMBOLS|Xbox 360'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ReleaseForArt|Xbox 360'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ContentPackage_NO_TU|Xbox 360'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Xbox 360'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Xbox 360'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ContentPackage|x64'">NotUsing</PrecompiledHeader> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ContentPackage|x64'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='CONTENTPACKAGE_SYMBOLS|x64'">NotUsing</PrecompiledHeader> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='CONTENTPACKAGE_SYMBOLS|x64'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ReleaseForArt|x64'">NotUsing</PrecompiledHeader> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ReleaseForArt|x64'">NotUsing</PrecompiledHeader>
@@ -24088,7 +24098,21 @@ xcopy /q /y /i /s /e $(ProjectDir)Durango\CU $(LayoutDir)Image\Loose\CU</Comman
<CompileAsWinRT Condition="'$(Configuration)|$(Platform)'=='Debug|Durango'">false</CompileAsWinRT> <CompileAsWinRT Condition="'$(Configuration)|$(Platform)'=='Debug|Durango'">false</CompileAsWinRT>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ContentPackage|Durango'">NotUsing</PrecompiledHeader> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ContentPackage|Durango'">NotUsing</PrecompiledHeader>
<CompileAsWinRT Condition="'$(Configuration)|$(Platform)'=='ContentPackage|Durango'">false</CompileAsWinRT> <CompileAsWinRT Condition="'$(Configuration)|$(Platform)'=='ContentPackage|Durango'">false</CompileAsWinRT>
</ClCompile> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ContentPackage|Xbox 360'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='CONTENTPACKAGE_SYMBOLS|Xbox 360'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ReleaseForArt|Xbox 360'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ContentPackage_NO_TU|Xbox 360'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Xbox 360'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Xbox 360'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ContentPackage_Vita|Xbox 360'">NotUsing</PrecompiledHeader>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='ContentPackage|Xbox 360'">CompileAsC</CompileAs>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='CONTENTPACKAGE_SYMBOLS|Xbox 360'">CompileAsC</CompileAs>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='ReleaseForArt|Xbox 360'">CompileAsC</CompileAs>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='ContentPackage_NO_TU|Xbox 360'">CompileAsC</CompileAs>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Xbox 360'">CompileAsC</CompileAs>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Xbox 360'">CompileAsC</CompileAs>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='ContentPackage_Vita|Xbox 360'">CompileAsC</CompileAs>
</ClCompile>
<ClCompile Include="Common\zlib\inftrees.c"> <ClCompile Include="Common\zlib\inftrees.c">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ContentPackage|Xbox 360'">false</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ContentPackage|Xbox 360'">false</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='CONTENTPACKAGE_SYMBOLS|Xbox 360'">false</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='CONTENTPACKAGE_SYMBOLS|Xbox 360'">false</ExcludedFromBuild>
@@ -24110,18 +24134,6 @@ xcopy /q /y /i /s /e $(ProjectDir)Durango\CU $(LayoutDir)Image\Loose\CU</Comman
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|PS3'">false</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|PS3'">false</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ContentPackage_Vita|PS3'">false</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ContentPackage_Vita|PS3'">false</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|PSVita'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|PSVita'">true</ExcludedFromBuild>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='ContentPackage|Xbox 360'">CompileAsC</CompileAs>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='CONTENTPACKAGE_SYMBOLS|Xbox 360'">CompileAsC</CompileAs>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='ReleaseForArt|Xbox 360'">CompileAsC</CompileAs>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='ContentPackage_NO_TU|Xbox 360'">CompileAsC</CompileAs>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Xbox 360'">CompileAsC</CompileAs>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Xbox 360'">CompileAsC</CompileAs>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ContentPackage|Xbox 360'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='CONTENTPACKAGE_SYMBOLS|Xbox 360'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ReleaseForArt|Xbox 360'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ContentPackage_NO_TU|Xbox 360'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Xbox 360'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Xbox 360'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ContentPackage|x64'">NotUsing</PrecompiledHeader> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ContentPackage|x64'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='CONTENTPACKAGE_SYMBOLS|x64'">NotUsing</PrecompiledHeader> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='CONTENTPACKAGE_SYMBOLS|x64'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ReleaseForArt|x64'">NotUsing</PrecompiledHeader> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ReleaseForArt|x64'">NotUsing</PrecompiledHeader>
@@ -24144,7 +24156,21 @@ xcopy /q /y /i /s /e $(ProjectDir)Durango\CU $(LayoutDir)Image\Loose\CU</Comman
<CompileAsWinRT Condition="'$(Configuration)|$(Platform)'=='Debug|Durango'">false</CompileAsWinRT> <CompileAsWinRT Condition="'$(Configuration)|$(Platform)'=='Debug|Durango'">false</CompileAsWinRT>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ContentPackage|Durango'">NotUsing</PrecompiledHeader> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ContentPackage|Durango'">NotUsing</PrecompiledHeader>
<CompileAsWinRT Condition="'$(Configuration)|$(Platform)'=='ContentPackage|Durango'">false</CompileAsWinRT> <CompileAsWinRT Condition="'$(Configuration)|$(Platform)'=='ContentPackage|Durango'">false</CompileAsWinRT>
</ClCompile> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ContentPackage|Xbox 360'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='CONTENTPACKAGE_SYMBOLS|Xbox 360'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ReleaseForArt|Xbox 360'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ContentPackage_NO_TU|Xbox 360'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Xbox 360'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Xbox 360'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ContentPackage_Vita|Xbox 360'">NotUsing</PrecompiledHeader>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='ContentPackage|Xbox 360'">CompileAsC</CompileAs>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='CONTENTPACKAGE_SYMBOLS|Xbox 360'">CompileAsC</CompileAs>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='ReleaseForArt|Xbox 360'">CompileAsC</CompileAs>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='ContentPackage_NO_TU|Xbox 360'">CompileAsC</CompileAs>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Xbox 360'">CompileAsC</CompileAs>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Xbox 360'">CompileAsC</CompileAs>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='ContentPackage_Vita|Xbox 360'">CompileAsC</CompileAs>
</ClCompile>
<ClCompile Include="Common\zlib\trees.c"> <ClCompile Include="Common\zlib\trees.c">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ContentPackage|Xbox 360'">false</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ContentPackage|Xbox 360'">false</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='CONTENTPACKAGE_SYMBOLS|Xbox 360'">false</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='CONTENTPACKAGE_SYMBOLS|Xbox 360'">false</ExcludedFromBuild>
@@ -24166,18 +24192,6 @@ xcopy /q /y /i /s /e $(ProjectDir)Durango\CU $(LayoutDir)Image\Loose\CU</Comman
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|PS3'">false</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|PS3'">false</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ContentPackage_Vita|PS3'">false</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ContentPackage_Vita|PS3'">false</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|PSVita'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|PSVita'">true</ExcludedFromBuild>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='ContentPackage|Xbox 360'">CompileAsC</CompileAs>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='CONTENTPACKAGE_SYMBOLS|Xbox 360'">CompileAsC</CompileAs>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='ReleaseForArt|Xbox 360'">CompileAsC</CompileAs>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='ContentPackage_NO_TU|Xbox 360'">CompileAsC</CompileAs>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Xbox 360'">CompileAsC</CompileAs>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Xbox 360'">CompileAsC</CompileAs>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ContentPackage|Xbox 360'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='CONTENTPACKAGE_SYMBOLS|Xbox 360'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ReleaseForArt|Xbox 360'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ContentPackage_NO_TU|Xbox 360'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Xbox 360'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Xbox 360'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ContentPackage|x64'">NotUsing</PrecompiledHeader> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ContentPackage|x64'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='CONTENTPACKAGE_SYMBOLS|x64'">NotUsing</PrecompiledHeader> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='CONTENTPACKAGE_SYMBOLS|x64'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ReleaseForArt|x64'">NotUsing</PrecompiledHeader> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ReleaseForArt|x64'">NotUsing</PrecompiledHeader>
@@ -24200,7 +24214,21 @@ xcopy /q /y /i /s /e $(ProjectDir)Durango\CU $(LayoutDir)Image\Loose\CU</Comman
<CompileAsWinRT Condition="'$(Configuration)|$(Platform)'=='Debug|Durango'">false</CompileAsWinRT> <CompileAsWinRT Condition="'$(Configuration)|$(Platform)'=='Debug|Durango'">false</CompileAsWinRT>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ContentPackage|Durango'">NotUsing</PrecompiledHeader> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ContentPackage|Durango'">NotUsing</PrecompiledHeader>
<CompileAsWinRT Condition="'$(Configuration)|$(Platform)'=='ContentPackage|Durango'">false</CompileAsWinRT> <CompileAsWinRT Condition="'$(Configuration)|$(Platform)'=='ContentPackage|Durango'">false</CompileAsWinRT>
</ClCompile> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ContentPackage|Xbox 360'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='CONTENTPACKAGE_SYMBOLS|Xbox 360'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ReleaseForArt|Xbox 360'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ContentPackage_NO_TU|Xbox 360'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Xbox 360'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Xbox 360'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ContentPackage_Vita|Xbox 360'">NotUsing</PrecompiledHeader>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='ContentPackage|Xbox 360'">CompileAsC</CompileAs>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='CONTENTPACKAGE_SYMBOLS|Xbox 360'">CompileAsC</CompileAs>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='ReleaseForArt|Xbox 360'">CompileAsC</CompileAs>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='ContentPackage_NO_TU|Xbox 360'">CompileAsC</CompileAs>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Xbox 360'">CompileAsC</CompileAs>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Xbox 360'">CompileAsC</CompileAs>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='ContentPackage_Vita|Xbox 360'">CompileAsC</CompileAs>
</ClCompile>
<ClCompile Include="Common\zlib\uncompr.c"> <ClCompile Include="Common\zlib\uncompr.c">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ContentPackage|Xbox 360'">false</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ContentPackage|Xbox 360'">false</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='CONTENTPACKAGE_SYMBOLS|Xbox 360'">false</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='CONTENTPACKAGE_SYMBOLS|Xbox 360'">false</ExcludedFromBuild>
@@ -24222,18 +24250,6 @@ xcopy /q /y /i /s /e $(ProjectDir)Durango\CU $(LayoutDir)Image\Loose\CU</Comman
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|PS3'">false</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|PS3'">false</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ContentPackage_Vita|PS3'">false</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ContentPackage_Vita|PS3'">false</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|PSVita'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|PSVita'">true</ExcludedFromBuild>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='ContentPackage|Xbox 360'">CompileAsC</CompileAs>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='CONTENTPACKAGE_SYMBOLS|Xbox 360'">CompileAsC</CompileAs>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='ReleaseForArt|Xbox 360'">CompileAsC</CompileAs>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='ContentPackage_NO_TU|Xbox 360'">CompileAsC</CompileAs>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Xbox 360'">CompileAsC</CompileAs>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Xbox 360'">CompileAsC</CompileAs>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ContentPackage|Xbox 360'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='CONTENTPACKAGE_SYMBOLS|Xbox 360'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ReleaseForArt|Xbox 360'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ContentPackage_NO_TU|Xbox 360'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Xbox 360'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Xbox 360'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ContentPackage|x64'">NotUsing</PrecompiledHeader> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ContentPackage|x64'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='CONTENTPACKAGE_SYMBOLS|x64'">NotUsing</PrecompiledHeader> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='CONTENTPACKAGE_SYMBOLS|x64'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ReleaseForArt|x64'">NotUsing</PrecompiledHeader> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ReleaseForArt|x64'">NotUsing</PrecompiledHeader>
@@ -24256,7 +24272,21 @@ xcopy /q /y /i /s /e $(ProjectDir)Durango\CU $(LayoutDir)Image\Loose\CU</Comman
<CompileAsWinRT Condition="'$(Configuration)|$(Platform)'=='Debug|Durango'">false</CompileAsWinRT> <CompileAsWinRT Condition="'$(Configuration)|$(Platform)'=='Debug|Durango'">false</CompileAsWinRT>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ContentPackage|Durango'">NotUsing</PrecompiledHeader> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ContentPackage|Durango'">NotUsing</PrecompiledHeader>
<CompileAsWinRT Condition="'$(Configuration)|$(Platform)'=='ContentPackage|Durango'">false</CompileAsWinRT> <CompileAsWinRT Condition="'$(Configuration)|$(Platform)'=='ContentPackage|Durango'">false</CompileAsWinRT>
</ClCompile> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ContentPackage|Xbox 360'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='CONTENTPACKAGE_SYMBOLS|Xbox 360'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ReleaseForArt|Xbox 360'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ContentPackage_NO_TU|Xbox 360'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Xbox 360'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Xbox 360'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ContentPackage_Vita|Xbox 360'">NotUsing</PrecompiledHeader>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='ContentPackage|Xbox 360'">CompileAsC</CompileAs>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='CONTENTPACKAGE_SYMBOLS|Xbox 360'">CompileAsC</CompileAs>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='ReleaseForArt|Xbox 360'">CompileAsC</CompileAs>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='ContentPackage_NO_TU|Xbox 360'">CompileAsC</CompileAs>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Xbox 360'">CompileAsC</CompileAs>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Xbox 360'">CompileAsC</CompileAs>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='ContentPackage_Vita|Xbox 360'">CompileAsC</CompileAs>
</ClCompile>
<ClCompile Include="Common\zlib\zutil.c"> <ClCompile Include="Common\zlib\zutil.c">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ContentPackage|Xbox 360'">false</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ContentPackage|Xbox 360'">false</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='CONTENTPACKAGE_SYMBOLS|Xbox 360'">false</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='CONTENTPACKAGE_SYMBOLS|Xbox 360'">false</ExcludedFromBuild>
@@ -24278,18 +24308,6 @@ xcopy /q /y /i /s /e $(ProjectDir)Durango\CU $(LayoutDir)Image\Loose\CU</Comman
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|PS3'">false</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|PS3'">false</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ContentPackage_Vita|PS3'">false</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ContentPackage_Vita|PS3'">false</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|PSVita'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|PSVita'">true</ExcludedFromBuild>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='ContentPackage|Xbox 360'">CompileAsC</CompileAs>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='CONTENTPACKAGE_SYMBOLS|Xbox 360'">CompileAsC</CompileAs>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='ReleaseForArt|Xbox 360'">CompileAsC</CompileAs>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='ContentPackage_NO_TU|Xbox 360'">CompileAsC</CompileAs>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Xbox 360'">CompileAsC</CompileAs>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Xbox 360'">CompileAsC</CompileAs>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ContentPackage|Xbox 360'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='CONTENTPACKAGE_SYMBOLS|Xbox 360'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ReleaseForArt|Xbox 360'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ContentPackage_NO_TU|Xbox 360'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Xbox 360'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Xbox 360'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ContentPackage|x64'">NotUsing</PrecompiledHeader> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ContentPackage|x64'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='CONTENTPACKAGE_SYMBOLS|x64'">NotUsing</PrecompiledHeader> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='CONTENTPACKAGE_SYMBOLS|x64'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ReleaseForArt|x64'">NotUsing</PrecompiledHeader> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ReleaseForArt|x64'">NotUsing</PrecompiledHeader>
@@ -24312,7 +24330,21 @@ xcopy /q /y /i /s /e $(ProjectDir)Durango\CU $(LayoutDir)Image\Loose\CU</Comman
<CompileAsWinRT Condition="'$(Configuration)|$(Platform)'=='Debug|Durango'">false</CompileAsWinRT> <CompileAsWinRT Condition="'$(Configuration)|$(Platform)'=='Debug|Durango'">false</CompileAsWinRT>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ContentPackage|Durango'">NotUsing</PrecompiledHeader> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ContentPackage|Durango'">NotUsing</PrecompiledHeader>
<CompileAsWinRT Condition="'$(Configuration)|$(Platform)'=='ContentPackage|Durango'">false</CompileAsWinRT> <CompileAsWinRT Condition="'$(Configuration)|$(Platform)'=='ContentPackage|Durango'">false</CompileAsWinRT>
</ClCompile> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ContentPackage|Xbox 360'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='CONTENTPACKAGE_SYMBOLS|Xbox 360'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ReleaseForArt|Xbox 360'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ContentPackage_NO_TU|Xbox 360'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Xbox 360'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Xbox 360'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ContentPackage_Vita|Xbox 360'">NotUsing</PrecompiledHeader>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='ContentPackage|Xbox 360'">CompileAsC</CompileAs>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='CONTENTPACKAGE_SYMBOLS|Xbox 360'">CompileAsC</CompileAs>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='ReleaseForArt|Xbox 360'">CompileAsC</CompileAs>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='ContentPackage_NO_TU|Xbox 360'">CompileAsC</CompileAs>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Xbox 360'">CompileAsC</CompileAs>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Xbox 360'">CompileAsC</CompileAs>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='ContentPackage_Vita|Xbox 360'">CompileAsC</CompileAs>
</ClCompile>
<ClCompile Include="CompassTexture.cpp" /> <ClCompile Include="CompassTexture.cpp" />
<ClCompile Include="ConfirmScreen.cpp" /> <ClCompile Include="ConfirmScreen.cpp" />
<ClCompile Include="ConnectScreen.cpp"> <ClCompile Include="ConnectScreen.cpp">
@@ -3611,6 +3611,9 @@
<ClInclude Include="Orbis\Network\PsPlusUpsellWrapper_Orbis.h"> <ClInclude Include="Orbis\Network\PsPlusUpsellWrapper_Orbis.h">
<Filter>Orbis\Network</Filter> <Filter>Orbis\Network</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="Xbox\Network\extra.h">
<Filter>Xbox\Source Files\Network</Filter>
</ClInclude>
<ClInclude Include="Common\UI\UIScene_Keyboard.h"> <ClInclude Include="Common\UI\UIScene_Keyboard.h">
<Filter>Common\Source Files\UI\Scenes</Filter> <Filter>Common\Source Files\UI\Scenes</Filter>
</ClInclude> </ClInclude>
+8 -15
View File
@@ -1,4 +1,5 @@
#include "stdafx.h" #include "stdafx.h"
#include "Common\LivePrivileges.h"
#include "Minecraft.h" #include "Minecraft.h"
#include "GameMode.h" #include "GameMode.h"
#include "Timer.h" #include "Timer.h"
@@ -1298,9 +1299,9 @@ void Minecraft::run_middle()
INetworkPlayer *pHostPlayer = g_NetworkManager.GetHostPlayer(); INetworkPlayer *pHostPlayer = g_NetworkManager.GetHostPlayer();
#ifdef _XBOX #ifdef _XBOX
PlayerUID xuid=((pHostPlayer != NULL) ? ((NetworkPlayerXbox *)pHostPlayer)->GetUID() : 0); PlayerUID xuid=((NetworkPlayerXbox *)pHostPlayer)->GetUID();
#else #else
PlayerUID xuid=(pHostPlayer != NULL) ? pHostPlayer->GetUID() : 0; PlayerUID xuid=pHostPlayer->GetUID();
#endif #endif
if(app.IsInBannedLevelList(i,xuid,app.GetUniqueMapName())) if(app.IsInBannedLevelList(i,xuid,app.GetUniqueMapName()))
@@ -1486,7 +1487,7 @@ void Minecraft::run_middle()
if(ProfileManager.IsSignedIn(i)) if(ProfileManager.IsSignedIn(i))
{ {
// if this is a local game, then the player just needs to be signed in // if this is a local game, then the player just needs to be signed in
if( g_NetworkManager.IsLocalGame() || (ProfileManager.IsSignedInLive(i) && ProfileManager.AllowedToPlayMultiplayer(i) ) ) if( g_NetworkManager.IsLocalGame() || Live_MultiplayerAllowed(i) )
{ {
#ifdef __ORBIS__ #ifdef __ORBIS__
bool contentRestricted = false; bool contentRestricted = false;
@@ -1539,7 +1540,7 @@ void Minecraft::run_middle()
} }
else else
{ {
if( ProfileManager.IsSignedInLive(ProfileManager.GetPrimaryPad()) && !ProfileManager.AllowedToPlayMultiplayer(i) ) if( ProfileManager.IsSignedInLive(ProfileManager.GetPrimaryPad()) && !Live_AllowedToPlayMultiplayer(i) )
{ {
ProfileManager.RequestConvertOfflineToGuestUI( &Minecraft::InGame_SignInReturned, this,i); ProfileManager.RequestConvertOfflineToGuestUI( &Minecraft::InGame_SignInReturned, this,i);
// 4J Stu - Don't allow converting to guests as we don't allow any guest sign-in while in the game // 4J Stu - Don't allow converting to guests as we don't allow any guest sign-in while in the game
@@ -4814,7 +4815,7 @@ void Minecraft::inGameSignInCheckAllPrivilegesCallback(LPVOID lpParam, bool hasP
ui.RequestErrorMessage(IDS_MULTIPLAYER_FULL_TITLE, IDS_MULTIPLAYER_FULL_TEXT, uiIDA, 1); ui.RequestErrorMessage(IDS_MULTIPLAYER_FULL_TITLE, IDS_MULTIPLAYER_FULL_TEXT, uiIDA, 1);
ProfileManager.RemoveGamepadFromGame(iPad); ProfileManager.RemoveGamepadFromGame(iPad);
} }
else if( ProfileManager.IsSignedInLive(iPad) && ProfileManager.AllowedToPlayMultiplayer(iPad) ) else if( Live_MultiplayerAllowed(iPad) )
{ {
// create the local player for the iPad // create the local player for the iPad
shared_ptr<Player> player = pClass->localplayers[iPad]; shared_ptr<Player> player = pClass->localplayers[iPad];
@@ -4878,7 +4879,7 @@ int Minecraft::InGame_SignInReturned(void *pParam,bool bContinue, int iPad)
#endif #endif
} }
// if this is a local game then profiles just need to be signed in // if this is a local game then profiles just need to be signed in
else if( g_NetworkManager.IsLocalGame() || (ProfileManager.IsSignedInLive(iPad) && ProfileManager.AllowedToPlayMultiplayer(iPad)) ) else if( g_NetworkManager.IsLocalGame() || Live_MultiplayerAllowed(iPad) )
{ {
#ifdef __ORBIS__ #ifdef __ORBIS__
bool contentRestricted = false; bool contentRestricted = false;
@@ -4909,7 +4910,7 @@ int Minecraft::InGame_SignInReturned(void *pParam,bool bContinue, int iPad)
} }
} }
} }
else if( ProfileManager.IsSignedInLive(ProfileManager.GetPrimaryPad()) && !ProfileManager.AllowedToPlayMultiplayer(iPad) ) else if( ProfileManager.IsSignedInLive(ProfileManager.GetPrimaryPad()) && !Live_AllowedToPlayMultiplayer(iPad) )
{ {
// 4J Stu - Don't allow converting to guests as we don't allow any guest sign-in while in the game // 4J Stu - Don't allow converting to guests as we don't allow any guest sign-in while in the game
// Fix for #66516 - TCR #124: MPS Guest Support ; #001: BAS Game Stability: TU8: The game crashes when second Guest signs-in on console which takes part in Xbox LIVE multiplayer session. // Fix for #66516 - TCR #124: MPS Guest Support ; #001: BAS Game Stability: TU8: The game crashes when second Guest signs-in on console which takes part in Xbox LIVE multiplayer session.
@@ -4963,18 +4964,11 @@ void Minecraft::handleClientTextureReceived(const wstring &textureName)
unsigned int Minecraft::getCurrentTexturePackId() unsigned int Minecraft::getCurrentTexturePackId()
{ {
#ifdef _DEDICATED_SERVER
return 0;
#else
return skins->getSelected()->getId(); return skins->getSelected()->getId();
#endif
} }
ColourTable *Minecraft::getColourTable() ColourTable *Minecraft::getColourTable()
{ {
#ifdef _DEDICATED_SERVER
return NULL;
#else
TexturePack *selected = skins->getSelected(); TexturePack *selected = skins->getSelected();
ColourTable *colours = selected->getColourTable(); ColourTable *colours = selected->getColourTable();
@@ -4985,7 +4979,6 @@ ColourTable *Minecraft::getColourTable()
} }
return colours; return colours;
#endif
} }
#if defined __ORBIS__ #if defined __ORBIS__
+20 -80
View File
@@ -35,11 +35,7 @@
#include "..\Minecraft.World\net.minecraft.world.entity.h" #include "..\Minecraft.World\net.minecraft.world.entity.h"
#include "ProgressRenderer.h" #include "ProgressRenderer.h"
#include "ServerPlayer.h" #include "ServerPlayer.h"
#include "PlayerConnection.h"
#include "GameRenderer.h" #include "GameRenderer.h"
#if defined(_WINDOWS64) || defined(DISABLE_PSN) || defined(_DISABLE_XBLIVE)
#include "Common\Network\NetworkSocketLayer.h"
#endif
#include "..\Minecraft.World\ThreadName.h" #include "..\Minecraft.World\ThreadName.h"
#include "..\Minecraft.World\IntCache.h" #include "..\Minecraft.World\IntCache.h"
#include "..\Minecraft.World\CompressedTileStorage.h" #include "..\Minecraft.World\CompressedTileStorage.h"
@@ -51,11 +47,6 @@
#endif #endif
#include "PS3\PS3Extras\ShutdownManager.h" #include "PS3\PS3Extras\ShutdownManager.h"
#include "ServerCommandDispatcher.h" #include "ServerCommandDispatcher.h"
#ifdef _DEDICATED_SERVER
#include "..\Minecraft.Server\Commands\ServerCommands.h"
#endif
#include "..\Minecraft.World\BiomeSource.h" #include "..\Minecraft.World\BiomeSource.h"
#include "PlayerChunkMap.h" #include "PlayerChunkMap.h"
#include "Common\Telemetry\TelemetryManager.h" #include "Common\Telemetry\TelemetryManager.h"
@@ -159,11 +150,13 @@ bool MinecraftServer::initServer(__int64 seed, NetworkGameInitData *initData, DW
#endif #endif
settings = new Settings(new File(L"server.properties")); settings = new Settings(new File(L"server.properties"));
app.DebugPrintf("host-friends-only is %s",(app.GetGameHostOption(eGameHostOption_FriendsOfFriends)>0)?"on":"off"); app.DebugPrintf("\n*** SERVER SETTINGS ***\n");
app.DebugPrintf("game-type is %s",(app.GetGameHostOption(eGameHostOption_GameType)==0)?"Survival Mode":"Creative Mode"); app.DebugPrintf("ServerSettings: host-friends-only is %s\n",(app.GetGameHostOption(eGameHostOption_FriendsOfFriends)>0)?"on":"off");
app.DebugPrintf("pvp is %s",(app.GetGameHostOption(eGameHostOption_PvP)>0)?"on":"off"); app.DebugPrintf("ServerSettings: game-type is %s\n",(app.GetGameHostOption(eGameHostOption_GameType)==0)?"Survival Mode":"Creative Mode");
app.DebugPrintf("fire-spreads is %s",(app.GetGameHostOption(eGameHostOption_FireSpreads)>0)?"on":"off"); app.DebugPrintf("ServerSettings: pvp is %s\n",(app.GetGameHostOption(eGameHostOption_PvP)>0)?"on":"off");
app.DebugPrintf("tnt-explodes is %s",(app.GetGameHostOption(eGameHostOption_TNT)>0)?"on":"off"); app.DebugPrintf("ServerSettings: fire spreads is %s\n",(app.GetGameHostOption(eGameHostOption_FireSpreads)>0)?"on":"off");
app.DebugPrintf("ServerSettings: tnt explodes is %s\n",(app.GetGameHostOption(eGameHostOption_TNT)>0)?"on":"off");
app.DebugPrintf("\n");
// TODO 4J Stu - Init a load of settings based on data passed as params // TODO 4J Stu - Init a load of settings based on data passed as params
//settings->setBooleanAndSave( L"host-friends-only", (app.GetGameHostOption(eGameHostOption_FriendsOfFriends)>0) ); //settings->setBooleanAndSave( L"host-friends-only", (app.GetGameHostOption(eGameHostOption_FriendsOfFriends)>0) );
@@ -172,7 +165,7 @@ bool MinecraftServer::initServer(__int64 seed, NetworkGameInitData *initData, DW
//localIp = settings->getString(L"server-ip", L""); //localIp = settings->getString(L"server-ip", L"");
//onlineMode = settings->getBoolean(L"online-mode", true); //onlineMode = settings->getBoolean(L"online-mode", true);
//motd = settings->getString(L"motd", L"A Minecraft Server"); //motd = settings->getString(L"motd", L"A Minecraft Server");
//motd.replace('§', '$'); //motd.replace('§', '$');
setAnimals(settings->getBoolean(L"spawn-animals", true)); setAnimals(settings->getBoolean(L"spawn-animals", true));
setNpcsEnabled(settings->getBoolean(L"spawn-npcs", true)); setNpcsEnabled(settings->getBoolean(L"spawn-npcs", true));
@@ -217,7 +210,7 @@ bool MinecraftServer::initServer(__int64 seed, NetworkGameInitData *initData, DW
// 4J-JEV: Need to wait for levelGenerationOptions to load. // 4J-JEV: Need to wait for levelGenerationOptions to load.
while ( app.getLevelGenerationOptions() != NULL && !app.getLevelGenerationOptions()->hasLoadedData() ) while ( app.getLevelGenerationOptions() != NULL && !app.getLevelGenerationOptions()->hasLoadedData() )
Sleep(0); Sleep(1);
if ( app.getLevelGenerationOptions() != NULL && !app.getLevelGenerationOptions()->ready() ) if ( app.getLevelGenerationOptions() != NULL && !app.getLevelGenerationOptions()->ready() )
{ {
@@ -290,14 +283,6 @@ bool MinecraftServer::initServer(__int64 seed, NetworkGameInitData *initData, DW
} }
g_NetworkManager.ServerReady(); // 4J added g_NetworkManager.ServerReady(); // 4J added
#ifdef _DEDICATED_SERVER
{
extern QNET_STATE _iQNetStubState;
_iQNetStubState = QNET_STATE_GAME_PLAY;
}
#endif
return m_bLoaded; return m_bLoaded;
} }
@@ -334,7 +319,7 @@ int MinecraftServer::runPostUpdate(void* lpParam)
{ {
LeaveCriticalSection(&server->m_postProcessCS); LeaveCriticalSection(&server->m_postProcessCS);
} }
Sleep(0); Sleep(1);
} while (!server->m_postUpdateTerminate && ShutdownManager::ShouldRun(ShutdownManager::ePostProcessThread)); } while (!server->m_postUpdateTerminate && ShutdownManager::ShouldRun(ShutdownManager::ePostProcessThread));
//#ifndef __PS3__ //#ifndef __PS3__
// One final pass through updates to make sure we're done // One final pass through updates to make sure we're done
@@ -420,7 +405,7 @@ bool MinecraftServer::loadLevel(LevelStorageSource *storageSource, const wstring
int gameTypeId = settings->getInt(L"gamemode", app.GetGameHostOption(eGameHostOption_GameType));//LevelSettings::GAMETYPE_SURVIVAL); int gameTypeId = settings->getInt(L"gamemode", app.GetGameHostOption(eGameHostOption_GameType));//LevelSettings::GAMETYPE_SURVIVAL);
GameType *gameType = LevelSettings::validateGameType(gameTypeId); GameType *gameType = LevelSettings::validateGameType(gameTypeId);
app.DebugPrintf("Default game type: %d" , gameTypeId); app.DebugPrintf("Default game type: %d\n" , gameTypeId);
LevelSettings *levelSettings = new LevelSettings(levelSeed, gameType, app.GetGameHostOption(eGameHostOption_Structures)>0?true:false, isHardcore(), true, pLevelType, initData->xzSize, initData->hellScale); LevelSettings *levelSettings = new LevelSettings(levelSeed, gameType, app.GetGameHostOption(eGameHostOption_Structures)>0?true:false, isHardcore(), true, pLevelType, initData->xzSize, initData->hellScale);
if( app.GetGameHostOption(eGameHostOption_BonusChest ) ) levelSettings->enableStartingBonusItems(); if( app.GetGameHostOption(eGameHostOption_BonusChest ) ) levelSettings->enableStartingBonusItems();
@@ -512,7 +497,7 @@ bool MinecraftServer::loadLevel(LevelStorageSource *storageSource, const wstring
Minecraft *pMinecraft = Minecraft::GetInstance(); Minecraft *pMinecraft = Minecraft::GetInstance();
// m_lastSentDifficulty = pMinecraft->options->difficulty; // m_lastSentDifficulty = pMinecraft->options->difficulty;
levels[i]->difficulty = app.GetGameHostOption(eGameHostOption_Difficulty); //pMinecraft->options->difficulty; levels[i]->difficulty = app.GetGameHostOption(eGameHostOption_Difficulty); //pMinecraft->options->difficulty;
app.DebugPrintf("MinecraftServer::loadLevel - Difficulty = %d",levels[i]->difficulty); app.DebugPrintf("MinecraftServer::loadLevel - Difficulty = %d\n",levels[i]->difficulty);
#if DEBUG_SERVER_DONT_SPAWN_MOBS #if DEBUG_SERVER_DONT_SPAWN_MOBS
levels[i]->setSpawnSettings(false, false); levels[i]->setSpawnSettings(false, false);
@@ -586,13 +571,6 @@ bool MinecraftServer::loadLevel(LevelStorageSource *storageSource, const wstring
csf->closeHandle(fe); csf->closeHandle(fe);
} }
#ifdef _DEDICATED_SERVER
{
__int64 doneTime = System::currentTimeMillis();
app.DebugPrintf("Done! For help, type \"help\" or \"?\"");
}
#endif
__int64 lastTime = System::currentTimeMillis(); __int64 lastTime = System::currentTimeMillis();
#ifdef _LARGE_WORLDS #ifdef _LARGE_WORLDS
if(app.GetGameNewWorldSize() > levels[0]->getLevelData()->getXZSizeOld()) if(app.GetGameNewWorldSize() > levels[0]->getLevelData()->getXZSizeOld())
@@ -715,6 +693,9 @@ bool MinecraftServer::loadLevel(LevelStorageSource *storageSource, const wstring
// stronghold position? // stronghold position?
if(levels[0]->dimension->id==0) if(levels[0]->dimension->id==0)
{ {
app.DebugPrintf("===================================\n");
if(!levels[0]->getLevelData()->getHasStronghold()) if(!levels[0]->getLevelData()->getHasStronghold())
{ {
int x,z; int x,z;
@@ -724,19 +705,20 @@ bool MinecraftServer::loadLevel(LevelStorageSource *storageSource, const wstring
levels[0]->getLevelData()->setZStronghold(z); levels[0]->getLevelData()->setZStronghold(z);
levels[0]->getLevelData()->setHasStronghold(); levels[0]->getLevelData()->setHasStronghold();
app.DebugPrintf("FOUND stronghold in terrain features list\n"); app.DebugPrintf("=== FOUND stronghold in terrain features list\n");
} }
else else
{ {
// can't find the stronghold position in the terrain feature list. Do we have to run a post-process? // can't find the stronghold position in the terrain feature list. Do we have to run a post-process?
app.DebugPrintf("Can't find stronghold in terrain features list\n"); app.DebugPrintf("=== Can't find stronghold in terrain features list\n");
} }
} }
else else
{ {
app.DebugPrintf("Leveldata has stronghold position\n"); app.DebugPrintf("=== Leveldata has stronghold position\n");
} }
app.DebugPrintf("===================================\n");
} }
// printf("Post processing complete at %dms\n",System::currentTimeMillis() - startTime); // printf("Post processing complete at %dms\n",System::currentTimeMillis() - startTime);
@@ -1006,16 +988,12 @@ void MinecraftServer::stopServer(bool didInit)
// 4J-PB - If the primary player has signed out, then don't attempt to save anything // 4J-PB - If the primary player has signed out, then don't attempt to save anything
// also need to check for a profile switch here - primary player signs out, and another player signs in before dismissing the dash // also need to check for a profile switch here - primary player signs out, and another player signs in before dismissing the dash
#ifdef _DEDICATED_SERVER #ifdef _DURANGO
{
{
#elif defined(_DURANGO)
// On Durango check if the primary user is signed in OR mid-sign-out // On Durango check if the primary user is signed in OR mid-sign-out
if(ProfileManager.GetUser(0, true) != nullptr) if(ProfileManager.GetUser(0, true) != nullptr)
#else #else
if((m_bPrimaryPlayerSignedOut==false) && ProfileManager.IsSignedIn(ProfileManager.GetPrimaryPad())) if((m_bPrimaryPlayerSignedOut==false) && ProfileManager.IsSignedIn(ProfileManager.GetPrimaryPad()))
#endif #endif
#ifndef _DEDICATED_SERVER
{ {
#if defined(_XBOX_ONE) || defined(__ORBIS__) #if defined(_XBOX_ONE) || defined(__ORBIS__)
// Always save on exit! Except if saves are disabled. // Always save on exit! Except if saves are disabled.
@@ -1024,7 +1002,6 @@ void MinecraftServer::stopServer(bool didInit)
// if trial version or saving is disabled, then don't save anything. Also don't save anything if we didn't actually get through the server initialisation. // if trial version or saving is disabled, then don't save anything. Also don't save anything if we didn't actually get through the server initialisation.
if(m_saveOnExit && ProfileManager.IsFullVersion() && (!StorageManager.GetSaveDisabled()) && didInit) if(m_saveOnExit && ProfileManager.IsFullVersion() && (!StorageManager.GetSaveDisabled()) && didInit)
{ {
#endif
if (players != NULL) if (players != NULL)
{ {
players->saveAll(Minecraft::GetInstance()->progressRenderer, true); players->saveAll(Minecraft::GetInstance()->progressRenderer, true);
@@ -1634,33 +1611,6 @@ void MinecraftServer::tick()
tickCount++; tickCount++;
#ifdef _DEDICATED_SERVER
if (tickCount % 6000 == 0 && !s_bServerHalted)
{
app.DebugPrintf("Auto-saving world...\n");
if (players != NULL)
{
players->saveAll(NULL);
}
for (unsigned int j = 0; j < levels.length; j++)
{
if (s_bServerHalted) break;
ServerLevel *level = levels[levels.length - 1 - j];
if (level) level->save(false, NULL, true);
}
if (!s_bServerHalted)
{
saveGameRules();
levels[0]->saveToDisc(NULL, true);
}
while (StorageManager.GetSaveState() != C4JStorage::ESaveGame_Idle)
{
Sleep(10);
}
app.DebugPrintf("Auto-save complete\n");
}
#endif
// 4J We need to update client difficulty levels based on the servers // 4J We need to update client difficulty levels based on the servers
Minecraft *pMinecraft = Minecraft::GetInstance(); Minecraft *pMinecraft = Minecraft::GetInstance();
// 4J-PB - sending this on the host changing the difficulty in the menus // 4J-PB - sending this on the host changing the difficulty in the menus
@@ -1733,10 +1683,6 @@ void MinecraftServer::tick()
} }
} }
Entity::tickExtraWandering(); // 4J added Entity::tickExtraWandering(); // 4J added
#ifdef _DEDICATED_SERVER
g_NetworkManager.DoWork();
NetworkSocketLayer::FlushPendingData();
#endif
PIXBeginNamedEvent(0,"Connection tick"); PIXBeginNamedEvent(0,"Connection tick");
connection->tick(); connection->tick();
@@ -1771,12 +1717,6 @@ void MinecraftServer::handleConsoleInputs()
AUTO_VAR(it, consoleInput.begin()); AUTO_VAR(it, consoleInput.begin());
ConsoleInput *input = *it; ConsoleInput *input = *it;
consoleInput.erase(it); consoleInput.erase(it);
#ifdef _DEDICATED_SERVER
HandleServerCommand(input->msg, input->source, this);
delete input;
#else
delete input;
#endif
// commands->handleCommand(input); // 4J - removed - TODO - do we want equivalent of console commands? // commands->handleCommand(input); // 4J - removed - TODO - do we want equivalent of console commands?
} }
} }
+1 -1
View File
@@ -236,7 +236,7 @@ public:
static void SetTime(__int64 time) { setTimeAtEndOfTick = true; setTime = time; } static void SetTime(__int64 time) { setTimeAtEndOfTick = true; setTime = time; }
C4JThread::Event* m_serverPausedEvent; C4JThread::Event* m_serverPausedEvent;
public: private:
// 4J Added // 4J Added
bool m_isServerPaused; bool m_isServerPaused;
+2 -3
View File
@@ -175,11 +175,10 @@ LevelChunk *MultiPlayerChunkCache::create(int x, int z)
if (MinecraftServer::getInstance()->serverHalted()) return NULL; if (MinecraftServer::getInstance()->serverHalted()) return NULL;
// If we're the host, then don't create the chunk, share data from the server's copy // If we're the host, then don't create the chunk, share data from the server's copy
int dimId = level->dimension->id;
#ifdef _LARGE_WORLDS #ifdef _LARGE_WORLDS
LevelChunk *serverChunk = MinecraftServer::getInstance()->getLevel(dimId)->cache->getChunkLoadedOrUnloaded(x,z); LevelChunk *serverChunk = MinecraftServer::getInstance()->getLevel(level->dimension->id)->cache->getChunkLoadedOrUnloaded(x,z);
#else #else
LevelChunk *serverChunk = MinecraftServer::getInstance()->getLevel(dimId)->cache->getChunk(x,z); LevelChunk *serverChunk = MinecraftServer::getInstance()->getLevel(level->dimension->id)->cache->getChunk(x,z);
#endif #endif
chunk = new LevelChunk(level, x, z, serverChunk); chunk = new LevelChunk(level, x, z, serverChunk);
// Let renderer know that this chunk has been created - it might have made render data from the EmptyChunk if it got to a chunk before the server sent it // Let renderer know that this chunk has been created - it might have made render data from the EmptyChunk if it got to a chunk before the server sent it
-14
View File
@@ -85,20 +85,6 @@ bool MultiPlayerGameMode::destroyBlock(int x, int y, int z, int face)
if (oldTile == NULL) return false; if (oldTile == NULL) return false;
#if defined(_WINDOWS64) || defined(DISABLE_PSN) || defined(_DISABLE_XBLIVE)
if (g_NetworkManager.IsHost())
{
level->levelEvent(LevelEvent::PARTICLES_DESTROY_BLOCK, x, y, z, oldTile->id + (level->getData(x, y, z) << Tile::TILE_NUM_SHIFT));
int data = level->getData(x, y, z);
bool changed = level->removeTile(x, y, z);
if (changed)
{
oldTile->destroy(level, x, y, z, data);
}
return changed;
}
#endif
level->levelEvent(LevelEvent::PARTICLES_DESTROY_BLOCK, x, y, z, oldTile->id + (level->getData(x, y, z) << Tile::TILE_NUM_SHIFT)); level->levelEvent(LevelEvent::PARTICLES_DESTROY_BLOCK, x, y, z, oldTile->id + (level->getData(x, y, z) << Tile::TILE_NUM_SHIFT));
int data = level->getData(x, y, z); int data = level->getData(x, y, z);
@@ -1,7 +1,7 @@
/* /*
base64.cpp and base64.h base64.cpp and base64.h
Copyright (C) 2004-2008 René Nyffenegger Copyright (C) 2004-2008 René Nyffenegger
This source code is provided 'as-is', without any express or implied This source code is provided 'as-is', without any express or implied
warranty. In no event will the author be held liable for any damages warranty. In no event will the author be held liable for any damages
@@ -21,7 +21,7 @@
3. This notice may not be removed or altered from any source distribution. 3. This notice may not be removed or altered from any source distribution.
René Nyffenegger rene.nyffenegger@adp-gmbh.ch René Nyffenegger rene.nyffenegger@adp-gmbh.ch
*/ */
@@ -41,7 +41,7 @@ static inline bool is_base64(unsigned char c) {
} }
// 4J ADDED, // 4J ADDED,
std::string base64_encode(const std::string& str) std::string base64_encode(std::string str)
{ {
return base64_encode( reinterpret_cast<const unsigned char*>(str.c_str()), str.length() ); return base64_encode( reinterpret_cast<const unsigned char*>(str.c_str()), str.length() );
} }
+1 -1
View File
@@ -2,6 +2,6 @@
#include <string> #include <string>
std::string base64_encode(const std::string& str); std::string base64_encode(std::string str);
std::string base64_encode(unsigned char const* , unsigned int len); std::string base64_encode(unsigned char const* , unsigned int len);
std::string base64_decode(std::string const& s); std::string base64_decode(std::string const& s);
@@ -80,8 +80,6 @@ DWORD dwProfileSettingsA[NUM_PROFILE_VALUES]=
uint8_t * AddRichPresenceString(int iID); uint8_t * AddRichPresenceString(int iID);
void FreeRichPresenceStrings(); void FreeRichPresenceStrings();
char g_Win64Username[17] = {0};
BOOL g_bWidescreen = TRUE; BOOL g_bWidescreen = TRUE;
@@ -986,9 +984,6 @@ int main(int argc, const char *argv[] )
app.GAME_DEFINED_PROFILE_DATA_BYTES*XUSER_MAX_COUNT, app.GAME_DEFINED_PROFILE_DATA_BYTES*XUSER_MAX_COUNT,
&app.uiGameDefinedDataChangedBitmask); &app.uiGameDefinedDataChangedBitmask);
strncpy(g_Win64Username, ProfileManager.GetGamertag(0), 17);
g_Win64Username[16] = 0;
// register the awards // register the awards
RegisterAwardsWithProfileManager(); RegisterAwardsWithProfileManager();
+3 -3
View File
@@ -1,7 +1,7 @@
/* /*
base64.cpp and base64.h base64.cpp and base64.h
Copyright (C) 2004-2008 René Nyffenegger Copyright (C) 2004-2008 René Nyffenegger
This source code is provided 'as-is', without any express or implied This source code is provided 'as-is', without any express or implied
warranty. In no event will the author be held liable for any damages warranty. In no event will the author be held liable for any damages
@@ -21,7 +21,7 @@
3. This notice may not be removed or altered from any source distribution. 3. This notice may not be removed or altered from any source distribution.
René Nyffenegger rene.nyffenegger@adp-gmbh.ch René Nyffenegger rene.nyffenegger@adp-gmbh.ch
*/ */
@@ -41,7 +41,7 @@ static inline bool is_base64(unsigned char c) {
} }
// 4J ADDED, // 4J ADDED,
std::string base64_encode(const std::string& str) std::string base64_encode(std::string str)
{ {
return base64_encode( reinterpret_cast<const unsigned char*>(str.c_str()), str.length() ); return base64_encode( reinterpret_cast<const unsigned char*>(str.c_str()), str.length() );
} }
+1 -1
View File
@@ -2,6 +2,6 @@
#include <string> #include <string>
std::string base64_encode(const std::string& str); std::string base64_encode(std::string str);
std::string base64_encode(unsigned char const* , unsigned int len); std::string base64_encode(unsigned char const* , unsigned int len);
std::string base64_decode(std::string const& s); std::string base64_decode(std::string const& s);
-5
View File
@@ -158,8 +158,6 @@ extern "C" void* __wrap__malloc_init(size_t a_Boundary, size_t a_Size)
// for a long time. // for a long time.
//------------------------------------------------------------------------------------- //-------------------------------------------------------------------------------------
char g_Win64Username[17] = {0};
BOOL g_bWidescreen = TRUE; BOOL g_bWidescreen = TRUE;
//int g_numberOfSpeakersForMiles = 2; // number of speakers to pass to Miles, this is setup from init_audio_hardware //int g_numberOfSpeakersForMiles = 2; // number of speakers to pass to Miles, this is setup from init_audio_hardware
@@ -912,9 +910,6 @@ int main()
app.GAME_DEFINED_PROFILE_DATA_BYTES*XUSER_MAX_COUNT, app.GAME_DEFINED_PROFILE_DATA_BYTES*XUSER_MAX_COUNT,
&app.uiGameDefinedDataChangedBitmask); &app.uiGameDefinedDataChangedBitmask);
strncpy(g_Win64Username, ProfileManager.GetGamertag(0), 17);
g_Win64Username[16] = 0;
app.DebugPrintf("+++Main - after ProfileManager.Initialise\n"); app.DebugPrintf("+++Main - after ProfileManager.Initialise\n");
// register the awards // register the awards
@@ -133,8 +133,6 @@ extern "C" void* __wrap__malloc_init(size_t a_Boundary, size_t a_Size)
// for a long time. // for a long time.
//------------------------------------------------------------------------------------- //-------------------------------------------------------------------------------------
char g_Win64Username[17] = {0};
BOOL g_bWidescreen = TRUE; BOOL g_bWidescreen = TRUE;
//int g_numberOfSpeakersForMiles = 2; // number of speakers to pass to Miles, this is setup from init_audio_hardware //int g_numberOfSpeakersForMiles = 2; // number of speakers to pass to Miles, this is setup from init_audio_hardware
@@ -603,8 +601,6 @@ int main()
app.GAME_DEFINED_PROFILE_DATA_BYTES*XUSER_MAX_COUNT, app.GAME_DEFINED_PROFILE_DATA_BYTES*XUSER_MAX_COUNT,
&app.uiGameDefinedDataChangedBitmask); &app.uiGameDefinedDataChangedBitmask);
strncpy(g_Win64Username, ProfileManager.GetGamertag(0), 17);
g_Win64Username[16] = 0;
// register the awards // register the awards
RegisterAwardsWithProfileManager(); RegisterAwardsWithProfileManager();
-2
View File
@@ -85,7 +85,6 @@ void PendingConnection::handlePreLogin(shared_ptr<PreLoginPacket> packet)
return; return;
} }
// printf("Server: handlePreLogin\n"); // printf("Server: handlePreLogin\n");
app.DebugPrintf("PreLogin received from \"%ls\"\n", packet->loginKey.c_str());
name = packet->loginKey; // 4J Stu - Change from the login packet as we know better on client end during the pre-login packet name = packet->loginKey; // 4J Stu - Change from the login packet as we know better on client end during the pre-login packet
sendPreLoginResponse(); sendPreLoginResponse();
} }
@@ -140,7 +139,6 @@ void PendingConnection::sendPreLoginResponse()
void PendingConnection::handleLogin(shared_ptr<LoginPacket> packet) void PendingConnection::handleLogin(shared_ptr<LoginPacket> packet)
{ {
app.DebugPrintf("Login received from \"%ls\" (protocol %d)\n", name.c_str(), packet->clientVersion);
// printf("Server: handleLogin\n"); // printf("Server: handleLogin\n");
//name = packet->userName; //name = packet->userName;
if (packet->clientVersion != SharedConstants::NETWORK_PROTOCOL_VERSION) if (packet->clientVersion != SharedConstants::NETWORK_PROTOCOL_VERSION)
+1 -10
View File
@@ -539,12 +539,7 @@ void PlayerChunkMap::getChunkAndRemovePlayer(int x, int z, shared_ptr<ServerPlay
// 4J - added - actually create & add player to a playerchunk, if there is one queued for this player. // 4J - added - actually create & add player to a playerchunk, if there is one queued for this player.
void PlayerChunkMap::tickAddRequests(shared_ptr<ServerPlayer> player) void PlayerChunkMap::tickAddRequests(shared_ptr<ServerPlayer> player)
{ {
#ifdef _WINDOWS64 if( addRequests.size() )
const int maxPerTick = 10;
#else
const int maxPerTick = 1;
#endif
for (int _processed = 0; _processed < maxPerTick && addRequests.size(); _processed++)
{ {
// Find the nearest chunk request to the player // Find the nearest chunk request to the player
int px = (int)player->x; int px = (int)player->x;
@@ -574,10 +569,6 @@ void PlayerChunkMap::tickAddRequests(shared_ptr<ServerPlayer> player)
getChunk(itNearest->x, itNearest->z, true)->add(itNearest->player); getChunk(itNearest->x, itNearest->z, true)->add(itNearest->player);
addRequests.erase(itNearest); addRequests.erase(itNearest);
} }
else
{
break;
}
} }
} }
+2 -15
View File
@@ -116,7 +116,7 @@ void PlayerConnection::disconnect(DisconnectPacket::eDisconnectReason reason)
return; return;
} }
app.DebugPrintf("PlayerConnection disconect reason: %d", reason ); app.DebugPrintf("PlayerConnection disconect reason: %d\n", reason );
player->disconnect(); player->disconnect();
// 4J Stu - Need to remove the player from the receiving list before their socket is NULLed so that we can find another player on their system // 4J Stu - Need to remove the player from the receiving list before their socket is NULLed so that we can find another player on their system
@@ -543,16 +543,10 @@ void PlayerConnection::onDisconnect(DisconnectPacket::eDisconnectReason reason,
if(getWasKicked()) if(getWasKicked())
{ {
server->getPlayers()->broadcastAll( shared_ptr<ChatPacket>( new ChatPacket(player->name, ChatPacket::e_ChatPlayerKickedFromGame) ) ); server->getPlayers()->broadcastAll( shared_ptr<ChatPacket>( new ChatPacket(player->name, ChatPacket::e_ChatPlayerKickedFromGame) ) );
#ifdef _DEDICATED_SERVER
app.DebugPrintf("%ls was kicked from the game", player->name.c_str());
#endif
} }
else else
{ {
server->getPlayers()->broadcastAll( shared_ptr<ChatPacket>( new ChatPacket(player->name, ChatPacket::e_ChatPlayerLeftGame) ) ); server->getPlayers()->broadcastAll( shared_ptr<ChatPacket>( new ChatPacket(player->name, ChatPacket::e_ChatPlayerLeftGame) ) );
#ifdef _DEDICATED_SERVER
app.DebugPrintf("%ls left the game", player->name.c_str());
#endif
} }
server->getPlayers()->remove(player); server->getPlayers()->remove(player);
done = true; done = true;
@@ -1583,10 +1577,7 @@ bool PlayerConnection::isDisconnected()
void PlayerConnection::handleDebugOptions(shared_ptr<DebugOptionsPacket> packet) void PlayerConnection::handleDebugOptions(shared_ptr<DebugOptionsPacket> packet)
{ {
//Player player = dynamic_pointer_cast<Player>( player->shared_from_this() ); //Player player = dynamic_pointer_cast<Player>( player->shared_from_this() );
if(app.DebugSettingsOn()) player->SetDebugOptions(packet->m_uiVal);
{
player->SetDebugOptions(packet->m_uiVal);
}
} }
void PlayerConnection::handleCraftItem(shared_ptr<CraftItemPacket> packet) void PlayerConnection::handleCraftItem(shared_ptr<CraftItemPacket> packet)
@@ -1596,10 +1587,6 @@ void PlayerConnection::handleCraftItem(shared_ptr<CraftItemPacket> packet)
if(iRecipe == -1) if(iRecipe == -1)
return; return;
int recipeCount = (int)Recipes::getInstance()->getRecipies()->size();
if(iRecipe < 0 || iRecipe >= recipeCount)
return;
Recipy::INGREDIENTS_REQUIRED *pRecipeIngredientsRequired=Recipes::getInstance()->getRecipeIngredientsArray(); Recipy::INGREDIENTS_REQUIRED *pRecipeIngredientsRequired=Recipes::getInstance()->getRecipeIngredientsArray();
shared_ptr<ItemInstance> pTempItemInst=pRecipeIngredientsRequired[iRecipe].pRecipy->assemble(nullptr); shared_ptr<ItemInstance> pTempItemInst=pRecipeIngredientsRequired[iRecipe].pRecipy->assemble(nullptr);
-1
View File
@@ -1,4 +1,3 @@
#pragma once
#include "ConsoleInputSource.h" #include "ConsoleInputSource.h"
#include "..\Minecraft.World\PacketListener.h" #include "..\Minecraft.World\PacketListener.h"
#include "..\Minecraft.World\JavaIntHash.h" #include "..\Minecraft.World\JavaIntHash.h"
-4
View File
@@ -243,10 +243,6 @@ void PlayerList::placeNewPlayer(Connection *connection, shared_ptr<ServerPlayer>
//server->players->broadcastAll( shared_ptr<ChatPacket>( new ChatPacket(L"§e" + playerEntity->name + L" joined the game.") ) ); //server->players->broadcastAll( shared_ptr<ChatPacket>( new ChatPacket(L"§e" + playerEntity->name + L" joined the game.") ) );
broadcastAll( shared_ptr<ChatPacket>( new ChatPacket(player->name, ChatPacket::e_ChatPlayerJoinedGame) ) ); broadcastAll( shared_ptr<ChatPacket>( new ChatPacket(player->name, ChatPacket::e_ChatPlayerJoinedGame) ) );
#ifdef _DEDICATED_SERVER
app.DebugPrintf("%ls joined the game", player->name.c_str());
#endif
MemSect(14); MemSect(14);
add(player); add(player);
MemSect(0); MemSect(0);
+1 -23
View File
@@ -38,35 +38,13 @@ PlayerRenderer::PlayerRenderer() : LivingEntityRenderer( new HumanoidModel(0), 0
armorParts2 = new HumanoidModel(0.5f); armorParts2 = new HumanoidModel(0.5f);
} }
static unsigned int HsvToArgb(float h, float s, float v)
{
float c = v * s;
float x = c * (1.0f - fabsf(fmodf(h / 60.0f, 2.0f) - 1.0f));
float m = v - c;
float r, g, b;
if (h < 60) { r = c; g = x; b = 0; }
else if (h < 120) { r = x; g = c; b = 0; }
else if (h < 180) { r = 0; g = c; b = x; }
else if (h < 240) { r = 0; g = x; b = c; }
else if (h < 300) { r = x; g = 0; b = c; }
else { r = c; g = 0; b = x; }
unsigned int ri = (unsigned int)((r + m) * 255.0f);
unsigned int gi = (unsigned int)((g + m) * 255.0f);
unsigned int bi = (unsigned int)((b + m) * 255.0f);
return 0xFF000000 | (ri << 16) | (gi << 8) | bi;
}
unsigned int PlayerRenderer::getNametagColour(int index) unsigned int PlayerRenderer::getNametagColour(int index)
{ {
if( index >= 0 && index < MINECRAFT_NET_MAX_PLAYERS) if( index >= 0 && index < MINECRAFT_NET_MAX_PLAYERS)
{ {
return s_nametagColors[index]; return s_nametagColors[index];
} }
return 0xFF000000;
float hue = fmodf(index * 137.508f, 360.0f);
float sat = 0.65f + (float)(index % 3) * 0.15f;
float val = 0.75f + (float)(index % 4) * 0.08f;
return HsvToArgb(hue, sat, val);
} }
int PlayerRenderer::prepareArmor(shared_ptr<LivingEntity> _player, int layer, float a) int PlayerRenderer::prepareArmor(shared_ptr<LivingEntity> _player, int layer, float a)
-2
View File
@@ -151,10 +151,8 @@ LevelChunk *ServerChunkCache::create(int x, int z, bool asyncPostProcess) // 4J
if( ( chunk == NULL ) || ( chunk->x != x ) || ( chunk->z != z ) ) if( ( chunk == NULL ) || ( chunk->x != x ) || ( chunk->z != z ) )
{ {
bool wasLoaded = false;
EnterCriticalSection(&m_csLoadCreate); EnterCriticalSection(&m_csLoadCreate);
chunk = load(x, z); chunk = load(x, z);
wasLoaded = (chunk != NULL);
if (chunk == NULL) if (chunk == NULL)
{ {
if (source == NULL) if (source == NULL)
+1 -5
View File
@@ -1026,7 +1026,6 @@ void ServerLevel::saveToDisc(ProgressListener *progressListener, bool autosave)
// 4J-PB - check that saves are enabled // 4J-PB - check that saves are enabled
if(StorageManager.GetSaveDisabled()) return; if(StorageManager.GetSaveDisabled()) return;
#ifndef _DEDICATED_SERVER
// Check if we are using a trial version of a texture pack (which will be the case for going into the mash-up pack world with a trial version) // Check if we are using a trial version of a texture pack (which will be the case for going into the mash-up pack world with a trial version)
if(!Minecraft::GetInstance()->skins->isUsingDefaultSkin()) if(!Minecraft::GetInstance()->skins->isUsingDefaultSkin())
{ {
@@ -1040,7 +1039,6 @@ void ServerLevel::saveToDisc(ProgressListener *progressListener, bool autosave)
return; return;
} }
} }
#endif
if (progressListener != NULL) progressListener->progressStage(IDS_PROGRESS_SAVING_TO_DISC); if (progressListener != NULL) progressListener->progressStage(IDS_PROGRESS_SAVING_TO_DISC);
levelStorage->flushSaveFile(autosave); levelStorage->flushSaveFile(autosave);
@@ -1088,9 +1086,7 @@ void ServerLevel::entityRemoved(shared_ptr<Entity> e)
shared_ptr<Entity> ServerLevel::getEntity(int id) shared_ptr<Entity> ServerLevel::getEntity(int id)
{ {
AUTO_VAR(it, entitiesById.find(id)); return entitiesById[id];
if(it != entitiesById.end()) return it->second;
return nullptr;
} }
bool ServerLevel::addGlobalEntity(shared_ptr<Entity> e) bool ServerLevel::addGlobalEntity(shared_ptr<Entity> e)
-19
View File
@@ -329,10 +329,6 @@ void ServerPlayer::doTickA()
// 4J - split off the chunk sending bit of the tick here from ::doTick so we can do this exactly once per player per server tick // 4J - split off the chunk sending bit of the tick here from ::doTick so we can do this exactly once per player per server tick
void ServerPlayer::doChunkSendingTick(bool dontDelayChunks) void ServerPlayer::doChunkSendingTick(bool dontDelayChunks)
{ {
#if defined(_WINDOWS64) || defined(DISABLE_PSN) || defined(_DISABLE_XBLIVE)
for (int _w64cs = 0; _w64cs < 4; _w64cs++)
{
#endif
// printf("[%d] %s: sendChunks: %d, empty: %d\n",tickCount, connection->getNetworkPlayer()->GetUID().getOnlineID(),sendChunks,chunksToSend.empty()); // printf("[%d] %s: sendChunks: %d, empty: %d\n",tickCount, connection->getNetworkPlayer()->GetUID().getOnlineID(),sendChunks,chunksToSend.empty());
if (!chunksToSend.empty()) if (!chunksToSend.empty())
{ {
@@ -371,17 +367,6 @@ void ServerPlayer::doChunkSendingTick(bool dontDelayChunks)
} }
else else
{ {
#if defined(_WINDOWS64)
if( dontDelayChunks ||
((connection->countDelayedPackets() < 16 )&&
(g_NetworkManager.GetHostPlayer()->GetSendQueueSizeMessages( NULL, true ) < 16 )&&
!connection->done) )
{
lastBrupSendTickCount = tickCount;
okToSend = true;
MinecraftServer::s_slowQueuePacketSent = true;
}
#else
bool canSendToPlayer = MinecraftServer::chunkPacketManagement_CanSendTo(connection->getNetworkPlayer()); bool canSendToPlayer = MinecraftServer::chunkPacketManagement_CanSendTo(connection->getNetworkPlayer());
// app.DebugPrintf(">>> %d\n", canSendToPlayer); // app.DebugPrintf(">>> %d\n", canSendToPlayer);
@@ -423,7 +408,6 @@ void ServerPlayer::doChunkSendingTick(bool dontDelayChunks)
{ {
// app.DebugPrintf(" - <NOT OK>\n"); // app.DebugPrintf(" - <NOT OK>\n");
} }
#endif
} }
if (okToSend) if (okToSend)
@@ -501,9 +485,6 @@ void ServerPlayer::doChunkSendingTick(bool dontDelayChunks)
} }
} }
} }
#if defined(_WINDOWS64) || defined(DISABLE_PSN) || defined(_DISABLE_XBLIVE)
}
#endif
} }
void ServerPlayer::doTickB() void ServerPlayer::doTickB()
+4
View File
@@ -0,0 +1,4 @@
#pragma once
const int MINECRAFT_NET_MAX_PLAYERS = 8;
+2 -6
View File
@@ -29,8 +29,8 @@
#else #else
#include "..\Windows64\Leaderboards\WindowsLeaderboardManager.h" #include "..\Windows64\Leaderboards\WindowsLeaderboardManager.h"
#endif #endif
#include "..\Common\XUI\XUI_Scene_Container.h"
#include "..\Common\Network\NetworkSocketLayer.h" #include "..\Common\Network\NetworkSocketLayer.h"
#include "..\Common\XUI\XUI_Scene_Container.h"
#include "..\..\Minecraft.Client\Tesselator.h" #include "..\..\Minecraft.Client\Tesselator.h"
#include "..\..\Minecraft.Client\Options.h" #include "..\..\Minecraft.Client\Options.h"
#include "Sentient\SentientManager.h" #include "Sentient\SentientManager.h"
@@ -94,8 +94,6 @@ D3DSAMPLERSTATETYPE SamplerStateModes[]=
//------------------------------------------------------------------------------------- //-------------------------------------------------------------------------------------
char g_Win64Username[17] = {0};
BOOL g_bWidescreen = TRUE; BOOL g_bWidescreen = TRUE;
@@ -435,9 +433,6 @@ int __cdecl main()
&app.uiGameDefinedDataChangedBitmask &app.uiGameDefinedDataChangedBitmask
); );
strncpy(g_Win64Username, ProfileManager.GetGamertag(0), 17);
g_Win64Username[16] = 0;
// register the awards // register the awards
ProfileManager.RegisterAward(eAward_TakingInventory, ACHIEVEMENT_01, eAwardType_Achievement); ProfileManager.RegisterAward(eAward_TakingInventory, ACHIEVEMENT_01, eAwardType_Achievement);
ProfileManager.RegisterAward(eAward_GettingWood, ACHIEVEMENT_02, eAwardType_Achievement); ProfileManager.RegisterAward(eAward_GettingWood, ACHIEVEMENT_02, eAwardType_Achievement);
@@ -500,6 +495,7 @@ int __cdecl main()
// ProfileManager for XN_LIVE_INVITE_ACCEPTED for QNet. // ProfileManager for XN_LIVE_INVITE_ACCEPTED for QNet.
g_NetworkManager.Initialise(); g_NetworkManager.Initialise();
// Brings up XNet/Winsock and starts the LAN discovery listener
NetworkSocketLayer::Initialize(); NetworkSocketLayer::Initialize();
app.InitGameSettings(); app.InitGameSettings();
-6
View File
@@ -5,12 +5,6 @@
#pragma once #pragma once
#ifdef _XBOX
#ifndef _DISABLE_XBLIVE
#define _DISABLE_XBLIVE
#endif
#endif
//#include <xtl.h> //#include <xtl.h>
//#include <xboxmath.h> //#include <xboxmath.h>
+12
View File
@@ -56,9 +56,15 @@ void AddEntityPacket::read(DataInputStream *dis) // throws IOException TODO 4J
{ {
id = dis->readShort(); id = dis->readShort();
type = dis->readByte(); type = dis->readByte();
#ifdef _LARGE_WORLDS
x = dis->readInt(); x = dis->readInt();
y = dis->readInt(); y = dis->readInt();
z = dis->readInt(); z = dis->readInt();
#else
x = dis->readShort();
y = dis->readShort();
z = dis->readShort();
#endif
yRot = dis->readByte(); yRot = dis->readByte();
xRot = dis->readByte(); xRot = dis->readByte();
data = dis->readInt(); data = dis->readInt();
@@ -74,9 +80,15 @@ void AddEntityPacket::write(DataOutputStream *dos) // throws IOException TODO 4J
{ {
dos->writeShort(id); dos->writeShort(id);
dos->writeByte(type); dos->writeByte(type);
#ifdef _LARGE_WORLDS
dos->writeInt(x); dos->writeInt(x);
dos->writeInt(y); dos->writeInt(y);
dos->writeInt(z); dos->writeInt(z);
#else
dos->writeShort(x);
dos->writeShort(y);
dos->writeShort(z);
#endif
dos->writeByte(yRot); dos->writeByte(yRot);
dos->writeByte(xRot); dos->writeByte(xRot);
dos->writeInt(data); dos->writeInt(data);
+12
View File
@@ -68,9 +68,15 @@ void AddMobPacket::read(DataInputStream *dis) //throws IOException
{ {
id = dis->readShort(); id = dis->readShort();
type = dis->readByte() & 0xff; type = dis->readByte() & 0xff;
#ifdef _LARGE_WORLDS
x = dis->readInt(); x = dis->readInt();
y = dis->readInt(); y = dis->readInt();
z = dis->readInt(); z = dis->readInt();
#else
x = dis->readShort();
y = dis->readShort();
z = dis->readShort();
#endif
yRot = dis->readByte(); yRot = dis->readByte();
xRot = dis->readByte(); xRot = dis->readByte();
yHeadRot = dis->readByte(); yHeadRot = dis->readByte();
@@ -86,9 +92,15 @@ void AddMobPacket::write(DataOutputStream *dos) //throws IOException
{ {
dos->writeShort(id); dos->writeShort(id);
dos->writeByte(type & 0xff); dos->writeByte(type & 0xff);
#ifdef _LARGE_WORLDS
dos->writeInt(x); dos->writeInt(x);
dos->writeInt(y); dos->writeInt(y);
dos->writeInt(z); dos->writeInt(z);
#else
dos->writeShort(x);
dos->writeShort(y);
dos->writeShort(z);
#endif
dos->writeByte(yRot); dos->writeByte(yRot);
dos->writeByte(xRot); dos->writeByte(xRot);
dos->writeByte(yHeadRot); dos->writeByte(yHeadRot);
+1 -1
View File
@@ -47,7 +47,7 @@ void AwardStatPacket::read(DataInputStream *dis) //throws IOException
// Read parameter blob. // Read parameter blob.
int length = dis->readInt(); int length = dis->readInt();
if(length > 0 && length <= 65536) if(length > 0)
{ {
m_paramData = byteArray(length); m_paramData = byteArray(length);
dis->readFully(m_paramData); dis->readFully(m_paramData);
+3 -12
View File
@@ -74,7 +74,7 @@ BlockRegionUpdatePacket::BlockRegionUpdatePacket(int x, int y, int z, int xs, in
unsigned char *ucTemp = new unsigned char[(256 * 16 * 16 * 5)/2]; unsigned char *ucTemp = new unsigned char[(256 * 16 * 16 * 5)/2];
unsigned int inputSize = (256 * 16 * 16 * 5)/2; unsigned int inputSize = (256 * 16 * 16 * 5)/2;
Compression::getCompression()->CompressRLE(ucTemp, &inputSize, rawBuffer.data, (unsigned int) rawBuffer.length); Compression::getCompression()->CompressNetworkRLE(ucTemp, &inputSize, rawBuffer.data, (unsigned int) rawBuffer.length);
//app.DebugPrintf("Chunk (%d,%d) compressed from %d to size %d\n", x>>4, z>>4, rawBuffer.length, inputSize); //app.DebugPrintf("Chunk (%d,%d) compressed from %d to size %d\n", x>>4, z>>4, rawBuffer.length, inputSize);
unsigned char *ucTemp2 = new unsigned char[inputSize]; unsigned char *ucTemp2 = new unsigned char[inputSize];
memcpy(ucTemp2,ucTemp,inputSize); memcpy(ucTemp2,ucTemp,inputSize);
@@ -103,12 +103,6 @@ void BlockRegionUpdatePacket::read(DataInputStream *dis) //throws IOException
levelIdx = ( size >> 30 ) & 3; levelIdx = ( size >> 30 ) & 3;
size &= 0x3fffffff; size &= 0x3fffffff;
const int MAX_COMPRESSED_CHUNK_SIZE = 5 * 1024 * 1024;
if(size < 0 || size > MAX_COMPRESSED_CHUNK_SIZE)
{
size = 0;
}
if(size == 0) if(size == 0)
{ {
buffer = byteArray(); buffer = byteArray();
@@ -126,7 +120,7 @@ void BlockRegionUpdatePacket::read(DataInputStream *dis) //throws IOException
if( success ) if( success )
{ {
Compression::getCompression()->DecompressRLE( buffer.data, &outputSize, compressedBuffer.data, size); Compression::getCompression()->DecompressNetworkRLE( buffer.data, &outputSize, compressedBuffer.data, size);
} }
else else
{ {
@@ -137,10 +131,7 @@ void BlockRegionUpdatePacket::read(DataInputStream *dis) //throws IOException
delete [] compressedBuffer.data; delete [] compressedBuffer.data;
if(buffer.length != outputSize) assert(buffer.length == outputSize);
{
app.DebugPrintf("BlockRegionUpdatePacket: decompressed size mismatch (expected %d, got %d)\n", buffer.length, outputSize);
}
} }
} }
+1 -7
View File
@@ -10,14 +10,8 @@
//offset - the offset in the buffer of the first byte to read. //offset - the offset in the buffer of the first byte to read.
//length - the maximum number of bytes to read from the buffer. //length - the maximum number of bytes to read from the buffer.
ByteArrayInputStream::ByteArrayInputStream(byteArray buf, unsigned int offset, unsigned int length) ByteArrayInputStream::ByteArrayInputStream(byteArray buf, unsigned int offset, unsigned int length)
: pos( offset ), mark( offset ) : pos( offset ), count( min( offset+length, buf.length ) ), mark( offset )
{ {
if( offset > buf.length )
count = buf.length;
else if( length > buf.length - offset )
count = buf.length;
else
count = offset + length;
this->buf = buf; this->buf = buf;
} }
+1 -6
View File
@@ -31,12 +31,7 @@ void ByteArrayOutputStream::write(unsigned int b)
{ {
// If we will fill the buffer we need to make it bigger // If we will fill the buffer we need to make it bigger
if( count + 1 >= buf.length ) if( count + 1 >= buf.length )
{ buf.resize( buf.length * 2 );
unsigned int newSize = buf.length * 2;
if( newSize <= buf.length )
return;
buf.resize( newSize );
}
buf[count] = (byte) b; buf[count] = (byte) b;
count++; count++;
-2
View File
@@ -21,8 +21,6 @@ public:
void load(DataInput *dis, int tagDepth) void load(DataInput *dis, int tagDepth)
{ {
int length = dis->readInt(); int length = dis->readInt();
if (length < 0 || length > 2 * 1024 * 1024) length = 0;
if ( data.data ) delete[] data.data; if ( data.data ) delete[] data.data;
data = byteArray(length); data = byteArray(length);
@@ -51,10 +51,17 @@ ChunkTilesUpdatePacket::ChunkTilesUpdatePacket(int xc, int zc, shortArray positi
void ChunkTilesUpdatePacket::read(DataInputStream *dis) //throws IOException void ChunkTilesUpdatePacket::read(DataInputStream *dis) //throws IOException
{ {
// 4J - changed format. See comments in write method. // 4J - changed format. See comments in write method.
#ifdef _LARGE_WORLDS
xc = dis->readShort(); xc = dis->readShort();
zc = dis->readShort(); zc = dis->readShort();
xc = ( xc << 16 ) >> 16; xc = ( xc << 16 ) >> 16;
zc = ( zc << 16 ) >> 16; zc = ( zc << 16 ) >> 16;
#else
xc = dis->read();
zc = dis->read();
xc = ( xc << 24 ) >> 24;
zc = ( zc << 24 ) >> 24;
#endif
int countAndFlags = dis->readByte(); int countAndFlags = dis->readByte();
bool dataAllZero = (( countAndFlags & 0x80 ) == 0x80 ); bool dataAllZero = (( countAndFlags & 0x80 ) == 0x80 );
@@ -90,8 +97,13 @@ void ChunkTilesUpdatePacket::read(DataInputStream *dis) //throws IOException
void ChunkTilesUpdatePacket::write(DataOutputStream *dos) //throws IOException void ChunkTilesUpdatePacket::write(DataOutputStream *dos) //throws IOException
{ {
// 4J - changed format to reduce size of these packets. // 4J - changed format to reduce size of these packets.
#ifdef _LARGE_WORLDS
dos->writeShort(xc); dos->writeShort(xc);
dos->writeShort(zc); dos->writeShort(zc);
#else
dos->write(xc);
dos->write(zc);
#endif
// Determine if we've got any data elements that are non-zero - a large % of these packets set all data to zero, so we don't // Determine if we've got any data elements that are non-zero - a large % of these packets set all data to zero, so we don't
// bother sending all those zeros in that case. // bother sending all those zeros in that case.
bool dataAllZero = true; bool dataAllZero = true;
+1 -3
View File
@@ -32,9 +32,7 @@ void ComplexItemDataPacket::read(DataInputStream *dis) //throws IOException
itemType = dis->readShort(); itemType = dis->readShort();
itemId = dis->readShort(); itemId = dis->readShort();
int dataLength = dis->readUnsignedShort() & 0xffff; data = charArray(dis->readUnsignedShort() & 0xffff);
if(dataLength > 32767) dataLength = 0;
data = charArray(dataLength);
dis->readFully(data); dis->readFully(data);
} }
-3
View File
@@ -43,12 +43,9 @@ public:
} }
tags.clear(); tags.clear();
Tag *tag; Tag *tag;
int tagCount = 0;
const int MAX_COMPOUND_TAGS = 10000;
while ((tag = Tag::readNamedTag(dis))->getId() != Tag::TAG_End) while ((tag = Tag::readNamedTag(dis))->getId() != Tag::TAG_End)
{ {
tags[tag->getName()] = tag; tags[tag->getName()] = tag;
if(++tagCount >= MAX_COMPOUND_TAGS) break;
} }
delete tag; delete tag;
} }
+5 -5
View File
@@ -108,8 +108,8 @@ Connection::Connection(Socket *socket, const wstring& id, PacketListener *packet
const char *szId = wstringtofilename(id); const char *szId = wstringtofilename(id);
char readThreadName[256]; char readThreadName[256];
char writeThreadName[256]; char writeThreadName[256];
sprintf(readThreadName, "%.240s read\n", szId); sprintf(readThreadName,"%s read\n",szId);
sprintf(writeThreadName, "%.240s write\n", szId); sprintf(writeThreadName,"%s write\n",szId);
readThread = new C4JThread(runRead, (void*)this, readThreadName, READ_STACK_SIZE); readThread = new C4JThread(runRead, (void*)this, readThreadName, READ_STACK_SIZE);
writeThread = new C4JThread(runWrite, this, writeThreadName, WRITE_STACK_SIZE); writeThread = new C4JThread(runWrite, this, writeThreadName, WRITE_STACK_SIZE);
@@ -341,7 +341,7 @@ bool Connection::readTick()
// printf("Con:0x%x readTick close EOS\n",this); // printf("Con:0x%x readTick close EOS\n",this);
// 4J Stu - Remove this line // 4J Stu - Remove this line
// Fix for #10410 - UI: If the player is removed from a splitscreened host’s game, the next game that player joins will produce a message stating that the host has left. // Fix for #10410 - UI: If the player is removed from a splitscreened host’s game, the next game that player joins will produce a message stating that the host has left.
//close(DisconnectPacket::eDisconnect_EndOfStream); //close(DisconnectPacket::eDisconnect_EndOfStream);
} }
@@ -666,7 +666,7 @@ int Connection::runClose(void* lpParam)
//try { //try {
Sleep(500); Sleep(2000);
if (con->running) if (con->running)
{ {
// 4J TODO writeThread.interrupt(); // 4J TODO writeThread.interrupt();
@@ -690,7 +690,7 @@ int Connection::runSendAndQuit(void* lpParam)
//try { //try {
Sleep(500); Sleep(2000);
if (con->running) if (con->running)
{ {
// 4J TODO writeThread.interrupt(); // 4J TODO writeThread.interrupt();
@@ -32,9 +32,6 @@ void ContainerSetContentPacket::read(DataInputStream *dis) //throws IOException
{ {
containerId = dis->readByte(); containerId = dis->readByte();
int count = dis->readShort(); int count = dis->readShort();
if(count < 0 || count > 256) count = 0;
items = ItemInstanceArray(count); items = ItemInstanceArray(count);
for (int i = 0; i < count; i++) for (int i = 0; i < count; i++)
{ {
+1 -1
View File
@@ -35,7 +35,7 @@ void ContainerSetSlotPacket::read(DataInputStream *dis) //throws IOException
// 4J Stu - TU-1 hotfix // 4J Stu - TU-1 hotfix
// Fix for #13142 - Holding down the A button on the furnace ingredient slot causes the UI to display incorrect item counts // Fix for #13142 - Holding down the A button on the furnace ingredient slot causes the UI to display incorrect item counts
BYTE byteId = dis->readByte(); BYTE byteId = dis->readByte();
containerId = (char)(signed char)byteId; containerId = *(char *)&byteId;
slot = dis->readShort(); slot = dis->readShort();
item = readItem(dis); item = readItem(dis);
} }
+1 -1
View File
@@ -43,7 +43,7 @@ void CustomPayloadPacket::read(DataInputStream *dis)
identifier = readUtf(dis, 20); identifier = readUtf(dis, 20);
length = dis->readShort(); length = dis->readShort();
if (length > 0 && length <= Short::MAX_VALUE) if (length > 0 && length < Short::MAX_VALUE)
{ {
if(data.data != NULL) if(data.data != NULL)
{ {
-4
View File
@@ -303,10 +303,6 @@ wstring DataInputStream::readUTF()
int b = stream->read(); int b = stream->read();
unsigned short UTFLength = (unsigned short) (((a & 0xff) << 8) | (b & 0xff)); unsigned short UTFLength = (unsigned short) (((a & 0xff) << 8) | (b & 0xff));
const unsigned short MAX_UTF_LENGTH = 32767;
if( UTFLength > MAX_UTF_LENGTH )
return outputString;
//// 4J Stu - I decided while writing DataOutputStream that we didn't need to bother using the UTF8 format //// 4J Stu - I decided while writing DataOutputStream that we didn't need to bother using the UTF8 format
//// used in the java libs, and just write in/out as wchar_t all the time //// used in the java libs, and just write in/out as wchar_t all the time
-22
View File
@@ -432,28 +432,6 @@ void DirectoryLevelStorage::save(shared_ptr<Player> player)
CompoundTag *DirectoryLevelStorage::load(shared_ptr<Player> player) CompoundTag *DirectoryLevelStorage::load(shared_ptr<Player> player)
{ {
CompoundTag *tag = loadPlayerDataTag( player->getXuid() ); CompoundTag *tag = loadPlayerDataTag( player->getXuid() );
#if defined(_WINDOWS64) || defined(DISABLE_PSN) || defined(_DISABLE_XBLIVE)
if (tag == NULL)
{
const PlayerUID WIN64_XUID_BASE = (PlayerUID)0xe000d45248242f2e;
for (int i = 0; i < MINECRAFT_NET_MAX_PLAYERS; i++)
{
PlayerUID oldXuid = WIN64_XUID_BASE + i;
tag = loadPlayerDataTag(oldXuid);
if (tag != NULL)
{
ConsoleSavePath oldFile = ConsoleSavePath(playerDir.getName() + _toString(oldXuid) + L".dat");
if (m_saveFile->doesFileExist(oldFile))
{
m_saveFile->deleteFile(m_saveFile->createFile(oldFile));
}
app.DebugPrintf("Migrated player data from old XUID %llu to new XUID %llu\n", oldXuid, player->getXuid());
break;
}
}
}
#endif
if (tag != NULL) if (tag != NULL)
{ {
player->load(tag); player->load(tag);
-2
View File
@@ -56,8 +56,6 @@ void ExplodePacket::read(DataInputStream *dis) //throws IOException
r = dis->readFloat(); r = dis->readFloat();
int count = dis->readInt(); int count = dis->readInt();
if(count < 0 || count > 32768) count = 0;
int xp = (int)x; int xp = (int)x;
int yp = (int)y; int yp = (int)y;
int zp = (int)z; int zp = (int)z;
+1 -1
View File
@@ -40,7 +40,7 @@ void GameCommandPacket::read(DataInputStream *dis)
command = (EGameCommand)dis->readInt(); command = (EGameCommand)dis->readInt();
length = dis->readShort(); length = dis->readShort();
if (length > 0 && length <= Short::MAX_VALUE) if (length > 0 && length < Short::MAX_VALUE)
{ {
if(data.data != NULL) if(data.data != NULL)
{ {
-1
View File
@@ -35,7 +35,6 @@ public:
void load(DataInput *dis, int tagDepth) void load(DataInput *dis, int tagDepth)
{ {
int length = dis->readInt(); int length = dis->readInt();
if (length < 0 || length > 65536) length = 0;
if ( data.data ) delete[] data.data; if ( data.data ) delete[] data.data;
data = intArray(length); data = intArray(length);
+1 -2
View File
@@ -1951,8 +1951,7 @@ AABBList *Level::getCubes(shared_ptr<Entity> source, AABB *box, bool noEntities/
// 4J - now add in collision for any blocks which have actually been removed, but haven't had their render data updated to reflect this yet. This is to stop the player // 4J - now add in collision for any blocks which have actually been removed, but haven't had their render data updated to reflect this yet. This is to stop the player
// being able to move the view position inside a tile which is (visually) still there, and see out of the world. This is particularly a problem when moving upwards in // being able to move the view position inside a tile which is (visually) still there, and see out of the world. This is particularly a problem when moving upwards in
// creative mode as the player can get very close to the edge of tiles whilst looking upwards and can therefore very quickly move inside one. // creative mode as the player can get very close to the edge of tiles whilst looking upwards and can therefore very quickly move inside one.
if(Minecraft::GetInstance()->levelRenderer != NULL) Minecraft::GetInstance()->levelRenderer->destroyedTileManager->addAABBs( this, box, &boxes);
Minecraft::GetInstance()->levelRenderer->destroyedTileManager->addAABBs( this, box, &boxes);
// 4J - added // 4J - added
if( noEntities ) return &boxes; if( noEntities ) return &boxes;
+1
View File
@@ -1197,6 +1197,7 @@ void LevelChunk::addEntity(shared_ptr<Entity> e)
int zc = Mth::floor(e->z / 16); int zc = Mth::floor(e->z / 16);
if (xc != this->x || zc != this->z) if (xc != this->x || zc != this->z)
{ {
app.DebugPrintf("Wrong location!");
// System.out.println("Wrong location! " + e); // System.out.println("Wrong location! " + e);
// Thread.dumpStack(); // Thread.dumpStack();
} }
-2
View File
@@ -37,13 +37,11 @@ public:
} }
type = dis->readByte(); type = dis->readByte();
int size = dis->readInt(); int size = dis->readInt();
if (size < 0 || size > 10000) size = 0;
list.clear(); list.clear();
for (int i = 0; i < size; i++) for (int i = 0; i < size; i++)
{ {
Tag *tag = Tag::newTag(type, L""); Tag *tag = Tag::newTag(type, L"");
if (tag == NULL) break;
tag->load(dis, tagDepth); tag->load(dis, tagDepth);
list.push_back(tag); list.push_back(tag);
} }
+4
View File
@@ -123,8 +123,10 @@ void LoginPacket::read(DataInputStream *dis) //throws IOException
m_isGuest = dis->readBoolean(); m_isGuest = dis->readBoolean();
m_newSeaLevel = dis->readBoolean(); m_newSeaLevel = dis->readBoolean();
m_uiGamePrivileges = dis->readInt(); m_uiGamePrivileges = dis->readInt();
#ifdef _LARGE_WORLDS
m_xzSize = dis->readShort(); m_xzSize = dis->readShort();
m_hellScale = dis->read(); m_hellScale = dis->read();
#endif
app.DebugPrintf("LoginPacket::read - Difficulty = %d\n",difficulty); app.DebugPrintf("LoginPacket::read - Difficulty = %d\n",difficulty);
} }
@@ -158,8 +160,10 @@ void LoginPacket::write(DataOutputStream *dos) //throws IOException
dos->writeBoolean(m_isGuest); dos->writeBoolean(m_isGuest);
dos->writeBoolean(m_newSeaLevel); dos->writeBoolean(m_newSeaLevel);
dos->writeInt(m_uiGamePrivileges); dos->writeInt(m_uiGamePrivileges);
#ifdef _LARGE_WORLDS
dos->writeShort(m_xzSize); dos->writeShort(m_xzSize);
dos->write(m_hellScale); dos->write(m_hellScale);
#endif
} }
void LoginPacket::handle(PacketListener *listener) void LoginPacket::handle(PacketListener *listener)
+2 -3
View File
@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations"> <ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="ContentPackage_NO_TU|Durango"> <ProjectConfiguration Include="ContentPackage_NO_TU|Durango">
@@ -201,7 +201,6 @@
<ConfigurationType>StaticLibrary</ConfigurationType> <ConfigurationType>StaticLibrary</ConfigurationType>
<CharacterSet>MultiByte</CharacterSet> <CharacterSet>MultiByte</CharacterSet>
<PlatformToolset>v110</PlatformToolset> <PlatformToolset>v110</PlatformToolset>
<WholeProgramOptimization>true</WholeProgramOptimization>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Durango'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Durango'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType> <ConfigurationType>StaticLibrary</ConfigurationType>
@@ -859,7 +858,7 @@
<BufferSecurityCheck>false</BufferSecurityCheck> <BufferSecurityCheck>false</BufferSecurityCheck>
<PrecompiledHeaderOutputFile>$(OutDir)$(ProjectName).pch</PrecompiledHeaderOutputFile> <PrecompiledHeaderOutputFile>$(OutDir)$(ProjectName).pch</PrecompiledHeaderOutputFile>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary> <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<PreprocessorDefinitions>_LARGE_WORLDS;_DEBUG_MENUS_ENABLED;_LIB;_CRT_NON_CONFORMING_SWPRINTFS;_CRT_SECURE_NO_WARNINGS;_WINDOWS64;%(PreprocessorDefinitions)</PreprocessorDefinitions> <PreprocessorDefinitions>_DEBUG_MENUS_ENABLED;_LIB;_CRT_NON_CONFORMING_SWPRINTFS;_CRT_SECURE_NO_WARNINGS;_WINDOWS64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<CallAttributedProfiling>Disabled</CallAttributedProfiling> <CallAttributedProfiling>Disabled</CallAttributedProfiling>
<RuntimeTypeInfo>true</RuntimeTypeInfo> <RuntimeTypeInfo>true</RuntimeTypeInfo>
<ShowIncludes>false</ShowIncludes> <ShowIncludes>false</ShowIncludes>
+14 -13
View File
@@ -476,28 +476,29 @@ LevelChunk *OldChunkStorage::load(Level *level, DataInputStream *dis)
CompoundTag *tag = NbtIo::read(dis); CompoundTag *tag = NbtIo::read(dis);
if (tag != NULL) loadEntities(levelChunk, level, tag);
if (tag->contains(L"TileTicks"))
{ {
loadEntities(levelChunk, level, tag); PIXBeginNamedEvent(0,"Loading TileTicks");
ListTag<CompoundTag> *tileTicks = (ListTag<CompoundTag> *) tag->getList(L"TileTicks");
if (tag->contains(L"TileTicks")) if (tileTicks != NULL)
{ {
ListTag<CompoundTag> *tileTicks = (ListTag<CompoundTag> *) tag->getList(L"TileTicks"); for (int i = 0; i < tileTicks->size(); i++)
if (tileTicks != NULL)
{ {
for (int i = 0; i < tileTicks->size(); i++) CompoundTag *teTag = tileTicks->get(i);
{
CompoundTag *teTag = tileTicks->get(i);
level->forceAddTileTick(teTag->getInt(L"x"), teTag->getInt(L"y"), teTag->getInt(L"z"), teTag->getInt(L"i"), teTag->getInt(L"t")); level->forceAddTileTick(teTag->getInt(L"x"), teTag->getInt(L"y"), teTag->getInt(L"z"), teTag->getInt(L"i"), teTag->getInt(L"t"), teTag->getInt(L"p"));
}
} }
} }
PIXEndNamedEvent();
delete tag;
} }
delete tag;
PIXEndNamedEvent();
return levelChunk; return levelChunk;
} }
+17 -21
View File
@@ -268,13 +268,7 @@ void Packet::updatePacketStatsPIX()
shared_ptr<Packet> Packet::getPacket(int id) shared_ptr<Packet> Packet::getPacket(int id)
{ {
// 4J: Removed try/catch // 4J: Removed try/catch
#ifdef __PS3__ return idToCreateMap[id]();
boost::unordered_map<int, packetCreateFn>::iterator it = idToCreateMap.find(id);
#else
auto it = idToCreateMap.find(id);
#endif
if (it == idToCreateMap.end()) return shared_ptr<Packet>();
return it->second();
} }
void Packet::writeBytes(DataOutputStream *dataoutputstream, byteArray bytes) void Packet::writeBytes(DataOutputStream *dataoutputstream, byteArray bytes)
@@ -336,12 +330,13 @@ shared_ptr<Packet> Packet::readPacket(DataInputStream *dis, bool isServer) // th
if ((isServer && serverReceivedPackets.find(id) == serverReceivedPackets.end()) || (!isServer && clientReceivedPackets.find(id) == clientReceivedPackets.end())) if ((isServer && serverReceivedPackets.find(id) == serverReceivedPackets.end()) || (!isServer && clientReceivedPackets.find(id) == clientReceivedPackets.end()))
{ {
//app.DebugPrintf("Bad packet id %d\n", id); //app.DebugPrintf("Bad packet id %d\n", id);
return nullptr; __debugbreak();
assert(false);
// throw new IOException(wstring(L"Bad packet id ") + _toString<int>(id)); // throw new IOException(wstring(L"Bad packet id ") + _toString<int>(id));
} }
packet = getPacket(id); packet = getPacket(id);
if (packet == NULL) return nullptr;//throw new IOException(wstring(L"Bad packet id ") + _toString<int>(id)); if (packet == NULL) assert(false);//throw new IOException(wstring(L"Bad packet id ") + _toString<int>(id));
//app.DebugPrintf("%s reading packet %d\n", isServer ? "Server" : "Client", packet->getId()); //app.DebugPrintf("%s reading packet %d\n", isServer ? "Server" : "Client", packet->getId());
packet->read(dis); packet->read(dis);
@@ -399,9 +394,17 @@ wstring Packet::readUtf(DataInputStream *dis, int maxLength) // throws IOExcepti
{ {
short stringLength = dis->readShort(); short stringLength = dis->readShort();
if (stringLength > maxLength || stringLength < 0) if (stringLength > maxLength)
{ {
return L""; wstringstream stream;
stream << L"Received string length longer than maximum allowed (" << stringLength << " > " << maxLength << ")";
assert(false);
// throw new IOException( stream.str() );
}
if (stringLength < 0)
{
assert(false);
// throw new IOException(L"Received string length is less than zero! Weird string!");
} }
wstring builder = L""; wstring builder = L"";
@@ -504,7 +507,7 @@ shared_ptr<ItemInstance> Packet::readItem(DataInputStream *dis)
{ {
shared_ptr<ItemInstance> item = nullptr; shared_ptr<ItemInstance> item = nullptr;
int id = dis->readShort(); int id = dis->readShort();
if (id >= 0 && id < 32000) // validate against Item::ITEM_NUM_COUNT if (id >= 0)
{ {
int count = dis->readByte(); int count = dis->readByte();
int damage = dis->readShort(); int damage = dis->readShort();
@@ -542,16 +545,9 @@ void Packet::writeItem(shared_ptr<ItemInstance> item, DataOutputStream *dos)
CompoundTag *Packet::readNbt(DataInputStream *dis) CompoundTag *Packet::readNbt(DataInputStream *dis)
{ {
int size = dis->readShort(); int size = dis->readShort();
if (size <= 0) return NULL; if (size < 0) return NULL;
const int MAX_NBT_SIZE = 32767;
if (size > MAX_NBT_SIZE) return NULL;
byteArray buff(size); byteArray buff(size);
if (!dis->readFully(buff)) dis->readFully(buff);
{
delete [] buff.data;
return NULL;
}
CompoundTag *result = (CompoundTag *) NbtIo::decompress(buff); CompoundTag *result = (CompoundTag *) NbtIo::decompress(buff);
delete [] buff.data; delete [] buff.data;
return result; return result;
-2
View File
@@ -62,7 +62,6 @@ void PreLoginPacket::read(DataInputStream *dis) //throws IOException
m_friendsOnlyBits = dis->readByte(); m_friendsOnlyBits = dis->readByte();
m_ugcPlayersVersion = dis->readInt(); m_ugcPlayersVersion = dis->readInt();
m_dwPlayerCount = dis->readByte(); m_dwPlayerCount = dis->readByte();
if( m_dwPlayerCount > MINECRAFT_NET_MAX_PLAYERS ) m_dwPlayerCount = MINECRAFT_NET_MAX_PLAYERS;
if( m_dwPlayerCount > 0 ) if( m_dwPlayerCount > 0 )
{ {
m_playerXuids = new PlayerUID[m_dwPlayerCount]; m_playerXuids = new PlayerUID[m_dwPlayerCount];
@@ -75,7 +74,6 @@ void PreLoginPacket::read(DataInputStream *dis) //throws IOException
{ {
m_szUniqueSaveName[i]=dis->readByte(); m_szUniqueSaveName[i]=dis->readByte();
} }
m_szUniqueSaveName[m_iSaveNameLen - 1] = 0;
m_serverSettings = dis->readInt(); m_serverSettings = dis->readInt();
m_hostIndex = dis->readByte(); m_hostIndex = dis->readByte();
+1 -1
View File
@@ -778,7 +778,7 @@ void RandomLevelSource::postProcess(ChunkSource *parent, int xt, int zt)
mineShaftFeature->postProcess(level, pprandom, xt, zt); mineShaftFeature->postProcess(level, pprandom, xt, zt);
hasVillage = villageFeature->postProcess(level, pprandom, xt, zt); hasVillage = villageFeature->postProcess(level, pprandom, xt, zt);
strongholdFeature->postProcess(level, pprandom, xt, zt); strongholdFeature->postProcess(level, pprandom, xt, zt);
scatteredFeature->postProcess(level, pprandom, xt, zt); scatteredFeature->postProcess(level, random, xt, zt);
} }
PIXEndNamedEvent(); PIXEndNamedEvent();
+1 -6
View File
@@ -38,12 +38,7 @@ RegionFile::RegionFile(ConsoleSaveFile *saveFile, File *path)
} }
*/ */
wstring saveName = fileName->getPath(); fileEntry = m_saveFile->createFile( fileName->getName() );
for (size_t i = 0; i < saveName.size(); i++)
{
if (saveName[i] == L'\\') saveName[i] = L'/';
}
fileEntry = m_saveFile->createFile( ConsoleSavePath(saveName) );
m_saveFile->setFilePointer( fileEntry, 0, NULL, FILE_END ); m_saveFile->setFilePointer( fileEntry, 0, NULL, FILE_END );
if ( fileEntry->getFileSize() < SECTOR_BYTES) if ( fileEntry->getFileSize() < SECTOR_BYTES)
+7 -6
View File
@@ -17,7 +17,7 @@ bool RegionFileCache::useSplitSaves(ESavePlatform platform)
}; };
} }
RegionFile *RegionFileCache::_getRegionFile(ConsoleSaveFile *saveFile, const wstring &prefix, int chunkX, int chunkZ) // 4J - synchronized restored RegionFile *RegionFileCache::_getRegionFile(ConsoleSaveFile *saveFile, const wstring &prefix, int chunkX, int chunkZ) // 4J - TODO was synchronized
{ {
// 4J Jev - changed back to use of the File class. // 4J Jev - changed back to use of the File class.
//char file[MAX_PATH_SIZE]; //char file[MAX_PATH_SIZE];
@@ -26,7 +26,6 @@ RegionFile *RegionFileCache::_getRegionFile(ConsoleSaveFile *saveFile, const wst
//File regionDir(basePath, L"region"); //File regionDir(basePath, L"region");
//File file(regionDir, wstring(L"r.") + _toString(chunkX>>5) + L"." + _toString(chunkZ>>5) + L".mcr" ); //File file(regionDir, wstring(L"r.") + _toString(chunkX>>5) + L"." + _toString(chunkZ>>5) + L".mcr" );
EnterCriticalSection(&m_cs);
MemSect(31); MemSect(31);
File file; File file;
if(useSplitSaves(saveFile->getSavePlatform())) if(useSplitSaves(saveFile->getSavePlatform()))
@@ -47,7 +46,6 @@ RegionFile *RegionFileCache::_getRegionFile(ConsoleSaveFile *saveFile, const wst
// 4J Jev, put back in. // 4J Jev, put back in.
if (ref != NULL) if (ref != NULL)
{ {
LeaveCriticalSection(&m_cs);
return ref; return ref;
} }
@@ -65,14 +63,12 @@ RegionFile *RegionFileCache::_getRegionFile(ConsoleSaveFile *saveFile, const wst
RegionFile *reg = new RegionFile(saveFile, &file); RegionFile *reg = new RegionFile(saveFile, &file);
cache[file] = reg; // 4J - this was originally a softReferenc cache[file] = reg; // 4J - this was originally a softReferenc
LeaveCriticalSection(&m_cs);
return reg; return reg;
} }
void RegionFileCache::_clear() // 4J - TODO was synchronized void RegionFileCache::_clear() // 4J - TODO was synchronized
{ {
EnterCriticalSection(&m_cs);
AUTO_VAR(itEnd, cache.end()); AUTO_VAR(itEnd, cache.end());
for( AUTO_VAR(it, cache.begin()); it != itEnd; it++ ) for( AUTO_VAR(it, cache.begin()); it != itEnd; it++ )
{ {
@@ -89,7 +85,6 @@ void RegionFileCache::_clear() // 4J - TODO was synchronized
// } // }
} }
cache.clear(); cache.clear();
LeaveCriticalSection(&m_cs);
} }
int RegionFileCache::_getSizeDelta(ConsoleSaveFile *saveFile, const wstring &prefix, int chunkX, int chunkZ) int RegionFileCache::_getSizeDelta(ConsoleSaveFile *saveFile, const wstring &prefix, int chunkX, int chunkZ)
@@ -125,3 +120,9 @@ DataOutputStream *RegionFileCache::_getChunkDataOutputStream(ConsoleSaveFile *sa
return r->getChunkDataOutputStream(chunkX & 31, chunkZ & 31); return r->getChunkDataOutputStream(chunkX & 31, chunkZ & 31);
} }
} }
RegionFileCache::~RegionFileCache()
{
_clear();
}
+2 -3
View File
@@ -10,14 +10,13 @@ private:
static const int MAX_CACHE_SIZE = 256; static const int MAX_CACHE_SIZE = 256;
unordered_map<File, RegionFile *, FileKeyHash, FileKeyEq> cache; unordered_map<File, RegionFile *, FileKeyHash, FileKeyEq> cache;
CRITICAL_SECTION m_cs;
static RegionFileCache s_defaultCache; static RegionFileCache s_defaultCache;
public: public:
// Made public and non-static so we can have a cache for input and output files // Made public and non-static so we can have a cache for input and output files
RegionFileCache() { InitializeCriticalSectionAndSpinCount(&m_cs, 4000); } RegionFileCache() {}
~RegionFileCache() { DeleteCriticalSection(&m_cs); _clear(); } ~RegionFileCache();
RegionFile *_getRegionFile(ConsoleSaveFile *saveFile, const wstring &prefix, int chunkX, int chunkZ); // 4J - TODO was synchronized RegionFile *_getRegionFile(ConsoleSaveFile *saveFile, const wstring &prefix, int chunkX, int chunkZ); // 4J - TODO was synchronized
void _clear(); // 4J - TODO was synchronized void _clear(); // 4J - TODO was synchronized
+1 -3
View File
@@ -21,9 +21,7 @@ RemoveEntitiesPacket::~RemoveEntitiesPacket()
void RemoveEntitiesPacket::read(DataInputStream *dis) //throws IOException void RemoveEntitiesPacket::read(DataInputStream *dis) //throws IOException
{ {
int count = dis->readByte(); ids = intArray(dis->readByte());
if(count < 0) count = 0;
ids = intArray(count);
for(unsigned int i = 0; i < ids.length; ++i) for(unsigned int i = 0; i < ids.length; ++i)
{ {
ids[i] = dis->readInt(); ids[i] = dis->readInt();
+4
View File
@@ -55,8 +55,10 @@ void RespawnPacket::read(DataInputStream *dis) //throws IOException
difficulty = dis->readByte(); difficulty = dis->readByte();
m_newSeaLevel = dis->readBoolean(); m_newSeaLevel = dis->readBoolean();
m_newEntityId = dis->readShort(); m_newEntityId = dis->readShort();
#ifdef _LARGE_WORLDS
m_xzSize = dis->readShort(); m_xzSize = dis->readShort();
m_hellScale = dis->read(); m_hellScale = dis->read();
#endif
app.DebugPrintf("RespawnPacket::read - Difficulty = %d\n",difficulty); app.DebugPrintf("RespawnPacket::read - Difficulty = %d\n",difficulty);
} }
@@ -78,8 +80,10 @@ void RespawnPacket::write(DataOutputStream *dos) //throws IOException
dos->writeByte(difficulty); dos->writeByte(difficulty);
dos->writeBoolean(m_newSeaLevel); dos->writeBoolean(m_newSeaLevel);
dos->writeShort(m_newEntityId); dos->writeShort(m_newEntityId);
#ifdef _LARGE_WORLDS
dos->writeShort(m_xzSize); dos->writeShort(m_xzSize);
dos->write(m_hellScale); dos->write(m_hellScale);
#endif
} }
int RespawnPacket::getEstimatedSize() int RespawnPacket::getEstimatedSize()
-5
View File
@@ -138,11 +138,6 @@ void Socket::pushDataToQueue(const BYTE * pbData, DWORD dwDataSize, bool fromHos
} }
EnterCriticalSection(&m_queueLockNetwork[queueIdx]); EnterCriticalSection(&m_queueLockNetwork[queueIdx]);
if(m_queueNetwork[queueIdx].size() + dwDataSize > 2 * 1024 * 1024)
{
LeaveCriticalSection(&m_queueLockNetwork[queueIdx]);
return;
}
for( unsigned int i = 0; i < dwDataSize; i++ ) for( unsigned int i = 0; i < dwDataSize; i++ )
{ {
m_queueNetwork[queueIdx].push(*pbData++); m_queueNetwork[queueIdx].push(*pbData++);
+2 -3
View File
@@ -602,10 +602,9 @@ bool SparseDataStorage::isCompressed()
void SparseDataStorage::write(DataOutputStream *dos) void SparseDataStorage::write(DataOutputStream *dos)
{ {
__int64 snapshot = dataAndCount; int count = ( dataAndCount >> 48 ) & 0xffff;
int count = ( snapshot >> 48 ) & 0xffff;
dos->writeInt(count); dos->writeInt(count);
unsigned char *dataPointer = (unsigned char *)(snapshot & 0x0000ffffffffffff); unsigned char *dataPointer = (unsigned char *)(dataAndCount & 0x0000ffffffffffff);
byteArray wrapper(dataPointer, count * 128 + 128); byteArray wrapper(dataPointer, count * 128 + 128);
dos->write(wrapper); dos->write(wrapper);
} }
+2 -3
View File
@@ -619,10 +619,9 @@ bool SparseLightStorage::isCompressed()
void SparseLightStorage::write(DataOutputStream *dos) void SparseLightStorage::write(DataOutputStream *dos)
{ {
__int64 snapshot = dataAndCount; int count = ( dataAndCount >> 48 ) & 0xffff;
int count = ( snapshot >> 48 ) & 0xffff;
dos->writeInt(count); dos->writeInt(count);
unsigned char *dataPointer = (unsigned char *)(snapshot & 0x0000ffffffffffff); unsigned char *dataPointer = (unsigned char *)(dataAndCount & 0x0000ffffffffffff);
byteArray wrapper(dataPointer, count * 128 + 128); byteArray wrapper(dataPointer, count * 128 + 128);
dos->write(wrapper); dos->write(wrapper);
} }
+2 -2
View File
@@ -222,7 +222,7 @@ StructurePiece *StrongholdPieces::generateAndAddPiece(StartPiece *startPiece, li
if(piece->pieceClass != EPieceClass_PortalRoom) continue; if(piece->pieceClass != EPieceClass_PortalRoom) continue;
#ifndef _CONTENT_PACKAGE #ifndef _CONTENT_PACKAGE
app.DebugPrintf("Portal room forcing attempt\n"); printf("Portal room forcing attempt\n");
#endif #endif
StrongholdPiece *strongholdPiece = PortalRoom::createPiece(pieces, random, footX, footY, footZ, direction, depth); StrongholdPiece *strongholdPiece = PortalRoom::createPiece(pieces, random, footX, footY, footZ, direction, depth);
if (strongholdPiece != NULL) if (strongholdPiece != NULL)
@@ -235,7 +235,7 @@ StructurePiece *StrongholdPieces::generateAndAddPiece(StartPiece *startPiece, li
currentPieces.remove(piece); currentPieces.remove(piece);
} }
#ifndef _CONTENT_PACKAGE #ifndef _CONTENT_PACKAGE
app.DebugPrintf("Success\n"); printf("Success\n");
#endif #endif
return strongholdPiece; return strongholdPiece;
} }
-23
View File
@@ -9,7 +9,6 @@
StructureFeature::StructureFeature() StructureFeature::StructureFeature()
{ {
InitializeCriticalSectionAndSpinCount(&m_csCachedStructures, 4000);
#ifdef ENABLE_STRUCTURE_SAVING #ifdef ENABLE_STRUCTURE_SAVING
savedData = nullptr; savedData = nullptr;
#endif #endif
@@ -17,13 +16,10 @@ StructureFeature::StructureFeature()
StructureFeature::~StructureFeature() StructureFeature::~StructureFeature()
{ {
EnterCriticalSection(&m_csCachedStructures);
for( AUTO_VAR(it, cachedStructures.begin()); it != cachedStructures.end(); it++ ) for( AUTO_VAR(it, cachedStructures.begin()); it != cachedStructures.end(); it++ )
{ {
delete it->second; delete it->second;
} }
LeaveCriticalSection(&m_csCachedStructures);
DeleteCriticalSection(&m_csCachedStructures);
} }
void StructureFeature::addFeature(Level *level, int x, int z, int xOffs, int zOffs, byteArray blocks) void StructureFeature::addFeature(Level *level, int x, int z, int xOffs, int zOffs, byteArray blocks)
@@ -32,16 +28,12 @@ void StructureFeature::addFeature(Level *level, int x, int z, int xOffs, int zOf
// the chunk being generated, but not all chunks are the sources of // the chunk being generated, but not all chunks are the sources of
// structures // structures
EnterCriticalSection(&m_csCachedStructures);
restoreSavedData(level); restoreSavedData(level);
if (cachedStructures.find(ChunkPos::hashCode(x, z)) != cachedStructures.end()) if (cachedStructures.find(ChunkPos::hashCode(x, z)) != cachedStructures.end())
{ {
LeaveCriticalSection(&m_csCachedStructures);
return; return;
} }
LeaveCriticalSection(&m_csCachedStructures);
// clear random key // clear random key
random->nextInt(); random->nextInt();
@@ -49,9 +41,7 @@ void StructureFeature::addFeature(Level *level, int x, int z, int xOffs, int zOf
if (isFeatureChunk(x, z,level->getLevelData()->getGenerator() == LevelType::lvl_flat)) if (isFeatureChunk(x, z,level->getLevelData()->getGenerator() == LevelType::lvl_flat))
{ {
StructureStart *start = createStructureStart(x, z); StructureStart *start = createStructureStart(x, z);
EnterCriticalSection(&m_csCachedStructures);
cachedStructures[ChunkPos::hashCode(x, z)] = start; cachedStructures[ChunkPos::hashCode(x, z)] = start;
LeaveCriticalSection(&m_csCachedStructures);
saveFeature(x, z, start); saveFeature(x, z, start);
} }
} }
@@ -68,7 +58,6 @@ bool StructureFeature::postProcess(Level *level, Random *random, int chunkX, int
int cz = (chunkZ << 4); // + 8; int cz = (chunkZ << 4); // + 8;
bool intersection = false; bool intersection = false;
EnterCriticalSection(&m_csCachedStructures);
for( AUTO_VAR(it, cachedStructures.begin()); it != cachedStructures.end(); it++ ) for( AUTO_VAR(it, cachedStructures.begin()); it != cachedStructures.end(); it++ )
{ {
StructureStart *structureStart = it->second; StructureStart *structureStart = it->second;
@@ -87,14 +76,12 @@ bool StructureFeature::postProcess(Level *level, Random *random, int chunkX, int
} }
} }
} }
LeaveCriticalSection(&m_csCachedStructures);
return intersection; return intersection;
} }
bool StructureFeature::isIntersection(int cellX, int cellZ) bool StructureFeature::isIntersection(int cellX, int cellZ)
{ {
EnterCriticalSection(&m_csCachedStructures);
restoreSavedData(level); restoreSavedData(level);
for( AUTO_VAR(it, cachedStructures.begin()); it != cachedStructures.end(); it++ ) for( AUTO_VAR(it, cachedStructures.begin()); it != cachedStructures.end(); it++ )
@@ -110,14 +97,12 @@ bool StructureFeature::isIntersection(int cellX, int cellZ)
StructurePiece *next = *it2++; StructurePiece *next = *it2++;
if (next->getBoundingBox()->intersects(cellX, cellZ, cellX, cellZ)) if (next->getBoundingBox()->intersects(cellX, cellZ, cellX, cellZ))
{ {
LeaveCriticalSection(&m_csCachedStructures);
return true; return true;
} }
} }
} }
} }
} }
LeaveCriticalSection(&m_csCachedStructures);
return false; return false;
} }
@@ -129,7 +114,6 @@ bool StructureFeature::isInsideFeature(int cellX, int cellY, int cellZ)
StructureStart *StructureFeature::getStructureAt(int cellX, int cellY, int cellZ) StructureStart *StructureFeature::getStructureAt(int cellX, int cellY, int cellZ)
{ {
EnterCriticalSection(&m_csCachedStructures);
//for (StructureStart structureStart : cachedStructures.values()) //for (StructureStart structureStart : cachedStructures.values())
for(AUTO_VAR(it, cachedStructures.begin()); it != cachedStructures.end(); ++it) for(AUTO_VAR(it, cachedStructures.begin()); it != cachedStructures.end(); ++it)
{ {
@@ -154,14 +138,12 @@ StructureStart *StructureFeature::getStructureAt(int cellX, int cellY, int cellZ
StructurePiece* piece = *it2; StructurePiece* piece = *it2;
if ( piece->getBoundingBox()->isInside(cellX, cellY, cellZ) ) if ( piece->getBoundingBox()->isInside(cellX, cellY, cellZ) )
{ {
LeaveCriticalSection(&m_csCachedStructures);
return pStructureStart; return pStructureStart;
} }
} }
} }
} }
} }
LeaveCriticalSection(&m_csCachedStructures);
return NULL; return NULL;
} }
@@ -169,17 +151,14 @@ bool StructureFeature::isInsideBoundingFeature(int cellX, int cellY, int cellZ)
{ {
restoreSavedData(level); restoreSavedData(level);
EnterCriticalSection(&m_csCachedStructures);
for(AUTO_VAR(it, cachedStructures.begin()); it != cachedStructures.end(); ++it) for(AUTO_VAR(it, cachedStructures.begin()); it != cachedStructures.end(); ++it)
{ {
StructureStart *structureStart = it->second; StructureStart *structureStart = it->second;
if (structureStart->isValid()) if (structureStart->isValid())
{ {
LeaveCriticalSection(&m_csCachedStructures);
return (structureStart->getBoundingBox()->intersects(cellX, cellZ, cellX, cellZ)); return (structureStart->getBoundingBox()->intersects(cellX, cellZ, cellX, cellZ));
} }
} }
LeaveCriticalSection(&m_csCachedStructures);
return false; return false;
} }
@@ -203,7 +182,6 @@ TilePos *StructureFeature::getNearestGeneratedFeature(Level *level, int cellX, i
double minDistance = DBL_MAX; double minDistance = DBL_MAX;
TilePos *selected = NULL; TilePos *selected = NULL;
EnterCriticalSection(&m_csCachedStructures);
for(AUTO_VAR(it, cachedStructures.begin()); it != cachedStructures.end(); ++it) for(AUTO_VAR(it, cachedStructures.begin()); it != cachedStructures.end(); ++it)
{ {
StructureStart *pStructureStart = it->second; StructureStart *pStructureStart = it->second;
@@ -227,7 +205,6 @@ TilePos *StructureFeature::getNearestGeneratedFeature(Level *level, int cellX, i
} }
} }
} }
LeaveCriticalSection(&m_csCachedStructures);
if (selected != NULL) if (selected != NULL)
{ {
return selected; return selected;
-1
View File
@@ -27,7 +27,6 @@ private:
protected: protected:
unordered_map<__int64, StructureStart *> cachedStructures; unordered_map<__int64, StructureStart *> cachedStructures;
CRITICAL_SECTION m_csCachedStructures;
public: public:
StructureFeature(); StructureFeature();

Some files were not shown because too many files have changed in this diff Show More