00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030 #ifndef OANDXCONTROLLER_H
00031 #define OANDXCONTROLLER_H
00032
00033 #include <coecntrl.h>
00034 #include <coemain.h>
00035
00036 #include <eikappui.h>
00037 #include <eikapp.h>
00038 #include <eikdoc.h>
00039 #include <eikenv.h>
00040 #include <eikon.hrh>
00041 #include "oandxdefs.h"
00042
00043 class COandXEngine;
00044
00045 #define MaxInfoNoteTextLen 40
00046
00047 class COandXController : public CBase
00052 {
00053 public:
00054 static COandXController* NewL();
00055 virtual ~COandXController();
00056
00057
00058 void Reset();
00059 TBool HitSquareL(TInt aIndex);
00060 void SwitchTurn();
00061 void ResetStats();
00062
00063
00064 enum TState
00065 {
00066 ENewGame, EPlaying, EFinished
00067 };
00068
00069 inline TBool IsNewGame() const;
00070 inline TBool IsCrossTurn() const;
00071 inline TUint GamesPlayed() const;
00072 inline TUint WonByO() const;
00073 inline TUint WonByX() const;
00074
00075 TTileState GameRecord(TInt aIndex);
00076
00077
00078 void ExternalizeL(RWriteStream& aStream) const;
00079 void InternalizeL(RReadStream& aStream);
00080
00081 private:
00082 void ConstructL();
00083
00084 private:
00085
00086 TState iState;
00087 TBool iCrossTurn;
00088
00089 TTileState iLastGameResult;
00090 TUint iNumGames;
00091 TUint iNumNoughtWins;
00092 TUint iNumCrossWins;
00093 TFixedArray<TTileState, KNumHistoryRecords> iGameRecords;
00094 };
00095
00096
00097 inline TBool COandXController::IsNewGame() const { return iState==ENewGame; }
00098 inline TBool COandXController::IsCrossTurn() const { return (iCrossTurn); }
00099
00100 inline TUint COandXController::GamesPlayed() const { return iNumGames; }
00101 inline TUint COandXController::WonByO() const { return iNumNoughtWins; }
00102 inline TUint COandXController::WonByX() const { return iNumCrossWins; }
00103
00104 #endif // OANDXCONTROLLER_H