ref: 0d687ba25ae223f6de2c69d46fd1c3df6ad52da3
dir: /engine/menu/players_pc.asm/
PlayerPC: ; 78e6 (1:78e6) ld hl, wd730 set 6, [hl] ld a, ITEM_NAME ld [wNameListType], a call SaveScreenTilesToBuffer1 xor a ld [wBagSavedMenuItem], a ld [wParentMenuItem], a ld a, [wFlags_0xcd60] bit 3, a ; accessing player's PC through another PC? jr nz, PlayerPCMenu ; accessing it directly ld a, SFX_TURN_ON_PC call PlaySound ld hl, TurnedOnPC2Text call PrintText PlayerPCMenu: ; 790c (1:790c) ld a, [wParentMenuItem] ld [wCurrentMenuItem], a ld hl, wFlags_0xcd60 set 5, [hl] call LoadScreenTilesFromBuffer2 coord hl, 0, 0 ld b, $8 ld c, $e call TextBoxBorder call UpdateSprites coord hl, 2, 2 ld de, PlayersPCMenuEntries call PlaceString ld hl, wTopMenuItemY ld a, 2 ld [hli], a ; wTopMenuItemY dec a ld [hli], a ; wTopMenuItemX inc hl inc hl ld a, 3 ld [hli], a ; wMaxMenuItem ld a, A_BUTTON | B_BUTTON ld [hli], a ; wMenuWatchedKeys xor a ld [hl], a ld hl, wListScrollOffset ld [hli], a ; wListScrollOffset ld [hl], a ; wMenuWatchMovingOutOfBounds ld [wPlayerMonNumber], a ld hl, WhatDoYouWantText call PrintText call HandleMenuInput bit 1, a jp nz, ExitPlayerPC call PlaceUnfilledArrowMenuCursor ld a, [wCurrentMenuItem] ld [wParentMenuItem], a and a jp z, PlayerPCWithdraw dec a jp z, PlayerPCDeposit dec a jp z, PlayerPCToss ExitPlayerPC: ; 796d (1:796d) ld a, [wFlags_0xcd60] bit 3, a ; accessing player's PC through another PC? jr nz, .next ; accessing it directly ld a, SFX_TURN_OFF_PC call PlaySound call WaitForSoundToFinish .next ld hl, wFlags_0xcd60 res 5, [hl] call LoadScreenTilesFromBuffer2 xor a ld [wListScrollOffset], a ld [wBagSavedMenuItem], a ld hl, wd730 res 6, [hl] xor a ld [wDoNotWaitForButtonPressAfterDisplayingText], a ret PlayerPCDeposit: ; 7995 (1:7995) xor a ld [wCurrentMenuItem], a ld [wListScrollOffset], a ld a, [wNumBagItems] and a jr nz, .loop ld hl, NothingToDepositText call PrintText jp PlayerPCMenu .loop ld hl, WhatToDepositText call PrintText ld hl, wNumBagItems ld a, l ld [wListPointer], a ld a, h ld [wListPointer + 1], a xor a ld [wPrintItemPrices], a ld a, ITEMLISTMENU ld [wListMenuID], a call DisplayListMenuID jp c, PlayerPCMenu call IsKeyItem ld a, 1 ld [wItemQuantity], a ld a, [wIsKeyItem] and a jr nz, .next ; if it's not a key item, there can be more than one of the item ld hl, DepositHowManyText call PrintText call DisplayChooseQuantityMenu cp $ff jp z, .loop .next ld hl, wNumBoxItems call AddItemToInventory jr c, .roomAvailable ld hl, NoRoomToStoreText call PrintText jp .loop .roomAvailable ld hl, wNumBagItems call RemoveItemFromInventory call WaitForSoundToFinish ld a, SFX_WITHDRAW_DEPOSIT call PlaySound call WaitForSoundToFinish ld hl, ItemWasStoredText call PrintText jp .loop PlayerPCWithdraw: ; 7a12 (1:7a12) xor a ld [wCurrentMenuItem], a ld [wListScrollOffset], a ld a, [wNumBoxItems] and a jr nz, .loop ld hl, NothingStoredText call PrintText jp PlayerPCMenu .loop ld hl, WhatToWithdrawText call PrintText ld hl, wNumBoxItems ld a, l ld [wListPointer], a ld a, h ld [wListPointer + 1], a xor a ld [wPrintItemPrices], a ld a, ITEMLISTMENU ld [wListMenuID], a call DisplayListMenuID jp c, PlayerPCMenu call IsKeyItem ld a, 1 ld [wItemQuantity], a ld a, [wIsKeyItem] and a jr nz, .next ; if it's not a key item, there can be more than one of the item ld hl, WithdrawHowManyText call PrintText call DisplayChooseQuantityMenu cp $ff jp z, .loop .next ld hl, wNumBagItems call AddItemToInventory jr c, .roomAvailable ld hl, CantCarryMoreText call PrintText jp .loop .roomAvailable ld hl, wNumBoxItems call RemoveItemFromInventory call WaitForSoundToFinish ld a, SFX_WITHDRAW_DEPOSIT call PlaySound call WaitForSoundToFinish ld hl, WithdrewItemText call PrintText jp .loop PlayerPCToss: ; 7a8f (1:7a8f) xor a ld [wCurrentMenuItem], a ld [wListScrollOffset], a ld a, [wNumBoxItems] and a jr nz, .loop ld hl, NothingStoredText call PrintText jp PlayerPCMenu .loop ld hl, WhatToTossText call PrintText ld hl, wNumBoxItems ld a, l ld [wListPointer], a ld a, h ld [wListPointer + 1], a xor a ld [wPrintItemPrices], a ld a, ITEMLISTMENU ld [wListMenuID], a push hl call DisplayListMenuID pop hl jp c, PlayerPCMenu push hl call IsKeyItem pop hl ld a, 1 ld [wItemQuantity], a ld a, [wIsKeyItem] and a jr nz, .next ld a, [wcf91] call IsItemHM jr c, .next ; if it's not a key item, there can be more than one of the item push hl ld hl, TossHowManyText call PrintText call DisplayChooseQuantityMenu pop hl cp $ff jp z, .loop .next call TossItem ; disallows tossing key items jp .loop PlayersPCMenuEntries: ; 7af5 (1:7af5) db "WITHDRAW ITEM" next "DEPOSIT ITEM" next "TOSS ITEM" next "LOG OFF@" TurnedOnPC2Text: ; 7b22 (1:7b22) TX_FAR _TurnedOnPC2Text db "@" WhatDoYouWantText: ; 7b27 (1:7b27) TX_FAR _WhatDoYouWantText db "@" WhatToDepositText: ; 7b2c (1:7b2c) TX_FAR _WhatToDepositText db "@" DepositHowManyText: ; 7b31 (1:7b31) TX_FAR _DepositHowManyText db "@" ItemWasStoredText: ; 7b36 (1:7b36) TX_FAR _ItemWasStoredText db "@" NothingToDepositText: ; 7b3b (1:7b3b) TX_FAR _NothingToDepositText db "@" NoRoomToStoreText: ; 7b40 (1:7b40) TX_FAR _NoRoomToStoreText db "@" WhatToWithdrawText: ; 7b45 (1:7b45) TX_FAR _WhatToWithdrawText db "@" WithdrawHowManyText: ; 7b4a (1:7b4a) TX_FAR _WithdrawHowManyText db "@" WithdrewItemText: ; 7b4f (1:7b4f) TX_FAR _WithdrewItemText db "@" NothingStoredText: ; 7b54 (1:7b54) TX_FAR _NothingStoredText db "@" CantCarryMoreText: ; 7b59 (1:7b59) TX_FAR _CantCarryMoreText db "@" WhatToTossText: ; 7b5e (1:7b5e) TX_FAR _WhatToTossText db "@" TossHowManyText: ; 7b63 (1:7b63) TX_FAR _TossHowManyText db "@"