diff --git a/gui/inventoryGUI.js b/gui/inventoryGUI.js index 4a287d3..b1c9e19 100644 --- a/gui/inventoryGUI.js +++ b/gui/inventoryGUI.js @@ -2,28 +2,7 @@ function inventoryGUI() { guiControl.inventory = { screen: "main", cursorPosition: 0, - show: false, - - moneyDisplay: function () { - var moneyString = ""; - if (G.inventory.money >= 1000000) { - moneyString = G.inventory.money.toString().substr(0, 1); - if (parseInt(G.inventory.money.toString().substr(1, 1)) > 0) { - moneyString += "." + G.inventory.money.toString().substr(1, 1); - } - } - if (G.inventory.money >= 1000000000000) { - moneyString += "T"; - } else if (G.inventory.money >= 1000000000) { - moneyString += "B"; - } else if (G.inventory.money >= 1000000) { - moneyString += "M"; - } else { - moneyString = G.inventory.money.toString(); - } - - return moneyString; - } + show: false } } @@ -41,17 +20,17 @@ function drawInventoryGUI() { if (guiControl.inventory.screen == "main") { // Limit Cursor if (guiControl.inventory.cursorPosition < 0) { - guiControl.inventory.cursorPosition = 0; + guiControl.inventory.cursorPosition = 3; } if (guiControl.inventory.cursorPosition > 3) { - guiControl.inventory.cursorPosition = 3; + guiControl.inventory.cursorPosition = 0; } // Title guiControl.drawPixelText("Storage", guiControl.leftBorder - (2 * OS.S.pixelScale), guiControl.topOfBackground, 8, "black", 6); // Money icon guiControl.drawIcon(7, 2, guiControl.leftBorder, guiControl.rowTop(0)); - guiControl.drawPixelText(guiControl.inventory.moneyDisplay(), guiControl.leftBorder + ((guiControl.iconSize + 4) * OS.S.pixelScale), guiControl.rowTop(0) + OS.S.pixelScale, 8, "black", 6); + guiControl.drawPixelText(G.inventory.moneyDisplay(), guiControl.leftBorder + ((guiControl.iconSize + 4) * OS.S.pixelScale), guiControl.rowTop(0) + OS.S.pixelScale, 8, "black", 6); // Supplies icon guiControl.drawIcon(9, 2, guiControl.leftBorder, guiControl.rowTop(1)); guiControl.drawPixelText(G.inventory.supplies.toString(), guiControl.leftBorder + ((guiControl.iconSize + 4) * OS.S.pixelScale), guiControl.rowTop(1) + OS.S.pixelScale, 8, "black", 6); @@ -117,10 +96,10 @@ function drawInventoryGUI() { else if (guiControl.inventory.screen == "supplies") { // Limit Cursor if (guiControl.inventory.cursorPosition < 0) { - guiControl.inventory.cursorPosition = 0; + guiControl.inventory.cursorPosition = 2; } if (guiControl.inventory.cursorPosition > 2) { - guiControl.inventory.cursorPosition = 2; + guiControl.inventory.cursorPosition = 0; } // Title diff --git a/gui/tradeGUI.js b/gui/tradeGUI.js index 0ef9abb..0ba0ed5 100644 --- a/gui/tradeGUI.js +++ b/gui/tradeGUI.js @@ -2,7 +2,9 @@ function tradeGUI() { guiControl.trade = { screen: "main", // "main", "buy", "sell", "gossip" cursorPosition: 0, + scroll: 0, // horizontal scroll on item lists. show: false, + activateDelay: 0, island: null, @@ -17,6 +19,7 @@ function tradeGUI() { function drawTradeGUI() { if (guiControl.trade.show) { + guiControl.trade.activateDelay--; var tmp = Oversimplified.context.fillStyle; Oversimplified.context.fillStyle = "#D9BEA5"; Oversimplified.context.fillRect(0, 0, Oversimplified.camera.width, Oversimplified.camera.height); @@ -32,10 +35,10 @@ function drawTradeGUI() { if (guiControl.trade.screen == "main") { // Limit Cursor if (guiControl.trade.cursorPosition < 0) { - guiControl.trade.cursorPosition = 0; + guiControl.trade.cursorPosition = 3; } if (guiControl.trade.cursorPosition > 3) { - guiControl.trade.cursorPosition = 3; + guiControl.trade.cursorPosition = 0; } // Title @@ -57,7 +60,7 @@ function drawTradeGUI() { OS.context.drawImage(guiControl.cursor, guiControl.trade.leftBorder - (guiControl.iconScaled), guiControl.trade.rowTop(guiControl.trade.cursorPosition)); // Button Action - if (ct_confirm().down) { + if (guiControl.trade.activateDelay <= 0 && ct_confirm().down) { switch (guiControl.trade.cursorPosition) { case 0: guiControl.trade.screen = "buy"; @@ -88,11 +91,20 @@ function drawTradeGUI() { // 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); + guiControl.drawIcon(7, 2, guiControl.trade.leftBorder - (5 * OS.S.pixelScale), guiControl.trade.rowTop(0) - (3 * OS.S.pixelScale)); + guiControl.drawPixelText(G.inventory.moneyDisplay(), guiControl.trade.leftBorder - (5 * OS.S.pixelScale) + ((guiControl.iconSize + 2) * OS.S.pixelScale), guiControl.trade.rowTop(0) + (2 * OS.S.pixelScale) - (3 * OS.S.pixelScale), 10, "black", 4); + // Cargo icons + var cargo = guiControl.trade.island.CheckInventory(); // 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 + 1)); + var itemPrice = G.economy.cargoItemWorth[cargo[i]] + guiControl.trade.island.priceDifferences[cargo[i]]; + var itemPriceDisplay = itemPrice.toString() + " c"; + guiControl.drawPixelText(itemPriceDisplay, guiControl.trade.leftBorder + ((guiControl.iconSize + 4) * OS.S.pixelScale), guiControl.trade.rowTop(i + 1) + OS.S.pixelScale, 8, "black", 6); + // guiControl.drawPixelText(guiControl.trade.island.inventory[cargo[i]], guiControl.trade.leftBorder + ((guiControl.iconSize + 4) * OS.S.pixelScale), guiControl.trade.rowTop(i + 1) + 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); @@ -108,10 +120,10 @@ function drawTradeGUI() { else if (guiControl.trade.screen == "sell") { // Limit Cursor if (guiControl.trade.cursorPosition < 0) { - guiControl.trade.cursorPosition = 0; + guiControl.trade.cursorPosition = 2; } if (guiControl.trade.cursorPosition > 2) { - guiControl.trade.cursorPosition = 2; + guiControl.trade.cursorPosition = 0; } // Title diff --git a/loadGameManager.js b/loadGameManager.js index 656cbe1..d1657a5 100644 --- a/loadGameManager.js +++ b/loadGameManager.js @@ -12,6 +12,26 @@ G.inventory = { 0, 0, 0, 0, // Requires a check to make sure you can't buy more different kinds than you can hold. 0, 0, 0, 0, 0, 0, 0, 0], + moneyDisplay: function () { + var moneyString = ""; + if (G.inventory.money >= 1000000) { + moneyString = G.inventory.money.toString().substr(0, 1); + if (parseInt(G.inventory.money.toString().substr(1, 1)) > 0) { + moneyString += "." + G.inventory.money.toString().substr(1, 1); + } + } + if (G.inventory.money >= 1000000000000) { + moneyString += "T"; + } else if (G.inventory.money >= 1000000000) { + moneyString += "B"; + } else if (G.inventory.money >= 1000000) { + moneyString += "M"; + } else { + moneyString = G.inventory.money.toString(); + } + + return moneyString; + }, CheckCargo: function () { // Returns an array of indices that have cargo var indicesWithCargo = []; for (var i = 0; i < G.inventory.cargo.length; i++) { diff --git a/prefabs/islandPrefab.js b/prefabs/islandPrefab.js index 33f3f94..6c3d509 100644 --- a/prefabs/islandPrefab.js +++ b/prefabs/islandPrefab.js @@ -13,6 +13,8 @@ var pr_island = OS.P.Add("Island", { mapHeight: 1, mapColor: "#00AB00", + canTrade: true, + inventory: [], priceDifferences: [], itemsSold: [0, 0, 0, 0, // The more you sell, the lower the price gets @@ -27,7 +29,7 @@ var pr_island = OS.P.Add("Island", { pr_island.DoFirst = function () { this.GetMapPosition(); - this.SetUpPrices(); + this.SetUp(); } pr_island.GetMapPosition = function () { @@ -38,7 +40,10 @@ pr_island.GetMapPosition = function () { pr_island.SetUp = function () { for (var i = 0; i < 15; i++) { this.inventory[i] = Math.round(Math.randomRange(0, 20)); - this.priceDifferences[i] = Math.round(Math.randomRange(-100, 100)); + this.priceDifferences[i] = Math.round(Math.randomRange(-50, 50)); + if (G.economy.cargoItemWorth[i] + this.priceDifferences[i]) { + this.priceDifferences[i] = -G.economy.cargoItemWorth[i] + 1; + } } } @@ -53,10 +58,28 @@ pr_island.AdjustPrices = function () { } } +pr_island.CheckInventory = function () { // Returns an array of indices that have cargo + var indicesWithCargo = []; + for (var i = 0; i < G.inventory.cargo.length; i++) { + if (this.inventory[i] > 0) { + indicesWithCargo.push(i); + } + } + return indicesWithCargo; +} + +pr_island.TradeWith = function () { + guiControl.trade.island = this.self; + guiControl.trade.activateDelay = 5; + guiControl.trade.show = true; +} + pr_island.SellTo = function (itemIndex, amount) { + this.inventory[itemIndex] += amount; this.itemsBought[itemIndex] += amount; } pr_island.BuyFrom = function (itemIndex, amount) { + this.inventory[itemIndex] += amount; this.itemsSold[itemIndex] += amount; } diff --git a/prefabs/shipPrefab.js b/prefabs/shipPrefab.js index efff019..c8984e0 100644 --- a/prefabs/shipPrefab.js +++ b/prefabs/shipPrefab.js @@ -41,6 +41,8 @@ pr_ship.Do = function () { this.currentSpeed--; } this.AdjustSpeedBasedOnEnergy(); + + this.CheckInteraction(); } this.currentSpeed = Math.clamp(this.currentSpeed, 0, 4); @@ -53,6 +55,7 @@ pr_ship.Do = function () { this.doTakeStep = false; } + this.SeamlessScroll(); // console.log(G.player.name + " created at " + G.player.x + ", " + G.player.y); } @@ -68,7 +71,7 @@ pr_ship.CheckInteraction = function () { if (objectsFound.length > 0) { for (var i = 0; i < objectsFound.length; i++) { if (objectsFound[i].canTrade) { - // open the trading screen for the island. + objectsFound[i].TradeWith(); } } } diff --git a/rooms/tradeRoom.js b/rooms/tradeRoom.js index dee7925..428662c 100644 --- a/rooms/tradeRoom.js +++ b/rooms/tradeRoom.js @@ -1,6 +1,8 @@ function tradeRoom () {} -rm_Trade.DoFirst = function () {} +rm_Trade.DoFirst = function () { + OS.canvas.style.background = this.background.color; +} rm_Trade.Do = function () {}