diff --git a/gui/tradeGUI.js b/gui/tradeGUI.js new file mode 100644 index 0000000..c7bf441 --- /dev/null +++ b/gui/tradeGUI.js @@ -0,0 +1,185 @@ +function tradeGUI() { + guiControl.trade = { + screen: "main", // "main", "buy", "sell", "gossip" + cursorPosition: 0, + show: true, // Leaving this in just in case I change my mind about stopping time while trading. + + padding: 2 * OS.S.pixelScale, + leftBorder: 12 * OS.S.pixelScale, + + rowTop: function (rowNumber) { + return (guiControl.trade.padding + (6 * OS.S.pixelScale) + (guiControl.trade.padding * 3)) + ((guiControl.iconSize + 3) * rowNumber * OS.S.pixelScale); + } + } +} + +function drawTradeGUI() { + if (guiControl.trade.show) { + if (ct_down().down) { + guiControl.trade.cursorPosition++; + } + if (ct_up().down) { + guiControl.trade.cursorPosition--; + } + + if (guiControl.trade.screen == "main") { + // Limit Cursor + if (guiControl.trade.cursorPosition < 0) { + guiControl.trade.cursorPosition = 0; + } + if (guiControl.trade.cursorPosition > 3) { + guiControl.trade.cursorPosition = 3; + } + + // Title + guiControl.drawPixelText("On Island", (guiControl.trade.padding * 2), guiControl.trade.padding, 10, "black", 6); + // Money icon + // guiControl.drawIcon(7, 2, guiControl.trade.leftBorder, guiControl.trade.rowTop(0)); + guiControl.drawPixelText("Buy", guiControl.trade.leftBorder, guiControl.trade.rowTop(0) + OS.S.pixelScale, 8, "black", 6); + // Supplies icon + // guiControl.drawIcon(9, 2, guiControl.trade.leftBorder, guiControl.trade.rowTop(1)); + guiControl.drawPixelText("Sell", guiControl.trade.leftBorder, guiControl.trade.rowTop(1) + OS.S.pixelScale, 8, "black", 6); + // Cargo icon + // guiControl.drawIcon(1, 0, guiControl.trade.leftBorder, guiControl.trade.rowTop(2)); + guiControl.drawPixelText("Gossip", guiControl.trade.leftBorder, guiControl.trade.rowTop(2) + OS.S.pixelScale, 8, "black", 6); + + // Close Text + guiControl.drawPixelText("Leave", guiControl.trade.leftBorder, guiControl.trade.rowTop(3) + OS.S.pixelScale, 8, "black", 6); + + // Draw cursor + OS.context.drawImage(guiControl.cursor, guiControl.trade.leftBorder - (guiControl.iconScaled), guiControl.trade.rowTop(guiControl.trade.cursorPosition)); + + // Button Action + if (ct_confirm().down) { + switch (guiControl.trade.cursorPosition) { + case 0: + guiControl.trade.screen = "buy"; + break; + case 1: + guiControl.trade.screen = "sell"; + break; + case 2: + guiControl.trade.screen = "gossip"; + break; + default: + OS.SetRoom(rm_Ocean); + // guiControl.trade.show = false; + break; + } + + guiControl.trade.cursorPosition = 0; + } + } + else if (guiControl.trade.screen == "buy") { + // Limit Cursor + if (guiControl.trade.cursorPosition < 0) { + guiControl.trade.cursorPosition = 0; + } + if (guiControl.trade.cursorPosition > 0) { + guiControl.trade.cursorPosition = 0; + } + + // Title + guiControl.drawPixelText("Buy", guiControl.trade.leftBorder - (2 * OS.S.pixelScale), guiControl.topOfBackground, 10, "black", 6); + + guiControl.drawPixelText("Actual Amt", guiControl.trade.leftBorder - (5 * OS.S.pixelScale), guiControl.trade.rowTop(0) + OS.S.pixelScale, 10, "black", 4); + // Money icon + guiControl.drawIcon(7, 2, guiControl.trade.leftBorder - (5 * OS.S.pixelScale), guiControl.trade.rowTop(1) - (3 * OS.S.pixelScale)); + guiControl.drawPixelText(G.inventory.money.toString(), guiControl.trade.leftBorder - (5 * OS.S.pixelScale) + ((guiControl.iconSize + 2) * OS.S.pixelScale), guiControl.trade.rowTop(1) + (2 * OS.S.pixelScale) - (3 * OS.S.pixelScale), 10, "black", 4); + + // Back Text + guiControl.drawPixelText("Back", guiControl.trade.leftBorder, guiControl.trade.rowTop(4) - (3 * OS.S.pixelScale), 8, "black", 6); + + // Draw cursor + OS.context.drawImage(guiControl.cursor, guiControl.trade.leftBorder - (guiControl.iconScaled), guiControl.trade.rowTop(4) - (4 * OS.S.pixelScale)); + + // Button Action + if (ct_confirm().down || ct_cancel().down) { + guiControl.trade.screen = "main"; + guiControl.trade.cursorPosition = 0; + } + } + else if (guiControl.trade.screen == "sell") { + // Limit Cursor + if (guiControl.trade.cursorPosition < 0) { + guiControl.trade.cursorPosition = 0; + } + if (guiControl.trade.cursorPosition > 2) { + guiControl.trade.cursorPosition = 2; + } + + // Title + guiControl.drawPixelText("Sell", guiControl.trade.leftBorder - (6 * OS.S.pixelScale), guiControl.topOfBackground, 10, "black", 6); + + guiControl.drawPixelText("Heal Crew?", guiControl.trade.leftBorder - (5 * OS.S.pixelScale), guiControl.trade.rowTop(0) + OS.S.pixelScale, 10, "black", 4); + // Supplies icon + guiControl.drawIcon(9, 2, guiControl.trade.leftBorder - (5 * OS.S.pixelScale), guiControl.trade.rowTop(1) - (3 * OS.S.pixelScale)); + guiControl.drawPixelText(G.inventory.supplies.toString(), guiControl.trade.leftBorder - (5 * OS.S.pixelScale) + ((guiControl.iconSize + 2) * OS.S.pixelScale), guiControl.trade.rowTop(1) + (2 * OS.S.pixelScale) - (3 * OS.S.pixelScale), 2, "black", 4); + // Illness icon + guiControl.drawIcon(4, 1, guiControl.trade.leftBorder - (5 * OS.S.pixelScale) + (24 * OS.S.pixelScale), guiControl.trade.rowTop(1) - (3 * OS.S.pixelScale)); + guiControl.drawPixelText(G.stats.illness.toString(), guiControl.trade.leftBorder - (5 * OS.S.pixelScale) + (24 * OS.S.pixelScale) + ((guiControl.iconSize + 2) * OS.S.pixelScale), guiControl.trade.rowTop(1) + (2 * OS.S.pixelScale) - (3 * OS.S.pixelScale), 2, "black", 4); + + // Yes/No options + guiControl.drawPixelText("No", guiControl.trade.leftBorder, guiControl.trade.rowTop(2) - (3 * OS.S.pixelScale), 3, "black", 6); + guiControl.drawPixelText("Yes", guiControl.trade.leftBorder, guiControl.trade.rowTop(3) - (3 * OS.S.pixelScale), 3, "black", 6); + + // Back Text + guiControl.drawPixelText("Back", guiControl.trade.leftBorder, guiControl.trade.rowTop(4) - (3 * OS.S.pixelScale), 8, "black", 6); + + // Draw cursor + guiControl.drawCursor(guiControl.trade.leftBorder - (guiControl.iconScaled), guiControl.trade.rowTop(guiControl.trade.cursorPosition + 2) - (4 * OS.S.pixelScale)); + + // Button Action + if (ct_confirm().down) { + switch (guiControl.trade.cursorPosition) { + case 1: + if (G.inventory.supplies > 0 && G.stats.illness > 0) { //If cursor is over yes, heal illness with supplies. + G.inventory.supplies--; + G.stats.illness--; + } + break; + default: + guiControl.trade.screen = "main"; + guiControl.trade.cursorPosition = 1; // The position where "Supplies" is on main screen. + break; + } + } + + if (ct_cancel().down) { + guiControl.trade.screen = "main"; + guiControl.trade.cursorPosition = 1; // The position where "Supplies" is on main screen. + } + } + else if (guiControl.trade.screen == "gossip") { + // Limit Cursor + if (guiControl.trade.cursorPosition < 0) { + guiControl.trade.cursorPosition = 0; + } + if (guiControl.trade.cursorPosition > 0) { + guiControl.trade.cursorPosition = 0; + } + + // Title + guiControl.drawPixelText("Gossip", guiControl.trade.padding - (2 * OS.S.pixelScale), guiControl.topOfBackground, 10, "black", 6); + + // Cargo icons + var cargo = G.inventory.CheckCargo(); // Contains the item ids that have more than 1 item + for (var i = 0; i < cargo.length; i++) { + guiControl.drawItem(cargo[i], guiControl.trade.leftBorder, guiControl.trade.rowTop(i)); + guiControl.drawPixelText(G.inventory.cargo[cargo[i]], guiControl.trade.leftBorder + ((guiControl.iconSize + 4) * OS.S.pixelScale), guiControl.trade.rowTop(i) + OS.S.pixelScale, 8, "black", 6); + } + + // Back Text + guiControl.drawPixelText("Back", guiControl.trade.leftBorder, guiControl.trade.rowTop(4) - (3 * OS.S.pixelScale), 8, "black", 6); + + // Draw cursor + OS.context.drawImage(guiControl.cursor, guiControl.trade.leftBorder - (guiControl.iconScaled), guiControl.trade.rowTop(4) - (4 * OS.S.pixelScale)); + + // Button Action + if (ct_confirm().down || ct_cancel().down) { + guiControl.trade.screen = "main"; + guiControl.trade.cursorPosition = 2; + } + } + } +} diff --git a/loadGUIs.js b/loadGUIs.js index 9903cc9..f609507 100644 --- a/loadGUIs.js +++ b/loadGUIs.js @@ -1,5 +1,6 @@ function loadGUIs() { OS.AddScript("gui/inventoryGUI.js"); + OS.AddScript("gui/tradeGUI.js"); } var guiControl = { diff --git a/loadRooms.js b/loadRooms.js index 530b1de..5ef6ea4 100644 --- a/loadRooms.js +++ b/loadRooms.js @@ -1,5 +1,10 @@ // var rm_TitleScreen = OS.R.Add("Default"); // var rm_Ocean = OS.R.Add("Ocean", { +var rm_Trade = OS.R.Add("Trade", { + width: OS.camera.width, + height: OS.camera.height, + backgroundColor: "#D9BEA5" +}); var rm_Ocean = OS.R.Add("Default", { width: (64 * OS.S.pixelScale) * 50, //50x50 map of 64x64 squares. This will allow a single pixel on the map to represent a 64x square and fit comfortably on screen. height: (64 * OS.S.pixelScale) * 50, @@ -9,6 +14,7 @@ var rm_Ocean = OS.R.Add("Default", { function loadRooms() { // OS.AddScript("rooms/titleScreen.js"); OS.AddScript("rooms/oceanRoom.js"); + OS.AddScript("rooms/tradeRoom.js"); // OS.SetRoom(rm_TitleScreen); OS.SetRoom(rm_Ocean); diff --git a/rooms/oceanRoom.js b/rooms/oceanRoom.js index ba833a5..3b642e1 100644 --- a/rooms/oceanRoom.js +++ b/rooms/oceanRoom.js @@ -37,6 +37,9 @@ rm_Ocean.DoFirst = function () { this.mapUpTriggerTarget = this.height - (OS.camera.height - OS.camera.vBorder); this.mapDownTrigger = this.height - OS.camera.vBorder; this.mapDownTriggerTarget = OS.camera.height - OS.camera.vBorder; + + // THIS IS JUST FOR MAKING TRADE ROOM TESTING EASIER. DO NOT SHIP LIKE THIS!!!! + // OS.SetRoom(rm_Trade); } rm_Ocean.Do = function () { // Move G.oceanParticle around based on player's movement. @@ -54,6 +57,10 @@ rm_Ocean.Do = function () { if (!guiControl.inventory.show && ct_cancel().down) { guiControl.inventory.show = true; } + + if (!guiControl.inventory.show && ct_esc.down) { + OS.SetRoom(rm_Trade); + } } rm_Ocean.DrawAbove = function () { diff --git a/rooms/tradeRoom.js b/rooms/tradeRoom.js new file mode 100644 index 0000000..dee7925 --- /dev/null +++ b/rooms/tradeRoom.js @@ -0,0 +1,14 @@ +function tradeRoom () {} + +rm_Trade.DoFirst = function () {} + +rm_Trade.Do = function () {} + +rm_Trade.DrawAbove = function () { + drawTradeGUI(); +} + +rm_Trade.DoLast = function () { + // Clear Objects on room exit. This is best practice unless you need persistent objects. + //rm_Trade.objects = {}; +}