?? controller.h
字號:
// controller.h
//
// Copyright (c) 2003 Symbian Ltd. All rights reserved.
//
#ifndef __CONTROLLER_H
#define __CONTROLLER_H
#include <coecntrl.h>
#include <coemain.h>
#include <eikappui.h>
#include <eikapp.h>
#include <eikdoc.h>
#include <eikenv.h>
#include <eikon.hrh>
#include <battleships.rsg>
#include <rgcp.h>
#include "battleships.hrh"
#include "battleships-uids.h"
#include "engine.h"
#include "view.h"
class CFleetView;
const TUid KUidExample = { 0x101FAD5D };
// RGCP opcodes
const TInt KGameOpcodeStart=1;
const TInt KGameOpcodeRestart=2;
const TInt KGameOpcodeNop=3;
const TInt KGameOpcodeAbandon=4;
const TInt KGameOpcodeHit=10;
// command handler
class MGameViewCmdHandler
{
public:
virtual void ViewCmdHitFleet(TInt aX, TInt aY)=0;
};
// controller
class CGameController : public CBase, public MGameViewCmdHandler, public MRgcpHandler
{
public:
enum TState {
EBlank, EListening, EInitiating, EStarting, EAccepting,
EMyTurn, EOppTurn, EFinished, ERestarting, EGameOn
};
enum TFirstMovePref {
EDontCare, EWantFirst, EWantSecond
};
// construct/destruct
static CGameController* NewL();
static CGameController* NewL(const CStreamStore& aStore, TStreamId aStreamId);
void RestoreL(const CStreamStore& aStore, TStreamId aStreamId);
void SetAppView(CFleetView* aAppView);
~CGameController();
// persistence
TStreamId StoreL(CStreamStore& aStore) const;
// state
inline TState State() const;
inline TBool IsBlank() const;
inline TBool IsInitiating() const;
inline TBool IsListening() const;
inline TBool IsStarting() const;
inline TBool IsAccepting() const;
inline TBool IsMyTurn() const;
inline TBool IsOppTurn() const;
inline TBool IsFinished() const;
inline TBool IsRestarting() const;
void SetState(TState aState);
TInt GetStateID();
// comms
inline const CRgcpSession* Rgcp() const;
inline const RGsdpSession& Gsdp() const;
inline TUid GetGdpProtocol() const;
// game control
void Reset();
void SetGdpProtocolL(TUid aProtocol);
void SetFirstMovePref(TFirstMovePref aFirstMovePref);
void InitiateL(const TDesC& aOtherAddress);
void Listen();
void Abandon();
void Resend();
// query
TBool HaveFirstMovePref() const;
TFirstMovePref FirstMovePref() const;
// zooming
void ZoomInL();
void ZoomOutL();
// engine
inline CGameEngine& Engine() const;
private:
// construct/restore
void ConstructL();
// stream persistence
void ExternalizeL(RWriteStream& aStream) const;
void InternalizeL(RReadStream& aStream);
// MRgcpHandler stuff
void RgcpHandleResponse(TInt aOpcode, const TDesC8& aData);
void RgcpHandleRequest(TInt aOpcode, const TDesC8& aData);
void RgcpHandleTerminated(TBool aClientInitiated);
void RgcpHandleBound();
void RgcpStartRequesting();
// from MGameViewCmdHandler
void ViewCmdHitFleet(TInt aX, TInt aY);
// sending requests
void SendRestartRequest();
void SendStartRequest();
void SendAbandonRequest();
void SendNopRequest();
void SendHitRequest(TInt aX, TInt aY);
// sending responses
void SendStartResponse(TBool iMeFirst);
void SendHitResponse(TInt aX, TInt aY, TShip::TShipType aShipType);
// handling requests
void HandleRestartRequest();
void HandleStartRequest(const TDesC8& aData);
void HandleAbandonRequest();
void HandleHitRequest(const TDesC8& aData);
// handling responses
void HandleStartResponse(const TDesC8& aData);
void HandleHitResponse(const TDesC8& aData);
CFleetView& ActiveView() const;
private:
CFleetView* iAppView;
CGameEngine* iEngine;
CRgcpSession* iRgcp;
private:
// cached pointers and values
CEikonEnv* iEnv;
TUid iGdpProtocol;
// private persistent state
TState iState;
TBool iHaveFirstMovePref;
TFirstMovePref iFirstMovePref;
// zoom for internalizing
TInt iZoomFactor;
};
// state inlines
inline CGameController::TState CGameController::State() const { return iState; }
inline TBool CGameController::IsBlank() const { return iState==EBlank; }
inline TBool CGameController::IsInitiating() const { return iState==EInitiating; }
inline TBool CGameController::IsListening() const { return iState==EListening; }
inline TBool CGameController::IsStarting() const { return iState==EStarting; }
inline TBool CGameController::IsAccepting() const { return iState==EAccepting; }
inline TBool CGameController::IsMyTurn() const { return iState==EMyTurn; }
inline TBool CGameController::IsOppTurn() const { return iState==EOppTurn; }
inline TBool CGameController::IsFinished() const { return iState==EFinished; }
inline TBool CGameController::IsRestarting() const { return iState==ERestarting; }
// comms
inline const CRgcpSession* CGameController::Rgcp() const { return iRgcp; }
inline const RGsdpSession& CGameController::Gsdp() const { return iRgcp->Gsdp(); }
inline TUid CGameController::GetGdpProtocol() const { return iGdpProtocol; }
inline CGameEngine& CGameController::Engine() const { return *iEngine; }
#endif
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -