RbBFBlokProjPSIVStrn2005.04 ACnmStrnAChpStrnACsvStrnVer1Strn1 Ver2Strn0 Ver3Strn0 RelsStrn0 NnRlStrn0 RegnStrnSVerStrnLVerStrnIVerStrnaiviInt DVewInt gprTpInt DLanInt CLanInt DEncInt BflgInt IconGrupMEndGInt MMacCStrnBMacStrnMy App (Classic)BCarStrnMy Application BCMOStrnMy Application BSizInt @BMSzInt BSzSStrn4096BMSSStrn2048MDIcStrnBWinStrnMy Application.exe BMDIInt BL86Strn MyApplication PadnPadn****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************BlokpVewg`NameStrn WarWindow ContInt "wpaswStrnbClsInt SuprStrnWindow bNtrInt CompStrnHInsGrupMnameStrnOpenCompStrnsorcGrup|MEncoInt srclStrn Sub Open() srclStrn// Make a new game for the user srclStrnNewGame srclStrnEnd Sub EndGInt MEndGInt MMnuHGrupMnameStrnFileLibraryDemonstrationCompStrnsorcGrupMEncoInt srclStrn.Function FileLibraryDemonstration() As Boolean srclStrnExampleFeaturesWindow.Show srclStrnsrclStrn return true srclStrn End FunctionEndGInt MEndGInt MMnuHGrupMnameStrn FileNewGame CompStrnsorcGrupMEncoInt srclStrn!Function FileNewGame() As Boolean srclStrnNewGame srclStrnsrclStrn return true srclStrn End FunctionEndGInt MEndGInt MMethGrup 0MnameStrn DealCards CompStrnsorcGrup xMEncoInt srclStrnISub DealCards(opponent as Card, player as Card, cardsInvolved as Integer) srclStrn8// We're given two cards, so let's see who wins the war!srclStrnmOpponentCard = opponentsrclStrnmPlayerCard = playersrclStrnsrclStrn// Now refresh the drawing srclStrnme.Refresh( false ) srclStrnsrclStrn// Check to see who won srclStrn-If mPlayerCard.Rank > mOpponentCard.Rank then srclStrnWhoWon.Text = "Player won!" srclStrn)mPlayerWins = mPlayerWins + cardsInvolved srclStrn// Set the new win records srclStrn0PlayerScore.Text = Str( mPlayerWins ) + " cards"srclStrnReturn srclStrnEnd If srclStrnsrclStrn-If mPlayerCard.Rank < mOpponentCard.Rank then srclStrnWhoWon.Text = "Opponent won!" srclStrn-mOpponentWins = mOpponentWins + cardsInvolved srclStrn// Set the new win records srclStrn4OpponentScore.Text = Str( mOpponentWins ) + " cards"srclStrnReturn srclStrnEnd If srclStrnsrclStrn// It was a tie!srclStrnWhoWon.Text = "War!!!" srclStrnWhoWon.Refresh( false ) srclStrnsrclStrnA// Since it's a tie, we need to try to give out three more cards. srclStrn?// So we'll pause first, to let the war register with the user. srclStrn"App.SleepCurrentThread( 1000 * 2 ) srclStrnsrclStrn0// Then we'll silently deal out three more cardssrclStrn,// to each user. But first, check to see ifsrclStrn"// we're about to run out of cards srclStrnif UBound( mDeck ) < 7 then srclStrndim cardsDealt as Integer srclStrnsrclStrn-// Deal out until we've only got 2 cards left srclStrnwhile UBound( mDeck ) > 2 srclStrncall mDeck.Pop srclStrncall mDeck.Pop srclStrncardsDealt = cardsDealt + 2 srclStrnwendsrclStrnsrclStrn!// Do we still have 2 cards left? srclStrnIf UBound( mDeck ) >= 2 ThensrclStrnsrclStrn // Just deal the final cards outsrclStrnADealCards( mDeck.Pop, mDeck.Pop, cardsInvolved + cardsDealt + 2 ) srclStrnsrclStrnElsesrclStrnsrclStrn!// Make a new deck and keep going srclStrnmDeck = mManager.GetDecksrclStrn mDeck.Shuffle srclStrnADealCards( mDeck.Pop, mDeck.Pop, cardsInvolved + cardsDealt + 2 ) srclStrnsrclStrnEnd If srclStrnsrclStrnelsesrclStrnsrclStrn// Deal out six cards srclStrnfor i as Integer = 0 to 5 srclStrncall mDeck.Pop srclStrnnext i srclStrnsrclStrn,// And then do a true deal for the final twosrclStrn4DealCards( mDeck.Pop, mDeck.Pop, cardsInvolved + 8 )srclStrnsrclStrnend if srclStrnsrclStrnsrclStrnsrclStrnEnd Sub EndGInt MEncoInt AlasStrnflagInt parmStrn:opponent as Card, player as Card, cardsInvolved as Integer rsltStrnEndGInt MMethGruplMnameStrnNewGame CompStrnsorcGrupMEncoInt srclStrn Sub NewGame() srclStrn'// Reset the scores and everything else srclStrnPlayerScore.Text = "0 cards"srclStrnOpponentScore.Text = "0 cards" srclStrnmPlayerCard = nil srclStrnmOpponentCard = nil srclStrnmPlayerWins = 0 srclStrnmOpponentWins = 0 srclStrnsrclStrn// Create the manager srclStrnmManager = new CardManager srclStrnsrclStrn // Aces are not the lowest cardssrclStrnmManager.AceIsLowest = falsesrclStrnsrclStrn// And get a deck from it srclStrnmDeck = mManager.GetDecksrclStrnsrclStrn// Shuffle the deck srclStrn mDeck.Shuffle srclStrnsrclStrn+// Make the card back we use for displaying srclStrn// flipped over cards srclStrn mCardBack = new Card( mManager )srclStrnstatic r as new Random srclStrnEmCardBack.Back = r.InRange( Card.kBackTypeFirst, Card.kBackTypeLast ) srclStrnsrclStrn// Do some drawing srclStrnme.Refresh( false ) srclStrnEnd Sub EndGInt MEncoInt AlasStrnflagInt parmStrnrsltStrnEndGInt MPropGrup@MEncoInt declStrnmManager As CardManager flagInt EndGInt MPropGrup<MEncoInt declStrnmDeck(-1) As Card flagInt EndGInt MPropGrup@MEncoInt declStrnmOpponentCard As Card flagInt EndGInt MPropGrup<MEncoInt declStrnmPlayerCard As Card flagInt EndGInt MPropGrup@MEncoInt declStrnmPlayerWins As Integer flagInt EndGInt MPropGrup@MEncoInt declStrnmOpponentWins As IntegerflagInt EndGInt MPropGrup<MEncoInt declStrnmCardBack As Card flagInt EndGInt MPDefGrup0MnameStrnMenuBar PValStrn 2044872703 EndGInt MPDefGrup(MnameStrn MacProcID PValInt EndGInt MPDefGrup4MnameStrn BalloonHelp EncoInt PValStrnEndGInt MPDefGrup0MnameStrnMinimizeButton PValStrnTrueEndGInt MPDefGrup0MnameStrnMaximizeButton PValStrnTrueEndGInt MPDefGrup0MnameStrn LiveResize PValStrnFalse EndGInt MPDefGrup0MnameStrn Resizeable PValStrnFalse EndGInt MPDefGrup,MnameStrn CloseButton PValStrnTrueEndGInt MPDefGrup0MnameStrnMenuBarVisible PValStrnTrueEndGInt MPDefGrup0MnameStrn FullScreen PValStrnFalse EndGInt MPDefGrup(MnameStrnVisible PValStrnTrueEndGInt MPDefGrup@MnameStrnTitle EncoInt PValStrnLet's Play War! EndGInt MPDefGrup$MnameStrnBackdropPValStrnEndGInt MPDefGrup(MnameStrn BackColor PValInt EndGInt MPDefGrup0MnameStrn HasBackColorPValStrnFalse EndGInt MPDefGrup0MnameStrn Composite PValStrnFalse EndGInt MPDefGrup$MnameStrnFrame PValInt EndGInt MPDefGrup(MnameStrn MaxHeight PValInt }EndGInt MPDefGrup$MnameStrnMaxWidthPValInt }EndGInt MPDefGrup(MnameStrn MinHeight PValInt @EndGInt MPDefGrup$MnameStrnMinWidthPValInt @EndGInt MPDefGrup$MnameStrnHeight PValInt $EndGInt MPDefGrup$MnameStrnWidth PValInt EndGInt MPDefGrup(MnameStrn Placement PValInt EndGInt MVwBhGrup lMVwPrGrup0MNameStrnNameVsblInt PrGpStrnID EndGInt MVwPrGrup8MNameStrn Interfaces VsblInt PrGpStrnID EndGInt MVwPrGrup4MNameStrnSuper VsblInt PrGpStrnID EndGInt MVwPrGrupLMNameStrn Placement VsblInt PrGpStrnPositionPValStrn0 EndGInt MVwPrGrupHMNameStrnWidth VsblInt PrGpStrnPositionPValStrn300 EndGInt MVwPrGrupHMNameStrnHeight VsblInt PrGpStrnPositionPValStrn300 EndGInt MVwPrGrupHMNameStrnMinWidthVsblInt PrGpStrnPositionPValStrn64 EndGInt MVwPrGrupLMNameStrn MinHeight VsblInt PrGpStrnPositionPValStrn64 EndGInt MVwPrGrupLMNameStrnMaxWidthVsblInt PrGpStrnPositionPValStrn32000 EndGInt MVwPrGrupPMNameStrn MaxHeight VsblInt PrGpStrnPositionPValStrn32000 EndGInt MVwPrGrupLMNameStrnFrame VsblInt PrGpStrn Appearance PValStrn0 EndGInt MVwPrGrupTMNameStrn Composite VsblInt PrGpStrn Appearance PValStrnFalse EndGInt MVwPrGrupTMNameStrn HasBackColorVsblInt PrGpStrn Appearance PValStrnFalse EndGInt MVwPrGrupTMNameStrn BackColor VsblInt PrGpStrn Appearance PValStrn&hFFFFFFEndGInt MVwPrGrup<MNameStrnBackdropVsblInt PrGpStrn Appearance EndGInt MVwPrGrupPMNameStrnTitle VsblInt PrGpStrn Appearance PValStrnUntitledEndGInt MVwPrGrupLMNameStrnVisible VsblInt PrGpStrn Appearance PValStrnTrueEndGInt MVwPrGrupTMNameStrn FullScreen VsblInt PrGpStrn Appearance PValStrnFalse EndGInt MVwPrGrupTMNameStrnMenuBarVisible VsblInt PrGpStrn Appearance PValStrnTrueEndGInt MVwPrGrupPMNameStrn CloseButton VsblInt PrGpStrn Appearance PValStrnTrueEndGInt MVwPrGrupTMNameStrn Resizeable VsblInt PrGpStrn Appearance PValStrnFalse EndGInt MVwPrGrupTMNameStrn LiveResize VsblInt PrGpStrn Appearance PValStrnFalse EndGInt MVwPrGrupXMNameStrnMaximizeButton VsblInt PrGpStrn Appearance PValStrnFalse EndGInt MVwPrGrupTMNameStrnMinimizeButton VsblInt PrGpStrn Appearance PValStrnTrueEndGInt MVwPrGrup@MNameStrn BalloonHelp VsblInt PrGpStrn Appearance EndGInt MVwPrGrupPMNameStrn MacProcID VsblInt PrGpStrn Appearance PValStrn0 EndGInt MVwPrGrup<MNameStrnMenuBar VsblInt PrGpStrn Appearance EndGInt MEndGInt MCBhvGrupMSuprStrnCanvas HInsGrupMnameStrnPaint CompStrnsorcGrupMEncoInt srclStrnSub Paint(g As Graphics)srclStrnif mOpponentCard = nil then srclStrn(// If there's no card to draw, then drawsrclStrn // the ghostsrclStrnBmManager.DrawGhostCard( g, me.Left, me.Top, RGB( 212, 212, 212 ) ) srclStrnelsesrclStrn// Draw our card, face up srclStrn.mOpponentCard.DrawFaceUp( g, me.Left, me.Top ) srclStrnend if srclStrnEnd Sub EndGInt MEndGInt MEndGInt MCBhvGrupMSuprStrnCanvas HInsGrupMnameStrnPaint CompStrnsorcGrupMEncoInt srclStrnSub Paint(g As Graphics)srclStrnif mPlayerCard = nil then srclStrn(// If there's no card to draw, then drawsrclStrn // the ghostsrclStrnBmManager.DrawGhostCard( g, me.Left, me.Top, RGB( 212, 212, 212 ) ) srclStrnelsesrclStrn// Draw our card, face up srclStrn,mPlayerCard.DrawFaceUp( g, me.Left, me.Top )srclStrnend if srclStrnEnd Sub EndGInt MEndGInt MEndGInt MCBhvGrupMSuprStrnCanvas HInsGrupMnameStrnPaint CompStrnsorcGrupMEncoInt srclStrnSub Paint(g As Graphics)srclStrn/// We are supposed to paint the deck. Well, if srclStrn3// there is more than one card left in the deck, we srclStrn4// want to draw a stack of cards. If there are onlysrclStrn6// a few cards left, we want to draw just a few cards. srclStrnsrclStrn-dim numCardsLeft as Integer = UBound( mDeck ) srclStrnsrclStrn// Erase the old background srclStrn&g.ClearRect( 0, 0, g.Width, g.Height ) srclStrnsrclStrndim x as Integer = 0srclStrndim y as Integer = 0srclStrnsrclStrnif numCardsLeft > 6 thensrclStrn// Draw a whole stack srclStrnfor i as Integer = 0 to 5 srclStrn4mCardBack.DrawFaceDown( g, me.Left + x, me.Top + y )srclStrnsrclStrn x = x + 2 srclStrn y = y + 1 srclStrnnext i srclStrnelsesrclStrn,// Draw the proper number of cards, slightlysrclStrn// offset from one another srclStrnfor each c as Card in mDeck srclStrn,c.DrawFaceDown( g, me.Left + x, me.Top + y )srclStrnsrclStrn x = x + 2 srclStrn y = y + 1 srclStrnnext c srclStrnend if srclStrnEnd Sub EndGInt MEndGInt MHInsGrupNnameStrn MouseDown CompStrnsorcGrup@NEncoInt srclStrn9Function MouseDown(X As Integer, Y As Integer) As Boolean srclStrn.// When the user clicks on the deck, it's time srclStrn// to deal two new cards. srclStrnif UBound( mDeck ) >= 1 thensrclStrn$DealCards( mDeck.Pop, mDeck.Pop, 2 )srclStrnend if srclStrn End FunctionEndGInt NEndGInt NEndGInt MCBhvGrupNSuprStrn StaticText EndGInt NCBhvGrupNSuprStrn StaticText EndGInt NCBhvGrupNSuprStrn StaticText EndGInt NCtrlGrup4NcclsStrnCanvas nameStrnCanvas PDefGrup8NnameStrn InitialParent EncoInt PValStrnEndGInt NPDefGrup0NnameStrnEraseBackground PValStrnTrueEndGInt NPDefGrup(NnameStrn AcceptTabs PValStrnEndGInt NPDefGrup(N nameStrn AcceptFocus PValStrnEndGInt N PDefGrup$N nameStrnBackdropPValStrnEndGInt N PDefGrup,N nameStrn UseFocusRingPValStrnTrueEndGInt N PDefGrup(N nameStrnEnabled PValStrnTrueEndGInt N PDefGrup0N nameStrnAutoDeactivate PValStrnTrueEndGInt N PDefGrup0NnameStrnHelpTag EncoInt PValStrnEndGInt NPDefGrup(NnameStrnVisible PValStrnTrueEndGInt NPDefGrup,NnameStrn TabPanelIndex PValInt EndGInt NPDefGrup(NnameStrn LockBottom PValStrnEndGInt NPDefGrup(NnameStrn LockRight PValStrnEndGInt NPDefGrup$NnameStrnLockTop PValStrnEndGInt NPDefGrup$NnameStrnLockLeftPValStrnEndGInt NPDefGrup$NnameStrnHeight PValInt iEndGInt NPDefGrup$NnameStrnWidth PValInt NEndGInt NPDefGrup NnameStrnTop PValInt EndGInt NPDefGrup NnameStrnLeftPValInt EndGInt NPDefGrup8NnameStrn ControlOrderEncoInt PValStrn0 EndGInt NPDefGrup8NnameStrnSuper EncoInt PValStrnCanvas EndGInt NPDefGrup$NnameStrnIndex PValInt EndGInt NPDefGrup<NnameStrnNameEncoInt PValStrnOpponentCanvas EndGInt NCBixInt EndGInt NCtrlGrup0NcclsStrnCanvas nameStrnCanvas PDefGrup8NnameStrn InitialParent EncoInt PValStrnEndGInt NPDefGrup0NnameStrnEraseBackground PValStrnTrueEndGInt NPDefGrup(N nameStrn AcceptTabs PValStrnEndGInt N PDefGrup(N!nameStrn AcceptFocus PValStrnEndGInt N!PDefGrup$N"nameStrnBackdropPValStrnEndGInt N"PDefGrup,N#nameStrn UseFocusRingPValStrnTrueEndGInt N#PDefGrup(N$nameStrnEnabled PValStrnTrueEndGInt N$PDefGrup0N%nameStrnAutoDeactivate PValStrnTrueEndGInt N%PDefGrup0N&nameStrnHelpTag EncoInt PValStrnEndGInt N&PDefGrup(N'nameStrnVisible PValStrnTrueEndGInt N'PDefGrup,N(nameStrn TabPanelIndex PValInt EndGInt N(PDefGrup(N)nameStrn LockBottom PValStrnEndGInt N)PDefGrup(N*nameStrn LockRight PValStrnEndGInt N*PDefGrup$N+nameStrnLockTop PValStrnEndGInt N+PDefGrup$N,nameStrnLockLeftPValStrnEndGInt N,PDefGrup$N-nameStrnHeight PValInt iEndGInt N-PDefGrup$N.nameStrnWidth PValInt NEndGInt N.PDefGrup N/nameStrnTop PValInt EndGInt N/PDefGrup N0nameStrnLeftPValInt EndGInt N0PDefGrup8N1nameStrn ControlOrderEncoInt PValStrn1 EndGInt N1PDefGrup8N2nameStrnSuper EncoInt PValStrnCanvas EndGInt N2PDefGrup$N3nameStrnIndex PValInt EndGInt N3PDefGrup8N4nameStrnNameEncoInt PValStrn PlayerCanvasEndGInt N4CBixInt EndGInt NCtrlGrup0N5cclsStrnCanvas nameStrnCanvas PDefGrup8N6nameStrn InitialParent EncoInt PValStrnEndGInt N6PDefGrup0N7nameStrnEraseBackground PValStrnTrueEndGInt N7PDefGrup(N8nameStrn AcceptTabs PValStrnEndGInt N8PDefGrup(N9nameStrn AcceptFocus PValStrnEndGInt N9PDefGrup$N:nameStrnBackdropPValStrnEndGInt N:PDefGrup,N;nameStrn UseFocusRingPValStrnTrueEndGInt N;PDefGrup(NnameStrnHelpTag EncoInt PValStrnEndGInt N>PDefGrup(N?nameStrnVisible PValStrnTrueEndGInt N?PDefGrup,N@nameStrn TabPanelIndex PValInt EndGInt N@PDefGrup(NAnameStrn LockBottom PValStrnEndGInt NAPDefGrup(NBnameStrn LockRight PValStrnEndGInt NBPDefGrup$NCnameStrnLockTop PValStrnEndGInt NCPDefGrup$NDnameStrnLockLeftPValStrnEndGInt NDPDefGrup$NEnameStrnHeight PValInt oEndGInt NEPDefGrup$NFnameStrnWidth PValInt OEndGInt NFPDefGrup NGnameStrnTop PValInt ZEndGInt NGPDefGrup NHnameStrnLeftPValInt EndGInt NHPDefGrup8NInameStrn ControlOrderEncoInt PValStrn2 EndGInt NIPDefGrup8NJnameStrnSuper EncoInt PValStrnCanvas EndGInt NJPDefGrup$NKnameStrnIndex PValInt EndGInt NKPDefGrup8NLnameStrnNameEncoInt PValStrn DeckCanvas EndGInt NLCBixInt EndGInt N5CtrlGrupNMcclsStrn StaticText nameStrn StaticText PDefGrup8NNnameStrn InitialParent EncoInt PValStrnEndGInt NNPDefGrup4NOnameStrn DataField EncoInt PValStrnEndGInt NOPDefGrup4NPnameStrn DataSource EncoInt PValStrnEndGInt NPPDefGrup(NQnameStrn Underline PValStrnEndGInt NQPDefGrup$NRnameStrnItalic PValStrnEndGInt NRPDefGrup NSnameStrnBoldPValStrnEndGInt NSPDefGrup$NTnameStrnTextSizePValInt EndGInt NTPDefGrup8NUnameStrnTextFontEncoInt PValStrnSystem EndGInt NUPDefGrup0NVnameStrnAutoDeactivate PValStrnTrueEndGInt NVPDefGrup0NWnameStrnHelpTag EncoInt PValStrnEndGInt NWPDefGrup(NXnameStrnVisible PValStrnTrueEndGInt NXPDefGrup(NYnameStrnEnabled PValStrnTrueEndGInt NYPDefGrup(NZnameStrn Multiline PValStrnEndGInt NZPDefGrup(N[nameStrn TextColor PValInt EndGInt N[PDefGrup(N\nameStrn TextAlign PValInt EndGInt N\PDefGrup4N]nameStrnTextEncoInt PValStrn0 cards EndGInt N]PDefGrup,N^nameStrn TabPanelIndex PValInt EndGInt N^PDefGrup(N_nameStrn LockBottom PValStrnEndGInt N_PDefGrup(N`nameStrn LockRight PValStrnEndGInt N`PDefGrup$NanameStrnLockTop PValStrnEndGInt NaPDefGrup$NbnameStrnLockLeftPValStrnEndGInt NbPDefGrup$NcnameStrnHeight PValInt EndGInt NcPDefGrup$NdnameStrnWidth PValInt OEndGInt NdPDefGrup NenameStrnTop PValInt EndGInt NePDefGrup NfnameStrnLeftPValInt EndGInt NfPDefGrup8NgnameStrn ControlOrderEncoInt PValStrn3 EndGInt NgPDefGrup<NhnameStrnSuper EncoInt PValStrn StaticText EndGInt NhPDefGrup$NinameStrnIndex PValInt EndGInt NiPDefGrup<NjnameStrnNameEncoInt PValStrn OpponentScore EndGInt NjCBixInt EndGInt NMCtrlGrupNkcclsStrn StaticText nameStrn StaticText PDefGrup8NlnameStrn InitialParent EncoInt PValStrnEndGInt NlPDefGrup4NmnameStrn DataField EncoInt PValStrnEndGInt NmPDefGrup4NnnameStrn DataSource EncoInt PValStrnEndGInt NnPDefGrup(NonameStrn Underline PValStrnEndGInt NoPDefGrup$NpnameStrnItalic PValStrnEndGInt NpPDefGrup NqnameStrnBoldPValStrnEndGInt NqPDefGrup$NrnameStrnTextSizePValInt EndGInt NrPDefGrup8NsnameStrnTextFontEncoInt PValStrnSystem EndGInt NsPDefGrup0NtnameStrnAutoDeactivate PValStrnTrueEndGInt NtPDefGrup0NunameStrnHelpTag EncoInt PValStrnEndGInt NuPDefGrup(NvnameStrnVisible PValStrnTrueEndGInt NvPDefGrup(NwnameStrnEnabled PValStrnTrueEndGInt NwPDefGrup(NxnameStrn Multiline PValStrnEndGInt NxPDefGrup(NynameStrn TextColor PValInt EndGInt NyPDefGrup(NznameStrn TextAlign PValInt EndGInt NzPDefGrup4N{nameStrnTextEncoInt PValStrn0 cards EndGInt N{PDefGrup,N|nameStrn TabPanelIndex PValInt EndGInt N|PDefGrup(N}nameStrn LockBottom PValStrnEndGInt N}PDefGrup(N~nameStrn LockRight PValStrnEndGInt N~PDefGrup$NnameStrnLockTop PValStrnEndGInt NPDefGrup$NnameStrnLockLeftPValStrnEndGInt NPDefGrup$NnameStrnHeight PValInt EndGInt NPDefGrup$NnameStrnWidth PValInt OEndGInt NPDefGrup NnameStrnTop PValInt EndGInt NPDefGrup NnameStrnLeftPValInt EndGInt NPDefGrup8NnameStrn ControlOrderEncoInt PValStrn4 EndGInt NPDefGrup<NnameStrnSuper EncoInt PValStrn StaticText EndGInt NPDefGrup$NnameStrnIndex PValInt EndGInt NPDefGrup8NnameStrnNameEncoInt PValStrn PlayerScore EndGInt NCBixInt EndGInt NkCtrlGrupNcclsStrn StaticText nameStrn StaticText PDefGrup8NnameStrn InitialParent EncoInt PValStrnEndGInt NPDefGrup4NnameStrn DataField EncoInt PValStrnEndGInt NPDefGrup4NnameStrn DataSource EncoInt PValStrnEndGInt NPDefGrup(NnameStrn Underline PValStrnEndGInt NPDefGrup$NnameStrnItalic PValStrnEndGInt NPDefGrup NnameStrnBoldPValStrnEndGInt NPDefGrup$NnameStrnTextSizePValInt EndGInt NPDefGrup8NnameStrnTextFontEncoInt PValStrnSystem EndGInt NPDefGrup0NnameStrnAutoDeactivate PValStrnTrueEndGInt NPDefGrup0NnameStrnHelpTag EncoInt PValStrnEndGInt NPDefGrup(NnameStrnVisible PValStrnTrueEndGInt NPDefGrup(NnameStrnEnabled PValStrnTrueEndGInt NPDefGrup(NnameStrn Multiline PValStrnEndGInt NPDefGrup(NnameStrn TextColor PValInt EndGInt NPDefGrup(NnameStrn TextAlign PValInt EndGInt NPDefGrup<NnameStrnTextEncoInt PValStrnClick the deck EndGInt NPDefGrup,NnameStrn TabPanelIndex PValInt EndGInt NPDefGrup(NnameStrn LockBottom PValStrnEndGInt NPDefGrup(NnameStrn LockRight PValStrnEndGInt NPDefGrup$NnameStrnLockTop PValStrnEndGInt NPDefGrup$NnameStrnLockLeftPValStrnEndGInt NPDefGrup$NnameStrnHeight PValInt EndGInt NPDefGrup$NnameStrnWidth PValInt NEndGInt NPDefGrup NnameStrnTop PValInt EndGInt NPDefGrup NnameStrnLeftPValInt EndGInt NPDefGrup8NnameStrn ControlOrderEncoInt PValStrn5 EndGInt NPDefGrup<NnameStrnSuper EncoInt PValStrn StaticText EndGInt NPDefGrup$NnameStrnIndex PValInt EndGInt NPDefGrup4NnameStrnNameEncoInt PValStrnWhoWon EndGInt NCBixInt EndGInt NPadnPadn************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************BlokpVew;wO(NameStrnExampleFeaturesWindow ContInt "wpaswStrnbClsInt SuprStrnWindow bNtrInt CompStrnHInsGrupNnameStrnOpenCompStrnsorcGrupNEncoInt srclStrn Sub Open() srclStrnmManager = new CardManager srclStrnsrclStrnTimer1.Enabled = true srclStrnEnd Sub EndGInt NEndGInt NHInsGrup XNnameStrnPaint CompStrnsorcGrup NEncoInt srclStrnSub Paint(g As Graphics)srclStrn(dim cards(-1) as Card = mManager.GetDecksrclStrnsrclStrndim x, y as Integer srclStrnsrclStrnx = 12 srclStrny = 12 srclStrnsrclStrn// Draw the card faces srclStrnfor each c as Card in cards srclStrn8if x + mManager.DefaultCardWidth + 3 > g.Width - 12 thensrclStrnx = 12 srclStrn&y = y + mManager.DefaultCardHeight + 3 srclStrnend if srclStrnsrclStrnc.DrawFaceUp( g, x, y ) srclStrnsrclStrn%x = x + mManager.DefaultCardWidth + 3 srclStrnnext c srclStrnsrclStrn// Draw the card backs srclStrn g.Width - 12 thensrclStrnx = 12 srclStrn&y = y + mManager.DefaultCardHeight + 3 srclStrnend if srclStrnsrclStrn=// If the card has an animation, draw the proper frame for it srclStrn%if c.MaxAnimationFrameNumber > 0 then srclStrn-static currentAnimationFrame( 11 ) as Integer srclStrnsrclStrn2dim whichBack as Integer = i - Card.kBackTypeFirst srclStrn=c.DrawFaceDown( g, x, y, currentAnimationFrame( whichBack ) ) srclStrnkcurrentAnimationFrame( whichBack ) = (currentAnimationFrame( whichBack ) + 1) mod c.MaxAnimationFrameNumber srclStrnelsesrclStrnc.DrawFaceDown( g, x, y ) srclStrnend if srclStrnsrclStrn%x = x + mManager.DefaultCardWidth + 3 srclStrnnext i srclStrnsrclStrn// Draw a ghost stack srclStrn8if x + mManager.DefaultCardWidth + 3 > g.Width - 12 thensrclStrnx = 12 srclStrn&y = y + mManager.DefaultCardHeight + 3 srclStrnend if srclStrnsrclStrn6mManager.DrawGhostCard( g, x, y, RGB(212, 212, 212 ) ) srclStrnsrclStrn%x = x + mManager.DefaultCardWidth + 3 srclStrnsrclStrn!// Display a highlight for a card srclStrnfor each c as Card in cards srclStrn8if x + mManager.DefaultCardWidth + 3 > g.Width - 12 thensrclStrnx = 12 srclStrn&y = y + mManager.DefaultCardHeight + 3 srclStrnend if srclStrnsrclStrnc.DrawCardHilite( g, x, y ) srclStrnsrclStrn%x = x + mManager.DefaultCardWidth + 3 srclStrnnext c srclStrnsrclStrn-// Draw the background in the shape of a card srclStrn8if x + mManager.DefaultCardWidth + 3 > g.Width - 12 thensrclStrnx = 12 srclStrn&y = y + mManager.DefaultCardHeight + 3 srclStrnend if srclStrnsrclStrn7mManager.DrawBackgroundCard( g, x, y, RGB(0, 200, 0 ) ) srclStrnsrclStrn%x = x + mManager.DefaultCardWidth + 3 srclStrnsrclStrn// Draw the Deck X srclStrn8if x + mManager.DefaultCardWidth + 3 > g.Width - 12 thensrclStrnx = 12 srclStrn&y = y + mManager.DefaultCardHeight + 3 srclStrnend if srclStrnsrclStrnmManager.DrawX( g, x, y ) srclStrnsrclStrn%x = x + mManager.DefaultCardWidth + 3 srclStrnsrclStrn// Draw the Deck Y srclStrn8if x + mManager.DefaultCardWidth + 3 > g.Width - 12 thensrclStrnx = 12 srclStrn&y = y + mManager.DefaultCardHeight + 3 srclStrnend if srclStrnsrclStrnmManager.DrawY( g, x, y ) srclStrnsrclStrn%x = x + mManager.DefaultCardWidth + 3 srclStrnEnd Sub EndGInt NEndGInt NHInsGrupNnameStrnResized CompStrnsorcGrupXNEncoInt srclStrn Sub Resized() srclStrn me.Refresh srclStrnEnd Sub EndGInt NEndGInt NPropGrup@NEncoInt declStrnmManager As CardManager flagInt EndGInt NPDefGrup$NnameStrnMenuBar PValStrnEndGInt NPDefGrup(NnameStrn MacProcID PValInt EndGInt NPDefGrup4NnameStrn BalloonHelp EncoInt PValStrnEndGInt NPDefGrup0NnameStrnMinimizeButton PValStrnTrueEndGInt NPDefGrup4NnameStrnMaximizeButton PValStrnFalse EndGInt NPDefGrup0NnameStrn LiveResize PValStrnFalse EndGInt NPDefGrup,NnameStrn Resizeable PValStrnTrueEndGInt NPDefGrup,NnameStrn CloseButton PValStrnTrueEndGInt NPDefGrup0NnameStrnMenuBarVisible PValStrnTrueEndGInt NPDefGrup0NnameStrn FullScreen PValStrnFalse EndGInt NPDefGrup(NnameStrnVisible PValStrnTrueEndGInt NPDefGrup8NnameStrnTitle EncoInt PValStrnUntitledEndGInt NPDefGrup$NnameStrnBackdropPValStrnEndGInt NPDefGrup(NnameStrn BackColor PValInt EndGInt NPDefGrup0NnameStrn HasBackColorPValStrnFalse EndGInt NPDefGrup0NnameStrn Composite PValStrnFalse EndGInt NPDefGrup$NnameStrnFrame PValInt EndGInt NPDefGrup(NnameStrn MaxHeight PValInt }EndGInt NPDefGrup$NnameStrnMaxWidthPValInt }EndGInt NPDefGrup(NnameStrn MinHeight PValInt @EndGInt NPDefGrup$NnameStrnMinWidthPValInt @EndGInt NPDefGrup$NnameStrnHeight PValInt EndGInt NPDefGrup$NnameStrnWidth PValInt EndGInt NPDefGrup(NnameStrn Placement PValInt EndGInt NVwBhGrup lNVwPrGrup0NNameStrnNameVsblInt PrGpStrnID EndGInt NVwPrGrup8NNameStrn Interfaces VsblInt PrGpStrnID EndGInt NVwPrGrup4NNameStrnSuper VsblInt PrGpStrnID EndGInt NVwPrGrupLNNameStrn Placement VsblInt PrGpStrnPositionPValStrn0 EndGInt NVwPrGrupHNNameStrnWidth VsblInt PrGpStrnPositionPValStrn300 EndGInt NVwPrGrupHNNameStrnHeight VsblInt PrGpStrnPositionPValStrn300 EndGInt NVwPrGrupHNNameStrnMinWidthVsblInt PrGpStrnPositionPValStrn64 EndGInt NVwPrGrupLNNameStrn MinHeight VsblInt PrGpStrnPositionPValStrn64 EndGInt NVwPrGrupLNNameStrnMaxWidthVsblInt PrGpStrnPositionPValStrn32000 EndGInt NVwPrGrupPNNameStrn MaxHeight VsblInt PrGpStrnPositionPValStrn32000 EndGInt NVwPrGrupLNNameStrnFrame VsblInt PrGpStrn Appearance PValStrn0 EndGInt NVwPrGrupTNNameStrn Composite VsblInt PrGpStrn Appearance PValStrnFalse EndGInt NVwPrGrupTNNameStrn HasBackColorVsblInt PrGpStrn Appearance PValStrnFalse EndGInt NVwPrGrupTNNameStrn BackColor VsblInt PrGpStrn Appearance PValStrn&hFFFFFFEndGInt NVwPrGrup<NNameStrnBackdropVsblInt PrGpStrn Appearance EndGInt NVwPrGrupPNNameStrnTitle VsblInt PrGpStrn Appearance PValStrnUntitledEndGInt NVwPrGrupLNNameStrnVisible VsblInt PrGpStrn Appearance PValStrnTrueEndGInt NVwPrGrupTNNameStrn FullScreen VsblInt PrGpStrn Appearance PValStrnFalse EndGInt NVwPrGrupTNNameStrnMenuBarVisible VsblInt PrGpStrn Appearance PValStrnTrueEndGInt NVwPrGrupPNNameStrn CloseButton VsblInt PrGpStrn Appearance PValStrnTrueEndGInt NVwPrGrupTNNameStrn Resizeable VsblInt PrGpStrn Appearance PValStrnFalse EndGInt NVwPrGrupTNNameStrn LiveResize VsblInt PrGpStrn Appearance PValStrnFalse EndGInt NVwPrGrupXNNameStrnMaximizeButton VsblInt PrGpStrn Appearance PValStrnFalse EndGInt NVwPrGrupTNNameStrnMinimizeButton VsblInt PrGpStrn Appearance PValStrnTrueEndGInt NVwPrGrup@NNameStrn BalloonHelp VsblInt PrGpStrn Appearance EndGInt NVwPrGrupPNNameStrn MacProcID VsblInt PrGpStrn Appearance PValStrn0 EndGInt NVwPrGrup<NNameStrnMenuBar VsblInt PrGpStrn Appearance EndGInt NEndGInt NCBhvGrupNSuprStrnTimer HInsGrupNnameStrnAction CompStrnsorcGrup`NEncoInt srclStrn Sub Action()srclStrnself.Refresh( false ) srclStrnEnd Sub EndGInt NEndGInt NEndGInt NCtrlGrupNcclsStrnTimer nameStrnTimer PDefGrup,NnameStrn TabPanelIndex PValInt EndGInt NPDefGrup8NnameStrn InitialParent EncoInt PValStrnEndGInt NPDefGrup$NnameStrnPeriod PValInt EndGInt NPDefGrup NnameStrnModePValInt EndGInt NPDefGrup NnameStrnTop PValInt EndGInt NPDefGrup NnameStrnLeftPValInt EndGInt NPDefGrup8NnameStrn ControlOrderEncoInt PValStrn0 EndGInt NPDefGrup8NnameStrnSuper EncoInt PValStrnTimer EndGInt NPDefGrup$NnameStrnIndex PValInt EndGInt NPDefGrup4NnameStrnNameEncoInt PValStrnTimer1 EndGInt NCBixInt EndGInt NPadnPadnl************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************BlokpMnuyGNameStrnMenuBar1ContInt "wpaswStrnMItmGrupNspmuInt nameStrnFileMenutextStrn&File indxInt scutStrnmaEnInt EncoInt flagInt SuprStrnMenuItemMItmGrupNspmuInt nameStrn FileNewGame textStrn &New Game indxInt scutStrnmaEnInt EncoInt flagInt SuprStrnMenuItemEndGInt NMItmGrupNspmuInt nameStrn UntitledItemtextStrn- indxInt scutStrnmaEnInt EncoInt flagInt SuprStrnMenuItemEndGInt NMItmGrupNspmuInt nameStrnFileLibraryDemonstrationtextStrn&Library Demonstration indxInt scutStrnmaEnInt EncoInt flagInt SuprStrnMenuItemEndGInt NMItmGrupNspmuInt nameStrn UntitledItemtextStrn- indxInt scutStrnmaEnInt EncoInt flagInt SuprStrnMenuItemEndGInt NMItmGrupNspmuInt nameStrnFileQuittextStrn#App.kFileQuit indxInt scutStrn#App.kFileQuitShortcut MiSKStrn#App.kFileQuitShortcut maEnInt EncoInt flagInt SuprStrn QuitMenuItemEndGInt NEndGInt NPadnPadnx************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************BlokpObj*NameStrnApp ContInt "wpaswStrnbClsInt SuprStrn Application bNtrInt bApOInt CompStrnPDefGrup$NnameStrnMenuBar PValInt yGEndGInt NVwBhGrupNEndGInt NCnstGrupNEncoInt nameStrnkFileQuitShortcut typeInt defnStrnflagInt CInsGrup0NpltfInt langInt defnStrnCmd+Q EndGInt NEndGInt NCnstGrupNEncoInt nameStrn kFileQuit typeInt defnStrnQuitflagInt CInsGrup0NpltfInt langInt defnStrnE&xit EndGInt NCInsGrup0NpltfInt langInt defnStrnE&xit EndGInt NEndGInt NCnstGrupNEncoInt nameStrn kEditClear typeInt defnStrnClear flagInt CInsGrup0NpltfInt langInt defnStrn&Delete EndGInt NCInsGrup0NpltfInt langInt defnStrn&Delete EndGInt NEndGInt NPadnPadnd****************************************************************************************************BlokpObjn*_<.voK6E9Aej+Z.dgL=ѽcZ-(,+-;nzL'B+?!p=X{հmpţ-LړƳm@GS=yl-QSE jvߡaxmpţ-j($ WreďQjyI;IBX ^2r{#N*e*g=;_/1Uí:E drJLJ*+@ ^2r'&&;܊7H~eXDKp*gc*E-[ Ba+ 7DŽ4f:g+ eI(.6oa`4mZ)TxO3HSTwbT}؄j.@-3QjR7غompţ-y~a0<>Ɇ+}DPk#qU95O8LuX4I!(!zuCW Cb0_'1o)l{6voK6]1Dշ3ޥ,e![Y`= ׬x|?H1o)UwBoRvoK6lX4DiD:2SK>2X~ qQCId|tB61plr[Fb0PߘwFUzqizyq4fշ3ޥ,e![Y`= נh51o)q[1bvoK60sOշ3ޥ,e![o9nE`QCId)x41plr ǷXj/~aQr諺TK=s N:2SK>2X~TɯPϔU@[1ucilܼŻ4>01plr$eTJz i 2`KuBlokpObjIg$NameStrnCardContInt 7paswStrnbClsInt bNtrInt CompStrnMethGrupOnameStrn Constructor CompStrnsorcGrupO EncoInt srclStrnISub Constructor(manager as CardManager, suit as Integer, rank as Integer) srclStrnme.Suit = suit srclStrnme.Rank = rank srclStrnme.mManager = manager srclStrnsrclStrnme.Back = kBackTypeFirstsrclStrnEnd Sub EndGInt O EncoInt AlasStrnflagInt parmStrn8manager as CardManager, suit as Integer, rank as IntegerrsltStrnEndGInt OMethGrupxO nameStrn Constructor CompStrnsorcGrupO EncoInt srclStrn'Sub Constructor(manager as CardManager) srclStrn-// Do nothing, allows a blank card to be made srclStrnmManager = manager srclStrnsrclStrnme.Back = kBackTypeFirstsrclStrnEnd Sub EndGInt O EncoInt AlasStrnflagInt parmStrnmanager as CardManager rsltStrnEndGInt O MethGrupO nameStrn DrawFaceUp CompStrnsorcGrupHO EncoInt srclStrnaSub DrawFaceUp(g as Graphics, x as Integer, y as Integer, cx as Integer = -1, cy as Integer = -1) srclStrnConst kDrawModeFaceUp = 0 srclStrnsrclStrnif cx = -1 and cy = -1 then srclStrnEDraw( Hacks.HDCFromGraphics( g ), x, y, CardNumber, kDrawModeFaceUp ) srclStrnelsesrclStrn.if cx = -1 then cx = mManager.DefaultCardWidth srclStrn/if cy = -1 then cy = mManager.DefaultCardHeight srclStrnsrclStrnODrawEx( Hacks.HDCFromGraphics( g ), x, y, cx, cy, CardNumber, kDrawModeFaceUp ) srclStrnend if srclStrnEnd Sub EndGInt O EncoInt AlasStrnflagInt parmStrnQg as Graphics, x as Integer, y as Integer, cx as Integer = -1, cy as Integer = -1 rsltStrnEndGInt O MethGrupOnameStrnDrawCompStrnsorcGrupOEncoInt srclStrnjSub Draw(hdc as Integer, x as Integer, y as Integer, cd as Integer, md as Integer, bk as Color = &c000000) srclStrnTSoft Declare Sub cdtDraw Lib "Cards" ( hdc as Integer, x as Integer, y as Integer, _srclStrn.cd as Integer, md as Integer, bkgnd as Color ) srclStrnsrclStrn8if System.IsFunctionAvailable( "cdtDraw", "Cards" ) thensrclStrn cdtDraw( hdc, x, y, cd, md, bk )srclStrnend if srclStrnEnd Sub EndGInt OEncoInt AlasStrnflagInt parmStrn`hdc as Integer, x as Integer, y as Integer, cd as Integer, md as Integer, bk as Color = &c000000rsltStrnEndGInt OMethGrupOnameStrn CardNumber CompStrnsorcGrup|OEncoInt srclStrn Function CardNumber() As IntegersrclStrnreturn (mRank * 4) + Suit srclStrn End FunctionEndGInt OEncoInt AlasStrnflagInt parmStrnrsltStrnInteger EndGInt OMethGrupOnameStrn DrawFaceDownCompStrnsorcGrupOEncoInt srclStrnzSub DrawFaceDown(g as Graphics, x as Integer, y as Integer, frame as Integer = -1, cx as Integer = -1, cy as Integer = -1) srclStrnConst kDrawModeFaceDown = 1 srclStrnsrclStrnif cx = -1 and cy = -1 then srclStrnADraw( Hacks.HDCFromGraphics( g ), x, y, Back, kDrawModeFaceDown ) srclStrnsrclStrnif frame <> -1 then srclStrn8Animate( Hacks.HDCFromGraphics( g ), x, y, Back, frame )srclStrnend if srclStrnelsesrclStrn.if cx = -1 then cx = mManager.DefaultCardWidth srclStrn/if cy = -1 then cy = mManager.DefaultCardHeight srclStrnsrclStrnKDrawEx( Hacks.HDCFromGraphics( g ), x, y, cx, cy, Back, kDrawModeFaceDown ) srclStrnend if srclStrnEnd Sub EndGInt OEncoInt AlasStrnflagInt parmStrnhg as Graphics, x as Integer, y as Integer, frame as Integer = -1, cx as Integer = -1, cy as Integer = -1rsltStrnEndGInt OMethGrup(OnameStrnDrawCardHilite CompStrnsorcGrupTOEncoInt srclStrneSub DrawCardHilite(g as Graphics, x as Integer, y as Integer, cx as Integer = -1, cy as Integer = -1) srclStrnConst kDrawModeHilite = 2 srclStrnsrclStrnif cx = -1 and cy = -1 then srclStrnODraw( Hacks.HDCFromGraphics( g ), x, y, CardNumber, kDrawModeHilite, &cFFFFFF ) srclStrnelsesrclStrn.if cx = -1 then cx = mManager.DefaultCardWidth srclStrn/if cy = -1 then cy = mManager.DefaultCardHeight srclStrnsrclStrnODrawEx( Hacks.HDCFromGraphics( g ), x, y, cx, cy, CardNumber, kDrawModeHilite ) srclStrnend if srclStrnEnd Sub EndGInt OEncoInt AlasStrnflagInt parmStrnQg as Graphics, x as Integer, y as Integer, cx as Integer = -1, cy as Integer = -1 rsltStrnEndGInt OMethGrupOnameStrnDrawEx CompStrnsorcGrupOEncoInt srclStrnSub DrawEx(hdc as Integer, x as Integer, y as Integer, cx as Integer, cy as Integer, cd as Integer, md as Integer, bk as Color = &c000000) srclStrnWSoft Declare Sub cdtDrawExt Lib "Cards" ( hdc as Integer, x as Integer, y as Integer, _ srclStrnLcx as Integer, cy as Integer, cd as Integer, md as Integer, bkgnd as Color )srclStrnsrclStrn;if System.IsFunctionAvailable( "cdtDrawExt", "Cards" ) then srclStrn+cdtDrawExt( hdc, x, y, cx, cy, cd, md, bk ) srclStrnend if srclStrnEnd Sub EndGInt OEncoInt AlasStrnflagInt parmStrn~hdc as Integer, x as Integer, y as Integer, cx as Integer, cy as Integer, cd as Integer, md as Integer, bk as Color = &c000000 rsltStrnEndGInt OMethGruphOnameStrnAnimate CompStrnsorcGrupOEncoInt srclStrnXSub Animate(hdc as Integer, x as Integer, y as Integer, cd as Integer, frame as Integer)srclStrnwSoft Declare Sub cdtAnimate Lib "Cards" ( hdc as Integer, cd as Integer, x as Integer, y as Integer, frame as Integer ) srclStrnsrclStrn;if System.IsFunctionAvailable( "cdtAnimate", "Cards" ) then srclStrn"cdtAnimate( hdc, cd, x, y, frame ) srclStrnend if srclStrnEnd Sub EndGInt OEncoInt AlasStrnflagInt parmStrnKhdc as Integer, x as Integer, y as Integer, cd as Integer, frame as Integer rsltStrnEndGInt OMethGrupOnameStrnMaxAnimationFrameNumber CompStrnsorcGrupXOEncoInt srclStrn-Function MaxAnimationFrameNumber() As Integer srclStrnselect case BacksrclStrnAcase kBackTypeFirst + 2, kBackTypeFirst + 10, kBackTypeFirst + 11 srclStrnreturn 4srclStrncase kBackTypeFirst + 9 srclStrnreturn 2srclStrnelsesrclStrnreturn 0srclStrn end select srclStrn End FunctionEndGInt OEncoInt AlasStrnflagInt parmStrnrsltStrnInteger EndGInt OPropGrup8OEncoInt declStrnSuit As Integer flagInt EndGInt OPropGrup8OEncoInt declStrnBack As Integer flagInt EndGInt OPropGrup@OEncoInt declStrnmManager As CardManager flagInt !EndGInt OPropGrup@OEncoInt declStrnAceIsLowest As Boolean flagInt EndGInt OPropGrupTO EncoInt declStrnRank As Integer flagInt sorcGrup8O!EncoInt srclStrnRank As Integer srclStrnEndGInt O!CPrsGrupO"EncoInt srclStrnSet srclStrnif AceIsLowest then srclStrn mRank = value srclStrnelsesrclStrn/if value = 13 then mRank = 0 else mRank = value srclStrnend if srclStrnEnd Set EndGInt O"CPrgGrupO#EncoInt srclStrnGet srclStrnif AceIsLowest then srclStrn return mRanksrclStrnelsesrclStrn-if mRank = 0 then return 13 else return mRank srclStrnend if srclStrnEnd Get EndGInt O#EndGInt O PropGrup8O$EncoInt declStrnmRank As IntegerflagInt !EndGInt O$VwBhGrupPO%VwPrGrup0O&NameStrnNameVsblInt PrGpStrnID EndGInt O&VwPrGrupLO'NameStrnIndex VsblInt PrGpStrnID PValStrn -2147483648 EndGInt O'VwPrGrup4O(NameStrnSuper VsblInt PrGpStrnID EndGInt O(VwPrGrupDO)NameStrnLeftVsblInt PrGpStrnPositionPValStrn0 EndGInt O)VwPrGrupDO*NameStrnTop VsblInt PrGpStrnPositionPValStrn0 EndGInt O*VwPrGrup8O+NameStrnSuitPrGpStrnBehaviorPValStrn0 EndGInt O+VwPrGrup8O,NameStrnRankPrGpStrnBehaviorPValStrn0 EndGInt O,VwPrGrup8O-NameStrnBackPrGpStrnBehaviorPValStrn0 EndGInt O-VwPrGrup@O.NameStrn AceIsLowest PrGpStrnBehaviorPValStrn0 EndGInt O.VwPrGrup<O/NameStrnmRank PrGpStrnBehaviorPValStrn0 EndGInt O/EndGInt O%CnstGrupTO0EncoInt nameStrn kBackTypeLast typeInt defnStrn65 flagInt EndGInt O0CnstGrupTO1EncoInt nameStrnkBackTypeFirst typeInt defnStrn54 flagInt EndGInt O1PadnPadn************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************BlokpObj NameStrn CardManager ContInt 7paswStrnbClsInt bNtrInt CompStrnMethGrupO2nameStrn Constructor CompStrnsorcGrupDO3EncoInt srclStrnSub Constructor() srclStrnQSoft Declare Sub cdtInit Lib "Cards" ( ByRef cx as Integer, ByRef cy as Integer ) srclStrnsrclStrn8if System.IsFunctionAvailable( "cdtInit", "Cards" ) thensrclStrn.cdtInit( DefaultCardWidth, DefaultCardHeight ) srclStrnend if srclStrnEnd Sub EndGInt O3EncoInt AlasStrnflagInt parmStrnrsltStrnEndGInt O2MethGruphO4nameStrn Destructor CompStrnsorcGrupO5EncoInt srclStrnSub Destructor()srclStrn'Soft Declare Sub cdtTerm Lib "Cards" () srclStrnsrclStrn8if System.IsFunctionAvailable( "cdtTerm", "Cards" ) thensrclStrncdtTerm srclStrnend if srclStrnEnd Sub EndGInt O5EncoInt AlasStrnflagInt parmStrnrsltStrnEndGInt O4MethGrupO6nameStrnGetDeck CompStrnsorcGrupPO7EncoInt srclStrnFunction GetDeck() As Card()srclStrn)// Returns an entire deck of card objects srclStrn'// with their suit and ranks filled out srclStrnif UBound( mDeck ) < 0 then srclStrn// Do the suits srclStrnfor suit as Integer = 0 to 3srclStrn// Do the ranks srclStrnfor rank as Integer = 0 to 12 srclStrn#dim c as new Card( me, suit, rank ) srclStrnc.AceIsLowest = AceIsLowest srclStrnmDeck.Append( c ) srclStrn next rank srclStrn next suit srclStrnend if srclStrnsrclStrn return mDecksrclStrn End FunctionEndGInt O7EncoInt AlasStrnflagInt parmStrnrsltStrnCard() EndGInt O6MethGrupO8nameStrn DrawGhostCard CompStrnsorcGrup0O9EncoInt srclStrnpSub DrawGhostCard(g as Graphics, x as Integer, y as Integer, c as Color, cx as Integer = -1, cy as Integer = -1)srclStrnConst kDrawModeGhost = 5srclStrnsrclStrnif cx = -1 and cy = -1 then srclStrn>Draw( Hacks.HDCFromGraphics( g ), x, y, 0, kDrawModeGhost, c ) srclStrnelsesrclStrn%if cx = -1 then cx = DefaultCardWidth srclStrn&if cy = -1 then cy = DefaultCardHeight srclStrnsrclStrnHDrawEx( Hacks.HDCFromGraphics( g ), x, y, cx, cy, 0, kDrawModeGhost, c )srclStrnend if srclStrnEnd Sub EndGInt O9EncoInt AlasStrnflagInt parmStrn]g as Graphics, x as Integer, y as Integer, c as Color, cx as Integer = -1, cy as Integer = -1 rsltStrnEndGInt O8MethGrupO:nameStrnDrawCompStrnsorcGrupO;EncoInt srclStrnjSub Draw(hdc as Integer, x as Integer, y as Integer, cd as Integer, md as Integer, bk as Color = &cFF0000) srclStrnTSoft Declare Sub cdtDraw Lib "Cards" ( hdc as Integer, x as Integer, y as Integer, _srclStrn.cd as Integer, md as Integer, bkgnd as Color ) srclStrnsrclStrn8if System.IsFunctionAvailable( "cdtDraw", "Cards" ) thensrclStrn cdtDraw( hdc, x, y, cd, md, bk )srclStrnend if srclStrnEnd Sub EndGInt O;EncoInt AlasStrnflagInt !parmStrn`hdc as Integer, x as Integer, y as Integer, cd as Integer, md as Integer, bk as Color = &cFF0000rsltStrnEndGInt O:MethGrup0OnameStrnDrawX CompStrnsorcGrup O?EncoInt srclStrn\Sub DrawX(g as Graphics, x as Integer, y as Integer, cx as Integer = -1, cy as Integer = -1)srclStrnConst kDrawModeX = 6srclStrnsrclStrnif cx = -1 and cy = -1 then srclStrn7Draw( Hacks.HDCFromGraphics( g ), x, y, 0, kDrawModeX ) srclStrnelsesrclStrn%if cx = -1 then cx = DefaultCardWidth srclStrn&if cy = -1 then cy = DefaultCardHeight srclStrnsrclStrnADrawEx( Hacks.HDCFromGraphics( g ), x, y, cx, cy, 0, kDrawModeX ) srclStrnend if srclStrnEnd Sub EndGInt O?EncoInt AlasStrnflagInt parmStrnQg as Graphics, x as Integer, y as Integer, cx as Integer = -1, cy as Integer = -1 rsltStrnEndGInt O>MethGrupO@nameStrnDrawY CompStrnsorcGrup OAEncoInt srclStrn\Sub DrawY(g as Graphics, x as Integer, y as Integer, cx as Integer = -1, cy as Integer = -1)srclStrnConst kDrawModeY = 7srclStrnsrclStrnif cx = -1 and cy = -1 then srclStrn7Draw( Hacks.HDCFromGraphics( g ), x, y, 0, kDrawModeY ) srclStrnelsesrclStrn%if cx = -1 then cx = DefaultCardWidth srclStrn&if cy = -1 then cy = DefaultCardHeight srclStrnsrclStrnADrawEx( Hacks.HDCFromGraphics( g ), x, y, cx, cy, 0, kDrawModeY ) srclStrnend if srclStrnEnd Sub EndGInt OAEncoInt AlasStrnflagInt parmStrnQg as Graphics, x as Integer, y as Integer, cx as Integer = -1, cy as Integer = -1 rsltStrnEndGInt O@MethGrupOBnameStrnDrawEx CompStrnsorcGrupOCEncoInt srclStrnSub DrawEx(hdc as Integer, x as Integer, y as Integer, cx as Integer, cy as Integer, cd as Integer, md as Integer, bk as Color = &c000000) srclStrnWSoft Declare Sub cdtDrawExt Lib "Cards" ( hdc as Integer, x as Integer, y as Integer, _ srclStrnLcx as Integer, cy as Integer, cd as Integer, md as Integer, bkgnd as Color )srclStrnsrclStrn;if System.IsFunctionAvailable( "cdtDrawExt", "Cards" ) then srclStrn+cdtDrawExt( hdc, x, y, cx, cy, cd, md, bk ) srclStrnend if srclStrnEnd Sub EndGInt OCEncoInt AlasStrnflagInt !parmStrn~hdc as Integer, x as Integer, y as Integer, cx as Integer, cy as Integer, cd as Integer, md as Integer, bk as Color = &c000000 rsltStrnEndGInt OBPropGrupDODEncoInt declStrnDefaultCardWidth As Integer flagInt EndGInt ODPropGrupDOEEncoInt declStrnDefaultCardHeight As IntegerflagInt EndGInt OEPropGrup@OFEncoInt declStrnAceIsLowest As Boolean flagInt EndGInt OFPropGrup<OGEncoInt declStrnmDeck(-1) As Card flagInt EndGInt OGVwBhGrupOHVwPrGrup0OINameStrnNameVsblInt PrGpStrnID EndGInt OIVwPrGrupLOJNameStrnIndex VsblInt PrGpStrnID PValStrn -2147483648 EndGInt OJVwPrGrup4OKNameStrnSuper VsblInt PrGpStrnID EndGInt OKVwPrGrupDOLNameStrnLeftVsblInt PrGpStrnPositionPValStrn0 EndGInt OLVwPrGrupDOMNameStrnTop VsblInt PrGpStrnPositionPValStrn0 EndGInt OMVwPrGrupDONNameStrnDefaultCardWidthPrGpStrnBehaviorPValStrn0 EndGInt ONVwPrGrupHOONameStrnDefaultCardHeight PrGpStrnBehaviorPValStrn0 EndGInt OOVwPrGrup@OPNameStrn AceIsLowest PrGpStrnBehaviorPValStrn0 EndGInt OPEndGInt OHPadnPadn************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************BlokpFol7NameStrnCards ContInt paswStrnPadnPadn************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************BlokpFol"wNameStrnExamplesContInt paswStrnPadnPadn************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************BlokpUIsWnStGrupOQOTabGrupORContInt eSptInt EndGInt OROTabGrupOSContInt gEndGInt OSOTabGrupOTContInt gEndGInt OTOTabGrupOUContInt EndGInt OUOTabGrupOVContInt IgEndGInt OVLsLcStrnWarWindow.DealCards rEdtRectEndGInt OQPadnPadn************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************EOF!