RuneHive-Tarnish
Neural OSRS Enhancement Framework
Loading...
Searching...
No Matches
BankPin.java
1package com.osroyale.game.world.items.containers.bank;
2
3import com.osroyale.content.dialogue.DialogueFactory;
4import com.osroyale.game.world.entity.mob.player.Player;
5import com.osroyale.net.packet.out.SendInputMessage;
6import com.osroyale.net.packet.out.SendMessage;
7import com.osroyale.util.MessageColor;
8
47
48public class BankPin {
49
51 private final Player player;
52
54 public String pin;
55
57 public boolean entered = false;
58
60 public BankPin(Player player) {
61 this.player = player;
62 }
63
65 public void open() {
66 DialogueFactory factory = player.dialogueFactory;
67 factory.sendOption("Set Bank Pin", () -> set(factory), "Remove Bank Pin", () -> remove(factory), "Nevermind", factory::clear);
68 factory.execute();
69 }
70
71 private void set(DialogueFactory factory) {
72 factory.sendStatement("Enter a 4-5 digit pin for your bank.", "Make sure to write it down!").onAction(() -> {
73 player.send(new SendInputMessage("Enter the pin you would like to assign your bank:", 5, input -> {
74 if (input.length() < 4 || input.length() > 5) {
75 player.send(new SendMessage("Your pin must have 4-5 digits.", MessageColor.RED));
76 return;
77 }
78
79 pin = input;
80 entered = true;
81 player.send(new SendMessage("Your new bank pin is now: " + pin + ". Write it down!", MessageColor.BLUE));
82 factory.clear();
83 }));
84 }).execute();
85 }
86
87 private void remove(DialogueFactory factory) {
88 factory.onAction(() -> {
89 if (!hasPin()) {
90 player.send(new SendMessage("You don't have a pin set!"));
91 factory.clear();
92 return;
93 }
94 player.send(new SendInputMessage("Enter your bank pin:", 5, input -> {
95 if (!pin.equalsIgnoreCase(input)) {
96 player.send(new SendMessage("You have entered an invalid bank pin!", MessageColor.RED));
97 factory.clear();
98 return;
99 }
100
101 pin = null;
102 player.send(new SendMessage("You have successfully removed your bank pin.", MessageColor.BLUE));
103 factory.clear();
104 }));
105 });
106
107 }
108
110 public void enter() {
111 player.send(new SendInputMessage("Enter your bank pin:", 5, input -> {
112
113 if (!pin.equalsIgnoreCase(input)) {
114 player.dialogueFactory.sendStatement("You have entered an invalid bank pin!").execute();
115 return;
116 }
117
118 entered = true;
119 player.send(new SendMessage("You have successfully entered your bank pin. You can access your bank for this session.", MessageColor.BLUE));
120 player.bank.open();
121 }));
122 }
123
125 public boolean hasPin() {
126 return pin != null;
127 }
128}
final DialogueFactory sendOption(String option1, Runnable action1, String option2, Runnable action2)