working on mulitplayer
This commit is contained in:
@@ -148,6 +148,9 @@ public:
|
|||||||
PlayerOptions m_SelectedOptions[NUM_PLAYERS]; // Keep track of player-selected options for
|
PlayerOptions m_SelectedOptions[NUM_PLAYERS]; // Keep track of player-selected options for
|
||||||
// courses separately from the active options.
|
// courses separately from the active options.
|
||||||
SongOptions m_SongOptions;
|
SongOptions m_SongOptions;
|
||||||
|
|
||||||
|
|
||||||
|
vector<CString> m_asNetworkNames;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,24 @@
|
|||||||
|
#ifndef NETGAMESTATE_H
|
||||||
|
#define NETGAMESTATE_H
|
||||||
|
|
||||||
|
|
||||||
|
#define MAX_PLAYERS 8
|
||||||
|
#define MAX_NAME_LENGTH 32
|
||||||
|
|
||||||
|
|
||||||
|
struct NetPlayerState
|
||||||
|
{
|
||||||
|
char name[MAX_NAME_LENGTH];
|
||||||
|
float score;
|
||||||
|
int combo;
|
||||||
|
bool bReady;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct NetGameState
|
||||||
|
{
|
||||||
|
int num_players;
|
||||||
|
NetPlayerState player[MAX_PLAYERS];
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
#endif
|
||||||
@@ -0,0 +1,152 @@
|
|||||||
|
#include "stdafx.h"
|
||||||
|
/*
|
||||||
|
-----------------------------------------------------------------------------
|
||||||
|
Class: RageNetworkClient
|
||||||
|
|
||||||
|
Desc: See header.
|
||||||
|
|
||||||
|
Copyright (c) 2001-2002 by the person(s) listed below. All rights reserved.
|
||||||
|
Brendan Walker
|
||||||
|
Chris Danford
|
||||||
|
-----------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "RageNetworkClient.h"
|
||||||
|
#include "RageUtil.h"
|
||||||
|
#include "RageException.h"
|
||||||
|
#include "RageLog.h"
|
||||||
|
#include "RageTimer.h"
|
||||||
|
#include "RageException.h"
|
||||||
|
#include "GameState.h" // remove this dependency later
|
||||||
|
#include "RageNetworkPacket.h"
|
||||||
|
|
||||||
|
#include "SDL_net-1.2.4/include/SDL_net.h"
|
||||||
|
//#ifdef _DEBUG
|
||||||
|
//#pragma comment(lib, "SDL_net-1.2.4/lib/SDL_netd.lib")
|
||||||
|
//#else
|
||||||
|
#pragma comment(lib, "SDL_net-1.2.4/lib/SDL_net.lib")
|
||||||
|
//#endif
|
||||||
|
|
||||||
|
|
||||||
|
RageNetworkClient* CLIENT = NULL;
|
||||||
|
|
||||||
|
const int MAX_CLIENTS = 16;
|
||||||
|
|
||||||
|
/*
|
||||||
|
///////////////////////////////
|
||||||
|
//
|
||||||
|
// THIS IS UNTESTED SINCE THE CONVERSION TO SDL_net!!!!!
|
||||||
|
//
|
||||||
|
///////////////////////////////
|
||||||
|
*/
|
||||||
|
|
||||||
|
RageNetworkClient::RageNetworkClient()
|
||||||
|
{
|
||||||
|
m_priSock = 0;
|
||||||
|
m_priSockSet = NULL;
|
||||||
|
|
||||||
|
SDL_Init(0); // this may have already been init'd somewhere else
|
||||||
|
|
||||||
|
if( SDLNet_Init() < 0 )
|
||||||
|
throw RageException("SDLNet_Init: %s\n", SDLNet_GetError());
|
||||||
|
|
||||||
|
// allocate socket sets
|
||||||
|
m_priSockSet = SDLNet_AllocSocketSet(1);
|
||||||
|
if(!m_priSockSet)
|
||||||
|
throw RageException("SDLNet_AllocSocketSet: %s\n", SDLNet_GetError());
|
||||||
|
}
|
||||||
|
|
||||||
|
RageNetworkClient::~RageNetworkClient()
|
||||||
|
{
|
||||||
|
Disconnect();
|
||||||
|
SDLNet_FreeSocketSet( m_priSockSet );
|
||||||
|
SDLNet_Quit();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void RageNetworkClient::Disconnect()
|
||||||
|
{
|
||||||
|
if( m_priSock == NULL )
|
||||||
|
return;
|
||||||
|
|
||||||
|
SDLNet_TCP_DelSocket( m_priSockSet, m_priSock );
|
||||||
|
SDLNet_TCP_Close( m_priSock );
|
||||||
|
m_priSock = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
void RageNetworkClient::Connect(CString host, unsigned short port)
|
||||||
|
{
|
||||||
|
Disconnect();
|
||||||
|
|
||||||
|
char szHost[1024];
|
||||||
|
strcpy( szHost, host );
|
||||||
|
|
||||||
|
IPaddress ip;
|
||||||
|
if( SDLNet_ResolveHost(&ip,szHost,port)==-1 )
|
||||||
|
{
|
||||||
|
LOG->Warn("SDLNet_ResolveHost: %s\n", SDLNet_GetError());
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
m_priSock=SDLNet_TCP_Open(&ip);
|
||||||
|
if( !m_priSock )
|
||||||
|
{
|
||||||
|
LOG->Warn("SDLNet_TCP_Open: %s\n", SDLNet_GetError());
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
SDLNet_TCP_AddSocket( m_priSockSet, m_priSock );
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
void RageNetworkClient::Update( float fDeltaTime )
|
||||||
|
{
|
||||||
|
// receive
|
||||||
|
int numready = SDLNet_CheckSockets(m_priSockSet, 0);
|
||||||
|
if(numready==-1)
|
||||||
|
{
|
||||||
|
LOG->Warn("SDLNet_CheckSockets: %s\n", SDLNet_GetError());
|
||||||
|
}
|
||||||
|
else if( numready )
|
||||||
|
{
|
||||||
|
if( SDLNet_SocketReady(m_priSock) )
|
||||||
|
{
|
||||||
|
RageNetworkPacket packet;
|
||||||
|
SDLNet_TCP_Recv( m_priSock, &packet, sizeof(RageNetworkPacket) );
|
||||||
|
|
||||||
|
switch( packet.type )
|
||||||
|
{
|
||||||
|
case RageNetworkPacket::update_game:
|
||||||
|
this->m_NetGameState = packet.game;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
LOG->Warn( "Invalid packet received with type '%d'", packet.type );
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void RageNetworkClient::SendMyPlayerState( NetPlayerState ps )
|
||||||
|
{
|
||||||
|
RageNetworkPacket packet;
|
||||||
|
packet.type = RageNetworkPacket::update_player;
|
||||||
|
packet.player = ps;
|
||||||
|
SendToServer( &packet );
|
||||||
|
}
|
||||||
|
|
||||||
|
void RageNetworkClient::Send( TCPsocket& socket, RageNetworkPacket* pPacket )
|
||||||
|
{
|
||||||
|
int result = SDLNet_TCP_Send(socket,pPacket,sizeof(RageNetworkPacket));
|
||||||
|
if( result<int(sizeof(RageNetworkPacket)) )
|
||||||
|
{
|
||||||
|
LOG->Warn("SDLNet_TCP_Send: %s\n", SDLNet_GetError());
|
||||||
|
// It may be good to disconnect sock because it is likely invalid now.
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void RageNetworkClient::SendToServer( RageNetworkPacket* pPacket )
|
||||||
|
{
|
||||||
|
Send( m_priSock, pPacket );
|
||||||
|
}
|
||||||
@@ -0,0 +1,54 @@
|
|||||||
|
#ifndef RAGENETWORKCLIENT_H
|
||||||
|
#define RAGENETWORKCLIENT_H
|
||||||
|
/*
|
||||||
|
-----------------------------------------------------------------------------
|
||||||
|
Class: RageNetworkClient
|
||||||
|
|
||||||
|
Desc: Network transport layer. Note that this currently has SM-specific
|
||||||
|
functionality. All SM stuff should be moved out eventually.
|
||||||
|
|
||||||
|
Copyright (c) 2001-2002 by the person(s) listed below. All rights reserved.
|
||||||
|
Chris Danford
|
||||||
|
-----------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
struct _TCPsocket;
|
||||||
|
typedef struct _TCPsocket *TCPsocket;
|
||||||
|
|
||||||
|
struct _SDLNet_SocketSet;
|
||||||
|
typedef struct _SDLNet_SocketSet *SDLNet_SocketSet;
|
||||||
|
|
||||||
|
|
||||||
|
#include "NetGameState.h"
|
||||||
|
|
||||||
|
class RageNetworkPacket;
|
||||||
|
|
||||||
|
|
||||||
|
class RageNetworkClient
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
RageNetworkClient();
|
||||||
|
~RageNetworkClient();
|
||||||
|
|
||||||
|
void Update( float fDeltaTime );
|
||||||
|
|
||||||
|
void Connect(CString ip, unsigned short port);
|
||||||
|
void Disconnect();
|
||||||
|
|
||||||
|
void SendMyPlayerState( NetPlayerState ps ); // calling this implies bReady = true
|
||||||
|
|
||||||
|
NetGameState m_NetGameState;
|
||||||
|
|
||||||
|
protected:
|
||||||
|
void SendToServer( RageNetworkPacket* pPacket );
|
||||||
|
void Send( TCPsocket& socket, RageNetworkPacket* pPacket );
|
||||||
|
|
||||||
|
|
||||||
|
TCPsocket m_priSock; // client: active socket. server: listen socket
|
||||||
|
SDLNet_SocketSet m_priSockSet;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
extern RageNetworkClient* CLIENT; // global and accessable from anywhere in our program
|
||||||
|
|
||||||
|
#endif
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
#ifndef RAGENETWORKPACKET
|
||||||
|
#define RAGENETWORKPACKET
|
||||||
|
|
||||||
|
|
||||||
|
#include "NetGameState.h"
|
||||||
|
|
||||||
|
|
||||||
|
const int MAX_DATA_SIZE = sizeof(NetGameState);
|
||||||
|
|
||||||
|
class RageNetworkPacket
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
RageNetworkPacket() { type=invalid; }
|
||||||
|
~RageNetworkPacket() {}
|
||||||
|
|
||||||
|
enum {
|
||||||
|
invalid,
|
||||||
|
update_player, // sent by clients
|
||||||
|
update_game, // sent by server
|
||||||
|
go_to_next_screen // sent by server
|
||||||
|
} type;
|
||||||
|
union
|
||||||
|
{
|
||||||
|
// char data[MAX_DATA_SIZE];
|
||||||
|
NetGameState game;
|
||||||
|
NetPlayerState player;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
||||||
@@ -0,0 +1,202 @@
|
|||||||
|
#include "stdafx.h"
|
||||||
|
/*
|
||||||
|
-----------------------------------------------------------------------------
|
||||||
|
Class: RageNetworkServer
|
||||||
|
|
||||||
|
Desc: See header.
|
||||||
|
|
||||||
|
Copyright (c) 2001-2002 by the person(s) listed below. All rights reserved.
|
||||||
|
Brendan Walker
|
||||||
|
Chris Danford
|
||||||
|
-----------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "RageNetworkServer.h"
|
||||||
|
#include "RageUtil.h"
|
||||||
|
#include "RageException.h"
|
||||||
|
#include "RageLog.h"
|
||||||
|
#include "RageException.h"
|
||||||
|
#include "RageNetworkPacket.h"
|
||||||
|
|
||||||
|
#include "SDL_net-1.2.4/include/SDL_net.h"
|
||||||
|
//#ifdef _DEBUG
|
||||||
|
//#pragma comment(lib, "SDL_net-1.2.4/lib/SDL_netd.lib")
|
||||||
|
//#else
|
||||||
|
#pragma comment(lib, "SDL_net-1.2.4/lib/SDL_net.lib")
|
||||||
|
//#endif
|
||||||
|
|
||||||
|
#ifdef _DEBUG
|
||||||
|
#pragma comment(lib, "SDL-1.2.5/lib/SDLmaind.lib")
|
||||||
|
#else
|
||||||
|
#pragma comment(lib, "SDL-1.2.5/lib/SDLmain.lib")
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Pull in all of our SDL libraries here. */
|
||||||
|
#ifdef _DEBUG
|
||||||
|
#pragma comment(lib, "SDL-1.2.5/lib/SDLd.lib")
|
||||||
|
#pragma comment(lib, "SDL_image-1.2/SDL_imaged.lib")
|
||||||
|
#else
|
||||||
|
#pragma comment(lib, "SDL-1.2.5/lib/SDL.lib")
|
||||||
|
#pragma comment(lib, "SDL_image-1.2/SDL_image.lib")
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
RageNetworkServer* SERVER = NULL;
|
||||||
|
|
||||||
|
const int MAX_CLIENTS = 16;
|
||||||
|
|
||||||
|
/*
|
||||||
|
///////////////////////////////
|
||||||
|
//
|
||||||
|
// THIS IS UNTESTED SINCE THE CONVERSION TO SDL_net!!!!!
|
||||||
|
//
|
||||||
|
///////////////////////////////
|
||||||
|
*/
|
||||||
|
|
||||||
|
RageNetworkServer::RageNetworkServer()
|
||||||
|
{
|
||||||
|
m_listenSock = 0;
|
||||||
|
m_listenSockSet = NULL;
|
||||||
|
m_clientSocksSet = NULL;
|
||||||
|
|
||||||
|
SDL_Init(0); // this may have already been init'd somewhere else
|
||||||
|
|
||||||
|
if( SDLNet_Init() < 0 )
|
||||||
|
throw RageException("SDLNet_Init: %s\n", SDLNet_GetError());
|
||||||
|
|
||||||
|
// allocate socket sets
|
||||||
|
m_listenSockSet = SDLNet_AllocSocketSet(1);
|
||||||
|
if(!m_listenSockSet)
|
||||||
|
throw RageException("SDLNet_AllocSocketSet: %s\n", SDLNet_GetError());
|
||||||
|
|
||||||
|
m_clientSocksSet = SDLNet_AllocSocketSet(MAX_CLIENTS);
|
||||||
|
if(!m_clientSocksSet)
|
||||||
|
throw RageException("SDLNet_AllocSocketSet: %s\n", SDLNet_GetError());
|
||||||
|
}
|
||||||
|
|
||||||
|
RageNetworkServer::~RageNetworkServer()
|
||||||
|
{
|
||||||
|
StopListening();
|
||||||
|
DisconnectAllClients();
|
||||||
|
SDLNet_FreeSocketSet( m_listenSockSet );
|
||||||
|
SDLNet_FreeSocketSet( m_clientSocksSet );
|
||||||
|
SDLNet_Quit();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void RageNetworkServer::StopListening()
|
||||||
|
{
|
||||||
|
if( m_listenSock == NULL )
|
||||||
|
return;
|
||||||
|
|
||||||
|
SDLNet_TCP_DelSocket( m_listenSockSet, m_listenSock );
|
||||||
|
SDLNet_TCP_Close( m_listenSock );
|
||||||
|
m_listenSock = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
void RageNetworkServer::DisconnectAllClients()
|
||||||
|
{
|
||||||
|
// I hope passing NULL to these is OK...
|
||||||
|
for( unsigned int i=0; i<m_clientSocks.size(); i++ )
|
||||||
|
{
|
||||||
|
SDLNet_TCP_DelSocket( m_clientSocksSet, m_clientSocks[i] );
|
||||||
|
SDLNet_TCP_Close( m_clientSocks[i] );
|
||||||
|
}
|
||||||
|
m_clientSocks.erase( m_clientSocks.begin(), m_clientSocks.end() );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void RageNetworkServer::Listen(unsigned short port)
|
||||||
|
{
|
||||||
|
StopListening();
|
||||||
|
|
||||||
|
IPaddress ip;
|
||||||
|
if( SDLNet_ResolveHost(&ip,NULL,port)==-1 )
|
||||||
|
throw RageException("SDLNet_ResolveHost: %s\n", SDLNet_GetError());
|
||||||
|
|
||||||
|
m_listenSock=SDLNet_TCP_Open(&ip);
|
||||||
|
if( !m_listenSock )
|
||||||
|
throw RageException("SDLNet_TCP_Open: %s\n", SDLNet_GetError());
|
||||||
|
|
||||||
|
SDLNet_TCP_AddSocket( m_listenSockSet, m_listenSock );
|
||||||
|
}
|
||||||
|
|
||||||
|
void RageNetworkServer::Update( float fDeltaTime )
|
||||||
|
{
|
||||||
|
// accept
|
||||||
|
if( m_listenSock )
|
||||||
|
{
|
||||||
|
TCPsocket new_sock = SDLNet_TCP_Accept( m_listenSock ) ;
|
||||||
|
if( new_sock != 0 )
|
||||||
|
{
|
||||||
|
m_clientSocks.push_back( new_sock );
|
||||||
|
SDLNet_TCP_AddSocket( m_clientSocksSet, new_sock );
|
||||||
|
|
||||||
|
LOG->Trace( "Accepting new client." );
|
||||||
|
|
||||||
|
m_NetGameState.num_players = m_clientSocks.size();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// receive
|
||||||
|
if( m_clientSocks.size() > 0 ) // there are some clients connected
|
||||||
|
{
|
||||||
|
int numready = SDLNet_CheckSockets(m_clientSocksSet, 0);
|
||||||
|
if(numready==-1)
|
||||||
|
{
|
||||||
|
LOG->Warn("SDLNet_CheckSockets: %s\n", SDLNet_GetError());
|
||||||
|
}
|
||||||
|
else if( numready > 0 )
|
||||||
|
{
|
||||||
|
for( unsigned int i=0; i<m_clientSocks.size(); i++ )
|
||||||
|
{
|
||||||
|
if( SDLNet_SocketReady(m_clientSocks[i]) )
|
||||||
|
{
|
||||||
|
RageNetworkPacket packet;
|
||||||
|
SDLNet_TCP_Recv( m_clientSocks[i], &packet, sizeof(RageNetworkPacket) );
|
||||||
|
|
||||||
|
switch( packet.type )
|
||||||
|
{
|
||||||
|
case RageNetworkPacket::update_player:
|
||||||
|
m_NetGameState.player[i] = packet.player;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
LOG->Warn( "Invalid packet received with type '%d'", packet.type );
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void RageNetworkServer::TellClientsNetGameState()
|
||||||
|
{
|
||||||
|
// tell everyone about the new names
|
||||||
|
RageNetworkPacket packet;
|
||||||
|
packet.type = RageNetworkPacket::update_game;
|
||||||
|
packet.game = m_NetGameState;
|
||||||
|
this->SendToClients( &packet );
|
||||||
|
}
|
||||||
|
|
||||||
|
void RageNetworkServer::Send( TCPsocket& socket, RageNetworkPacket* pPacket )
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void RageNetworkServer::SendToClients( RageNetworkPacket* pPacket )
|
||||||
|
{
|
||||||
|
for( int i=m_clientSocks.size()-1; i>=0; i-- ) // iterate backwards in case we need to delete
|
||||||
|
{
|
||||||
|
int result = SDLNet_TCP_Send(m_clientSocks[i],pPacket,sizeof(RageNetworkPacket));
|
||||||
|
if( result<int(sizeof(RageNetworkPacket)) )
|
||||||
|
{
|
||||||
|
LOG->Warn("SDLNet_TCP_Send: %s\n", SDLNet_GetError());
|
||||||
|
|
||||||
|
LOG->Trace( "disconnecting %d", i );
|
||||||
|
SDLNet_TCP_DelSocket( m_clientSocksSet, m_clientSocks[i] );
|
||||||
|
SDLNet_TCP_Close( m_clientSocks[i] );
|
||||||
|
m_clientSocks.erase( m_clientSocks.begin() + i );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@@ -0,0 +1,57 @@
|
|||||||
|
#ifndef RAGENETWORKSERVER_H
|
||||||
|
#define RAGENETWORKSERVER_H
|
||||||
|
/*
|
||||||
|
-----------------------------------------------------------------------------
|
||||||
|
Class: RageNetworkServer
|
||||||
|
|
||||||
|
Desc: Network transport layer. Note that this currently has SM-specific
|
||||||
|
functionality. All SM stuff should be moved out eventually.
|
||||||
|
|
||||||
|
Copyright (c) 2001-2002 by the person(s) listed below. All rights reserved.
|
||||||
|
Chris Danford
|
||||||
|
-----------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
struct _TCPsocket;
|
||||||
|
typedef struct _TCPsocket *TCPsocket;
|
||||||
|
|
||||||
|
struct _SDLNet_SocketSet;
|
||||||
|
typedef struct _SDLNet_SocketSet *SDLNet_SocketSet;
|
||||||
|
|
||||||
|
|
||||||
|
#include "NetGameState.h"
|
||||||
|
|
||||||
|
|
||||||
|
class RageNetworkPacket;
|
||||||
|
|
||||||
|
class RageNetworkServer
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
RageNetworkServer();
|
||||||
|
~RageNetworkServer();
|
||||||
|
|
||||||
|
void Update( float fDeltaTime );
|
||||||
|
|
||||||
|
void Listen(unsigned short port);
|
||||||
|
void StopListening();
|
||||||
|
|
||||||
|
void DisconnectAllClients();
|
||||||
|
|
||||||
|
void TellClientsNetGameState();
|
||||||
|
|
||||||
|
NetGameState m_NetGameState;
|
||||||
|
|
||||||
|
protected:
|
||||||
|
void Send( TCPsocket& socket, RageNetworkPacket* pPacket );
|
||||||
|
void SendToClients( RageNetworkPacket* pPacket );
|
||||||
|
|
||||||
|
TCPsocket m_listenSock;
|
||||||
|
SDLNet_SocketSet m_listenSockSet;
|
||||||
|
vector<TCPsocket> m_clientSocks;
|
||||||
|
SDLNet_SocketSet m_clientSocksSet;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
extern RageNetworkServer* SERVER; // global and accessable from anywhere in our program
|
||||||
|
|
||||||
|
#endif
|
||||||
@@ -170,6 +170,7 @@ void ScreenManager::Input( const DeviceInput& DeviceI, const InputEventType type
|
|||||||
#include "ScreenMachineOptions.h"
|
#include "ScreenMachineOptions.h"
|
||||||
#include "ScreenMapControllers.h"
|
#include "ScreenMapControllers.h"
|
||||||
#include "ScreenMusicScroll.h"
|
#include "ScreenMusicScroll.h"
|
||||||
|
#include "ScreenNetworkWaiting.h"
|
||||||
#include "ScreenPlayerOptions.h"
|
#include "ScreenPlayerOptions.h"
|
||||||
#include "ScreenSandbox.h"
|
#include "ScreenSandbox.h"
|
||||||
#include "ScreenSelectCourse.h"
|
#include "ScreenSelectCourse.h"
|
||||||
@@ -208,6 +209,7 @@ Screen* ScreenManager::MakeNewScreen( CString sClassName )
|
|||||||
else if( 0==stricmp(sClassName, "ScreenMapControllers") ) return new ScreenMapControllers;
|
else if( 0==stricmp(sClassName, "ScreenMapControllers") ) return new ScreenMapControllers;
|
||||||
else if( 0==stricmp(sClassName, "ScreenInputOptions") ) return new ScreenInputOptions;
|
else if( 0==stricmp(sClassName, "ScreenInputOptions") ) return new ScreenInputOptions;
|
||||||
else if( 0==stricmp(sClassName, "ScreenMusicScroll") ) return new ScreenMusicScroll;
|
else if( 0==stricmp(sClassName, "ScreenMusicScroll") ) return new ScreenMusicScroll;
|
||||||
|
else if( 0==stricmp(sClassName, "ScreenNetworkWaiting") ) return new ScreenNetworkWaiting;
|
||||||
else if( 0==stricmp(sClassName, "ScreenPlayerOptions") ) return new ScreenPlayerOptions;
|
else if( 0==stricmp(sClassName, "ScreenPlayerOptions") ) return new ScreenPlayerOptions;
|
||||||
else if( 0==stricmp(sClassName, "ScreenSandbox") ) return new ScreenSandbox;
|
else if( 0==stricmp(sClassName, "ScreenSandbox") ) return new ScreenSandbox;
|
||||||
else if( 0==stricmp(sClassName, "ScreenSelectCourse") ) return new ScreenSelectCourse;
|
else if( 0==stricmp(sClassName, "ScreenSelectCourse") ) return new ScreenSelectCourse;
|
||||||
|
|||||||
@@ -0,0 +1,170 @@
|
|||||||
|
#include "stdafx.h"
|
||||||
|
/*
|
||||||
|
-----------------------------------------------------------------------------
|
||||||
|
Class: ScreenNetworkWaiting
|
||||||
|
|
||||||
|
Desc: The main title screen and menu.
|
||||||
|
|
||||||
|
Copyright (c) 2001-2002 by the person(s) listed below. All rights reserved.
|
||||||
|
Chris Danford
|
||||||
|
-----------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "ScreenNetworkWaiting.h"
|
||||||
|
#include "SongManager.h"
|
||||||
|
#include "ScreenManager.h"
|
||||||
|
#include "GameConstantsAndTypes.h"
|
||||||
|
#include "RageUtil.h"
|
||||||
|
#include "PrefsManager.h"
|
||||||
|
#include "GameManager.h"
|
||||||
|
#include "RageLog.h"
|
||||||
|
#include "GameState.h"
|
||||||
|
#include "RageMusic.h"
|
||||||
|
#include "ThemeManager.h"
|
||||||
|
#include "RageNetworkClient.h"
|
||||||
|
#include "NetGameState.h"
|
||||||
|
#include "InputMapper.h"
|
||||||
|
|
||||||
|
|
||||||
|
//
|
||||||
|
// Defines specific to ScreenNetworkWaiting
|
||||||
|
//
|
||||||
|
const int SERVER_WAIT_TIMEOUT_SECS = 60;
|
||||||
|
const float REFRESH_SECONDS = 0.2f;
|
||||||
|
|
||||||
|
#define SERVER_INFO_X THEME->GetMetricF("ScreenNetworkWaiting","ServerInfoX")
|
||||||
|
#define SERVER_INFO_Y THEME->GetMetricF("ScreenNetworkWaiting","ServerInfoY")
|
||||||
|
#define PLAYER_LIST_X THEME->GetMetricF("ScreenNetworkWaiting","PlayerListX")
|
||||||
|
#define PLAYER_LIST_Y THEME->GetMetricF("ScreenNetworkWaiting","PlayerListY")
|
||||||
|
#define HELP_TEXT THEME->GetMetric("ScreenNetworkWaiting","HelpText")
|
||||||
|
|
||||||
|
const ScreenMessage SM_ServerGoToNextScreen = ScreenMessage(SM_User+1);
|
||||||
|
const ScreenMessage SM_GoToPrevScreen = ScreenMessage(SM_User+3);
|
||||||
|
const ScreenMessage SM_GoToNextScreen = ScreenMessage(SM_User+4);
|
||||||
|
|
||||||
|
|
||||||
|
ScreenNetworkWaiting::ScreenNetworkWaiting()
|
||||||
|
{
|
||||||
|
LOG->Trace( "ScreenNetworkWaiting::ScreenNetworkWaiting()" );
|
||||||
|
|
||||||
|
|
||||||
|
//
|
||||||
|
// I think it's better to do all the initialization here rather than have it scattered
|
||||||
|
// about in all the global singleton classes
|
||||||
|
//
|
||||||
|
GAMESTATE->Reset();
|
||||||
|
PREFSMAN->ReadGamePrefsFromDisk();
|
||||||
|
INPUTMAPPER->ReadMappingsFromDisk();
|
||||||
|
GAMESTATE->m_bPlayersCanJoin = true;
|
||||||
|
if( !GAMEMAN->DoesNoteSkinExist( GAMEMAN->GetCurNoteSkin() ) )
|
||||||
|
{
|
||||||
|
CStringArray asNoteSkinNames;
|
||||||
|
GAMEMAN->GetNoteSkinNames( asNoteSkinNames );
|
||||||
|
GAMEMAN->SwitchNoteSkin( asNoteSkinNames[0] );
|
||||||
|
}
|
||||||
|
if( !THEME->DoesThemeExist( THEME->GetCurThemeName() ) )
|
||||||
|
{
|
||||||
|
CString sGameName = GAMESTATE->GetCurrentGameDef()->m_szName;
|
||||||
|
if( THEME->DoesThemeExist( sGameName ) )
|
||||||
|
THEME->SwitchTheme( sGameName );
|
||||||
|
else
|
||||||
|
THEME->SwitchTheme( "default" );
|
||||||
|
}
|
||||||
|
PREFSMAN->SaveGamePrefsToDisk();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
m_Menu.Load(
|
||||||
|
THEME->GetPathTo("BGAnimations","network waiting"),
|
||||||
|
THEME->GetPathTo("Graphics","network waiting top edge"),
|
||||||
|
HELP_TEXT, false, false, 99
|
||||||
|
);
|
||||||
|
this->AddChild( &m_Menu );
|
||||||
|
|
||||||
|
|
||||||
|
m_textServerInfo.LoadFromFont( THEME->GetPathTo("Fonts","normal") );
|
||||||
|
m_textServerInfo.SetXY( SERVER_INFO_X, SERVER_INFO_Y );
|
||||||
|
m_textServerInfo.SetText( "Server Info" );
|
||||||
|
this->AddChild( &m_textServerInfo );
|
||||||
|
|
||||||
|
m_textPlayerList.LoadFromFont( THEME->GetPathTo("Fonts","normal") );
|
||||||
|
m_textPlayerList.SetXY( PLAYER_LIST_X, PLAYER_LIST_Y );
|
||||||
|
this->AddChild( &m_textPlayerList );
|
||||||
|
|
||||||
|
MUSIC->LoadAndPlayIfNotAlready( THEME->GetPathTo("Sounds","network waiting music") );
|
||||||
|
|
||||||
|
m_Menu.TweenOnScreenFromBlack( SM_None );
|
||||||
|
|
||||||
|
m_bReady = false;
|
||||||
|
NetPlayerState ps = { "billy", 100, 100, m_bReady };
|
||||||
|
CLIENT->SendMyPlayerState( ps );
|
||||||
|
|
||||||
|
m_fUpdateTimer = REFRESH_SECONDS;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
ScreenNetworkWaiting::~ScreenNetworkWaiting()
|
||||||
|
{
|
||||||
|
LOG->Trace( "ScreenNetworkWaiting::~ScreenNetworkWaiting()" );
|
||||||
|
}
|
||||||
|
|
||||||
|
void ScreenNetworkWaiting::Update( float fDeltaTime )
|
||||||
|
{
|
||||||
|
Screen::Update( fDeltaTime );
|
||||||
|
|
||||||
|
m_fUpdateTimer -= fDeltaTime;
|
||||||
|
if( m_fUpdateTimer < 0 )
|
||||||
|
{
|
||||||
|
CString s;
|
||||||
|
NetGameState& gns = CLIENT->m_NetGameState;
|
||||||
|
for( int i=0; i<gns.num_players; i++ )
|
||||||
|
{
|
||||||
|
s += gns.player[i].name;
|
||||||
|
s += gns.player[i].bReady ? " (Ready)" : " (Not Ready)";
|
||||||
|
s += '\n';
|
||||||
|
}
|
||||||
|
|
||||||
|
m_textPlayerList.SetText( s );
|
||||||
|
|
||||||
|
m_fUpdateTimer = REFRESH_SECONDS;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void ScreenNetworkWaiting::DrawPrimitives()
|
||||||
|
{
|
||||||
|
m_Menu.DrawBottomLayer();
|
||||||
|
Screen::DrawPrimitives();
|
||||||
|
m_Menu.DrawTopLayer();
|
||||||
|
}
|
||||||
|
|
||||||
|
void ScreenNetworkWaiting::Input( const DeviceInput& DeviceI, const InputEventType type, const GameInput &GameI, const MenuInput &MenuI, const StyleInput &StyleI )
|
||||||
|
{
|
||||||
|
LOG->Trace( "ScreenNetworkWaiting::Input()" );
|
||||||
|
|
||||||
|
Screen::Input( DeviceI, type, GameI, MenuI, StyleI );
|
||||||
|
}
|
||||||
|
|
||||||
|
void ScreenNetworkWaiting::HandleScreenMessage( const ScreenMessage SM )
|
||||||
|
{
|
||||||
|
switch( SM )
|
||||||
|
{
|
||||||
|
case SM_ServerGoToNextScreen:
|
||||||
|
SCREENMAN->SetNewScreen( "ScreenNetworkMenu" );
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void ScreenNetworkWaiting::MenuUp( PlayerNumber pn )
|
||||||
|
{
|
||||||
|
m_bReady = true;
|
||||||
|
NetPlayerState ps = { "billy", 100, 100, m_bReady };
|
||||||
|
CLIENT->SendMyPlayerState( ps );
|
||||||
|
}
|
||||||
|
|
||||||
|
void ScreenNetworkWaiting::MenuDown( PlayerNumber pn )
|
||||||
|
{
|
||||||
|
m_bReady = false;
|
||||||
|
NetPlayerState ps = { "billy", 100, 100, m_bReady };
|
||||||
|
CLIENT->SendMyPlayerState( ps );
|
||||||
|
}
|
||||||
|
|
||||||
@@ -0,0 +1,43 @@
|
|||||||
|
/*
|
||||||
|
-----------------------------------------------------------------------------
|
||||||
|
Class: ScreenNetworkWaiting
|
||||||
|
|
||||||
|
Desc: See header.
|
||||||
|
|
||||||
|
Copyright (c) 2001-2002 by the person(s) listed below. All rights reserved.
|
||||||
|
Chris Danford
|
||||||
|
-----------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "Screen.h"
|
||||||
|
#include "SongSelector.h"
|
||||||
|
#include "BitmapText.h"
|
||||||
|
#include "TransitionFade.h"
|
||||||
|
#include "RandomSample.h"
|
||||||
|
|
||||||
|
class ScreenNetworkWaiting : public Screen
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
ScreenNetworkWaiting();
|
||||||
|
virtual ~ScreenNetworkWaiting();
|
||||||
|
|
||||||
|
virtual void Update( float fDeltaTime );
|
||||||
|
virtual void DrawPrimitives();
|
||||||
|
virtual void Input( const DeviceInput& DeviceI, const InputEventType type, const GameInput &GameI, const MenuInput &MenuI, const StyleInput &StyleI );
|
||||||
|
virtual void HandleScreenMessage( const ScreenMessage SM );
|
||||||
|
|
||||||
|
virtual void MenuUp( PlayerNumber pn );
|
||||||
|
virtual void MenuDown( PlayerNumber pn );
|
||||||
|
|
||||||
|
private:
|
||||||
|
|
||||||
|
MenuElements m_Menu;
|
||||||
|
|
||||||
|
BitmapText m_textServerInfo;
|
||||||
|
BitmapText m_textPlayerList;
|
||||||
|
bool m_bReady;
|
||||||
|
float m_fUpdateTimer;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -28,7 +28,6 @@
|
|||||||
#include "PrefsManager.h"
|
#include "PrefsManager.h"
|
||||||
#include "Quad.h"
|
#include "Quad.h"
|
||||||
#include "ThemeManager.h"
|
#include "ThemeManager.h"
|
||||||
#include "RageNetwork.h"
|
|
||||||
|
|
||||||
|
|
||||||
ScreenSandbox::ScreenSandbox()
|
ScreenSandbox::ScreenSandbox()
|
||||||
|
|||||||
@@ -1087,6 +1087,11 @@ CString Song::GetBackgroundPath() const
|
|||||||
return m_sSongDir+m_sBackgroundFile;
|
return m_sSongDir+m_sBackgroundFile;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const CString& Song::GetSongDir() const
|
||||||
|
{
|
||||||
|
return m_sSongDir;
|
||||||
|
}
|
||||||
|
|
||||||
/* Get the first/last beat of any currently active note pattern. If two
|
/* Get the first/last beat of any currently active note pattern. If two
|
||||||
* players are active, they often have the same start beat, but they don't
|
* players are active, they often have the same start beat, but they don't
|
||||||
* have to.
|
* have to.
|
||||||
|
|||||||
@@ -643,10 +643,13 @@ bool SongManager::ChooseRandomSong()
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
Song* SongManager::GetSongFromPath( const CString &sSongPath )
|
Song* SongManager::GetSongFromDir( CString sDir )
|
||||||
{
|
{
|
||||||
|
if( sDir[sDir.GetLength()-1] != '\\' )
|
||||||
|
sDir += '\\';
|
||||||
|
|
||||||
for( unsigned int i=0; i<m_pSongs.size(); i++ )
|
for( unsigned int i=0; i<m_pSongs.size(); i++ )
|
||||||
if( sSongPath.CompareNoCase(m_pSongs[i]->GetSongFilePath()) == 0 )
|
if( sDir.CompareNoCase(m_pSongs[i]->GetSongDir()) == 0 )
|
||||||
return m_pSongs[i];
|
return m_pSongs[i];
|
||||||
|
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|||||||
@@ -65,7 +65,7 @@ public:
|
|||||||
* if successful, false if no song could be found. */
|
* if successful, false if no song could be found. */
|
||||||
bool ChooseRandomSong();
|
bool ChooseRandomSong();
|
||||||
|
|
||||||
Song* GetSongFromPath( const CString &sSongPath );
|
Song* GetSongFromDir( CString sDir );
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void LoadStepManiaSongDir( CString sDir, LoadingWindow *ld );
|
void LoadStepManiaSongDir( CString sDir, LoadingWindow *ld );
|
||||||
|
|||||||
+16
-43
@@ -27,7 +27,7 @@
|
|||||||
#include "RageInput.h"
|
#include "RageInput.h"
|
||||||
#include "RageTimer.h"
|
#include "RageTimer.h"
|
||||||
#include "RageException.h"
|
#include "RageException.h"
|
||||||
#include "RageNetwork.h"
|
#include "RageNetworkClient.h"
|
||||||
#include "RageMath.h"
|
#include "RageMath.h"
|
||||||
|
|
||||||
#include "arch/arch.h"
|
#include "arch/arch.h"
|
||||||
@@ -78,12 +78,9 @@
|
|||||||
|
|
||||||
// command line arguments
|
// command line arguments
|
||||||
CString g_sSongPath = "";
|
CString g_sSongPath = "";
|
||||||
bool g_bBeClient = false;
|
|
||||||
bool g_bBeServer = false;
|
|
||||||
CString g_sServerIP = "";
|
CString g_sServerIP = "";
|
||||||
int g_iNumClients = 0;
|
|
||||||
|
|
||||||
const int SM_PORT = 26573; // Quake port + "Ko" + "na" + "mitsu"
|
const int SM_PORT = 573; // "Ko" + "na" + "mitsu"
|
||||||
|
|
||||||
/*------------------------------------------------
|
/*------------------------------------------------
|
||||||
Common stuff
|
Common stuff
|
||||||
@@ -265,24 +262,14 @@ int main(int argc, char* argv[])
|
|||||||
atexit(SDL_Quit); /* Clean up on exit */
|
atexit(SDL_Quit); /* Clean up on exit */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Handle command line args
|
* Handle command line args.
|
||||||
|
* Only allow one command line arg so we can validate the number of
|
||||||
|
* parameters easier.
|
||||||
*/
|
*/
|
||||||
for(int i=0; i<argc; i++)
|
if( argc > 1 )
|
||||||
{
|
g_sSongPath = argv[1];
|
||||||
if(!strcmp(argv[i], "--fsck"))
|
if( argc > 2 )
|
||||||
;//crash();
|
g_sServerIP = argv[2];
|
||||||
else if(!strcmp(argv[i], "--song"))
|
|
||||||
g_sSongPath = argv[++i];
|
|
||||||
else if(!strcmp(argv[i], "--client"))
|
|
||||||
g_bBeClient = true;
|
|
||||||
else if(!strcmp(argv[i], "--server"))
|
|
||||||
g_bBeServer = true;
|
|
||||||
else if(!strcmp(argv[i], "--ip"))
|
|
||||||
g_sServerIP = argv[++i];
|
|
||||||
else if(!strcmp(argv[i], "--numclients"))
|
|
||||||
g_iNumClients = atoi(argv[++i]);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef _DEBUG
|
#ifdef _DEBUG
|
||||||
_CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF|_CRTDBG_LEAK_CHECK_DF);
|
_CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF|_CRTDBG_LEAK_CHECK_DF);
|
||||||
@@ -327,7 +314,7 @@ int main(int argc, char* argv[])
|
|||||||
ANNOUNCER = new AnnouncerManager;
|
ANNOUNCER = new AnnouncerManager;
|
||||||
INPUTFILTER = new InputFilter;
|
INPUTFILTER = new InputFilter;
|
||||||
INPUTMAPPER = new InputMapper;
|
INPUTMAPPER = new InputMapper;
|
||||||
NETWORK = new RageNetwork;
|
CLIENT = new RageNetworkClient;
|
||||||
INPUTQUEUE = new InputQueue;
|
INPUTQUEUE = new InputQueue;
|
||||||
SONGINDEX = new SongCacheIndex;
|
SONGINDEX = new SongCacheIndex;
|
||||||
/* depends on SONGINDEX: */
|
/* depends on SONGINDEX: */
|
||||||
@@ -363,33 +350,19 @@ int main(int argc, char* argv[])
|
|||||||
/*
|
/*
|
||||||
* Load initial screen depending on network mode
|
* Load initial screen depending on network mode
|
||||||
*/
|
*/
|
||||||
if( g_bBeClient )
|
if( g_sServerIP != "" )
|
||||||
{
|
{
|
||||||
// immediately try to connect to server
|
// immediately try to connect to server
|
||||||
GAMESTATE->m_pCurSong = SONGMAN->GetSongFromPath( g_sSongPath );
|
GAMESTATE->m_pCurSong = SONGMAN->GetSongFromDir( g_sSongPath );
|
||||||
if( GAMESTATE->m_pCurSong == NULL )
|
if( GAMESTATE->m_pCurSong == NULL )
|
||||||
throw RageException( "The song '%s' is required to play this network game.", g_sSongPath.GetString() );
|
throw RageException( "The song '%s' is required to play this network game.", g_sSongPath.GetString() );
|
||||||
NETWORK->Init( false );
|
CLIENT->Connect( (const char*)g_sServerIP, SM_PORT );
|
||||||
if( !NETWORK->Connect( (const char*)g_sServerIP, SM_PORT ) )
|
SCREENMAN->SetNewScreen( "ScreenNetworkWaiting" );
|
||||||
throw RageException( "Could not connect to server '%s'", g_sServerIP.GetString() );
|
|
||||||
SCREENMAN->SetNewScreen( "ScreenSandbox" );
|
|
||||||
}
|
|
||||||
else if( g_bBeServer )
|
|
||||||
{
|
|
||||||
// wait for clients to connect
|
|
||||||
GAMESTATE->m_pCurSong = SONGMAN->GetSongFromPath( g_sSongPath );
|
|
||||||
if( GAMESTATE->m_pCurSong == NULL )
|
|
||||||
throw RageException( "The song '%s' is required to play this network game.", g_sSongPath.GetString() );
|
|
||||||
NETWORK->Init( true );
|
|
||||||
if( !NETWORK->Listen( SM_PORT ) )
|
|
||||||
throw RageException( "Could not connect to server '%s'", g_sServerIP.GetString() );
|
|
||||||
// SCREENMAN->SetNewScreen( "ScreenSandbox" );
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// normal game
|
// normal game
|
||||||
SCREENMAN->SetNewScreen( "ScreenTitleMenu" );
|
SCREENMAN->SetNewScreen( "ScreenTitleMenu" );
|
||||||
// SCREENMAN->SetNewScreen( "ScreenSandbox" );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Run the main loop. */
|
/* Run the main loop. */
|
||||||
@@ -415,7 +388,7 @@ int main(int argc, char* argv[])
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
SAFE_DELETE( SCREENMAN );
|
SAFE_DELETE( SCREENMAN );
|
||||||
SAFE_DELETE( NETWORK );
|
SAFE_DELETE( CLIENT );
|
||||||
SAFE_DELETE( INPUTQUEUE );
|
SAFE_DELETE( INPUTQUEUE );
|
||||||
SAFE_DELETE( INPUTMAPPER );
|
SAFE_DELETE( INPUTMAPPER );
|
||||||
SAFE_DELETE( INPUTFILTER );
|
SAFE_DELETE( INPUTFILTER );
|
||||||
@@ -494,7 +467,7 @@ void GameLoop()
|
|||||||
TEXTUREMAN->Update( fDeltaTime );
|
TEXTUREMAN->Update( fDeltaTime );
|
||||||
MUSIC->Update( fDeltaTime );
|
MUSIC->Update( fDeltaTime );
|
||||||
SCREENMAN->Update( fDeltaTime );
|
SCREENMAN->Update( fDeltaTime );
|
||||||
NETWORK->Update( fDeltaTime );
|
CLIENT->Update( fDeltaTime );
|
||||||
|
|
||||||
static InputEventArray ieArray;
|
static InputEventArray ieArray;
|
||||||
ieArray.clear(); // empty the array
|
ieArray.clear(); // empty the array
|
||||||
|
|||||||
@@ -211,11 +211,11 @@ SOURCE=.\RageMusic.h
|
|||||||
# End Source File
|
# End Source File
|
||||||
# Begin Source File
|
# Begin Source File
|
||||||
|
|
||||||
SOURCE=.\RageNetwork.cpp
|
SOURCE=.\RageNetworkClient.cpp
|
||||||
# End Source File
|
# End Source File
|
||||||
# Begin Source File
|
# Begin Source File
|
||||||
|
|
||||||
SOURCE=.\RageNetwork.h
|
SOURCE=.\RageNetworkClient.h
|
||||||
# End Source File
|
# End Source File
|
||||||
# Begin Source File
|
# Begin Source File
|
||||||
|
|
||||||
@@ -1301,6 +1301,14 @@ SOURCE=.\ScreenMusicScroll.h
|
|||||||
# End Source File
|
# End Source File
|
||||||
# Begin Source File
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=.\ScreenNetworkWaiting.cpp
|
||||||
|
# End Source File
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=.\ScreenNetworkWaiting.h
|
||||||
|
# End Source File
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
SOURCE=.\ScreenOptions.cpp
|
SOURCE=.\ScreenOptions.cpp
|
||||||
# End Source File
|
# End Source File
|
||||||
# Begin Source File
|
# Begin Source File
|
||||||
|
|||||||
@@ -168,7 +168,8 @@ try_element_again:
|
|||||||
if( asPossibleElementFilePaths.empty() )
|
if( asPossibleElementFilePaths.empty() )
|
||||||
{
|
{
|
||||||
#ifdef _DEBUG
|
#ifdef _DEBUG
|
||||||
switch( MessageBox(NULL,"ThemeManager",ssprintf("The theme element %s/%s is missing.",sAssetCategory.GetString(),sFileName.GetString()), MB_ABORTRETRYIGNORE ) )
|
CString sMessage = ssprintf("The theme element %s/%s is missing.",sAssetCategory.GetString(),sFileName.GetString());
|
||||||
|
switch( MessageBox(NULL, sMessage, "ThemeManager", MB_ABORTRETRYIGNORE ) )
|
||||||
{
|
{
|
||||||
case IDRETRY:
|
case IDRETRY:
|
||||||
goto try_element_again;
|
goto try_element_again;
|
||||||
|
|||||||
@@ -1,174 +0,0 @@
|
|||||||
log.txt: last compiled on Sun Apr 7 14:19:25 2002.
|
|
||||||
Log starting 2002-04-30 13:16:42
|
|
||||||
|
|
||||||
|
|
||||||
RageSound::RageSound()
|
|
||||||
Sound card info:
|
|
||||||
- play latency is 3 ms
|
|
||||||
- total device hardware memory is 0 bytes
|
|
||||||
- free device hardware memory is 0 bytes
|
|
||||||
- number of free sample slots in the hardware is 94
|
|
||||||
- number of free 3D sample slots in the hardware is 94
|
|
||||||
- min sample rate supported by the hardware is 8000
|
|
||||||
- max sample rate supported by the hardware is 48000
|
|
||||||
Video card info:
|
|
||||||
- max texture width is 4096
|
|
||||||
- max texture height is 4096
|
|
||||||
- max texture blend stages is 8
|
|
||||||
- max simultaneous textures is 4
|
|
||||||
|
|
||||||
This display adaptor supports the following modes:
|
|
||||||
Group banner for 'Dance Dance Revolution 1st Mix' is 'Songs\Dance Dance Revolution 1st Mix\banner.png'.
|
|
||||||
Song::LoadFromSongDir(Songs\Dance Dance Revolution 1st Mix\trip)
|
|
||||||
Song::LoadFromDWIFile(Songs\Dance Dance Revolution 1st Mix\trip\trip.dwi)
|
|
||||||
Group banner for 'Dance Dance Revolution 2nd Mix' is 'Songs\Dance Dance Revolution 2nd Mix\banner.png'.
|
|
||||||
Song::LoadFromSongDir(Songs\Dance Dance Revolution 2nd Mix\Tubthumping)
|
|
||||||
Song::LoadFromSMDir(Songs\Dance Dance Revolution 2nd Mix\Tubthumping\)
|
|
||||||
Unexpected value named '#TITLE'
|
|
||||||
Unexpected value named ''
|
|
||||||
Group banner for 'Dance Dance Revolution 3rd Mix' is 'Songs\Dance Dance Revolution 3rd Mix\banner.png'.
|
|
||||||
Song::LoadFromSongDir(Songs\Dance Dance Revolution 3rd Mix\Xanadu)
|
|
||||||
Song::LoadFromBMSDir(Songs\Dance Dance Revolution 3rd Mix\Xanadu\)
|
|
||||||
NoteMetadata description found to be 'another'
|
|
||||||
NoteMetadata description found to be 'basic'
|
|
||||||
NoteMetadata description found to be '4th+ maniac'
|
|
||||||
NoteMetadata description found to be 'ssr'
|
|
||||||
NoteMetadata description found to be 'another double'
|
|
||||||
NoteMetadata description found to be 'basic double'
|
|
||||||
NoteMetadata description found to be '4th+ maniac double'
|
|
||||||
NoteMetadata description found to be 'ssr double'
|
|
||||||
Inserting new BPM change at beat 0.000000, BPM 130.000000
|
|
||||||
There is a BPM change at beat 0.000000, BPM 130.000000, index 0
|
|
||||||
Group banner for 'Dance Dance Revolution 3rd Mix Plus' is 'Songs\Dance Dance Revolution 3rd Mix Plus\banner.png'.
|
|
||||||
Song::LoadFromSongDir(Songs\Dance Dance Revolution 3rd Mix Plus\WA)
|
|
||||||
Song::LoadFromBMSDir(Songs\Dance Dance Revolution 3rd Mix Plus\WA\)
|
|
||||||
NoteMetadata description found to be 'basic'
|
|
||||||
NoteMetadata description found to be 'maniac'
|
|
||||||
NoteMetadata description found to be 'trick'
|
|
||||||
NoteMetadata description found to be '6panels basic'
|
|
||||||
NoteMetadata description found to be '6panels maniac'
|
|
||||||
NoteMetadata description found to be '6panels trick'
|
|
||||||
NoteMetadata description found to be 'basic double'
|
|
||||||
NoteMetadata description found to be 'maniac double'
|
|
||||||
NoteMetadata description found to be 'trick double'
|
|
||||||
NoteMetadata description found to be 'battle'
|
|
||||||
Inserting new BPM change at beat 0.000000, BPM 141.000000
|
|
||||||
There is a BPM change at beat 0.000000, BPM 141.000000, index 0
|
|
||||||
Group banner for 'Dance Dance Revolution 4th Mix' is 'Songs\Dance Dance Revolution 4th Mix\banner.png'.
|
|
||||||
Song::LoadFromSongDir(Songs\Dance Dance Revolution 4th Mix\Young Forever)
|
|
||||||
Song::LoadFromBMSDir(Songs\Dance Dance Revolution 4th Mix\Young Forever\)
|
|
||||||
NoteMetadata description found to be 'basic'
|
|
||||||
NoteMetadata description found to be 'maniac'
|
|
||||||
NoteMetadata description found to be 'trick'
|
|
||||||
NoteMetadata description found to be '6panels basic'
|
|
||||||
NoteMetadata description found to be '6panels maniac'
|
|
||||||
NoteMetadata description found to be '6panels trick'
|
|
||||||
NoteMetadata description found to be 'basic double'
|
|
||||||
NoteMetadata description found to be 'maniac double'
|
|
||||||
NoteMetadata description found to be 'trick double'
|
|
||||||
NoteMetadata description found to be 'battle'
|
|
||||||
Inserting new BPM change at beat 0.000000, BPM 140.000000
|
|
||||||
There is a BPM change at beat 0.000000, BPM 140.000000, index 0
|
|
||||||
Group banner for 'Dance Dance Revolution 4th Mix Plus' is 'Songs\Dance Dance Revolution 4th Mix Plus\banner.png'.
|
|
||||||
Song::LoadFromSongDir(Songs\Dance Dance Revolution 4th Mix Plus\Wonda -Speed K Mix-)
|
|
||||||
Song::LoadFromBMSDir(Songs\Dance Dance Revolution 4th Mix Plus\Wonda -Speed K Mix-\)
|
|
||||||
NoteMetadata description found to be 'basic'
|
|
||||||
NoteMetadata description found to be 'maniac'
|
|
||||||
NoteMetadata description found to be 'trick'
|
|
||||||
NoteMetadata description found to be '6panels basic'
|
|
||||||
NoteMetadata description found to be '6panels maniac'
|
|
||||||
NoteMetadata description found to be '6panels trick'
|
|
||||||
NoteMetadata description found to be 'basic double'
|
|
||||||
NoteMetadata description found to be 'maniac double'
|
|
||||||
NoteMetadata description found to be 'trick double'
|
|
||||||
NoteMetadata description found to be 'battle'
|
|
||||||
Inserting new BPM change at beat 0.000000, BPM 170.000000
|
|
||||||
There is a BPM change at beat 0.000000, BPM 170.000000, index 0
|
|
||||||
Group banner for 'Dance Dance Revolution 5th Mix' is 'Songs\Dance Dance Revolution 5th Mix\banner.png'.
|
|
||||||
Song::LoadFromSongDir(Songs\Dance Dance Revolution 5th Mix\tribal)
|
|
||||||
Song::LoadFromDWIFile(Songs\Dance Dance Revolution 5th Mix\tribal\tribal.dwi)
|
|
||||||
Group banner for 'Dance Dance Revolution 6th Mix' is 'Songs\Dance Dance Revolution 6th Mix\banner.png'.
|
|
||||||
Song::LoadFromSongDir(Songs\Dance Dance Revolution 6th Mix\Orion 78 Civilization Mix)
|
|
||||||
Song::LoadFromDWIFile(Songs\Dance Dance Revolution 6th Mix\Orion 78 Civilization Mix\orion78civ.dwi)
|
|
||||||
Song::LoadFromSongDir(Songs\Dance Dance Revolution 6th Mix\So Deep)
|
|
||||||
Song::LoadFromDWIFile(Songs\Dance Dance Revolution 6th Mix\So Deep\sodeep.dwi)
|
|
||||||
Song::LoadFromSongDir(Songs\Dance Dance Revolution 6th Mix\Somewhere Over The Rainbow)
|
|
||||||
Song::LoadFromDWIFile(Songs\Dance Dance Revolution 6th Mix\Somewhere Over The Rainbow\somewhere.dwi)
|
|
||||||
Song::LoadFromSongDir(Songs\Dance Dance Revolution 6th Mix\The Centre of the Heart)
|
|
||||||
Song::LoadFromDWIFile(Songs\Dance Dance Revolution 6th Mix\The Centre of the Heart\centreheart.dwi)
|
|
||||||
Song::LoadFromSongDir(Songs\Dance Dance Revolution 6th Mix\True)
|
|
||||||
Song::LoadFromDWIFile(Songs\Dance Dance Revolution 6th Mix\True\true.dwi)
|
|
||||||
Song::LoadFromSongDir(Songs\Dance Dance Revolution 6th Mix\True (Trance Sunrise Mix))
|
|
||||||
Song::LoadFromDWIFile(Songs\Dance Dance Revolution 6th Mix\True (Trance Sunrise Mix)\truetrance.dwi)
|
|
||||||
Song::LoadFromSongDir(Songs\Dance Dance Revolution 6th Mix\Twilight Zone)
|
|
||||||
Song::LoadFromDWIFile(Songs\Dance Dance Revolution 6th Mix\Twilight Zone\twilightzone.dwi)
|
|
||||||
Song::LoadFromSongDir(Songs\Dance Dance Revolution 6th Mix\Witch Doctor)
|
|
||||||
Song::LoadFromDWIFile(Songs\Dance Dance Revolution 6th Mix\Witch Doctor\witchdoctor.dwi)
|
|
||||||
Song::LoadFromSongDir(Songs\Dance Dance Revolution 6th Mix\www Blonde Girl)
|
|
||||||
Song::LoadFromDWIFile(Songs\Dance Dance Revolution 6th Mix\www Blonde Girl\wwwblonde.dwi)
|
|
||||||
Song::LoadFromSongDir(Songs\Dance Dance Revolution 6th Mix\Yozora No Muko)
|
|
||||||
Song::LoadFromDWIFile(Songs\Dance Dance Revolution 6th Mix\Yozora No Muko\yozoranomuko.dwi)
|
|
||||||
Found 17 Songs.
|
|
||||||
GameDef::GameDef( 'Games\dance )
|
|
||||||
StyleDef::StyleDef( 'Games\dance\couple.style )
|
|
||||||
StyleDef::StyleDef( 'Games\dance\double.style )
|
|
||||||
StyleDef::StyleDef( 'Games\dance\single.style )
|
|
||||||
StyleDef::StyleDef( 'Games\dance\solo.style )
|
|
||||||
StyleDef::StyleDef( 'Games\dance\versus.style )
|
|
||||||
GameDef::GameDef( 'Games\pump )
|
|
||||||
StyleDef::StyleDef( 'Games\pump\couple.style )
|
|
||||||
StyleDef::StyleDef( 'Games\pump\double.style )
|
|
||||||
StyleDef::StyleDef( 'Games\pump\single.style )
|
|
||||||
StyleDef::StyleDef( 'Games\pump\versus.style )
|
|
||||||
RageScreen::SwitchDisplayModes( 1, 640, 480, 16 )
|
|
||||||
Testing format: display 22, back buffer 23, windowed 1...
|
|
||||||
This won't work. Keep searching.
|
|
||||||
Testing format: display 22, back buffer 24, windowed 1...
|
|
||||||
This won't work. Keep searching.
|
|
||||||
Testing format: display 22, back buffer 25, windowed 1...
|
|
||||||
This won't work. Keep searching.
|
|
||||||
Testing format: display 22, back buffer 20, windowed 1...
|
|
||||||
This won't work. Keep searching.
|
|
||||||
Testing format: display 22, back buffer 22, windowed 1...
|
|
||||||
This will work.
|
|
||||||
Present Parameters: 640, 480, 22, 1, 0, 1, 0, 1, 1, 80, 0, 0, 0
|
|
||||||
Mode change was successful.
|
|
||||||
FPS: 1
|
|
||||||
RageScreen::SwitchDisplayModes( 1, 640, 480, 16 )
|
|
||||||
Testing format: display 22, back buffer 23, windowed 1...
|
|
||||||
This won't work. Keep searching.
|
|
||||||
Testing format: display 22, back buffer 24, windowed 1...
|
|
||||||
This won't work. Keep searching.
|
|
||||||
Testing format: display 22, back buffer 25, windowed 1...
|
|
||||||
This won't work. Keep searching.
|
|
||||||
Testing format: display 22, back buffer 20, windowed 1...
|
|
||||||
This won't work. Keep searching.
|
|
||||||
Testing format: display 22, back buffer 22, windowed 1...
|
|
||||||
This will work.
|
|
||||||
Present Parameters: 640, 480, 22, 1, 0, 1, 0, 1, 1, 80, 0, 0, 0
|
|
||||||
Mode change was successful.
|
|
||||||
BitmapText::LoadFromFontName(Themes\default\Fonts\Normal.font)
|
|
||||||
RageBitmapTexture: Loaded 'themes\default\fonts\normal 16x16.png' (512x512) from disk. bScaleImageToTextureSize = 0, source 512,512; image 512,512.
|
|
||||||
RageTextureManager: Finished loading 'themes\default\fonts\normal 16x16.png' - 1237292 references.
|
|
||||||
FontManager: Loading 'themes\default\fonts\normal.font' from disk.
|
|
||||||
BitmapText::LoadFromFontName(Themes\default\Fonts\Normal.font)
|
|
||||||
FontManager: The Font 'themes\default\fonts\normal.font' now has 1 references.
|
|
||||||
RageScreen::SwitchDisplayModes( 1, 640, 480, 16 )
|
|
||||||
Testing format: display 22, back buffer 23, windowed 1...
|
|
||||||
This won't work. Keep searching.
|
|
||||||
Testing format: display 22, back buffer 24, windowed 1...
|
|
||||||
This won't work. Keep searching.
|
|
||||||
Testing format: display 22, back buffer 25, windowed 1...
|
|
||||||
This won't work. Keep searching.
|
|
||||||
Testing format: display 22, back buffer 20, windowed 1...
|
|
||||||
This won't work. Keep searching.
|
|
||||||
Testing format: display 22, back buffer 22, windowed 1...
|
|
||||||
This will work.
|
|
||||||
Present Parameters: 640, 480, 22, 1, 0, 1, 0, 1, 1, 80, 0, 0, 0
|
|
||||||
Mode change was successful.
|
|
||||||
RageBitmapTexture: Loaded 'themes\default\fonts\normal 16x16.png' (512x512) from disk. bScaleImageToTextureSize = 0, source 512,512; image 512,512.
|
|
||||||
WARNING: Didn't find an empty system messages slot.
|
|
||||||
WARNING: Didn't find an empty system messages slot.
|
|
||||||
Sprite::LoadFromTexture(Themes\default\Graphics\results banner frame.png)
|
|
||||||
RageBitmapTexture: Loaded 'themes\default\graphics\results banner frame.png' (256x128) from disk. bScaleImageToTextureSize = 0, source 256,100; image 256,100.
|
|
||||||
RageTextureManager: Finished loading 'themes\default\graphics\results banner frame.png' - 1236440 references.
|
|
||||||
|
|||||||
@@ -0,0 +1,40 @@
|
|||||||
|
#include "stdafx.h"
|
||||||
|
#include "SDL.h"
|
||||||
|
#include "RageNetworkServer.h"
|
||||||
|
#include "RageLog.h"
|
||||||
|
|
||||||
|
const int SM_PORT = 573; // "Ko" + "na" + "mitsu"
|
||||||
|
|
||||||
|
int main(int argc, char* argv[])
|
||||||
|
{
|
||||||
|
SDL_Init(0); /* Fire up the SDL, but don't actually start any subsystems. */
|
||||||
|
|
||||||
|
LOG = new RageLog;
|
||||||
|
LOG->ShowConsole();
|
||||||
|
|
||||||
|
LOG->Trace( "smserver starting up..." );
|
||||||
|
|
||||||
|
|
||||||
|
SERVER = new RageNetworkServer;
|
||||||
|
SERVER->Listen( SM_PORT );
|
||||||
|
|
||||||
|
|
||||||
|
SDL_Event event;
|
||||||
|
while( 1 )
|
||||||
|
{
|
||||||
|
// process all queued events
|
||||||
|
while(SDL_PollEvent(&event))
|
||||||
|
{
|
||||||
|
switch(event.type)
|
||||||
|
{
|
||||||
|
case SDL_KEYDOWN:
|
||||||
|
SERVER->DisconnectAllClients();
|
||||||
|
exit(1);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
SERVER->Update( 0.1f );
|
||||||
|
SERVER->TellClientsNetGameState();
|
||||||
|
::Sleep( 100 );
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,134 @@
|
|||||||
|
# Microsoft Developer Studio Project File - Name="smserver" - Package Owner=<4>
|
||||||
|
# Microsoft Developer Studio Generated Build File, Format Version 6.00
|
||||||
|
# ** DO NOT EDIT **
|
||||||
|
|
||||||
|
# TARGTYPE "Win32 (x86) Application" 0x0101
|
||||||
|
|
||||||
|
CFG=smserver - Win32 Debug
|
||||||
|
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
|
||||||
|
!MESSAGE use the Export Makefile command and run
|
||||||
|
!MESSAGE
|
||||||
|
!MESSAGE NMAKE /f "smserver.mak".
|
||||||
|
!MESSAGE
|
||||||
|
!MESSAGE You can specify a configuration when running NMAKE
|
||||||
|
!MESSAGE by defining the macro CFG on the command line. For example:
|
||||||
|
!MESSAGE
|
||||||
|
!MESSAGE NMAKE /f "smserver.mak" CFG="smserver - Win32 Debug"
|
||||||
|
!MESSAGE
|
||||||
|
!MESSAGE Possible choices for configuration are:
|
||||||
|
!MESSAGE
|
||||||
|
!MESSAGE "smserver - Win32 Release" (based on "Win32 (x86) Application")
|
||||||
|
!MESSAGE "smserver - Win32 Debug" (based on "Win32 (x86) Application")
|
||||||
|
!MESSAGE
|
||||||
|
|
||||||
|
# Begin Project
|
||||||
|
# PROP AllowPerConfigDependencies 0
|
||||||
|
# PROP Scc_ProjName ""
|
||||||
|
# PROP Scc_LocalPath ""
|
||||||
|
CPP=cl.exe
|
||||||
|
MTL=midl.exe
|
||||||
|
RSC=rc.exe
|
||||||
|
|
||||||
|
!IF "$(CFG)" == "smserver - Win32 Release"
|
||||||
|
|
||||||
|
# PROP BASE Use_MFC 0
|
||||||
|
# PROP BASE Use_Debug_Libraries 0
|
||||||
|
# PROP BASE Output_Dir "Release"
|
||||||
|
# PROP BASE Intermediate_Dir "Release"
|
||||||
|
# PROP BASE Target_Dir ""
|
||||||
|
# PROP Use_MFC 0
|
||||||
|
# PROP Use_Debug_Libraries 0
|
||||||
|
# PROP Output_Dir "Release"
|
||||||
|
# PROP Intermediate_Dir "Release"
|
||||||
|
# PROP Target_Dir ""
|
||||||
|
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /YX /FD /c
|
||||||
|
# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /YX /FD /c
|
||||||
|
# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
|
||||||
|
# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
|
||||||
|
# ADD BASE RSC /l 0x409 /d "NDEBUG"
|
||||||
|
# ADD RSC /l 0x409 /d "NDEBUG"
|
||||||
|
BSC32=bscmake.exe
|
||||||
|
# ADD BASE BSC32 /nologo
|
||||||
|
# ADD BSC32 /nologo
|
||||||
|
LINK32=link.exe
|
||||||
|
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /machine:I386
|
||||||
|
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /machine:I386
|
||||||
|
|
||||||
|
!ELSEIF "$(CFG)" == "smserver - Win32 Debug"
|
||||||
|
|
||||||
|
# PROP BASE Use_MFC 0
|
||||||
|
# PROP BASE Use_Debug_Libraries 1
|
||||||
|
# PROP BASE Output_Dir "Debug"
|
||||||
|
# PROP BASE Intermediate_Dir "Debug"
|
||||||
|
# PROP BASE Target_Dir ""
|
||||||
|
# PROP Use_MFC 0
|
||||||
|
# PROP Use_Debug_Libraries 1
|
||||||
|
# PROP Output_Dir "../"
|
||||||
|
# PROP Intermediate_Dir "Debug"
|
||||||
|
# PROP Ignore_Export_Lib 0
|
||||||
|
# PROP Target_Dir ""
|
||||||
|
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /YX /FD /GZ /c
|
||||||
|
# ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /FR /YX /FD /GZ /c
|
||||||
|
# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
|
||||||
|
# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
|
||||||
|
# ADD BASE RSC /l 0x409 /d "_DEBUG"
|
||||||
|
# ADD RSC /l 0x409 /d "_DEBUG"
|
||||||
|
BSC32=bscmake.exe
|
||||||
|
# ADD BASE BSC32 /nologo
|
||||||
|
# ADD BSC32 /nologo
|
||||||
|
LINK32=link.exe
|
||||||
|
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept
|
||||||
|
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept
|
||||||
|
|
||||||
|
!ENDIF
|
||||||
|
|
||||||
|
# Begin Target
|
||||||
|
|
||||||
|
# Name "smserver - Win32 Release"
|
||||||
|
# Name "smserver - Win32 Debug"
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=.\NetGameState.h
|
||||||
|
# End Source File
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=.\RageException.cpp
|
||||||
|
# End Source File
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=.\RageException.h
|
||||||
|
# End Source File
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=.\RageLog.cpp
|
||||||
|
# End Source File
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=.\RageLog.h
|
||||||
|
# End Source File
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=.\RageNetworkPacket.h
|
||||||
|
# End Source File
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=.\RageNetworkServer.cpp
|
||||||
|
# End Source File
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=.\RageNetworkServer.h
|
||||||
|
# End Source File
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=.\RageUtil.cpp
|
||||||
|
# End Source File
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=.\RageUtil.h
|
||||||
|
# End Source File
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=.\smserver.cpp
|
||||||
|
# End Source File
|
||||||
|
# End Target
|
||||||
|
# End Project
|
||||||
@@ -0,0 +1,29 @@
|
|||||||
|
Microsoft Developer Studio Workspace File, Format Version 6.00
|
||||||
|
# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
|
||||||
|
|
||||||
|
###############################################################################
|
||||||
|
|
||||||
|
Project: "smserver"=.\smserver.dsp - Package Owner=<4>
|
||||||
|
|
||||||
|
Package=<5>
|
||||||
|
{{{
|
||||||
|
}}}
|
||||||
|
|
||||||
|
Package=<4>
|
||||||
|
{{{
|
||||||
|
}}}
|
||||||
|
|
||||||
|
###############################################################################
|
||||||
|
|
||||||
|
Global:
|
||||||
|
|
||||||
|
Package=<5>
|
||||||
|
{{{
|
||||||
|
}}}
|
||||||
|
|
||||||
|
Package=<3>
|
||||||
|
{{{
|
||||||
|
}}}
|
||||||
|
|
||||||
|
###############################################################################
|
||||||
|
|
||||||
@@ -77,6 +77,7 @@ public:
|
|||||||
void AutoGen( NotesType ntTo, NotesType ntFrom ); // create Notes of type ntTo from Notes of type ntFrom
|
void AutoGen( NotesType ntTo, NotesType ntFrom ); // create Notes of type ntTo from Notes of type ntFrom
|
||||||
|
|
||||||
/* Directory this song data came from: */
|
/* Directory this song data came from: */
|
||||||
|
const CString &GetSongDir() const;
|
||||||
CString m_sSongDir;
|
CString m_sSongDir;
|
||||||
|
|
||||||
/* Filename associated with this file. This will always have
|
/* Filename associated with this file. This will always have
|
||||||
|
|||||||
Reference in New Issue
Block a user