ref: a24a39793c7672eabd8ddd6666a28f498e994935
dir: /engine/menus/players_pc.asm/
PlayerPC:: 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: ld a, [wParentMenuItem] ld [wCurrentMenuItem], a ld hl, wFlags_0xcd60 set 5, [hl] call LoadScreenTilesFromBuffer2 hlcoord 0, 0 ld b, $8 ld c, $e call TextBoxBorder call UpdateSprites hlcoord 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: 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: 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: 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: 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: db "WITHDRAW ITEM" next "DEPOSIT ITEM" next "TOSS ITEM" next "LOG OFF@" TurnedOnPC2Text: text_far _TurnedOnPC2Text text_end WhatDoYouWantText: text_far _WhatDoYouWantText text_end WhatToDepositText: text_far _WhatToDepositText text_end DepositHowManyText: text_far _DepositHowManyText text_end ItemWasStoredText: text_far _ItemWasStoredText text_end NothingToDepositText: text_far _NothingToDepositText text_end NoRoomToStoreText: text_far _NoRoomToStoreText text_end WhatToWithdrawText: text_far _WhatToWithdrawText text_end WithdrawHowManyText: text_far _WithdrawHowManyText text_end WithdrewItemText: text_far _WithdrewItemText text_end NothingStoredText: text_far _NothingStoredText text_end CantCarryMoreText: text_far _CantCarryMoreText text_end WhatToTossText: text_far _WhatToTossText text_end TossHowManyText: text_far _TossHowManyText text_end