diff options
| author | Fuwn <[email protected]> | 2026-02-12 22:33:32 -0800 |
|---|---|---|
| committer | Fuwn <[email protected]> | 2026-02-12 22:33:32 -0800 |
| commit | c7a9d4a6bd53ed7d61731770f2f10e8b9fd435f9 (patch) | |
| tree | df9f48bf128a6c0186a8e91857d6ff30fe0e9f18 /NET/worlds/scape/TradeAction.java | |
| download | worldsplayer-c7a9d4a6bd53ed7d61731770f2f10e8b9fd435f9.tar.xz worldsplayer-c7a9d4a6bd53ed7d61731770f2f10e8b9fd435f9.zip | |
Initial commit
Diffstat (limited to 'NET/worlds/scape/TradeAction.java')
| -rw-r--r-- | NET/worlds/scape/TradeAction.java | 151 |
1 files changed, 151 insertions, 0 deletions
diff --git a/NET/worlds/scape/TradeAction.java b/NET/worlds/scape/TradeAction.java new file mode 100644 index 0000000..9efc9d3 --- /dev/null +++ b/NET/worlds/scape/TradeAction.java @@ -0,0 +1,151 @@ +package NET.worlds.scape; + +import NET.worlds.console.Console; +import NET.worlds.console.Main; +import NET.worlds.console.MainCallback; +import NET.worlds.console.OkCancelDialog; +import NET.worlds.console.PolledDialog; +import java.io.IOException; + +public class TradeAction extends DialogAction { + int userItems = 1; + String userItem = "A"; + int serverItems = 1; + String serverItem = "A"; + private static Object classCookie = new Object(); + + @Override + public void doIt() { + StringBuffer deal = new StringBuffer(); + deal.append("&|+deal>TRADE "); + if (this.userItems > 0) { + deal.append(this.userItem); + deal.append(this.userItems); + } + + deal.append(","); + if (this.serverItems > 0) { + deal.append(this.serverItem); + deal.append(this.serverItems); + } + + final String dealStr = deal.toString(); + Main.register(new MainCallback() { + @Override + public void mainCallback() { + Pilot.sendText("TRADE", dealStr); + Main.unregister(this); + } + }); + } + + @Override + public PolledDialog getDialog() { + return InventoryManager.getInventoryManager().checkInventoryFor(this.userItem) >= this.userItems + ? new OkCancelDialog( + Console.getFrame(), + this, + "Trade?", + "No", + "Yes", + "Do you want to give " + + InventoryManager.getInventoryManager().itemName(this.userItem, this.userItems) + + " in return for " + + InventoryManager.getInventoryManager().itemName(this.serverItem, this.serverItems) + + "?", + false + ) + : new OkCancelDialog( + Console.getFrame(), + this, + "Can't trade!", + "Ok", + null, + "You need " + InventoryManager.getInventoryManager().itemName(this.userItem, this.userItems) + " in order to trade here.", + false + ); + } + + @Override + public Object properties(int index, int offset, int mode, Object value) throws NoSuchPropertyException { + Object ret = null; + switch (index - offset) { + case 0: + if (mode == 0) { + ret = StringPropertyEditor.make(new Property(this, index, "User Item Type")); + } else if (mode == 1) { + ret = this.userItem; + } else if (mode == 2) { + this.userItem = ((String)value).toString().trim(); + } + break; + case 1: + if (mode == 0) { + ret = IntegerPropertyEditor.make(new Property(this, index, "Number of User Items")); + } else if (mode == 1) { + ret = new Integer(this.userItems); + } else if (mode == 2) { + this.userItems = (Integer)value; + } + break; + case 2: + if (mode == 0) { + ret = StringPropertyEditor.make(new Property(this, index, "Merchant Item Type")); + } else if (mode == 1) { + ret = this.serverItem; + } else if (mode == 2) { + this.serverItem = ((String)value).toString().trim(); + } + break; + case 3: + if (mode == 0) { + ret = IntegerPropertyEditor.make(new Property(this, index, "Number of Merchant Items")); + } else if (mode == 1) { + ret = new Integer(this.serverItems); + } else if (mode == 2) { + this.serverItems = (Integer)value; + } + break; + default: + ret = super.properties(index, offset + 4, mode, value); + } + + return ret; + } + + @Override + public String toString() { + return super.toString() + + "[give " + + InventoryManager.getInventoryManager().itemName(this.userItem, this.userItems) + + " for " + + InventoryManager.getInventoryManager().itemName(this.serverItem, this.serverItems) + + "]"; + } + + @Override + public void saveState(Saver s) throws IOException { + s.saveVersion(0, classCookie); + super.saveState(s); + s.saveString(this.userItem); + s.saveInt(this.userItems); + s.saveString(this.serverItem); + s.saveInt(this.serverItems); + } + + @Override + public void restoreState(Restorer r) throws IOException, TooNewException { + int ver = r.restoreVersion(classCookie); + switch (ver) { + case 0: + super.restoreState(r); + this.userItem = r.restoreString(); + this.userItems = r.restoreInt(); + this.serverItem = r.restoreString(); + this.serverItems = r.restoreInt(); + return; + default: + throw new TooNewException(); + } + } +} |