package com.adamnickle.deck.Game;
import android.content.Context;
import com.adamnickle.deck.Interfaces.ConnectionFragment;
import com.adamnickle.deck.Interfaces.GameConnection;
import com.adamnickle.deck.Interfaces.GameConnectionListener;
import java.io.File;
public class ClientGameConnection extends GameConnection
{
private String mActualServerAddress;
public ClientGameConnection( ConnectionFragment connectionFragment )
{
super( connectionFragment );
}
/**
* *****************************************************************
* ConnectionListener Methods
* *****************************************************************
*/
@Override
public synchronized void onMessageHandle( GameConnectionListener listener, String originalSenderID, String receiverID, GameMessage message )
{
if( originalSenderID.equals( MOCK_SERVER_ADDRESS ) )
{
switch( message.getMessageType() )
{
case MESSAGE_SET_NAME:
final String name = message.getPlayerName();
for( GameConnectionListener listener2 : mListeners )
{
listener2.onServerConnect( MOCK_SERVER_ADDRESS, name );
}
return;
}
}
super.onMessageHandle( listener, originalSenderID, receiverID, message );
}
@Override
public synchronized void onDeviceConnect( String deviceID, String deviceName )
{
mActualServerAddress = deviceID;
}
@Override
public synchronized void onConnectionLost( String deviceID )
{
for( GameConnectionListener listener : mListeners )
{
listener.onServerDisconnect( deviceID );
}
}
/*******************************************************************
* GameConnection Methods
*******************************************************************/
@Override
public void startGame()
{
if( !isGameStarted() )
{
mConnectionFragment.findServer();
}
}
@Override
public boolean saveGame( Context context, String saveName )
{
throw new UnsupportedOperationException( "Clients cannot save games." );
}
@Override
public boolean openGameSave( Context context, File gameSave )
{
throw new UnsupportedOperationException( "Clients cannot open game saves." );
}
@Override
public void sendMessageToDevice( GameMessage message, String senderID, String receiverID )
{
final byte[] data = GameMessage.serializeMessage( message );
mConnectionFragment.sendDataToDevice( mActualServerAddress, data );
}
}