Update code styles and spacing
This commit is contained in:
		
							parent
							
								
									27e95d4011
								
							
						
					
					
						commit
						7b8729d4e0
					
				
					 19 changed files with 2074 additions and 1995 deletions
				
			
		| 
						 | 
				
			
			@ -1,217 +1,221 @@
 | 
			
		|||
function inventoryGUI() {
 | 
			
		||||
	if (Oversimplified.DEBUG.showMessages) console.log("Ran inventoryGUI()");
 | 
			
		||||
  if (Oversimplified.DEBUG.showMessages) console.log("Ran inventoryGUI()");
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
guiControl.inventory = {
 | 
			
		||||
	screen: "main",
 | 
			
		||||
	cursorPosition: 0,
 | 
			
		||||
	show: false,
 | 
			
		||||
	activateDelay: 0
 | 
			
		||||
  screen: "main",
 | 
			
		||||
  cursorPosition: 0,
 | 
			
		||||
  show: false,
 | 
			
		||||
  activateDelay: 0,
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
guiControl.inventory.Draw = function () {
 | 
			
		||||
	if (guiControl.inventory && guiControl.inventory.show) {
 | 
			
		||||
		guiControl.inventory.activateDelay -= (guiControl.inventory.activateDelay > 0) ? 1 : 0;
 | 
			
		||||
  if (guiControl.inventory && guiControl.inventory.show) {
 | 
			
		||||
    guiControl.inventory.activateDelay -= (guiControl.inventory.activateDelay > 0) ? 1 : 0;
 | 
			
		||||
 | 
			
		||||
		guiControl.drawGUIBackground();
 | 
			
		||||
    guiControl.drawGUIBackground();
 | 
			
		||||
 | 
			
		||||
		if (ct_down().down) {
 | 
			
		||||
			snd_cursordown.Play();
 | 
			
		||||
			guiControl.inventory.cursorPosition++;
 | 
			
		||||
		}
 | 
			
		||||
		if (ct_up().down) {
 | 
			
		||||
			snd_cursordown.Play();
 | 
			
		||||
			guiControl.inventory.cursorPosition--;
 | 
			
		||||
		}
 | 
			
		||||
		
 | 
			
		||||
		if (guiControl.inventory.screen == "main") {
 | 
			
		||||
			// Limit Cursor
 | 
			
		||||
			if (guiControl.inventory.cursorPosition < 0) {
 | 
			
		||||
				guiControl.inventory.cursorPosition = 3;
 | 
			
		||||
			}
 | 
			
		||||
			if (guiControl.inventory.cursorPosition > 3) {
 | 
			
		||||
				guiControl.inventory.cursorPosition = 0;
 | 
			
		||||
			}
 | 
			
		||||
    if (ct_down().down) {
 | 
			
		||||
      snd_cursordown.Play();
 | 
			
		||||
      guiControl.inventory.cursorPosition++;
 | 
			
		||||
    }
 | 
			
		||||
    if (ct_up().down) {
 | 
			
		||||
      snd_cursordown.Play();
 | 
			
		||||
      guiControl.inventory.cursorPosition--;
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    if (guiControl.inventory.screen == "main") {
 | 
			
		||||
      // Limit Cursor
 | 
			
		||||
      if (guiControl.inventory.cursorPosition < 0) {
 | 
			
		||||
        guiControl.inventory.cursorPosition = 3;
 | 
			
		||||
      }
 | 
			
		||||
      if (guiControl.inventory.cursorPosition > 3) {
 | 
			
		||||
        guiControl.inventory.cursorPosition = 0;
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
			// Title
 | 
			
		||||
			guiControl.drawPixelText("Storage", guiControl.leftBorder - pixel(2), guiControl.topOfBackground, 8, "black", 6);
 | 
			
		||||
      // Title
 | 
			
		||||
      guiControl.drawPixelText("Storage", guiControl.leftBorder - pixel(2), guiControl.topOfBackground, 8, "black", 6);
 | 
			
		||||
 | 
			
		||||
			guiControl.drawPageArrow("left", pixel(4), guiControl.topOfBackground);
 | 
			
		||||
			guiControl.drawPageArrow("right", OS.camera.width - pixel(4) - pixel(4), guiControl.topOfBackground);
 | 
			
		||||
      guiControl.drawPageArrow("left", pixel(4), guiControl.topOfBackground);
 | 
			
		||||
      guiControl.drawPageArrow("right", OS.camera.width - pixel(4) - pixel(4), guiControl.topOfBackground);
 | 
			
		||||
 | 
			
		||||
			// Money icon
 | 
			
		||||
			guiControl.drawIcon(7, 2, guiControl.leftBorder, guiControl.rowTop(0));
 | 
			
		||||
			guiControl.drawPixelText(G.inventory.moneyDisplay(), guiControl.leftBorder + pixel(guiControl.iconSize + 4), guiControl.rowTop(0) + pixel(), 8, "black", 6);
 | 
			
		||||
			// Cargo icon
 | 
			
		||||
			guiControl.drawIcon(1, 0, guiControl.leftBorder, guiControl.rowTop(1));
 | 
			
		||||
			guiControl.drawPixelText(G.inventory.CargoTotal().toString(), guiControl.leftBorder + pixel(guiControl.iconSize + 4), guiControl.rowTop(1) + pixel(), 8, "black", 6);
 | 
			
		||||
			// Stats icon
 | 
			
		||||
			// guiControl.drawIcon(9, 2, guiControl.leftBorder, guiControl.rowTop(2));
 | 
			
		||||
			guiControl.drawPixelText("Status", guiControl.leftBorder, guiControl.rowTop(2) + pixel(), 8, "black", 6);
 | 
			
		||||
			
 | 
			
		||||
			// Close Text
 | 
			
		||||
			guiControl.drawPixelText("Close", guiControl.leftBorder, guiControl.rowTop(3) + pixel(), 8, "black", 6);
 | 
			
		||||
			
 | 
			
		||||
			// Draw cursor
 | 
			
		||||
			guiControl.drawCursor(guiControl.leftBorder - (guiControl.iconScaled), guiControl.rowTop(guiControl.inventory.cursorPosition));
 | 
			
		||||
      // Money icon
 | 
			
		||||
      guiControl.drawIcon(7, 2, guiControl.leftBorder, guiControl.rowTop(0));
 | 
			
		||||
      guiControl.drawPixelText(G.inventory.moneyDisplay(), guiControl.leftBorder + pixel(guiControl.iconSize + 4), guiControl.rowTop(0) + pixel(), 8, "black", 6);
 | 
			
		||||
      // Cargo icon
 | 
			
		||||
      guiControl.drawIcon(1, 0, guiControl.leftBorder, guiControl.rowTop(1));
 | 
			
		||||
      guiControl.drawPixelText(G.inventory.CargoTotal().toString(), guiControl.leftBorder + pixel(guiControl.iconSize + 4), guiControl.rowTop(1) + pixel(), 8, "black", 6);
 | 
			
		||||
      // Stats icon
 | 
			
		||||
      // guiControl.drawIcon(9, 2, guiControl.leftBorder, guiControl.rowTop(2));
 | 
			
		||||
      guiControl.drawPixelText("Status", guiControl.leftBorder, guiControl.rowTop(2) + pixel(), 8, "black", 6);
 | 
			
		||||
      
 | 
			
		||||
      // Close Text
 | 
			
		||||
      guiControl.drawPixelText("Close", guiControl.leftBorder, guiControl.rowTop(3) + pixel(), 8, "black", 6);
 | 
			
		||||
      
 | 
			
		||||
      // Draw cursor
 | 
			
		||||
      guiControl.drawCursor(guiControl.leftBorder - (guiControl.iconScaled), guiControl.rowTop(guiControl.inventory.cursorPosition));
 | 
			
		||||
 | 
			
		||||
			// Button Action
 | 
			
		||||
			if (guiControl.inventory.activateDelay <= 0) {
 | 
			
		||||
				if (ct_confirm().down) {
 | 
			
		||||
					switch (guiControl.inventory.cursorPosition) {
 | 
			
		||||
						case 0:
 | 
			
		||||
							snd_select.Play();
 | 
			
		||||
							guiControl.inventory.screen = "money";
 | 
			
		||||
      // Button Action
 | 
			
		||||
      if (guiControl.inventory.activateDelay <= 0) {
 | 
			
		||||
        if (ct_confirm().down) {
 | 
			
		||||
          switch (guiControl.inventory.cursorPosition) {
 | 
			
		||||
            case 0: {
 | 
			
		||||
              snd_select.Play();
 | 
			
		||||
              guiControl.inventory.screen = "money";
 | 
			
		||||
							break;
 | 
			
		||||
						case 1:
 | 
			
		||||
							snd_select.Play();
 | 
			
		||||
							guiControl.inventory.screen = "cargo";
 | 
			
		||||
						}
 | 
			
		||||
            case 1: {
 | 
			
		||||
              snd_select.Play();
 | 
			
		||||
              guiControl.inventory.screen = "cargo";
 | 
			
		||||
							break;
 | 
			
		||||
						case 2:
 | 
			
		||||
							snd_select.Play();
 | 
			
		||||
							guiControl.inventory.screen = "status";
 | 
			
		||||
						}
 | 
			
		||||
            case 2: {
 | 
			
		||||
              snd_select.Play();
 | 
			
		||||
              guiControl.inventory.screen = "status";
 | 
			
		||||
							break;
 | 
			
		||||
						default:
 | 
			
		||||
							snd_cursorup.Play();
 | 
			
		||||
							guiControl.inventory.show = false;
 | 
			
		||||
						}
 | 
			
		||||
            default: {
 | 
			
		||||
              snd_cursorup.Play();
 | 
			
		||||
              guiControl.inventory.show = false;
 | 
			
		||||
							break;
 | 
			
		||||
					}
 | 
			
		||||
						}
 | 
			
		||||
          }
 | 
			
		||||
 | 
			
		||||
					guiControl.inventory.cursorPosition = 0;
 | 
			
		||||
					guiControl.inventory.activateDelay = 5;
 | 
			
		||||
				}
 | 
			
		||||
				if (ct_cancel().down) {
 | 
			
		||||
					snd_cursorup.Play();
 | 
			
		||||
					guiControl.inventory.show = false;
 | 
			
		||||
				}
 | 
			
		||||
				if (ct_left().down) {
 | 
			
		||||
					snd_cursordown.Play();
 | 
			
		||||
					guiControl.inventory.show = false;
 | 
			
		||||
					guiControl.map.activateDelay = 5;
 | 
			
		||||
					guiControl.map.show = true;
 | 
			
		||||
				}
 | 
			
		||||
				if (ct_right().down) {
 | 
			
		||||
					snd_cursordown.Play();
 | 
			
		||||
					guiControl.inventory.show = false;
 | 
			
		||||
					guiControl.map.activateDelay = 5;
 | 
			
		||||
					guiControl.map.show = true;
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
		else if (guiControl.inventory.screen == "money") {
 | 
			
		||||
			// Limit Cursor
 | 
			
		||||
			if (guiControl.inventory.cursorPosition < 0) {
 | 
			
		||||
				guiControl.inventory.cursorPosition = 0;
 | 
			
		||||
			}
 | 
			
		||||
			if (guiControl.inventory.cursorPosition > 0) {
 | 
			
		||||
				guiControl.inventory.cursorPosition = 0;
 | 
			
		||||
			}
 | 
			
		||||
          guiControl.inventory.cursorPosition = 0;
 | 
			
		||||
          guiControl.inventory.activateDelay = 5;
 | 
			
		||||
        }
 | 
			
		||||
        if (ct_cancel().down) {
 | 
			
		||||
          snd_cursorup.Play();
 | 
			
		||||
          guiControl.inventory.show = false;
 | 
			
		||||
        }
 | 
			
		||||
        if (ct_left().down) {
 | 
			
		||||
          snd_cursordown.Play();
 | 
			
		||||
          guiControl.inventory.show = false;
 | 
			
		||||
          guiControl.map.activateDelay = 5;
 | 
			
		||||
          guiControl.map.show = true;
 | 
			
		||||
        }
 | 
			
		||||
        if (ct_right().down) {
 | 
			
		||||
          snd_cursordown.Play();
 | 
			
		||||
          guiControl.inventory.show = false;
 | 
			
		||||
          guiControl.map.activateDelay = 5;
 | 
			
		||||
          guiControl.map.show = true;
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
    else if (guiControl.inventory.screen == "money") {
 | 
			
		||||
      // Limit Cursor
 | 
			
		||||
      if (guiControl.inventory.cursorPosition < 0) {
 | 
			
		||||
        guiControl.inventory.cursorPosition = 0;
 | 
			
		||||
      }
 | 
			
		||||
      if (guiControl.inventory.cursorPosition > 0) {
 | 
			
		||||
        guiControl.inventory.cursorPosition = 0;
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
			// Title
 | 
			
		||||
			guiControl.drawPixelText("Money", guiControl.leftBorder + pixel(3), guiControl.topOfBackground, 8, "black", 6);
 | 
			
		||||
      // Title
 | 
			
		||||
      guiControl.drawPixelText("Money", guiControl.leftBorder + pixel(3), guiControl.topOfBackground, 8, "black", 6);
 | 
			
		||||
 | 
			
		||||
			guiControl.drawPixelText("Actual Amt", guiControl.leftBorder - pixel(5), guiControl.rowTop(0) + pixel(), 10, "black", 4);
 | 
			
		||||
			// Money icon
 | 
			
		||||
			guiControl.drawIcon(7, 2, guiControl.leftBorder - pixel(5), guiControl.rowTop(1) - pixel(3));
 | 
			
		||||
			guiControl.drawPixelText(G.inventory.money.toString(), guiControl.leftBorder - pixel(5) + pixel(guiControl.iconSize + 2), guiControl.rowTop(1) + pixel(2) - pixel(3), 10, "black", 4);
 | 
			
		||||
			
 | 
			
		||||
			// Back Text
 | 
			
		||||
			guiControl.drawPixelText("Back", guiControl.leftBorder, guiControl.rowTop(4) - pixel(3), 8, "black", 6);
 | 
			
		||||
			
 | 
			
		||||
			// Draw cursor
 | 
			
		||||
			guiControl.drawCursor(guiControl.leftBorder - (guiControl.iconScaled), guiControl.rowTop(4) - pixel(4));
 | 
			
		||||
      guiControl.drawPixelText("Actual Amt", guiControl.leftBorder - pixel(5), guiControl.rowTop(0) + pixel(), 10, "black", 4);
 | 
			
		||||
      // Money icon
 | 
			
		||||
      guiControl.drawIcon(7, 2, guiControl.leftBorder - pixel(5), guiControl.rowTop(1) - pixel(3));
 | 
			
		||||
      guiControl.drawPixelText(G.inventory.money.toString(), guiControl.leftBorder - pixel(5) + pixel(guiControl.iconSize + 2), guiControl.rowTop(1) + pixel(2) - pixel(3), 10, "black", 4);
 | 
			
		||||
      
 | 
			
		||||
      // Back Text
 | 
			
		||||
      guiControl.drawPixelText("Back", guiControl.leftBorder, guiControl.rowTop(4) - pixel(3), 8, "black", 6);
 | 
			
		||||
      
 | 
			
		||||
      // Draw cursor
 | 
			
		||||
      guiControl.drawCursor(guiControl.leftBorder - (guiControl.iconScaled), guiControl.rowTop(4) - pixel(4));
 | 
			
		||||
 | 
			
		||||
			// Button Action
 | 
			
		||||
			if (guiControl.inventory.activateDelay <= 0) {
 | 
			
		||||
				if (ct_confirm().down || ct_cancel().down) {
 | 
			
		||||
					snd_cursorup.Play();
 | 
			
		||||
					guiControl.inventory.screen = "main";
 | 
			
		||||
					guiControl.inventory.activateDelay = 5;
 | 
			
		||||
					guiControl.inventory.cursorPosition = 0;
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
		else if (guiControl.inventory.screen == "cargo") {
 | 
			
		||||
			// Limit Cursor
 | 
			
		||||
			if (guiControl.inventory.cursorPosition < 0) {
 | 
			
		||||
				guiControl.inventory.cursorPosition = 0;
 | 
			
		||||
			}
 | 
			
		||||
			if (guiControl.inventory.cursorPosition > 0) {
 | 
			
		||||
				guiControl.inventory.cursorPosition = 0;
 | 
			
		||||
			}
 | 
			
		||||
      // Button Action
 | 
			
		||||
      if (guiControl.inventory.activateDelay <= 0) {
 | 
			
		||||
        if (ct_confirm().down || ct_cancel().down) {
 | 
			
		||||
          snd_cursorup.Play();
 | 
			
		||||
          guiControl.inventory.screen = "main";
 | 
			
		||||
          guiControl.inventory.activateDelay = 5;
 | 
			
		||||
          guiControl.inventory.cursorPosition = 0;
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
    else if (guiControl.inventory.screen == "cargo") {
 | 
			
		||||
      // Limit Cursor
 | 
			
		||||
      if (guiControl.inventory.cursorPosition < 0) {
 | 
			
		||||
        guiControl.inventory.cursorPosition = 0;
 | 
			
		||||
      }
 | 
			
		||||
      if (guiControl.inventory.cursorPosition > 0) {
 | 
			
		||||
        guiControl.inventory.cursorPosition = 0;
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
			// Title
 | 
			
		||||
			guiControl.drawPixelText("Cargo", guiControl.leftBorder + pixel(3), guiControl.topOfBackground, 8, "black", 6);
 | 
			
		||||
      // Title
 | 
			
		||||
      guiControl.drawPixelText("Cargo", guiControl.leftBorder + pixel(3), guiControl.topOfBackground, 8, "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.leftBorder, guiControl.rowTop(i));
 | 
			
		||||
				guiControl.drawPixelText(G.inventory.cargo[cargo[i]], guiControl.leftBorder + pixel(guiControl.iconSize + 4), guiControl.rowTop(i) + pixel(), 8, "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.leftBorder, guiControl.rowTop(i));
 | 
			
		||||
        guiControl.drawPixelText(G.inventory.cargo[cargo[i]], guiControl.leftBorder + pixel(guiControl.iconSize + 4), guiControl.rowTop(i) + pixel(), 8, "black", 6);
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
			// Back Text
 | 
			
		||||
			guiControl.drawPixelText("Back", guiControl.leftBorder, guiControl.rowTop(4) - pixel(3), 8, "black", 6);
 | 
			
		||||
			
 | 
			
		||||
			// Draw cursor
 | 
			
		||||
			guiControl.drawCursor(guiControl.leftBorder - (guiControl.iconScaled), guiControl.rowTop(4) - pixel(4));
 | 
			
		||||
      // Back Text
 | 
			
		||||
      guiControl.drawPixelText("Back", guiControl.leftBorder, guiControl.rowTop(4) - pixel(3), 8, "black", 6);
 | 
			
		||||
      
 | 
			
		||||
      // Draw cursor
 | 
			
		||||
      guiControl.drawCursor(guiControl.leftBorder - (guiControl.iconScaled), guiControl.rowTop(4) - pixel(4));
 | 
			
		||||
 | 
			
		||||
			// Button Action
 | 
			
		||||
			if (guiControl.inventory.activateDelay <= 0) {
 | 
			
		||||
				if (ct_confirm().down || ct_cancel().down) {
 | 
			
		||||
					snd_cursorup.Play();
 | 
			
		||||
					guiControl.inventory.screen = "main";
 | 
			
		||||
					guiControl.inventory.activateDelay = 5;
 | 
			
		||||
					guiControl.inventory.cursorPosition = 1;
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
		else if (guiControl.inventory.screen == "status") {
 | 
			
		||||
			// Limit Cursor
 | 
			
		||||
			if (guiControl.inventory.cursorPosition < 0) {
 | 
			
		||||
				guiControl.inventory.cursorPosition = 0;
 | 
			
		||||
			}
 | 
			
		||||
			if (guiControl.inventory.cursorPosition > 0) {
 | 
			
		||||
				guiControl.inventory.cursorPosition = 0;
 | 
			
		||||
			}
 | 
			
		||||
      // Button Action
 | 
			
		||||
      if (guiControl.inventory.activateDelay <= 0) {
 | 
			
		||||
        if (ct_confirm().down || ct_cancel().down) {
 | 
			
		||||
          snd_cursorup.Play();
 | 
			
		||||
          guiControl.inventory.screen = "main";
 | 
			
		||||
          guiControl.inventory.activateDelay = 5;
 | 
			
		||||
          guiControl.inventory.cursorPosition = 1;
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
    else if (guiControl.inventory.screen == "status") {
 | 
			
		||||
      // Limit Cursor
 | 
			
		||||
      if (guiControl.inventory.cursorPosition < 0) {
 | 
			
		||||
        guiControl.inventory.cursorPosition = 0;
 | 
			
		||||
      }
 | 
			
		||||
      if (guiControl.inventory.cursorPosition > 0) {
 | 
			
		||||
        guiControl.inventory.cursorPosition = 0;
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
			// guiControl.drawPageArrow("left", pixel(4), guiControl.topOfBackground);
 | 
			
		||||
			// guiControl.drawPageArrow("right", OS.camera.width - pixel(4) - pixel(4), guiControl.topOfBackground);
 | 
			
		||||
      // guiControl.drawPageArrow("left", pixel(4), guiControl.topOfBackground);
 | 
			
		||||
      // guiControl.drawPageArrow("right", OS.camera.width - pixel(4) - pixel(4), guiControl.topOfBackground);
 | 
			
		||||
 | 
			
		||||
			// Title
 | 
			
		||||
			guiControl.drawPixelText("Status", guiControl.leftBorder + pixel(), guiControl.topOfBackground, 8, "black", 6);
 | 
			
		||||
      // Title
 | 
			
		||||
      guiControl.drawPixelText("Status", guiControl.leftBorder + pixel(), guiControl.topOfBackground, 8, "black", 6);
 | 
			
		||||
 | 
			
		||||
			// Illness icon
 | 
			
		||||
			guiControl.drawIcon(4, 1, guiControl.leftBorder - pixel(6), guiControl.rowTop(0));
 | 
			
		||||
			guiControl.drawPixelText(G.stats.illness.toString(), guiControl.leftBorder - pixel(6) + (guiControl.iconScaled + pixel(2)), guiControl.rowTop(0) + pixel(2), 2, "black", 4);
 | 
			
		||||
			
 | 
			
		||||
			guiControl.drawPixelText("This will show more data when stati can change.", guiControl.leftBorder - pixel(5), guiControl.rowTop(1), 10, "black", 4);
 | 
			
		||||
			/*// Energy icon
 | 
			
		||||
			guiControl.drawIcon(9, 2, guiControl.leftBorder - pixel(5), guiControl.rowTop(0) - pixel(3));
 | 
			
		||||
			guiControl.drawPixelText(G.stats.energy.toString(), guiControl.leftBorder - pixel(5) + pixel(guiControl.iconSize + 2), guiControl.rowTop(1) + pixel(2) - pixel(3), 2, "black", 4);
 | 
			
		||||
			// Illness icon
 | 
			
		||||
			guiControl.drawIcon(4, 1, guiControl.leftBorder - pixel(5) + pixel(24), guiControl.rowTop(1) - pixel(3));
 | 
			
		||||
			guiControl.drawPixelText(G.stats.illness.toString(), guiControl.leftBorder - pixel(5) + pixel(24) + pixel(guiControl.iconSize + 2), guiControl.rowTop(1) + pixel(2) - pixel(3), 2, "black", 4);
 | 
			
		||||
      // Illness icon
 | 
			
		||||
      guiControl.drawIcon(4, 1, guiControl.leftBorder - pixel(6), guiControl.rowTop(0));
 | 
			
		||||
      guiControl.drawPixelText(G.stats.illness.toString(), guiControl.leftBorder - pixel(6) + (guiControl.iconScaled + pixel(2)), guiControl.rowTop(0) + pixel(2), 2, "black", 4);
 | 
			
		||||
      
 | 
			
		||||
      guiControl.drawPixelText("This will show more data when stati can change.", guiControl.leftBorder - pixel(5), guiControl.rowTop(1), 10, "black", 4);
 | 
			
		||||
      /*// Energy icon
 | 
			
		||||
      guiControl.drawIcon(9, 2, guiControl.leftBorder - pixel(5), guiControl.rowTop(0) - pixel(3));
 | 
			
		||||
      guiControl.drawPixelText(G.stats.energy.toString(), guiControl.leftBorder - pixel(5) + pixel(guiControl.iconSize + 2), guiControl.rowTop(1) + pixel(2) - pixel(3), 2, "black", 4);
 | 
			
		||||
      // Illness icon
 | 
			
		||||
      guiControl.drawIcon(4, 1, guiControl.leftBorder - pixel(5) + pixel(24), guiControl.rowTop(1) - pixel(3));
 | 
			
		||||
      guiControl.drawPixelText(G.stats.illness.toString(), guiControl.leftBorder - pixel(5) + pixel(24) + pixel(guiControl.iconSize + 2), guiControl.rowTop(1) + pixel(2) - pixel(3), 2, "black", 4);
 | 
			
		||||
 | 
			
		||||
			// Yes/No options
 | 
			
		||||
			guiControl.drawPixelText("No", guiControl.leftBorder, guiControl.rowTop(2) - pixel(3), 3, "black", 6);
 | 
			
		||||
			guiControl.drawPixelText("Yes", guiControl.leftBorder, guiControl.rowTop(3) - pixel(3), 3, (G.inventory.supplies > 0 && G.stats.illness > 0) ? "black" : "white", 6);
 | 
			
		||||
			*/
 | 
			
		||||
			// Back Text
 | 
			
		||||
			guiControl.drawPixelText("Back", guiControl.leftBorder, guiControl.rowTop(4) - pixel(3), 8, "black", 6);
 | 
			
		||||
			
 | 
			
		||||
			// Draw cursor
 | 
			
		||||
			guiControl.drawCursor(guiControl.leftBorder - (guiControl.iconScaled), guiControl.rowTop(4) - pixel(3));
 | 
			
		||||
      // Yes/No options
 | 
			
		||||
      guiControl.drawPixelText("No", guiControl.leftBorder, guiControl.rowTop(2) - pixel(3), 3, "black", 6);
 | 
			
		||||
      guiControl.drawPixelText("Yes", guiControl.leftBorder, guiControl.rowTop(3) - pixel(3), 3, (G.inventory.supplies > 0 && G.stats.illness > 0) ? "black" : "white", 6);
 | 
			
		||||
      */
 | 
			
		||||
      // Back Text
 | 
			
		||||
      guiControl.drawPixelText("Back", guiControl.leftBorder, guiControl.rowTop(4) - pixel(3), 8, "black", 6);
 | 
			
		||||
      
 | 
			
		||||
      // Draw cursor
 | 
			
		||||
      guiControl.drawCursor(guiControl.leftBorder - (guiControl.iconScaled), guiControl.rowTop(4) - pixel(3));
 | 
			
		||||
 | 
			
		||||
			// Button Action
 | 
			
		||||
			if (guiControl.inventory.activateDelay <= 0) {
 | 
			
		||||
				if (ct_confirm().down || ct_cancel().down) {
 | 
			
		||||
					snd_cursorup.Play();
 | 
			
		||||
					guiControl.inventory.screen = "main";
 | 
			
		||||
					guiControl.inventory.activateDelay = 5;
 | 
			
		||||
					guiControl.inventory.cursorPosition = 2;	// The position where "Supplies" is on main screen.
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
      // Button Action
 | 
			
		||||
      if (guiControl.inventory.activateDelay <= 0) {
 | 
			
		||||
        if (ct_confirm().down || ct_cancel().down) {
 | 
			
		||||
          snd_cursorup.Play();
 | 
			
		||||
          guiControl.inventory.screen = "main";
 | 
			
		||||
          guiControl.inventory.activateDelay = 5;
 | 
			
		||||
          guiControl.inventory.cursorPosition = 2;  // The position where "Supplies" is on main screen.
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,62 +1,62 @@
 | 
			
		|||
function mapGUI() {
 | 
			
		||||
	if (Oversimplified.DEBUG.showMessages) console.log("Ran mapGUI()");
 | 
			
		||||
  if (Oversimplified.DEBUG.showMessages) console.log("Ran mapGUI()");
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
guiControl.map = {
 | 
			
		||||
	show: false,
 | 
			
		||||
	activateDelay: 0
 | 
			
		||||
  show: false,
 | 
			
		||||
  activateDelay: 0,
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
guiControl.map.Draw = function () {
 | 
			
		||||
	if (guiControl.map && guiControl.map.show) {
 | 
			
		||||
		guiControl.map.activateDelay -= (guiControl.map.activateDelay > 0) ? 1 : 0;
 | 
			
		||||
  if (guiControl.map && guiControl.map.show) {
 | 
			
		||||
    guiControl.map.activateDelay -= (guiControl.map.activateDelay > 0) ? 1 : 0;
 | 
			
		||||
 | 
			
		||||
		guiControl.drawGUIBackground();
 | 
			
		||||
		
 | 
			
		||||
		// Title
 | 
			
		||||
		guiControl.drawPixelText("Map", guiControl.leftBorder + pixel(10), guiControl.topOfBackground, 8, "black", 6);
 | 
			
		||||
    guiControl.drawGUIBackground();
 | 
			
		||||
    
 | 
			
		||||
    // Title
 | 
			
		||||
    guiControl.drawPixelText("Map", guiControl.leftBorder + pixel(10), guiControl.topOfBackground, 8, "black", 6);
 | 
			
		||||
 | 
			
		||||
		guiControl.drawPageArrow("left", pixel(4), guiControl.topOfBackground);
 | 
			
		||||
		guiControl.drawPageArrow("right", OS.camera.width - pixel(4) - pixel(4), guiControl.topOfBackground);
 | 
			
		||||
    guiControl.drawPageArrow("left", pixel(4), guiControl.topOfBackground);
 | 
			
		||||
    guiControl.drawPageArrow("right", OS.camera.width - pixel(4) - pixel(4), guiControl.topOfBackground);
 | 
			
		||||
 | 
			
		||||
		var saveFillStyle = OS.context.fillStyle;
 | 
			
		||||
    var saveFillStyle = OS.context.fillStyle;
 | 
			
		||||
 | 
			
		||||
		var mapLeft = guiControl.leftBorder - pixel(5);
 | 
			
		||||
		var mapTop = guiControl.upperBorder;
 | 
			
		||||
    var mapLeft = guiControl.leftBorder - pixel(5);
 | 
			
		||||
    var mapTop = guiControl.upperBorder;
 | 
			
		||||
 | 
			
		||||
	    OS.context.fillStyle = "#0000CC";
 | 
			
		||||
	    OS.context.fillRect(mapLeft, mapTop, pixel(50), pixel(45));
 | 
			
		||||
    OS.context.fillStyle = "#0000CC";
 | 
			
		||||
    OS.context.fillRect(mapLeft, mapTop, pixel(50), pixel(45));
 | 
			
		||||
 | 
			
		||||
	    OS.context.fillStyle = "#00FF00";
 | 
			
		||||
	    for (var m = 0; m < G.map.length; m++) {
 | 
			
		||||
		    var pixelLeft = mapLeft + pixel(G.map[m].drawX);
 | 
			
		||||
		    var pixelTop = mapTop + pixel(G.map[m].drawY);
 | 
			
		||||
		    OS.context.fillRect(pixelLeft, pixelTop, pixel(), pixel());
 | 
			
		||||
	    }
 | 
			
		||||
    OS.context.fillStyle = "#00FF00";
 | 
			
		||||
    for (var m = 0; m < G.map.length; m++) {
 | 
			
		||||
      var pixelLeft = mapLeft + pixel(G.map[m].drawX);
 | 
			
		||||
      var pixelTop = mapTop + pixel(G.map[m].drawY);
 | 
			
		||||
      OS.context.fillRect(pixelLeft, pixelTop, pixel(), pixel());
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
	    OS.context.fillStyle = "#FF0000";
 | 
			
		||||
	    OS.context.fillRect(mapLeft + G.player.mapX, mapTop + G.player.mapY, pixel(), pixel());
 | 
			
		||||
    OS.context.fillStyle = "#FF0000";
 | 
			
		||||
    OS.context.fillRect(mapLeft + G.player.mapX, mapTop + G.player.mapY, pixel(), pixel());
 | 
			
		||||
 | 
			
		||||
	    OS.context.fillStyle = saveFillStyle;
 | 
			
		||||
		
 | 
			
		||||
		// Button Action
 | 
			
		||||
		if (guiControl.map.activateDelay <= 0) {
 | 
			
		||||
			if (ct_confirm().down || ct_cancel().down || ct_m.down) {
 | 
			
		||||
				snd_cursorup.Play();
 | 
			
		||||
				guiControl.map.show = false;
 | 
			
		||||
			}
 | 
			
		||||
			if (ct_left().down) {
 | 
			
		||||
				snd_cursordown.Play();
 | 
			
		||||
				guiControl.map.show = false;
 | 
			
		||||
				guiControl.inventory.activateDelay = 5;
 | 
			
		||||
				guiControl.inventory.show = true;
 | 
			
		||||
			}
 | 
			
		||||
			if (ct_right().down) {
 | 
			
		||||
				snd_cursordown.Play();
 | 
			
		||||
				guiControl.map.show = false;
 | 
			
		||||
				guiControl.inventory.activateDelay = 5;
 | 
			
		||||
				guiControl.inventory.show = true;
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
    OS.context.fillStyle = saveFillStyle;
 | 
			
		||||
    
 | 
			
		||||
    // Button Action
 | 
			
		||||
    if (guiControl.map.activateDelay <= 0) {
 | 
			
		||||
      if (ct_confirm().down || ct_cancel().down || ct_m.down) {
 | 
			
		||||
        snd_cursorup.Play();
 | 
			
		||||
        guiControl.map.show = false;
 | 
			
		||||
      }
 | 
			
		||||
      if (ct_left().down) {
 | 
			
		||||
        snd_cursordown.Play();
 | 
			
		||||
        guiControl.map.show = false;
 | 
			
		||||
        guiControl.inventory.activateDelay = 5;
 | 
			
		||||
        guiControl.inventory.show = true;
 | 
			
		||||
      }
 | 
			
		||||
      if (ct_right().down) {
 | 
			
		||||
        snd_cursordown.Play();
 | 
			
		||||
        guiControl.map.show = false;
 | 
			
		||||
        guiControl.inventory.activateDelay = 5;
 | 
			
		||||
        guiControl.inventory.show = true;
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -3,111 +3,114 @@ function titleScreen () {
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
guiControl.title = {
 | 
			
		||||
    screen: "main",
 | 
			
		||||
    show: true,
 | 
			
		||||
    cursorPosition: 0,
 | 
			
		||||
    activateDelay: 0,
 | 
			
		||||
  screen: "main",
 | 
			
		||||
  show: true,
 | 
			
		||||
  cursorPosition: 0,
 | 
			
		||||
  activateDelay: 0,
 | 
			
		||||
 | 
			
		||||
    padding: pixel(2),
 | 
			
		||||
    leftBorder: pixel(12),
 | 
			
		||||
  padding: pixel(2),
 | 
			
		||||
  leftBorder: pixel(12),
 | 
			
		||||
 | 
			
		||||
    rowTop: function (rowNumber) {
 | 
			
		||||
        return pixel(32) + pixel(2) + pixel((guiControl.iconSize + 2) * rowNumber);
 | 
			
		||||
    }
 | 
			
		||||
  rowTop: function (rowNumber) {
 | 
			
		||||
    return pixel(32) + pixel(2) + pixel((guiControl.iconSize + 2) * rowNumber);
 | 
			
		||||
  },
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
guiControl.title.Draw = function () {
 | 
			
		||||
    if (guiControl.title && guiControl.title.show) {
 | 
			
		||||
        guiControl.title.activateDelay -= (guiControl.title.activateDelay > 0) ? 1 : 0;
 | 
			
		||||
  if (guiControl.title && guiControl.title.show) {
 | 
			
		||||
    guiControl.title.activateDelay -= (guiControl.title.activateDelay > 0) ? 1 : 0;
 | 
			
		||||
 | 
			
		||||
        if (guiControl.title.screen == "main") {
 | 
			
		||||
            if (ct_down().down) {
 | 
			
		||||
                snd_cursordown.Play();
 | 
			
		||||
                guiControl.title.cursorPosition++;
 | 
			
		||||
    if (guiControl.title.screen == "main") {
 | 
			
		||||
      if (ct_down().down) {
 | 
			
		||||
        snd_cursordown.Play();
 | 
			
		||||
        guiControl.title.cursorPosition++;
 | 
			
		||||
      }
 | 
			
		||||
      if (ct_up().down) {
 | 
			
		||||
        snd_cursordown.Play();
 | 
			
		||||
        guiControl.title.cursorPosition--;
 | 
			
		||||
      }
 | 
			
		||||
      
 | 
			
		||||
      // console.log(guiControl.title.screen);
 | 
			
		||||
      // Limit Cursor
 | 
			
		||||
      if (guiControl.title.cursorPosition < 0) {
 | 
			
		||||
        guiControl.title.cursorPosition = 2;
 | 
			
		||||
      }
 | 
			
		||||
      if (guiControl.title.cursorPosition > 2) {
 | 
			
		||||
        guiControl.title.cursorPosition = 0;
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      // Title
 | 
			
		||||
      guiControl.drawTitleImage();
 | 
			
		||||
 | 
			
		||||
      // New Game
 | 
			
		||||
      guiControl.drawPixelText("New Game", guiControl.title.leftBorder, guiControl.title.rowTop(0), 10, "white", 6);
 | 
			
		||||
      // Load Game
 | 
			
		||||
      guiControl.drawPixelText("Continue", guiControl.title.leftBorder, guiControl.title.rowTop(1), 10, (G.savedGameExists) ? "white" : "black", 6);
 | 
			
		||||
      // Options
 | 
			
		||||
      guiControl.drawPixelText("Options", guiControl.title.leftBorder, guiControl.title.rowTop(2) + pixel(), 8, (guiControl.optionsScreen) ? "white" : "black", 6);
 | 
			
		||||
      
 | 
			
		||||
      // Draw cursor
 | 
			
		||||
      guiControl.drawCursor(guiControl.title.leftBorder - (guiControl.iconScaled), guiControl.title.rowTop(guiControl.title.cursorPosition));
 | 
			
		||||
 | 
			
		||||
      // Button Action
 | 
			
		||||
      if (guiControl.title.activateDelay <= 0) {
 | 
			
		||||
        if (ct_confirm().down) {
 | 
			
		||||
          switch (guiControl.title.cursorPosition) {
 | 
			
		||||
            case 0: {
 | 
			
		||||
              snd_select.Play();
 | 
			
		||||
              mus_title.Stop();
 | 
			
		||||
              mus_sail.Play();
 | 
			
		||||
              guiControl.title.show = false;
 | 
			
		||||
              G.gameStarted = true;
 | 
			
		||||
              G.SaveGame();
 | 
			
		||||
              break;
 | 
			
		||||
            }
 | 
			
		||||
            if (ct_up().down) {
 | 
			
		||||
                snd_cursordown.Play();
 | 
			
		||||
                guiControl.title.cursorPosition--;
 | 
			
		||||
            case 1: {
 | 
			
		||||
              if (G.savedGameExists) {    // once loading is in, allow this.
 | 
			
		||||
                G.LoadGame();
 | 
			
		||||
                snd_select.Play();
 | 
			
		||||
                mus_title.Stop();
 | 
			
		||||
                mus_sail.Play();
 | 
			
		||||
                guiControl.title.show = false;
 | 
			
		||||
                G.gameStarted = true;
 | 
			
		||||
              } else {
 | 
			
		||||
                snd_cannotbuy.Play();
 | 
			
		||||
              }
 | 
			
		||||
              break;
 | 
			
		||||
            }
 | 
			
		||||
            
 | 
			
		||||
            // console.log(guiControl.title.screen);
 | 
			
		||||
            // Limit Cursor
 | 
			
		||||
            if (guiControl.title.cursorPosition < 0) {
 | 
			
		||||
                guiControl.title.cursorPosition = 2;
 | 
			
		||||
            }
 | 
			
		||||
            if (guiControl.title.cursorPosition > 2) {
 | 
			
		||||
                guiControl.title.cursorPosition = 0;
 | 
			
		||||
            case 2: {
 | 
			
		||||
              if (false) {    // once loading is in, allow this.
 | 
			
		||||
                snd_select.Play();
 | 
			
		||||
                guiControl.title.show = false;
 | 
			
		||||
                guiControl.options.show = true;
 | 
			
		||||
                break;
 | 
			
		||||
              } else {
 | 
			
		||||
                snd_cannotbuy.Play();
 | 
			
		||||
              }
 | 
			
		||||
            }
 | 
			
		||||
          }
 | 
			
		||||
 | 
			
		||||
            // Title
 | 
			
		||||
            guiControl.drawTitleImage();
 | 
			
		||||
 | 
			
		||||
            // New Game
 | 
			
		||||
            guiControl.drawPixelText("New Game", guiControl.title.leftBorder, guiControl.title.rowTop(0), 10, "white", 6);
 | 
			
		||||
            // Load Game
 | 
			
		||||
            guiControl.drawPixelText("Continue", guiControl.title.leftBorder, guiControl.title.rowTop(1), 10, (G.savedGameExists) ? "white" : "black", 6);
 | 
			
		||||
            // Options
 | 
			
		||||
            guiControl.drawPixelText("Options", guiControl.title.leftBorder, guiControl.title.rowTop(2) + pixel(), 8, (guiControl.optionsScreen) ? "white" : "black", 6);
 | 
			
		||||
            
 | 
			
		||||
            // Draw cursor
 | 
			
		||||
            guiControl.drawCursor(guiControl.title.leftBorder - (guiControl.iconScaled), guiControl.title.rowTop(guiControl.title.cursorPosition));
 | 
			
		||||
 | 
			
		||||
            // Button Action
 | 
			
		||||
            if (guiControl.title.activateDelay <= 0) {
 | 
			
		||||
                if (ct_confirm().down) {
 | 
			
		||||
                    switch (guiControl.title.cursorPosition) {
 | 
			
		||||
                        case 0:
 | 
			
		||||
                            snd_select.Play();
 | 
			
		||||
                            mus_title.Stop();
 | 
			
		||||
                            mus_sail.Play();
 | 
			
		||||
                            guiControl.title.show = false;
 | 
			
		||||
                            G.gameStarted = true;
 | 
			
		||||
                            G.SaveGame();
 | 
			
		||||
                            break;
 | 
			
		||||
                        case 1:
 | 
			
		||||
                            if (G.savedGameExists) {    // once loading is in, allow this.
 | 
			
		||||
                                G.LoadGame();
 | 
			
		||||
                                snd_select.Play();
 | 
			
		||||
                                mus_title.Stop();
 | 
			
		||||
                                mus_sail.Play();
 | 
			
		||||
                                guiControl.title.show = false;
 | 
			
		||||
                                G.gameStarted = true;
 | 
			
		||||
                            } else {
 | 
			
		||||
                                snd_cannotbuy.Play();
 | 
			
		||||
                            }
 | 
			
		||||
                            break;
 | 
			
		||||
                        case 2:
 | 
			
		||||
                            if (false) {    // once loading is in, allow this.
 | 
			
		||||
                                snd_select.Play();
 | 
			
		||||
                                guiControl.title.show = false;
 | 
			
		||||
                                guiControl.options.show = true;
 | 
			
		||||
                                break;
 | 
			
		||||
                            } else {
 | 
			
		||||
                                snd_cannotbuy.Play();
 | 
			
		||||
                            }
 | 
			
		||||
                    }
 | 
			
		||||
 | 
			
		||||
                    guiControl.title.cursorPosition = 0;
 | 
			
		||||
                    // console.log(guiControl.title.screen);
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                if (ct_cancel().down) {
 | 
			
		||||
                    guiControl.title.screen = "credits";
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
          guiControl.title.cursorPosition = 0;
 | 
			
		||||
          // console.log(guiControl.title.screen);
 | 
			
		||||
        }
 | 
			
		||||
        else if (guiControl.title.screen == "credits") {
 | 
			
		||||
            guiControl.drawPixelText("Credits", guiControl.title.leftBorder - pixel(), pixel(2), 0, "white", 6);
 | 
			
		||||
            guiControl.drawPixelText("Music, Icons", pixel(), pixel(11), 0, "white", 4);
 | 
			
		||||
            guiControl.drawPixelText("Paws Menu", pixel(2), pixel(17), 0, "yellow", 6);
 | 
			
		||||
            guiControl.drawPixelText("paws.bandcamp.com", pixel(2), pixel(25), 0, "yellow", 4);
 | 
			
		||||
            guiControl.drawPixelText("Evrthng Else", pixel(), pixel(39), 0, "white", 4);
 | 
			
		||||
            guiControl.drawPixelText("Alamantus", pixel(2), pixel(45), 0, "yellow", 6);
 | 
			
		||||
            guiControl.drawPixelText("alamantus.com", pixel(2), pixel(53), 0, "yellow", 4);
 | 
			
		||||
 | 
			
		||||
            if (ct_confirm().down || ct_cancel().down || ct_esc.down) {
 | 
			
		||||
                guiControl.title.screen = "main";
 | 
			
		||||
            }
 | 
			
		||||
        if (ct_cancel().down) {
 | 
			
		||||
          guiControl.title.screen = "credits";
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
    else if (guiControl.title.screen == "credits") {
 | 
			
		||||
      guiControl.drawPixelText("Credits", guiControl.title.leftBorder - pixel(), pixel(2), 0, "white", 6);
 | 
			
		||||
      guiControl.drawPixelText("Music, Icons", pixel(), pixel(11), 0, "white", 4);
 | 
			
		||||
      guiControl.drawPixelText("Paws Menu", pixel(2), pixel(17), 0, "yellow", 6);
 | 
			
		||||
      guiControl.drawPixelText("paws.bandcamp.com", pixel(2), pixel(25), 0, "yellow", 4);
 | 
			
		||||
      guiControl.drawPixelText("Evrthng Else", pixel(), pixel(39), 0, "white", 4);
 | 
			
		||||
      guiControl.drawPixelText("Alamantus", pixel(2), pixel(45), 0, "yellow", 6);
 | 
			
		||||
      guiControl.drawPixelText("alamantus.com", pixel(2), pixel(53), 0, "yellow", 4);
 | 
			
		||||
 | 
			
		||||
      if (ct_confirm().down || ct_cancel().down || ct_esc.down) {
 | 
			
		||||
        guiControl.title.screen = "main";
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										797
									
								
								gui/tradeGUI.js
									
										
									
									
									
								
							
							
						
						
									
										797
									
								
								gui/tradeGUI.js
									
										
									
									
									
								
							| 
						 | 
				
			
			@ -1,448 +1,461 @@
 | 
			
		|||
function tradeGUI() {
 | 
			
		||||
	if (Oversimplified.DEBUG.showMessages) console.log("Ran tradeGUI()");
 | 
			
		||||
  if (Oversimplified.DEBUG.showMessages) console.log("Ran tradeGUI()");
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
guiControl.trade = {
 | 
			
		||||
	screen: "main",	// "main", "buy", "sell", "gossip"
 | 
			
		||||
	cursorPosition: 0,
 | 
			
		||||
	page: 0,		// horizontal page on item lists. Base 1 to match number of pages var "pages" within the gui.
 | 
			
		||||
	itemsPerPage: 3,
 | 
			
		||||
	show: false,
 | 
			
		||||
	activateDelay: 0,
 | 
			
		||||
  screen: "main",  // "main", "buy", "sell", "gossip"
 | 
			
		||||
  cursorPosition: 0,
 | 
			
		||||
  page: 0,    // horizontal page on item lists. Base 1 to match number of pages var "pages" within the gui.
 | 
			
		||||
  itemsPerPage: 3,
 | 
			
		||||
  show: false,
 | 
			
		||||
  activateDelay: 0,
 | 
			
		||||
 | 
			
		||||
	island: null,
 | 
			
		||||
  island: null,
 | 
			
		||||
 | 
			
		||||
	padding: pixel(2),
 | 
			
		||||
	leftBorder: pixel(12),
 | 
			
		||||
  padding: pixel(2),
 | 
			
		||||
  leftBorder: pixel(12),
 | 
			
		||||
 | 
			
		||||
	rowTop: function (rowNumber) {
 | 
			
		||||
		return (guiControl.trade.padding + pixel(6) + (guiControl.trade.padding * 3)) + pixel((guiControl.iconSize + 3) * rowNumber);
 | 
			
		||||
	}
 | 
			
		||||
  rowTop: function (rowNumber) {
 | 
			
		||||
    return (guiControl.trade.padding + pixel(6) + (guiControl.trade.padding * 3)) + pixel((guiControl.iconSize + 3) * rowNumber);
 | 
			
		||||
  },
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
guiControl.trade.Draw = function () {
 | 
			
		||||
	if (guiControl.trade && guiControl.trade.show) {
 | 
			
		||||
		guiControl.trade.activateDelay -= (guiControl.trade.activateDelay > 0) ? 1 : 0;
 | 
			
		||||
		// console.log("trade screen island: " + guiControl.trade.island.name);
 | 
			
		||||
		// Draw background color.
 | 
			
		||||
		var tmp = Oversimplified.context.fillStyle;
 | 
			
		||||
	    Oversimplified.context.fillStyle = "#D9BEA5";
 | 
			
		||||
	    Oversimplified.context.fillRect(0, 0, Oversimplified.camera.width, Oversimplified.camera.height);
 | 
			
		||||
	    Oversimplified.context.fillStyle = tmp;
 | 
			
		||||
  if (guiControl.trade && guiControl.trade.show) {
 | 
			
		||||
    guiControl.trade.activateDelay -= (guiControl.trade.activateDelay > 0) ? 1 : 0;
 | 
			
		||||
    // console.log("trade screen island: " + guiControl.trade.island.name);
 | 
			
		||||
    // Draw background color.
 | 
			
		||||
    var tmp = Oversimplified.context.fillStyle;
 | 
			
		||||
		Oversimplified.context.fillStyle = "#D9BEA5";
 | 
			
		||||
		Oversimplified.context.fillRect(0, 0, Oversimplified.camera.width, Oversimplified.camera.height);
 | 
			
		||||
		Oversimplified.context.fillStyle = tmp;
 | 
			
		||||
 | 
			
		||||
		if (ct_down().down) {
 | 
			
		||||
			snd_cursordown.Play();
 | 
			
		||||
			guiControl.trade.cursorPosition++;
 | 
			
		||||
		}
 | 
			
		||||
		if (ct_up().down) {
 | 
			
		||||
			snd_cursordown.Play();
 | 
			
		||||
			guiControl.trade.cursorPosition--;
 | 
			
		||||
		}
 | 
			
		||||
		if (ct_right().down) {
 | 
			
		||||
			snd_cursordown.Play();
 | 
			
		||||
			guiControl.trade.page++;
 | 
			
		||||
		}
 | 
			
		||||
		if (ct_left().down) {
 | 
			
		||||
			snd_cursordown.Play();
 | 
			
		||||
			guiControl.trade.page--;
 | 
			
		||||
		}
 | 
			
		||||
		
 | 
			
		||||
		if (guiControl.trade.screen == "main") {
 | 
			
		||||
			// console.log(guiControl.trade.screen);
 | 
			
		||||
			// Limit Cursor
 | 
			
		||||
			if (guiControl.trade.cursorPosition < 0) {
 | 
			
		||||
				guiControl.trade.cursorPosition = 3;
 | 
			
		||||
			}
 | 
			
		||||
			if (guiControl.trade.cursorPosition > 3) {
 | 
			
		||||
				guiControl.trade.cursorPosition = 0;
 | 
			
		||||
			}
 | 
			
		||||
			// Limit page
 | 
			
		||||
			if (guiControl.trade.page < 0) {
 | 
			
		||||
				guiControl.trade.page = 0;
 | 
			
		||||
			}
 | 
			
		||||
			if (guiControl.trade.page > 0) {
 | 
			
		||||
				guiControl.trade.page = 0;
 | 
			
		||||
			}
 | 
			
		||||
    if (ct_down().down) {
 | 
			
		||||
      snd_cursordown.Play();
 | 
			
		||||
      guiControl.trade.cursorPosition++;
 | 
			
		||||
    }
 | 
			
		||||
    if (ct_up().down) {
 | 
			
		||||
      snd_cursordown.Play();
 | 
			
		||||
      guiControl.trade.cursorPosition--;
 | 
			
		||||
    }
 | 
			
		||||
    if (ct_right().down) {
 | 
			
		||||
      snd_cursordown.Play();
 | 
			
		||||
      guiControl.trade.page++;
 | 
			
		||||
    }
 | 
			
		||||
    if (ct_left().down) {
 | 
			
		||||
      snd_cursordown.Play();
 | 
			
		||||
      guiControl.trade.page--;
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    if (guiControl.trade.screen == "main") {
 | 
			
		||||
      // console.log(guiControl.trade.screen);
 | 
			
		||||
      // Limit Cursor
 | 
			
		||||
      if (guiControl.trade.cursorPosition < 0) {
 | 
			
		||||
        guiControl.trade.cursorPosition = 3;
 | 
			
		||||
      }
 | 
			
		||||
      if (guiControl.trade.cursorPosition > 3) {
 | 
			
		||||
        guiControl.trade.cursorPosition = 0;
 | 
			
		||||
      }
 | 
			
		||||
      // Limit page
 | 
			
		||||
      if (guiControl.trade.page < 0) {
 | 
			
		||||
        guiControl.trade.page = 0;
 | 
			
		||||
      }
 | 
			
		||||
      if (guiControl.trade.page > 0) {
 | 
			
		||||
        guiControl.trade.page = 0;
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
			// 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((guiControl.trade.island.CheckInventory().length > 0) ? "Buy" : "Sold Out!", guiControl.trade.leftBorder, guiControl.trade.rowTop(0) + pixel(), 10, (guiControl.trade.island.CheckInventory().length > 0) ? "black" : "white", 6);
 | 
			
		||||
			// Supplies icon
 | 
			
		||||
			// guiControl.drawIcon(9, 2, guiControl.trade.leftBorder, guiControl.trade.rowTop(1));
 | 
			
		||||
			guiControl.drawPixelText((G.inventory.CheckCargo().length > 0) ? "Sell" : "No Cargo!", guiControl.trade.leftBorder, guiControl.trade.rowTop(1) + pixel(), 10, (G.inventory.CheckCargo().length > 0) ? "black" : "white", 6);
 | 
			
		||||
			// Cargo icon
 | 
			
		||||
			// guiControl.drawIcon(1, 0, guiControl.trade.leftBorder, guiControl.trade.rowTop(2));
 | 
			
		||||
			guiControl.drawPixelText("Tavern", guiControl.trade.leftBorder, guiControl.trade.rowTop(2) + pixel(), 8, "black", 6);
 | 
			
		||||
			
 | 
			
		||||
			// Close Text
 | 
			
		||||
			guiControl.drawPixelText("Leave", guiControl.trade.leftBorder, guiControl.trade.rowTop(3) + pixel(), 8, "black", 6);
 | 
			
		||||
			
 | 
			
		||||
			// Draw cursor
 | 
			
		||||
			guiControl.drawCursor(guiControl.trade.leftBorder - (guiControl.iconScaled), guiControl.trade.rowTop(guiControl.trade.cursorPosition));
 | 
			
		||||
      // 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((guiControl.trade.island.CheckInventory().length > 0) ? "Buy" : "Sold Out!", guiControl.trade.leftBorder, guiControl.trade.rowTop(0) + pixel(), 10, (guiControl.trade.island.CheckInventory().length > 0) ? "black" : "white", 6);
 | 
			
		||||
      // Supplies icon
 | 
			
		||||
      // guiControl.drawIcon(9, 2, guiControl.trade.leftBorder, guiControl.trade.rowTop(1));
 | 
			
		||||
      guiControl.drawPixelText((G.inventory.CheckCargo().length > 0) ? "Sell" : "No Cargo!", guiControl.trade.leftBorder, guiControl.trade.rowTop(1) + pixel(), 10, (G.inventory.CheckCargo().length > 0) ? "black" : "white", 6);
 | 
			
		||||
      // Cargo icon
 | 
			
		||||
      // guiControl.drawIcon(1, 0, guiControl.trade.leftBorder, guiControl.trade.rowTop(2));
 | 
			
		||||
      guiControl.drawPixelText("Tavern", guiControl.trade.leftBorder, guiControl.trade.rowTop(2) + pixel(), 8, "black", 6);
 | 
			
		||||
      
 | 
			
		||||
      // Close Text
 | 
			
		||||
      guiControl.drawPixelText("Leave", guiControl.trade.leftBorder, guiControl.trade.rowTop(3) + pixel(), 8, "black", 6);
 | 
			
		||||
      
 | 
			
		||||
      // Draw cursor
 | 
			
		||||
      guiControl.drawCursor(guiControl.trade.leftBorder - (guiControl.iconScaled), guiControl.trade.rowTop(guiControl.trade.cursorPosition));
 | 
			
		||||
 | 
			
		||||
			// Button Action
 | 
			
		||||
			if (guiControl.trade.activateDelay <= 0) {
 | 
			
		||||
				if (ct_confirm().down) {
 | 
			
		||||
					switch (guiControl.trade.cursorPosition) {
 | 
			
		||||
						case 0:
 | 
			
		||||
							if (guiControl.trade.island.CheckInventory().length > 0) {
 | 
			
		||||
								snd_select.Play();
 | 
			
		||||
								guiControl.trade.screen = "buy";
 | 
			
		||||
								guiControl.trade.activateDelay = 5;
 | 
			
		||||
							}
 | 
			
		||||
							else {
 | 
			
		||||
								snd_cannotbuy.Play();
 | 
			
		||||
							}
 | 
			
		||||
      // Button Action
 | 
			
		||||
      if (guiControl.trade.activateDelay <= 0) {
 | 
			
		||||
        if (ct_confirm().down) {
 | 
			
		||||
          switch (guiControl.trade.cursorPosition) {
 | 
			
		||||
            case 0: {
 | 
			
		||||
              if (guiControl.trade.island.CheckInventory().length > 0) {
 | 
			
		||||
                snd_select.Play();
 | 
			
		||||
                guiControl.trade.screen = "buy";
 | 
			
		||||
                guiControl.trade.activateDelay = 5;
 | 
			
		||||
              }
 | 
			
		||||
              else {
 | 
			
		||||
                snd_cannotbuy.Play();
 | 
			
		||||
              }
 | 
			
		||||
							break;
 | 
			
		||||
						case 1:
 | 
			
		||||
							if (G.inventory.CheckCargo().length > 0) {
 | 
			
		||||
								snd_select.Play();
 | 
			
		||||
								guiControl.trade.screen = "sell";
 | 
			
		||||
								guiControl.trade.activateDelay = 5;
 | 
			
		||||
							} else {
 | 
			
		||||
								snd_cannotbuy.Play();
 | 
			
		||||
							}
 | 
			
		||||
						}
 | 
			
		||||
            case 1: {
 | 
			
		||||
              if (G.inventory.CheckCargo().length > 0) {
 | 
			
		||||
                snd_select.Play();
 | 
			
		||||
                guiControl.trade.screen = "sell";
 | 
			
		||||
                guiControl.trade.activateDelay = 5;
 | 
			
		||||
              } else {
 | 
			
		||||
                snd_cannotbuy.Play();
 | 
			
		||||
              }
 | 
			
		||||
							break;
 | 
			
		||||
						case 2:
 | 
			
		||||
							snd_select.Play();
 | 
			
		||||
							guiControl.trade.screen = "tavern";
 | 
			
		||||
							guiControl.trade.activateDelay = 5;
 | 
			
		||||
						}
 | 
			
		||||
            case 2: {
 | 
			
		||||
              snd_select.Play();
 | 
			
		||||
              guiControl.trade.screen = "tavern";
 | 
			
		||||
              guiControl.trade.activateDelay = 5;
 | 
			
		||||
							break;
 | 
			
		||||
						default:
 | 
			
		||||
							snd_cursorup.Play();
 | 
			
		||||
							mus_trade.Stop();
 | 
			
		||||
							mus_sail.Play();
 | 
			
		||||
							guiControl.trade.show = false;
 | 
			
		||||
						}
 | 
			
		||||
            default: {
 | 
			
		||||
              snd_cursorup.Play();
 | 
			
		||||
              mus_trade.Stop();
 | 
			
		||||
              mus_sail.Play();
 | 
			
		||||
              guiControl.trade.show = false;
 | 
			
		||||
							break;
 | 
			
		||||
					}
 | 
			
		||||
						}
 | 
			
		||||
          }
 | 
			
		||||
 | 
			
		||||
					// snd_select.Play();
 | 
			
		||||
					guiControl.trade.cursorPosition = 0;
 | 
			
		||||
					guiControl.trade.page = 0;
 | 
			
		||||
					// console.log(guiControl.trade.screen);
 | 
			
		||||
				}
 | 
			
		||||
				if (ct_cancel().down) {
 | 
			
		||||
					snd_cursorup.Play();
 | 
			
		||||
					mus_trade.Stop();
 | 
			
		||||
					mus_sail.Play();
 | 
			
		||||
					guiControl.trade.show = false;
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
		else if (guiControl.trade.screen == "buy") {
 | 
			
		||||
			// console.log(guiControl.trade.screen);
 | 
			
		||||
			// Limit Cursor
 | 
			
		||||
			if (guiControl.trade.cursorPosition < 0) {
 | 
			
		||||
				guiControl.trade.cursorPosition = 2;
 | 
			
		||||
			}
 | 
			
		||||
			if (guiControl.trade.cursorPosition > 2) {
 | 
			
		||||
				guiControl.trade.cursorPosition = 0;
 | 
			
		||||
			}
 | 
			
		||||
          // snd_select.Play();
 | 
			
		||||
          guiControl.trade.cursorPosition = 0;
 | 
			
		||||
          guiControl.trade.page = 0;
 | 
			
		||||
          // console.log(guiControl.trade.screen);
 | 
			
		||||
        }
 | 
			
		||||
        if (ct_cancel().down) {
 | 
			
		||||
          snd_cursorup.Play();
 | 
			
		||||
          mus_trade.Stop();
 | 
			
		||||
          mus_sail.Play();
 | 
			
		||||
          guiControl.trade.show = false;
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
    else if (guiControl.trade.screen == "buy") {
 | 
			
		||||
      // console.log(guiControl.trade.screen);
 | 
			
		||||
      // Limit Cursor
 | 
			
		||||
      if (guiControl.trade.cursorPosition < 0) {
 | 
			
		||||
        guiControl.trade.cursorPosition = 2;
 | 
			
		||||
      }
 | 
			
		||||
      if (guiControl.trade.cursorPosition > 2) {
 | 
			
		||||
        guiControl.trade.cursorPosition = 0;
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
			// Title
 | 
			
		||||
			guiControl.drawPixelText("Buy", guiControl.trade.leftBorder - pixel(2), guiControl.topOfBackground, 10, "black", 6);
 | 
			
		||||
      // Title
 | 
			
		||||
      guiControl.drawPixelText("Buy", guiControl.trade.leftBorder - pixel(2), guiControl.topOfBackground, 10, "black", 6);
 | 
			
		||||
 | 
			
		||||
			// Money icon
 | 
			
		||||
			guiControl.drawIcon(7, 2, guiControl.trade.padding, guiControl.trade.rowTop(0) - pixel(3));
 | 
			
		||||
			guiControl.drawPixelText(G.inventory.moneyDisplay(), guiControl.trade.padding + pixel(guiControl.iconSize + 2), guiControl.trade.rowTop(0) + pixel(2) - pixel(3), 10, "black", 4);
 | 
			
		||||
			
 | 
			
		||||
			// Cargo icons
 | 
			
		||||
			var items = guiControl.trade.island.CheckInventory();	// Contains the item ids that have more than 1 item
 | 
			
		||||
      // Money icon
 | 
			
		||||
      guiControl.drawIcon(7, 2, guiControl.trade.padding, guiControl.trade.rowTop(0) - pixel(3));
 | 
			
		||||
      guiControl.drawPixelText(G.inventory.moneyDisplay(), guiControl.trade.padding + pixel(guiControl.iconSize + 2), guiControl.trade.rowTop(0) + pixel(2) - pixel(3), 10, "black", 4);
 | 
			
		||||
      
 | 
			
		||||
      // Cargo icons
 | 
			
		||||
      var items = guiControl.trade.island.CheckInventory();  // Contains the item ids that have more than 1 item
 | 
			
		||||
 | 
			
		||||
			// Limit page
 | 
			
		||||
			if (guiControl.trade.page < 0) {
 | 
			
		||||
				guiControl.trade.page = items.length - 1;
 | 
			
		||||
			}
 | 
			
		||||
			if (guiControl.trade.page > items.length - 1) {
 | 
			
		||||
				guiControl.trade.page = 0;
 | 
			
		||||
			}
 | 
			
		||||
      // Limit page
 | 
			
		||||
      if (guiControl.trade.page < 0) {
 | 
			
		||||
        guiControl.trade.page = items.length - 1;
 | 
			
		||||
      }
 | 
			
		||||
      if (guiControl.trade.page > items.length - 1) {
 | 
			
		||||
        guiControl.trade.page = 0;
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
			if (items.length > 0) {
 | 
			
		||||
				var itemPrice = G.economy.cargoItemWorth[items[guiControl.trade.page]] + guiControl.trade.island.priceDifferences[items[guiControl.trade.page]] - guiControl.trade.island.haggleAmount;
 | 
			
		||||
				if (itemPrice < 1) itemPrice = 1;
 | 
			
		||||
				var itemPriceDisplay = itemPrice.toString() + " c";
 | 
			
		||||
				guiControl.drawItem(items[guiControl.trade.page], guiControl.trade.leftBorder, guiControl.trade.rowTop(1) - pixel(5));
 | 
			
		||||
				guiControl.drawPixelText(itemPriceDisplay, guiControl.trade.leftBorder + pixel(guiControl.iconSize + 4), guiControl.trade.rowTop(1) - pixel(5) + pixel(), 8, "black", 6);
 | 
			
		||||
      if (items.length > 0) {
 | 
			
		||||
        var itemPrice = G.economy.cargoItemWorth[items[guiControl.trade.page]] + guiControl.trade.island.priceDifferences[items[guiControl.trade.page]] - guiControl.trade.island.haggleAmount;
 | 
			
		||||
        if (itemPrice < 1) itemPrice = 1;
 | 
			
		||||
        var itemPriceDisplay = itemPrice.toString() + " c";
 | 
			
		||||
        guiControl.drawItem(items[guiControl.trade.page], guiControl.trade.leftBorder, guiControl.trade.rowTop(1) - pixel(5));
 | 
			
		||||
        guiControl.drawPixelText(itemPriceDisplay, guiControl.trade.leftBorder + pixel(guiControl.iconSize + 4), guiControl.trade.rowTop(1) - pixel(5) + pixel(), 8, "black", 6);
 | 
			
		||||
 | 
			
		||||
				if (items.length > 1) {
 | 
			
		||||
					guiControl.drawPageArrow("left", guiControl.trade.padding, guiControl.trade.rowTop(1) - pixel(5));
 | 
			
		||||
					guiControl.drawPageArrow("right", OS.camera.width - pixel(4) - guiControl.trade.padding, guiControl.trade.rowTop(1) - pixel(5));
 | 
			
		||||
				}
 | 
			
		||||
        if (items.length > 1) {
 | 
			
		||||
          guiControl.drawPageArrow("left", guiControl.trade.padding, guiControl.trade.rowTop(1) - pixel(5));
 | 
			
		||||
          guiControl.drawPageArrow("right", OS.camera.width - pixel(4) - guiControl.trade.padding, guiControl.trade.rowTop(1) - pixel(5));
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
				// Amounts
 | 
			
		||||
				guiControl.drawPixelText("Shop" + guiControl.trade.island.inventory[items[guiControl.trade.page]].toString(), OS.camera.width - pixel(20), guiControl.trade.rowTop(2) - pixel(6) + pixel(), 4, (guiControl.trade.island.CanBuyFrom(items[guiControl.trade.page], itemPrice)) ? "black" : "yellow", 4);
 | 
			
		||||
				guiControl.drawPixelText("Own " + G.inventory.cargo[items[guiControl.trade.page]].toString(), OS.camera.width - pixel(20), guiControl.trade.rowTop(3) - pixel(6) + pixel(), 4, (G.inventory.cargo[items[guiControl.trade.page]] < G.stats.hold) ? "black" : "yellow", 4);
 | 
			
		||||
			} else {
 | 
			
		||||
				guiControl.drawPixelText("Sold Out!", guiControl.trade.leftBorder, guiControl.trade.rowTop(1) - pixel(5) + pixel(), 10, "black", 6);
 | 
			
		||||
			}
 | 
			
		||||
			
 | 
			
		||||
			// Draw Amount of Cargo
 | 
			
		||||
			guiControl.drawIcon(1, 1, OS.camera.width - pixel(20), guiControl.trade.rowTop(4) - pixel(5));
 | 
			
		||||
			guiControl.drawPixelText(G.inventory.CheckCargo().length.toString(), OS.camera.width - pixel(20) + (guiControl.iconScaled + pixel()), guiControl.trade.rowTop(4) - pixel(4), 4, (G.inventory.CheckCargo().length < G.stats.inventory) ? "black" : "yellow", 6);
 | 
			
		||||
        // Amounts
 | 
			
		||||
        guiControl.drawPixelText("Shop" + guiControl.trade.island.inventory[items[guiControl.trade.page]].toString(), OS.camera.width - pixel(20), guiControl.trade.rowTop(2) - pixel(6) + pixel(), 4, (guiControl.trade.island.CanBuyFrom(items[guiControl.trade.page], itemPrice)) ? "black" : "yellow", 4);
 | 
			
		||||
        guiControl.drawPixelText("Own " + G.inventory.cargo[items[guiControl.trade.page]].toString(), OS.camera.width - pixel(20), guiControl.trade.rowTop(3) - pixel(6) + pixel(), 4, (G.inventory.cargo[items[guiControl.trade.page]] < G.stats.hold) ? "black" : "yellow", 4);
 | 
			
		||||
      } else {
 | 
			
		||||
        guiControl.drawPixelText("Sold Out!", guiControl.trade.leftBorder, guiControl.trade.rowTop(1) - pixel(5) + pixel(), 10, "black", 6);
 | 
			
		||||
      }
 | 
			
		||||
      
 | 
			
		||||
      // Draw Amount of Cargo
 | 
			
		||||
      guiControl.drawIcon(1, 1, OS.camera.width - pixel(20), guiControl.trade.rowTop(4) - pixel(5));
 | 
			
		||||
      guiControl.drawPixelText(G.inventory.CheckCargo().length.toString(), OS.camera.width - pixel(20) + (guiControl.iconScaled + pixel()), guiControl.trade.rowTop(4) - pixel(4), 4, (G.inventory.CheckCargo().length < G.stats.inventory) ? "black" : "yellow", 6);
 | 
			
		||||
 | 
			
		||||
			// Yes/No Options
 | 
			
		||||
			guiControl.drawPixelText("Haggle", guiControl.trade.leftBorder, guiControl.trade.rowTop(2) - pixel(2), 8, (guiControl.trade.island.timesHaggledToday >= G.stats.popularity) ? "yellow" : ((items.length > 0 && guiControl.trade.island.haggleAmount == 0) ? "black" : "white"), 6);
 | 
			
		||||
			guiControl.drawPixelText((guiControl.trade.island.CanBuyFrom(items[guiControl.trade.page], itemPrice)) ? "Yes" : "Over!", guiControl.trade.leftBorder, guiControl.trade.rowTop(3) - pixel(2), 8, (items.length > 0 && G.inventory.CanBuy(items[guiControl.trade.page], itemPrice)) ? ((guiControl.trade.island.CanBuyFrom(items[guiControl.trade.page], itemPrice)) ? "black" : "yellow") : "white", 6);
 | 
			
		||||
      // Yes/No Options
 | 
			
		||||
      guiControl.drawPixelText("Haggle", guiControl.trade.leftBorder, guiControl.trade.rowTop(2) - pixel(2), 8, (guiControl.trade.island.timesHaggledToday >= G.stats.popularity) ? "yellow" : ((items.length > 0 && guiControl.trade.island.haggleAmount == 0) ? "black" : "white"), 6);
 | 
			
		||||
      guiControl.drawPixelText((guiControl.trade.island.CanBuyFrom(items[guiControl.trade.page], itemPrice)) ? "Yes" : "Over!", guiControl.trade.leftBorder, guiControl.trade.rowTop(3) - pixel(2), 8, (items.length > 0 && G.inventory.CanBuy(items[guiControl.trade.page], itemPrice)) ? ((guiControl.trade.island.CanBuyFrom(items[guiControl.trade.page], itemPrice)) ? "black" : "yellow") : "white", 6);
 | 
			
		||||
 | 
			
		||||
			// Back Text
 | 
			
		||||
			guiControl.drawPixelText("Back", guiControl.trade.leftBorder, guiControl.trade.rowTop(4) - pixel(2), 8, "black", 6);
 | 
			
		||||
			
 | 
			
		||||
			// Draw cursor
 | 
			
		||||
			guiControl.drawCursor(guiControl.trade.leftBorder - (guiControl.iconScaled), guiControl.trade.rowTop(guiControl.trade.cursorPosition + 2) - pixel(3));
 | 
			
		||||
      // Back Text
 | 
			
		||||
      guiControl.drawPixelText("Back", guiControl.trade.leftBorder, guiControl.trade.rowTop(4) - pixel(2), 8, "black", 6);
 | 
			
		||||
      
 | 
			
		||||
      // Draw cursor
 | 
			
		||||
      guiControl.drawCursor(guiControl.trade.leftBorder - (guiControl.iconScaled), guiControl.trade.rowTop(guiControl.trade.cursorPosition + 2) - pixel(3));
 | 
			
		||||
 | 
			
		||||
			// Button Action
 | 
			
		||||
			if (guiControl.trade.activateDelay <= 0) {
 | 
			
		||||
				if (ct_confirm().down) {
 | 
			
		||||
					switch (guiControl.trade.cursorPosition) {
 | 
			
		||||
						case 0:		// Haggle
 | 
			
		||||
							if (items.length > 0 && (guiControl.trade.island.timesHaggledToday <= G.stats.popularity) &&	// If there are items and you haven't haggled too much
 | 
			
		||||
								guiControl.trade.island.haggleAmount == 0 && Math.floor(Math.randomRange(0, 100)) < G.stats.popularity)	// Or you haven't haggled yet and get a random number less than your popularity, haggle successfully.
 | 
			
		||||
							{
 | 
			
		||||
								snd_sell.Play();
 | 
			
		||||
								guiControl.trade.island.haggleAmount = G.stats.haggling;
 | 
			
		||||
							} else {
 | 
			
		||||
								snd_cannotbuy.Play();
 | 
			
		||||
								guiControl.trade.island.timesHaggledToday++;
 | 
			
		||||
							}
 | 
			
		||||
      // Button Action
 | 
			
		||||
      if (guiControl.trade.activateDelay <= 0) {
 | 
			
		||||
        if (ct_confirm().down) {
 | 
			
		||||
          switch (guiControl.trade.cursorPosition) {
 | 
			
		||||
            case 0: {  // Haggle
 | 
			
		||||
              if (items.length > 0 && (guiControl.trade.island.timesHaggledToday <= G.stats.popularity) &&  // If there are items and you haven't haggled too much
 | 
			
		||||
                guiControl.trade.island.haggleAmount == 0 && Math.floor(Math.randomRange(0, 100)) < G.stats.popularity)  // Or you haven't haggled yet and get a random number less than your popularity, haggle successfully.
 | 
			
		||||
              {
 | 
			
		||||
                snd_sell.Play();
 | 
			
		||||
                guiControl.trade.island.haggleAmount = G.stats.haggling;
 | 
			
		||||
              } else {
 | 
			
		||||
                snd_cannotbuy.Play();
 | 
			
		||||
                guiControl.trade.island.timesHaggledToday++;
 | 
			
		||||
              }
 | 
			
		||||
							break;
 | 
			
		||||
						case 1:		// Buy
 | 
			
		||||
							if (items.length > 0 &&
 | 
			
		||||
								G.inventory.CanBuy(items[guiControl.trade.page], itemPrice) &&
 | 
			
		||||
								guiControl.trade.island.CanBuyFrom(items[guiControl.trade.page], itemPrice))	//If cursor is over yes and you can buy, buy it.
 | 
			
		||||
							{
 | 
			
		||||
								snd_buy.Play();
 | 
			
		||||
								guiControl.trade.island.BuyFrom(items[guiControl.trade.page], itemPrice);
 | 
			
		||||
							} else {
 | 
			
		||||
								snd_cannotbuy.Play();
 | 
			
		||||
							}
 | 
			
		||||
						}
 | 
			
		||||
            case 1: {  // Buy
 | 
			
		||||
              if (items.length > 0 &&
 | 
			
		||||
                G.inventory.CanBuy(items[guiControl.trade.page], itemPrice) &&
 | 
			
		||||
                guiControl.trade.island.CanBuyFrom(items[guiControl.trade.page], itemPrice))  //If cursor is over yes and you can buy, buy it.
 | 
			
		||||
              {
 | 
			
		||||
                snd_buy.Play();
 | 
			
		||||
                guiControl.trade.island.BuyFrom(items[guiControl.trade.page], itemPrice);
 | 
			
		||||
              } else {
 | 
			
		||||
                snd_cannotbuy.Play();
 | 
			
		||||
              }
 | 
			
		||||
							break;
 | 
			
		||||
						default:
 | 
			
		||||
							snd_cursorup.Play();
 | 
			
		||||
							guiControl.trade.screen = "main";
 | 
			
		||||
							guiControl.trade.activateDelay = 5;
 | 
			
		||||
							guiControl.trade.cursorPosition = 0;	// The position where "Buy" is on main screen.
 | 
			
		||||
						}
 | 
			
		||||
            default: {
 | 
			
		||||
              snd_cursorup.Play();
 | 
			
		||||
              guiControl.trade.screen = "main";
 | 
			
		||||
              guiControl.trade.activateDelay = 5;
 | 
			
		||||
              guiControl.trade.cursorPosition = 0;  // The position where "Buy" is on main screen.
 | 
			
		||||
							break;
 | 
			
		||||
					}
 | 
			
		||||
					// console.log(guiControl.trade.screen);
 | 
			
		||||
				}
 | 
			
		||||
				if (ct_cancel().down) {
 | 
			
		||||
					snd_cursorup.Play();
 | 
			
		||||
					guiControl.trade.screen = "main";
 | 
			
		||||
					guiControl.trade.activateDelay = 5;
 | 
			
		||||
					guiControl.trade.cursorPosition = 0;	// The position where "Buy" is on main screen.
 | 
			
		||||
					// console.log(guiControl.trade.screen);
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
		else if (guiControl.trade.screen == "sell") {
 | 
			
		||||
			// console.log(guiControl.trade.screen);
 | 
			
		||||
			// Limit Cursor
 | 
			
		||||
			if (guiControl.trade.cursorPosition < 0) {
 | 
			
		||||
				guiControl.trade.cursorPosition = 2;
 | 
			
		||||
			}
 | 
			
		||||
			if (guiControl.trade.cursorPosition > 2) {
 | 
			
		||||
				guiControl.trade.cursorPosition = 0;
 | 
			
		||||
			}
 | 
			
		||||
						}
 | 
			
		||||
          }
 | 
			
		||||
          // console.log(guiControl.trade.screen);
 | 
			
		||||
        }
 | 
			
		||||
        if (ct_cancel().down) {
 | 
			
		||||
          snd_cursorup.Play();
 | 
			
		||||
          guiControl.trade.screen = "main";
 | 
			
		||||
          guiControl.trade.activateDelay = 5;
 | 
			
		||||
          guiControl.trade.cursorPosition = 0;  // The position where "Buy" is on main screen.
 | 
			
		||||
          // console.log(guiControl.trade.screen);
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
    else if (guiControl.trade.screen == "sell") {
 | 
			
		||||
      // console.log(guiControl.trade.screen);
 | 
			
		||||
      // Limit Cursor
 | 
			
		||||
      if (guiControl.trade.cursorPosition < 0) {
 | 
			
		||||
        guiControl.trade.cursorPosition = 2;
 | 
			
		||||
      }
 | 
			
		||||
      if (guiControl.trade.cursorPosition > 2) {
 | 
			
		||||
        guiControl.trade.cursorPosition = 0;
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
			// Title
 | 
			
		||||
			guiControl.drawPixelText("Sell", guiControl.trade.leftBorder - pixel(2), guiControl.topOfBackground, 10, "black", 6);
 | 
			
		||||
      // Title
 | 
			
		||||
      guiControl.drawPixelText("Sell", guiControl.trade.leftBorder - pixel(2), guiControl.topOfBackground, 10, "black", 6);
 | 
			
		||||
 | 
			
		||||
			// Money icon
 | 
			
		||||
			guiControl.drawIcon(7, 2, guiControl.trade.padding, guiControl.trade.rowTop(0) - pixel(3));
 | 
			
		||||
			guiControl.drawPixelText(G.inventory.moneyDisplay(), guiControl.trade.padding + pixel(guiControl.iconSize + 2), guiControl.trade.rowTop(0) + pixel(2) - pixel(3), 10, "black", 4);
 | 
			
		||||
			
 | 
			
		||||
			// Cargo icons
 | 
			
		||||
			var items = G.inventory.CheckCargo();	// Contains the item ids that have more than 1 item
 | 
			
		||||
      // Money icon
 | 
			
		||||
      guiControl.drawIcon(7, 2, guiControl.trade.padding, guiControl.trade.rowTop(0) - pixel(3));
 | 
			
		||||
      guiControl.drawPixelText(G.inventory.moneyDisplay(), guiControl.trade.padding + pixel(guiControl.iconSize + 2), guiControl.trade.rowTop(0) + pixel(2) - pixel(3), 10, "black", 4);
 | 
			
		||||
      
 | 
			
		||||
      // Cargo icons
 | 
			
		||||
      var items = G.inventory.CheckCargo();  // Contains the item ids that have more than 1 item
 | 
			
		||||
 | 
			
		||||
			// Limit page
 | 
			
		||||
			if (guiControl.trade.page < 0) {
 | 
			
		||||
				guiControl.trade.page = items.length - 1;
 | 
			
		||||
			}
 | 
			
		||||
			if (guiControl.trade.page > items.length - 1) {
 | 
			
		||||
				guiControl.trade.page = 0;
 | 
			
		||||
			}
 | 
			
		||||
      // Limit page
 | 
			
		||||
      if (guiControl.trade.page < 0) {
 | 
			
		||||
        guiControl.trade.page = items.length - 1;
 | 
			
		||||
      }
 | 
			
		||||
      if (guiControl.trade.page > items.length - 1) {
 | 
			
		||||
        guiControl.trade.page = 0;
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
			if (items.length > 0) {
 | 
			
		||||
				var itemPrice = G.economy.cargoItemWorth[items[guiControl.trade.page]] + guiControl.trade.island.priceDifferences[items[guiControl.trade.page]];
 | 
			
		||||
				var priceCut = 0.5 + ((guiControl.trade.island.haggleAmount == 0) ? 0 : (G.stats.popularity * 0.01 * 0.5)); // If haggled successfully, lessen the price cut by half of your popularity's percent worth.
 | 
			
		||||
				itemPrice = Math.round(itemPrice * priceCut);
 | 
			
		||||
				if (itemPrice < 1) itemPrice = 1;
 | 
			
		||||
				var itemPriceDisplay = itemPrice.toString() + " c";
 | 
			
		||||
				guiControl.drawItem(items[guiControl.trade.page], guiControl.trade.leftBorder, guiControl.trade.rowTop(1) - pixel(5));
 | 
			
		||||
				guiControl.drawPixelText(itemPriceDisplay, guiControl.trade.leftBorder + pixel(guiControl.iconSize + 4), guiControl.trade.rowTop(1) - pixel(5) + pixel(), 8, "black", 6);
 | 
			
		||||
      if (items.length > 0) {
 | 
			
		||||
        var itemPrice = G.economy.cargoItemWorth[items[guiControl.trade.page]] + guiControl.trade.island.priceDifferences[items[guiControl.trade.page]];
 | 
			
		||||
        var priceCut = 0.5 + ((guiControl.trade.island.haggleAmount == 0) ? 0 : (G.stats.popularity * 0.01 * 0.5)); // If haggled successfully, lessen the price cut by half of your popularity's percent worth.
 | 
			
		||||
        itemPrice = Math.round(itemPrice * priceCut);
 | 
			
		||||
        if (itemPrice < 1) itemPrice = 1;
 | 
			
		||||
        var itemPriceDisplay = itemPrice.toString() + " c";
 | 
			
		||||
        guiControl.drawItem(items[guiControl.trade.page], guiControl.trade.leftBorder, guiControl.trade.rowTop(1) - pixel(5));
 | 
			
		||||
        guiControl.drawPixelText(itemPriceDisplay, guiControl.trade.leftBorder + pixel(guiControl.iconSize + 4), guiControl.trade.rowTop(1) - pixel(5) + pixel(), 8, "black", 6);
 | 
			
		||||
 | 
			
		||||
				if (items.length > 1) {
 | 
			
		||||
					guiControl.drawPageArrow("left", guiControl.trade.padding, guiControl.trade.rowTop(1) - pixel(5));
 | 
			
		||||
					guiControl.drawPageArrow("right", OS.camera.width - pixel(4) - guiControl.trade.padding, guiControl.trade.rowTop(1) - pixel(5));
 | 
			
		||||
				}
 | 
			
		||||
        if (items.length > 1) {
 | 
			
		||||
          guiControl.drawPageArrow("left", guiControl.trade.padding, guiControl.trade.rowTop(1) - pixel(5));
 | 
			
		||||
          guiControl.drawPageArrow("right", OS.camera.width - pixel(4) - guiControl.trade.padding, guiControl.trade.rowTop(1) - pixel(5));
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
				// Amounts
 | 
			
		||||
				guiControl.drawPixelText("Shop" + guiControl.trade.island.inventory[items[guiControl.trade.page]].toString(), OS.camera.width - pixel(20), guiControl.trade.rowTop(2) - pixel(6) + pixel(), 4, (guiControl.trade.island.CanSellTo(items[guiControl.trade.page], itemPrice)) ? "black" : "yellow", 4);
 | 
			
		||||
				guiControl.drawPixelText("Own " + G.inventory.cargo[items[guiControl.trade.page]].toString(), OS.camera.width - pixel(20), guiControl.trade.rowTop(3) - pixel(6) + pixel(), 4, (G.inventory.cargo[items[guiControl.trade.page]] > 0) ? "black" : "yellow", 4);
 | 
			
		||||
			} else {
 | 
			
		||||
				guiControl.drawPixelText("No Cargo!", guiControl.trade.padding, guiControl.trade.rowTop(1) - pixel(5) + pixel(), 10, "black", 6);
 | 
			
		||||
			}
 | 
			
		||||
        // Amounts
 | 
			
		||||
        guiControl.drawPixelText("Shop" + guiControl.trade.island.inventory[items[guiControl.trade.page]].toString(), OS.camera.width - pixel(20), guiControl.trade.rowTop(2) - pixel(6) + pixel(), 4, (guiControl.trade.island.CanSellTo(items[guiControl.trade.page], itemPrice)) ? "black" : "yellow", 4);
 | 
			
		||||
        guiControl.drawPixelText("Own " + G.inventory.cargo[items[guiControl.trade.page]].toString(), OS.camera.width - pixel(20), guiControl.trade.rowTop(3) - pixel(6) + pixel(), 4, (G.inventory.cargo[items[guiControl.trade.page]] > 0) ? "black" : "yellow", 4);
 | 
			
		||||
      } else {
 | 
			
		||||
        guiControl.drawPixelText("No Cargo!", guiControl.trade.padding, guiControl.trade.rowTop(1) - pixel(5) + pixel(), 10, "black", 6);
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
			// Draw Amount of Cargo
 | 
			
		||||
			guiControl.drawIcon(1, 1, OS.camera.width - pixel(20), guiControl.trade.rowTop(4) - pixel(5));
 | 
			
		||||
			guiControl.drawPixelText(G.inventory.CheckCargo().length.toString(), OS.camera.width - pixel(20) + (guiControl.iconScaled + pixel()), guiControl.trade.rowTop(4) - pixel(4), 4, (G.inventory.CheckCargo().length > 0) ? "black" : "yellow", 6);
 | 
			
		||||
      // Draw Amount of Cargo
 | 
			
		||||
      guiControl.drawIcon(1, 1, OS.camera.width - pixel(20), guiControl.trade.rowTop(4) - pixel(5));
 | 
			
		||||
      guiControl.drawPixelText(G.inventory.CheckCargo().length.toString(), OS.camera.width - pixel(20) + (guiControl.iconScaled + pixel()), guiControl.trade.rowTop(4) - pixel(4), 4, (G.inventory.CheckCargo().length > 0) ? "black" : "yellow", 6);
 | 
			
		||||
 | 
			
		||||
			// Yes/No Options
 | 
			
		||||
			guiControl.drawPixelText("Hagl?", guiControl.trade.leftBorder, guiControl.trade.rowTop(2) - pixel(2), 8, (guiControl.trade.island.timesHaggledToday >= G.stats.popularity) ? "yellow" : ((items.length > 0 && guiControl.trade.island.haggleAmount == 0) ? "black" : "white"), 6);
 | 
			
		||||
			guiControl.drawPixelText((guiControl.trade.island.CanSellTo(items[guiControl.trade.page], itemPrice)) ? "Yes" : "Over!", guiControl.trade.leftBorder, guiControl.trade.rowTop(3) - pixel(2), 8, (items.length > 0 && G.inventory.CanSell(items[guiControl.trade.page])) ? ((guiControl.trade.island.CanSellTo(items[guiControl.trade.page], itemPrice)) ? "black" : "yellow") : "white", 6);
 | 
			
		||||
      // Yes/No Options
 | 
			
		||||
      guiControl.drawPixelText("Hagl?", guiControl.trade.leftBorder, guiControl.trade.rowTop(2) - pixel(2), 8, (guiControl.trade.island.timesHaggledToday >= G.stats.popularity) ? "yellow" : ((items.length > 0 && guiControl.trade.island.haggleAmount == 0) ? "black" : "white"), 6);
 | 
			
		||||
      guiControl.drawPixelText((guiControl.trade.island.CanSellTo(items[guiControl.trade.page], itemPrice)) ? "Yes" : "Over!", guiControl.trade.leftBorder, guiControl.trade.rowTop(3) - pixel(2), 8, (items.length > 0 && G.inventory.CanSell(items[guiControl.trade.page])) ? ((guiControl.trade.island.CanSellTo(items[guiControl.trade.page], itemPrice)) ? "black" : "yellow") : "white", 6);
 | 
			
		||||
 | 
			
		||||
			// Back Text
 | 
			
		||||
			guiControl.drawPixelText("Back", guiControl.trade.leftBorder, guiControl.trade.rowTop(4) - pixel(2), 8, "black", 6);
 | 
			
		||||
			
 | 
			
		||||
			// Draw cursor
 | 
			
		||||
			guiControl.drawCursor(guiControl.trade.leftBorder - (guiControl.iconScaled), guiControl.trade.rowTop(guiControl.trade.cursorPosition + 2) - pixel(3));
 | 
			
		||||
      // Back Text
 | 
			
		||||
      guiControl.drawPixelText("Back", guiControl.trade.leftBorder, guiControl.trade.rowTop(4) - pixel(2), 8, "black", 6);
 | 
			
		||||
      
 | 
			
		||||
      // Draw cursor
 | 
			
		||||
      guiControl.drawCursor(guiControl.trade.leftBorder - (guiControl.iconScaled), guiControl.trade.rowTop(guiControl.trade.cursorPosition + 2) - pixel(3));
 | 
			
		||||
 | 
			
		||||
			// Button Action
 | 
			
		||||
			if (guiControl.trade.activateDelay <= 0) {
 | 
			
		||||
				if (ct_confirm().down) {
 | 
			
		||||
					switch (guiControl.trade.cursorPosition) {
 | 
			
		||||
						case 0:		// Haggle
 | 
			
		||||
							if (items.length > 0 && (guiControl.trade.island.timesHaggledToday <= G.stats.popularity) &&
 | 
			
		||||
								guiControl.trade.island.haggleAmount == 0 && Math.floor(Math.randomRange(0, 100)) < G.stats.popularity)		// If you haven't haggled yet and get a random number less than your popularity, haggle successfully.
 | 
			
		||||
							{
 | 
			
		||||
								snd_sell.Play();
 | 
			
		||||
								guiControl.trade.island.haggleAmount = G.stats.haggling;
 | 
			
		||||
							} else {
 | 
			
		||||
								snd_cannotbuy.Play();
 | 
			
		||||
								guiControl.trade.island.timesHaggledToday++;
 | 
			
		||||
							}
 | 
			
		||||
      // Button Action
 | 
			
		||||
      if (guiControl.trade.activateDelay <= 0) {
 | 
			
		||||
        if (ct_confirm().down) {
 | 
			
		||||
          switch (guiControl.trade.cursorPosition) {
 | 
			
		||||
            case 0: {  // Haggle
 | 
			
		||||
              if (items.length > 0 && (guiControl.trade.island.timesHaggledToday <= G.stats.popularity) &&
 | 
			
		||||
                guiControl.trade.island.haggleAmount == 0 && Math.floor(Math.randomRange(0, 100)) < G.stats.popularity)    // If you haven't haggled yet and get a random number less than your popularity, haggle successfully.
 | 
			
		||||
              {
 | 
			
		||||
                snd_sell.Play();
 | 
			
		||||
                guiControl.trade.island.haggleAmount = G.stats.haggling;
 | 
			
		||||
              } else {
 | 
			
		||||
                snd_cannotbuy.Play();
 | 
			
		||||
                guiControl.trade.island.timesHaggledToday++;
 | 
			
		||||
              }
 | 
			
		||||
							break;
 | 
			
		||||
						case 1:		// Sell
 | 
			
		||||
							if (items.length > 0 &&
 | 
			
		||||
								G.inventory.CanSell(items[guiControl.trade.page]) &&
 | 
			
		||||
								guiControl.trade.island.CanSellTo(items[guiControl.trade.page], itemPrice))	//If cursor is over yes and you can buy, buy it.
 | 
			
		||||
							{
 | 
			
		||||
								snd_sell.Play();
 | 
			
		||||
								guiControl.trade.island.SellTo(items[guiControl.trade.page], itemPrice);
 | 
			
		||||
							} else {
 | 
			
		||||
								snd_cannotbuy.Play();
 | 
			
		||||
							}
 | 
			
		||||
						}
 | 
			
		||||
            case 1: {  // Sell
 | 
			
		||||
              if (items.length > 0 &&
 | 
			
		||||
                G.inventory.CanSell(items[guiControl.trade.page]) &&
 | 
			
		||||
                guiControl.trade.island.CanSellTo(items[guiControl.trade.page], itemPrice))  //If cursor is over yes and you can buy, buy it.
 | 
			
		||||
              {
 | 
			
		||||
                snd_sell.Play();
 | 
			
		||||
                guiControl.trade.island.SellTo(items[guiControl.trade.page], itemPrice);
 | 
			
		||||
              } else {
 | 
			
		||||
                snd_cannotbuy.Play();
 | 
			
		||||
              }
 | 
			
		||||
							break;
 | 
			
		||||
						default:
 | 
			
		||||
							snd_cursorup.Play();
 | 
			
		||||
							guiControl.trade.screen = "main";
 | 
			
		||||
							guiControl.trade.activateDelay = 5;
 | 
			
		||||
							guiControl.trade.cursorPosition = 1;	// The position where "Sell" is on main screen.
 | 
			
		||||
						}
 | 
			
		||||
            default: {
 | 
			
		||||
              snd_cursorup.Play();
 | 
			
		||||
              guiControl.trade.screen = "main";
 | 
			
		||||
              guiControl.trade.activateDelay = 5;
 | 
			
		||||
              guiControl.trade.cursorPosition = 1;  // The position where "Sell" is on main screen.
 | 
			
		||||
							break;
 | 
			
		||||
					}
 | 
			
		||||
					// console.log(guiControl.trade.screen);
 | 
			
		||||
				}
 | 
			
		||||
				if (ct_cancel().down) {
 | 
			
		||||
					snd_cursorup.Play();
 | 
			
		||||
					guiControl.trade.screen = "main";
 | 
			
		||||
					guiControl.trade.activateDelay = 5;
 | 
			
		||||
					guiControl.trade.cursorPosition = 1;	// The position where "Sell" is on main screen.
 | 
			
		||||
					// console.log(guiControl.trade.screen);
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
		else if (guiControl.trade.screen == "tavern") {
 | 
			
		||||
			// Limit Cursor
 | 
			
		||||
			if (guiControl.trade.cursorPosition < 0) {
 | 
			
		||||
				guiControl.trade.cursorPosition = 2;
 | 
			
		||||
			}
 | 
			
		||||
			if (guiControl.trade.cursorPosition > 2) {
 | 
			
		||||
				guiControl.trade.cursorPosition = 0;
 | 
			
		||||
			}
 | 
			
		||||
						}
 | 
			
		||||
          }
 | 
			
		||||
          // console.log(guiControl.trade.screen);
 | 
			
		||||
        }
 | 
			
		||||
        if (ct_cancel().down) {
 | 
			
		||||
          snd_cursorup.Play();
 | 
			
		||||
          guiControl.trade.screen = "main";
 | 
			
		||||
          guiControl.trade.activateDelay = 5;
 | 
			
		||||
          guiControl.trade.cursorPosition = 1;  // The position where "Sell" is on main screen.
 | 
			
		||||
          // console.log(guiControl.trade.screen);
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
    else if (guiControl.trade.screen == "tavern") {
 | 
			
		||||
      // Limit Cursor
 | 
			
		||||
      if (guiControl.trade.cursorPosition < 0) {
 | 
			
		||||
        guiControl.trade.cursorPosition = 2;
 | 
			
		||||
      }
 | 
			
		||||
      if (guiControl.trade.cursorPosition > 2) {
 | 
			
		||||
        guiControl.trade.cursorPosition = 0;
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
			// Title
 | 
			
		||||
			guiControl.drawPixelText("Tavern", guiControl.leftBorder - pixel(6), guiControl.topOfBackground, 8, "black", 6);
 | 
			
		||||
      // Title
 | 
			
		||||
      guiControl.drawPixelText("Tavern", guiControl.leftBorder - pixel(6), guiControl.topOfBackground, 8, "black", 6);
 | 
			
		||||
 | 
			
		||||
			var innPrice = G.economy.innCost + guiControl.trade.island.innPriceDifference;
 | 
			
		||||
			guiControl.drawPixelText("Heal costs " + innPrice.toString() + " C", guiControl.leftBorder - pixel(5), guiControl.trade.rowTop(0) - pixel(), 10, "black", 4);
 | 
			
		||||
      var innPrice = G.economy.innCost + guiControl.trade.island.innPriceDifference;
 | 
			
		||||
      guiControl.drawPixelText("Heal costs " + innPrice.toString() + " C", guiControl.leftBorder - pixel(5), guiControl.trade.rowTop(0) - pixel(), 10, "black", 4);
 | 
			
		||||
 | 
			
		||||
			// Money icon
 | 
			
		||||
			guiControl.drawIcon(7, 2, guiControl.trade.padding, guiControl.trade.rowTop(1) - pixel());
 | 
			
		||||
			guiControl.drawPixelText(G.inventory.moneyDisplay(), guiControl.trade.padding + pixel(guiControl.iconSize + 2), guiControl.trade.rowTop(1) + pixel(), 10, "black", 4);
 | 
			
		||||
			
 | 
			
		||||
			// Options
 | 
			
		||||
			guiControl.drawPixelText("Gossip", guiControl.leftBorder, guiControl.trade.rowTop(2) - pixel(), 0, "black", 6);
 | 
			
		||||
			guiControl.drawPixelText("Heal", guiControl.leftBorder, guiControl.trade.rowTop(3) - pixel(), 4, (G.inventory.money > innPrice && G.stats.illness > 0) ? "black" : "white", 6);
 | 
			
		||||
			// Illness icon
 | 
			
		||||
			guiControl.drawIcon(4, 1, guiControl.leftBorder + pixel(30), guiControl.trade.rowTop(3) - pixel(2));
 | 
			
		||||
			guiControl.drawPixelText(G.stats.illness.toString(), guiControl.leftBorder + pixel(30) + pixel(guiControl.iconSize + 2), guiControl.trade.rowTop(3), 2, (G.stats.illness == 0) ? "yellow" : "black", 4);
 | 
			
		||||
			
 | 
			
		||||
			// Back Text
 | 
			
		||||
			guiControl.drawPixelText("Back", guiControl.leftBorder, guiControl.trade.rowTop(4) - pixel(), 8, "black", 6);
 | 
			
		||||
			
 | 
			
		||||
			// Draw cursor
 | 
			
		||||
			guiControl.drawCursor(guiControl.leftBorder - (guiControl.iconScaled), guiControl.trade.rowTop(guiControl.trade.cursorPosition + 2) - pixel(2));
 | 
			
		||||
      // Money icon
 | 
			
		||||
      guiControl.drawIcon(7, 2, guiControl.trade.padding, guiControl.trade.rowTop(1) - pixel());
 | 
			
		||||
      guiControl.drawPixelText(G.inventory.moneyDisplay(), guiControl.trade.padding + pixel(guiControl.iconSize + 2), guiControl.trade.rowTop(1) + pixel(), 10, "black", 4);
 | 
			
		||||
      
 | 
			
		||||
      // Options
 | 
			
		||||
      guiControl.drawPixelText("Gossip", guiControl.leftBorder, guiControl.trade.rowTop(2) - pixel(), 0, "black", 6);
 | 
			
		||||
      guiControl.drawPixelText("Heal", guiControl.leftBorder, guiControl.trade.rowTop(3) - pixel(), 4, (G.inventory.money > innPrice && G.stats.illness > 0) ? "black" : "white", 6);
 | 
			
		||||
      // Illness icon
 | 
			
		||||
      guiControl.drawIcon(4, 1, guiControl.leftBorder + pixel(30), guiControl.trade.rowTop(3) - pixel(2));
 | 
			
		||||
      guiControl.drawPixelText(G.stats.illness.toString(), guiControl.leftBorder + pixel(30) + pixel(guiControl.iconSize + 2), guiControl.trade.rowTop(3), 2, (G.stats.illness == 0) ? "yellow" : "black", 4);
 | 
			
		||||
      
 | 
			
		||||
      // Back Text
 | 
			
		||||
      guiControl.drawPixelText("Back", guiControl.leftBorder, guiControl.trade.rowTop(4) - pixel(), 8, "black", 6);
 | 
			
		||||
      
 | 
			
		||||
      // Draw cursor
 | 
			
		||||
      guiControl.drawCursor(guiControl.leftBorder - (guiControl.iconScaled), guiControl.trade.rowTop(guiControl.trade.cursorPosition + 2) - pixel(2));
 | 
			
		||||
 | 
			
		||||
			// Button Action
 | 
			
		||||
			if (guiControl.trade.activateDelay <= 0) {
 | 
			
		||||
				if (ct_confirm().down) {
 | 
			
		||||
					switch (guiControl.trade.cursorPosition) {
 | 
			
		||||
						case 0:
 | 
			
		||||
							snd_select.Play();
 | 
			
		||||
							guiControl.trade.screen = "gossip";
 | 
			
		||||
							guiControl.trade.activateDelay = 5;
 | 
			
		||||
							guiControl.trade.cursorPosition = 2;	// The position where "Supplies" is on main screen.
 | 
			
		||||
      // Button Action
 | 
			
		||||
      if (guiControl.trade.activateDelay <= 0) {
 | 
			
		||||
        if (ct_confirm().down) {
 | 
			
		||||
          switch (guiControl.trade.cursorPosition) {
 | 
			
		||||
            case 0: {
 | 
			
		||||
              snd_select.Play();
 | 
			
		||||
              guiControl.trade.screen = "gossip";
 | 
			
		||||
              guiControl.trade.activateDelay = 5;
 | 
			
		||||
              guiControl.trade.cursorPosition = 2;  // The position where "Supplies" is on main screen.
 | 
			
		||||
							break;
 | 
			
		||||
						case 1:
 | 
			
		||||
							if (G.stats.illness > 0 && G.inventory.money > innPrice) {	//If cursor is over yes, heal illness with supplies.
 | 
			
		||||
								snd_heal.Play();
 | 
			
		||||
								guiControl.trade.island.StayAtInn();
 | 
			
		||||
							} else {
 | 
			
		||||
								snd_cannotbuy.Play();
 | 
			
		||||
							}
 | 
			
		||||
						}
 | 
			
		||||
            case 1: {
 | 
			
		||||
              if (G.stats.illness > 0 && G.inventory.money > innPrice) {  //If cursor is over yes, heal illness with supplies.
 | 
			
		||||
                snd_heal.Play();
 | 
			
		||||
                guiControl.trade.island.StayAtInn();
 | 
			
		||||
              } else {
 | 
			
		||||
                snd_cannotbuy.Play();
 | 
			
		||||
              }
 | 
			
		||||
							break;
 | 
			
		||||
						default:
 | 
			
		||||
							snd_cursorup.Play();
 | 
			
		||||
							guiControl.trade.screen = "main";
 | 
			
		||||
							guiControl.trade.activateDelay = 5;
 | 
			
		||||
							guiControl.trade.cursorPosition = 2;	// The position where "Supplies" is on main screen.
 | 
			
		||||
						}
 | 
			
		||||
            default: {
 | 
			
		||||
              snd_cursorup.Play();
 | 
			
		||||
              guiControl.trade.screen = "main";
 | 
			
		||||
              guiControl.trade.activateDelay = 5;
 | 
			
		||||
              guiControl.trade.cursorPosition = 2;  // The position where "Supplies" is on main screen.
 | 
			
		||||
							break;
 | 
			
		||||
					}
 | 
			
		||||
						}
 | 
			
		||||
          }
 | 
			
		||||
 | 
			
		||||
					// Give a cooldown so you don't accidentally do something you don't want.
 | 
			
		||||
					guiControl.trade.activateDelay = 5;
 | 
			
		||||
				}
 | 
			
		||||
          // Give a cooldown so you don't accidentally do something you don't want.
 | 
			
		||||
          guiControl.trade.activateDelay = 5;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
				if (ct_cancel().down) {
 | 
			
		||||
					snd_cursorup.Play();
 | 
			
		||||
					guiControl.trade.screen = "main";
 | 
			
		||||
					guiControl.trade.activateDelay = 5;
 | 
			
		||||
					guiControl.trade.cursorPosition = 2;	// The position where "Supplies" is on main screen.
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
		else if (guiControl.trade.screen == "gossip") {
 | 
			
		||||
			// console.log(guiControl.trade.screen);
 | 
			
		||||
			// Limit Cursor
 | 
			
		||||
			if (guiControl.trade.cursorPosition < 0) {
 | 
			
		||||
				guiControl.trade.cursorPosition = 0;
 | 
			
		||||
			}
 | 
			
		||||
			if (guiControl.trade.cursorPosition > 0) {
 | 
			
		||||
				guiControl.trade.cursorPosition = 0;
 | 
			
		||||
			}
 | 
			
		||||
        if (ct_cancel().down) {
 | 
			
		||||
          snd_cursorup.Play();
 | 
			
		||||
          guiControl.trade.screen = "main";
 | 
			
		||||
          guiControl.trade.activateDelay = 5;
 | 
			
		||||
          guiControl.trade.cursorPosition = 2;  // The position where "Supplies" is on main screen.
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
    else if (guiControl.trade.screen == "gossip") {
 | 
			
		||||
      // console.log(guiControl.trade.screen);
 | 
			
		||||
      // 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, guiControl.topOfBackground, 10, "black", 6);
 | 
			
		||||
      // Title
 | 
			
		||||
      guiControl.drawPixelText("Gossip", guiControl.trade.padding, guiControl.topOfBackground, 10, "black", 6);
 | 
			
		||||
 | 
			
		||||
			guiControl.drawPixelText("Use the map with M to find new islands to trade with!", guiControl.trade.padding, guiControl.trade.rowTop(0) - pixel(2), 0, "black", 4);
 | 
			
		||||
			
 | 
			
		||||
			// Back Text
 | 
			
		||||
			guiControl.drawPixelText("Back", guiControl.trade.leftBorder, guiControl.trade.rowTop(4) - pixel(2), 8, "black", 6);
 | 
			
		||||
			
 | 
			
		||||
			// Draw cursor
 | 
			
		||||
			guiControl.drawCursor(guiControl.trade.leftBorder - (guiControl.iconScaled), guiControl.trade.rowTop(4) - pixel(3));
 | 
			
		||||
      guiControl.drawPixelText("Use the map with M to find new islands to trade with!", guiControl.trade.padding, guiControl.trade.rowTop(0) - pixel(2), 0, "black", 4);
 | 
			
		||||
      
 | 
			
		||||
      // Back Text
 | 
			
		||||
      guiControl.drawPixelText("Back", guiControl.trade.leftBorder, guiControl.trade.rowTop(4) - pixel(2), 8, "black", 6);
 | 
			
		||||
      
 | 
			
		||||
      // Draw cursor
 | 
			
		||||
      guiControl.drawCursor(guiControl.trade.leftBorder - (guiControl.iconScaled), guiControl.trade.rowTop(4) - pixel(3));
 | 
			
		||||
 | 
			
		||||
			// Button Action
 | 
			
		||||
			if (guiControl.trade.activateDelay <= 0) {
 | 
			
		||||
				if (ct_confirm().down || ct_cancel().down) {
 | 
			
		||||
					snd_cursorup.Play();
 | 
			
		||||
					guiControl.trade.screen = "tavern";
 | 
			
		||||
					guiControl.trade.activateDelay = 5;
 | 
			
		||||
					guiControl.trade.cursorPosition = 0;
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
      // Button Action
 | 
			
		||||
      if (guiControl.trade.activateDelay <= 0) {
 | 
			
		||||
        if (ct_confirm().down || ct_cancel().down) {
 | 
			
		||||
          snd_cursorup.Play();
 | 
			
		||||
          guiControl.trade.screen = "tavern";
 | 
			
		||||
          guiControl.trade.activateDelay = 5;
 | 
			
		||||
          guiControl.trade.cursorPosition = 0;
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										66
									
								
								index.html
									
										
									
									
									
								
							
							
						
						
									
										66
									
								
								index.html
									
										
									
									
									
								
							| 
						 | 
				
			
			@ -15,38 +15,41 @@
 | 
			
		|||
    <![endif]-->
 | 
			
		||||
  </head>
 | 
			
		||||
  <body>
 | 
			
		||||
    <div class="wrapper">
 | 
			
		||||
      <header>
 | 
			
		||||
        <h1 class="header">Trade Winds</h1>
 | 
			
		||||
        <p class="header">An exploration and trade game built with <a href="https://github.com/Alamantus/OversimplifiedJS" target="_blank">OversimplifiedJS</a></p>
 | 
			
		||||
  <div class="wrapper">
 | 
			
		||||
    <header>
 | 
			
		||||
      <h1 class="header">Trade Winds</h1>
 | 
			
		||||
      <p class="header">An exploration and trade game built with <a href="https://github.com/Alamantus/OversimplifiedJS" target="_blank">OversimplifiedJS</a></p>
 | 
			
		||||
 | 
			
		||||
        <ul>
 | 
			
		||||
          <li class="download"><a class="buttons" href="https://github.com/AlamantusGameDev/Trade-Winds/zipball/master">Download ZIP</a></li>
 | 
			
		||||
          <li class="download"><a class="buttons" href="https://github.com/AlamantusGameDev/Trade-Winds/tarball/master">Download TAR</a></li>
 | 
			
		||||
          <li><a class="buttons github" href="https://github.com/AlamantusGameDev/Trade-Winds">View On GitHub</a></li>
 | 
			
		||||
        </ul>
 | 
			
		||||
      <ul>
 | 
			
		||||
        <li class="download"><a class="buttons" href="https://github.com/AlamantusGameDev/Trade-Winds/zipball/master">Download ZIP</a></li>
 | 
			
		||||
        <li class="download"><a class="buttons" href="https://github.com/AlamantusGameDev/Trade-Winds/tarball/master">Download TAR</a></li>
 | 
			
		||||
        <li><a class="buttons github" href="https://github.com/AlamantusGameDev/Trade-Winds">View On GitHub</a></li>
 | 
			
		||||
      </ul>
 | 
			
		||||
 | 
			
		||||
        <p class="header">This project is maintained by <a class="header name" href="http://www.alamantus.com">Alamantus GameDev</a></p>
 | 
			
		||||
      <p class="header">This project is maintained by <a class="header name" href="http://www.alamantus.com">Alamantus GameDev</a></p>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
      </header>
 | 
			
		||||
      <section>
 | 
			
		||||
          <h2>Play</h2>
 | 
			
		||||
          <p><i>You may need to refresh the page if all of the assets do not load.</i></p>
 | 
			
		||||
          <canvas style="border:solid 1px black;" id="game">
 | 
			
		||||
          Your browser is really old, dude - no canvas support! Update this thing!
 | 
			
		||||
          </canvas>
 | 
			
		||||
          <div id="audio"></div>
 | 
			
		||||
      </section>
 | 
			
		||||
      
 | 
			
		||||
      <section>
 | 
			
		||||
        <h2>
 | 
			
		||||
<a id="about" class="anchor" href="#about" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>About</h2>
 | 
			
		||||
    </header>
 | 
			
		||||
    <section>
 | 
			
		||||
        <h2>Play</h2>
 | 
			
		||||
        <p><i>You may need to refresh the page if all of the assets do not load.</i></p>
 | 
			
		||||
        <canvas style="border:solid 1px black;" id="game">
 | 
			
		||||
        Your browser is really old, dude - no canvas support! Update this thing!
 | 
			
		||||
        </canvas>
 | 
			
		||||
        <div id="audio"></div>
 | 
			
		||||
    </section>
 | 
			
		||||
    
 | 
			
		||||
    <section>
 | 
			
		||||
      <h2>
 | 
			
		||||
        <a id="about" class="anchor" href="#about" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>
 | 
			
		||||
        About
 | 
			
		||||
      </h2>
 | 
			
		||||
 | 
			
		||||
<p>This page contains the in-dev version of the game, and the most recent stable version will be <a href="https://alamantus-gamedev.itch.io/trade-winds">on Itch.io</a>.</p>
 | 
			
		||||
 | 
			
		||||
<h2>
 | 
			
		||||
<a id="controls" class="anchor" href="#controls" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>Controls</h2>
 | 
			
		||||
<a id="controls" class="anchor" href="#controls" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>Controls
 | 
			
		||||
</h2>
 | 
			
		||||
 | 
			
		||||
<strong>In-Game Controls</strong>
 | 
			
		||||
<ul>
 | 
			
		||||
| 
						 | 
				
			
			@ -100,12 +103,11 @@
 | 
			
		|||
<p>The game saves at the start of each day. If you stop in the middle of the day, you will lose your progress for that day.</p>
 | 
			
		||||
 | 
			
		||||
<p>There's no end game yet, but you can sail around and trade as long as you want. Try to make as much money as you can!</p>
 | 
			
		||||
      </section>
 | 
			
		||||
      <footer>
 | 
			
		||||
        <p><small>Hosted on <a href="https://pages.github.com">GitHub Pages</a> using the Dinky theme</small></p>
 | 
			
		||||
      </footer>
 | 
			
		||||
    </div>
 | 
			
		||||
    <!--[if !IE]><script>fixScale(document);</script><![endif]-->
 | 
			
		||||
		
 | 
			
		||||
  </body>
 | 
			
		||||
  </section>
 | 
			
		||||
  <footer>
 | 
			
		||||
    <p><small>Hosted on <a href="https://pages.github.com">GitHub Pages</a> using the Dinky theme</small></p>
 | 
			
		||||
  </footer>
 | 
			
		||||
</div>
 | 
			
		||||
<!--[if !IE]><script>fixScale(document);</script><![endif]-->
 | 
			
		||||
</body>
 | 
			
		||||
</html>
 | 
			
		||||
| 
						 | 
				
			
			@ -1,20 +1,19 @@
 | 
			
		|||
fixScale = function(doc) {
 | 
			
		||||
 | 
			
		||||
	var addEvent = 'addEventListener',
 | 
			
		||||
	    type = 'gesturestart',
 | 
			
		||||
	    qsa = 'querySelectorAll',
 | 
			
		||||
	    scales = [1, 1],
 | 
			
		||||
	    meta = qsa in doc ? doc[qsa]('meta[name=viewport]') : [];
 | 
			
		||||
  var addEvent = 'addEventListener',
 | 
			
		||||
      type = 'gesturestart',
 | 
			
		||||
      qsa = 'querySelectorAll',
 | 
			
		||||
      scales = [1, 1],
 | 
			
		||||
      meta = qsa in doc ? doc[qsa]('meta[name=viewport]') : [];
 | 
			
		||||
 | 
			
		||||
	function fix() {
 | 
			
		||||
		meta.content = 'width=device-width,minimum-scale=' + scales[0] + ',maximum-scale=' + scales[1];
 | 
			
		||||
		doc.removeEventListener(type, fix, true);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if ((meta = meta[meta.length - 1]) && addEvent in doc) {
 | 
			
		||||
		fix();
 | 
			
		||||
		scales = [.25, 1.6];
 | 
			
		||||
		doc[addEvent](type, fix, true);
 | 
			
		||||
	}
 | 
			
		||||
  function fix() {
 | 
			
		||||
    meta.content = 'width=device-width,minimum-scale=' + scales[0] + ',maximum-scale=' + scales[1];
 | 
			
		||||
    doc.removeEventListener(type, fix, true);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  if ((meta = meta[meta.length - 1]) && addEvent in doc) {
 | 
			
		||||
    fix();
 | 
			
		||||
    scales = [.25, 1.6];
 | 
			
		||||
    doc[addEvent](type, fix, true);
 | 
			
		||||
  }
 | 
			
		||||
};
 | 
			
		||||
| 
						 | 
				
			
			@ -15,5 +15,5 @@ var snd_sell = new OS.E.AddSound("Sell", {wav: "audio/sounds/Sell.wav", mp3: "au
 | 
			
		|||
var snd_wave = new OS.E.AddSound("Wave Crash", {wav: "audio/sounds/Wave_Crash.wav", mp3: "audio/sounds/Wave_Crash.mp3"});
 | 
			
		||||
 | 
			
		||||
function loadAudio() {
 | 
			
		||||
    if (Oversimplified.DEBUG.showMessages) console.log("Ran loadAudio()");
 | 
			
		||||
  if (Oversimplified.DEBUG.showMessages) console.log("Ran loadAudio()");
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -15,53 +15,53 @@ var ct_m = OS.C.Add("M", OS.Keycode.m);
 | 
			
		|||
var ct_esc = OS.C.Add("Cancel", OS.Keycode.escape);
 | 
			
		||||
 | 
			
		||||
function loadControls () {
 | 
			
		||||
    if (Oversimplified.DEBUG.showMessages) console.log("Ran loadControls()");
 | 
			
		||||
	if (Oversimplified.DEBUG.showMessages) console.log("Ran loadControls()");
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function ct_up () {
 | 
			
		||||
	return {
 | 
			
		||||
		held : ct_wasd_up.held || ct_arrow_up.held,
 | 
			
		||||
		down : ct_wasd_up.down || ct_arrow_up.down,
 | 
			
		||||
		up : ct_wasd_up.up || ct_arrow_up.up
 | 
			
		||||
	}
 | 
			
		||||
  return {
 | 
			
		||||
    held : ct_wasd_up.held || ct_arrow_up.held,
 | 
			
		||||
    down : ct_wasd_up.down || ct_arrow_up.down,
 | 
			
		||||
    up : ct_wasd_up.up || ct_arrow_up.up,
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function ct_left () {
 | 
			
		||||
	return {
 | 
			
		||||
		held : ct_wasd_left.held || ct_arrow_left.held,
 | 
			
		||||
		down : ct_wasd_left.down || ct_arrow_left.down,
 | 
			
		||||
		up : ct_wasd_left.up || ct_arrow_left.up
 | 
			
		||||
	}
 | 
			
		||||
  return {
 | 
			
		||||
    held : ct_wasd_left.held || ct_arrow_left.held,
 | 
			
		||||
    down : ct_wasd_left.down || ct_arrow_left.down,
 | 
			
		||||
    up : ct_wasd_left.up || ct_arrow_left.up,
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function ct_down () {
 | 
			
		||||
	return {
 | 
			
		||||
		held : ct_wasd_down.held || ct_arrow_down.held,
 | 
			
		||||
		down : ct_wasd_down.down || ct_arrow_down.down,
 | 
			
		||||
		up : ct_wasd_down.up || ct_arrow_down.up
 | 
			
		||||
	}
 | 
			
		||||
  return {
 | 
			
		||||
    held : ct_wasd_down.held || ct_arrow_down.held,
 | 
			
		||||
    down : ct_wasd_down.down || ct_arrow_down.down,
 | 
			
		||||
    up : ct_wasd_down.up || ct_arrow_down.up,
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function ct_right () {
 | 
			
		||||
	return {
 | 
			
		||||
		held : ct_wasd_right.held || ct_arrow_right.held,
 | 
			
		||||
		down : ct_wasd_right.down || ct_arrow_right.down,
 | 
			
		||||
		up : ct_wasd_right.up || ct_arrow_right.up
 | 
			
		||||
	}
 | 
			
		||||
  return {
 | 
			
		||||
    held : ct_wasd_right.held || ct_arrow_right.held,
 | 
			
		||||
    down : ct_wasd_right.down || ct_arrow_right.down,
 | 
			
		||||
    up : ct_wasd_right.up || ct_arrow_right.up,
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function ct_confirm () {
 | 
			
		||||
	return {
 | 
			
		||||
		held : ct_space.held || ct_z.held,
 | 
			
		||||
		down : ct_space.down || ct_z.down,
 | 
			
		||||
		up : ct_space.up || ct_z.up
 | 
			
		||||
	}
 | 
			
		||||
  return {
 | 
			
		||||
    held : ct_space.held || ct_z.held,
 | 
			
		||||
    down : ct_space.down || ct_z.down,
 | 
			
		||||
    up : ct_space.up || ct_z.up,
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function ct_cancel () {
 | 
			
		||||
	return {
 | 
			
		||||
		held : ct_shift.held || ct_x.held,
 | 
			
		||||
		down : ct_shift.down || ct_x.down,
 | 
			
		||||
		up : ct_shift.up || ct_x.up
 | 
			
		||||
	}
 | 
			
		||||
  return {
 | 
			
		||||
    held : ct_shift.held || ct_x.held,
 | 
			
		||||
    down : ct_shift.down || ct_x.down,
 | 
			
		||||
    up : ct_shift.up || ct_x.up,
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										654
									
								
								loadGUIs.js
									
										
									
									
									
								
							
							
						
						
									
										654
									
								
								loadGUIs.js
									
										
									
									
									
								
							| 
						 | 
				
			
			@ -1,79 +1,79 @@
 | 
			
		|||
function loadGUIs() {
 | 
			
		||||
	OS.AddScript("gui/titleScreen.js");
 | 
			
		||||
	OS.AddScript("gui/inventoryGUI.js");
 | 
			
		||||
	OS.AddScript("gui/mapGUI.js");
 | 
			
		||||
	OS.AddScript("gui/tradeGUI.js");
 | 
			
		||||
  OS.AddScript("gui/titleScreen.js");
 | 
			
		||||
  OS.AddScript("gui/inventoryGUI.js");
 | 
			
		||||
  OS.AddScript("gui/mapGUI.js");
 | 
			
		||||
  OS.AddScript("gui/tradeGUI.js");
 | 
			
		||||
 | 
			
		||||
	if (Oversimplified.DEBUG.showMessages) console.log("Ran loadGUIs()");
 | 
			
		||||
  if (Oversimplified.DEBUG.showMessages) console.log("Ran loadGUIs()");
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
var guiControl = {
 | 
			
		||||
	topOfBackground: pixel(2 + 2),
 | 
			
		||||
	upperBorder: pixel(13 + 2),
 | 
			
		||||
	lowerBorder: pixel(3 + 2),
 | 
			
		||||
	leftBorder: pixel(10 + 2),
 | 
			
		||||
	rightBorder: pixel(5 + 2),
 | 
			
		||||
	iconSize: 8,
 | 
			
		||||
	iconScaled: pixel(8),
 | 
			
		||||
  topOfBackground: pixel(2 + 2),
 | 
			
		||||
  upperBorder: pixel(13 + 2),
 | 
			
		||||
  lowerBorder: pixel(3 + 2),
 | 
			
		||||
  leftBorder: pixel(10 + 2),
 | 
			
		||||
  rightBorder: pixel(5 + 2),
 | 
			
		||||
  iconSize: 8,
 | 
			
		||||
  iconScaled: pixel(8),
 | 
			
		||||
 | 
			
		||||
	drawEnergyBar: function () {
 | 
			
		||||
	    var percentage = G.stats.energy / G.stats.maxEnergy;
 | 
			
		||||
	    var barHeight = pixel(2);
 | 
			
		||||
	    var maxBarWidth = 32;
 | 
			
		||||
	    var barWidth = pixel(Math.round(maxBarWidth * percentage));
 | 
			
		||||
  drawEnergyBar: function () {
 | 
			
		||||
		var percentage = G.stats.energy / G.stats.maxEnergy;
 | 
			
		||||
		var barHeight = pixel(2);
 | 
			
		||||
		var maxBarWidth = 32;
 | 
			
		||||
		var barWidth = pixel(Math.round(maxBarWidth * percentage));
 | 
			
		||||
 | 
			
		||||
	    var saveFillStyle = OS.context.fillStyle;
 | 
			
		||||
	    OS.context.fillStyle = "#0055FF";
 | 
			
		||||
	    OS.context.fillRect(64, OS.camera.height - barHeight - pixel(4), barWidth, barHeight);
 | 
			
		||||
	    OS.context.fillStyle = saveFillStyle;
 | 
			
		||||
	},
 | 
			
		||||
	drawClock: function () {
 | 
			
		||||
	    var screenX = OS.camera.width - pixel(9) - pixel(2);
 | 
			
		||||
	    var screenY = OS.camera.height - pixel(9) - pixel(2);
 | 
			
		||||
	    var percentOfClock = guiControl.clockTimerCount / guiControl.clockTimerCutoff;
 | 
			
		||||
	    var clockFrameX = guiControl.gui_sheet.clock.x + (Math.floor(pixel(4) * percentOfClock) * pixel(9));
 | 
			
		||||
	    OS.context.drawImage(guiControl.gui_sheet, clockFrameX, guiControl.gui_sheet.clock.y, pixel(9), pixel(9), screenX, screenY, pixel(9), pixel(9));
 | 
			
		||||
	},
 | 
			
		||||
	drawSpeedGauge: function () {
 | 
			
		||||
	    var screenX = pixel(4);
 | 
			
		||||
	    var screenY = OS.camera.height - guiControl.iconScaled - pixel(4);
 | 
			
		||||
	    var sheetX = guiControl.gui_sheet.gauge.x + (G.player.currentSpeed * guiControl.iconScaled);
 | 
			
		||||
	    var sheetY = guiControl.gui_sheet.gauge.y;
 | 
			
		||||
	    OS.context.drawImage(guiControl.gui_sheet, sheetX, sheetY, guiControl.iconScaled, guiControl.iconScaled, screenX, screenY, guiControl.iconScaled, guiControl.iconScaled);
 | 
			
		||||
	},
 | 
			
		||||
		var saveFillStyle = OS.context.fillStyle;
 | 
			
		||||
		OS.context.fillStyle = "#0055FF";
 | 
			
		||||
		OS.context.fillRect(64, OS.camera.height - barHeight - pixel(4), barWidth, barHeight);
 | 
			
		||||
		OS.context.fillStyle = saveFillStyle;
 | 
			
		||||
  },
 | 
			
		||||
  drawClock: function () {
 | 
			
		||||
		var screenX = OS.camera.width - pixel(9) - pixel(2);
 | 
			
		||||
		var screenY = OS.camera.height - pixel(9) - pixel(2);
 | 
			
		||||
		var percentOfClock = guiControl.clockTimerCount / guiControl.clockTimerCutoff;
 | 
			
		||||
		var clockFrameX = guiControl.gui_sheet.clock.x + (Math.floor(pixel(4) * percentOfClock) * pixel(9));
 | 
			
		||||
		OS.context.drawImage(guiControl.gui_sheet, clockFrameX, guiControl.gui_sheet.clock.y, pixel(9), pixel(9), screenX, screenY, pixel(9), pixel(9));
 | 
			
		||||
  },
 | 
			
		||||
  drawSpeedGauge: function () {
 | 
			
		||||
		var screenX = pixel(4);
 | 
			
		||||
		var screenY = OS.camera.height - guiControl.iconScaled - pixel(4);
 | 
			
		||||
		var sheetX = guiControl.gui_sheet.gauge.x + (G.player.currentSpeed * guiControl.iconScaled);
 | 
			
		||||
		var sheetY = guiControl.gui_sheet.gauge.y;
 | 
			
		||||
		OS.context.drawImage(guiControl.gui_sheet, sheetX, sheetY, guiControl.iconScaled, guiControl.iconScaled, screenX, screenY, guiControl.iconScaled, guiControl.iconScaled);
 | 
			
		||||
  },
 | 
			
		||||
 | 
			
		||||
	iconPosition: function (cellPosition) {
 | 
			
		||||
		return (guiControl.iconScaled * cellPosition);
 | 
			
		||||
	},
 | 
			
		||||
	rowTop: function (rowNumber) {
 | 
			
		||||
		return guiControl.upperBorder + pixel((guiControl.iconSize + 2) * rowNumber);
 | 
			
		||||
	},
 | 
			
		||||
  iconPosition: function (cellPosition) {
 | 
			
		||||
    return (guiControl.iconScaled * cellPosition);
 | 
			
		||||
  },
 | 
			
		||||
  rowTop: function (rowNumber) {
 | 
			
		||||
    return guiControl.upperBorder + pixel((guiControl.iconSize + 2) * rowNumber);
 | 
			
		||||
  },
 | 
			
		||||
 | 
			
		||||
	drawIcon: function (cellX, cellY, xPosition, yPosition) {
 | 
			
		||||
		var iconSheetX = guiControl.gui_sheet.icons.x + guiControl.iconPosition(cellX);
 | 
			
		||||
		var iconSheetY = guiControl.gui_sheet.icons.y + guiControl.iconPosition(cellY);
 | 
			
		||||
		OS.context.drawImage(guiControl.gui_sheet, iconSheetX, iconSheetY, guiControl.iconScaled, guiControl.iconScaled, xPosition, yPosition, guiControl.iconScaled, guiControl.iconScaled);
 | 
			
		||||
	},
 | 
			
		||||
	drawItem: function (itemId, xPosition, yPosition) {
 | 
			
		||||
		var cellX = itemId % 4;
 | 
			
		||||
		var cellY = Math.floor(itemId / 4);
 | 
			
		||||
		var itemSheetX = guiControl.gui_sheet.items.x + guiControl.iconPosition(cellX);
 | 
			
		||||
		var itemSheetY = guiControl.gui_sheet.items.y + guiControl.iconPosition(cellY);
 | 
			
		||||
		OS.context.drawImage(guiControl.gui_sheet, itemSheetX, itemSheetY, guiControl.iconScaled, guiControl.iconScaled, xPosition, yPosition, guiControl.iconScaled, guiControl.iconScaled);
 | 
			
		||||
	},
 | 
			
		||||
	drawTitleImage: function () {
 | 
			
		||||
		OS.context.drawImage(guiControl.gui_sheet, guiControl.gui_sheet.titleImage.x, guiControl.gui_sheet.titleImage.y, guiControl.gui_sheet.titleImage.width, guiControl.gui_sheet.titleImage.height, 0, 0, guiControl.gui_sheet.titleImage.width, guiControl.gui_sheet.titleImage.height);
 | 
			
		||||
	},
 | 
			
		||||
	drawGUIBackground: function () {
 | 
			
		||||
		OS.context.drawImage(guiControl.gui_sheet, guiControl.gui_sheet.guiBackground.x, guiControl.gui_sheet.guiBackground.y, guiControl.gui_sheet.guiBackground.width, guiControl.gui_sheet.guiBackground.height, pixel(2), pixel(2), guiControl.gui_sheet.guiBackground.width, guiControl.gui_sheet.guiBackground.height);
 | 
			
		||||
	},
 | 
			
		||||
	drawCursor: function (xPosition, yPosition) {
 | 
			
		||||
		OS.context.drawImage(guiControl.gui_sheet, guiControl.gui_sheet.guiCursor.x, guiControl.gui_sheet.guiCursor.y, guiControl.iconScaled, guiControl.iconScaled, xPosition, yPosition, guiControl.iconScaled, guiControl.iconScaled);
 | 
			
		||||
	},
 | 
			
		||||
	drawPageArrow: function (direction, xPosition, yPosition) {
 | 
			
		||||
		var arrowSheetX = guiControl.gui_sheet.arrows.x + ((direction == "left") ? 0 : pixel(4));
 | 
			
		||||
		OS.context.drawImage(guiControl.gui_sheet, arrowSheetX, guiControl.gui_sheet.arrows.y, pixel(4), pixel(7), xPosition, yPosition, pixel(4), pixel(7));
 | 
			
		||||
	}
 | 
			
		||||
  drawIcon: function (cellX, cellY, xPosition, yPosition) {
 | 
			
		||||
    var iconSheetX = guiControl.gui_sheet.icons.x + guiControl.iconPosition(cellX);
 | 
			
		||||
    var iconSheetY = guiControl.gui_sheet.icons.y + guiControl.iconPosition(cellY);
 | 
			
		||||
    OS.context.drawImage(guiControl.gui_sheet, iconSheetX, iconSheetY, guiControl.iconScaled, guiControl.iconScaled, xPosition, yPosition, guiControl.iconScaled, guiControl.iconScaled);
 | 
			
		||||
  },
 | 
			
		||||
  drawItem: function (itemId, xPosition, yPosition) {
 | 
			
		||||
    var cellX = itemId % 4;
 | 
			
		||||
    var cellY = Math.floor(itemId / 4);
 | 
			
		||||
    var itemSheetX = guiControl.gui_sheet.items.x + guiControl.iconPosition(cellX);
 | 
			
		||||
    var itemSheetY = guiControl.gui_sheet.items.y + guiControl.iconPosition(cellY);
 | 
			
		||||
    OS.context.drawImage(guiControl.gui_sheet, itemSheetX, itemSheetY, guiControl.iconScaled, guiControl.iconScaled, xPosition, yPosition, guiControl.iconScaled, guiControl.iconScaled);
 | 
			
		||||
  },
 | 
			
		||||
  drawTitleImage: function () {
 | 
			
		||||
    OS.context.drawImage(guiControl.gui_sheet, guiControl.gui_sheet.titleImage.x, guiControl.gui_sheet.titleImage.y, guiControl.gui_sheet.titleImage.width, guiControl.gui_sheet.titleImage.height, 0, 0, guiControl.gui_sheet.titleImage.width, guiControl.gui_sheet.titleImage.height);
 | 
			
		||||
  },
 | 
			
		||||
  drawGUIBackground: function () {
 | 
			
		||||
    OS.context.drawImage(guiControl.gui_sheet, guiControl.gui_sheet.guiBackground.x, guiControl.gui_sheet.guiBackground.y, guiControl.gui_sheet.guiBackground.width, guiControl.gui_sheet.guiBackground.height, pixel(2), pixel(2), guiControl.gui_sheet.guiBackground.width, guiControl.gui_sheet.guiBackground.height);
 | 
			
		||||
  },
 | 
			
		||||
  drawCursor: function (xPosition, yPosition) {
 | 
			
		||||
    OS.context.drawImage(guiControl.gui_sheet, guiControl.gui_sheet.guiCursor.x, guiControl.gui_sheet.guiCursor.y, guiControl.iconScaled, guiControl.iconScaled, xPosition, yPosition, guiControl.iconScaled, guiControl.iconScaled);
 | 
			
		||||
  },
 | 
			
		||||
  drawPageArrow: function (direction, xPosition, yPosition) {
 | 
			
		||||
    var arrowSheetX = guiControl.gui_sheet.arrows.x + ((direction == "left") ? 0 : pixel(4));
 | 
			
		||||
    OS.context.drawImage(guiControl.gui_sheet, arrowSheetX, guiControl.gui_sheet.arrows.y, pixel(4), pixel(7), xPosition, yPosition, pixel(4), pixel(7));
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
guiControl.gui_sheet = new Image();
 | 
			
		||||
guiControl.gui_sheet.src = "images/gui_sheet.png";
 | 
			
		||||
| 
						 | 
				
			
			@ -100,247 +100,289 @@ guiControl.drawPixelText = function (text, x, y, wrapWidth, color, size) {
 | 
			
		|||
// Remember to set the pixel scale for x and y when you call the function!
 | 
			
		||||
// 4x4 font modified from http://pixeljoint.com/forum/forum_posts.asp?TID=18755&PID=185995#185995
 | 
			
		||||
// 5x6 font modified from http://atariage.com/forums/topic/165697-fonts/page-4#entry2081600
 | 
			
		||||
	text = text.toString().toUpperCase();
 | 
			
		||||
	
 | 
			
		||||
	var letterSizeX = pixel((size == 6) ? size - 1 : size);
 | 
			
		||||
	var letterSizeY = pixel(size);
 | 
			
		||||
	var maxWrapWidth = Math.floor(OS.camera.width / (letterSizeX + pixel(1)));
 | 
			
		||||
	
 | 
			
		||||
	wrapWidth = (wrapWidth <= 0 || wrapWidth > maxWrapWidth) ? maxWrapWidth : wrapWidth;
 | 
			
		||||
	
 | 
			
		||||
	// var alphabet = guiControl.alphabet_sheet[color + size.toString()];
 | 
			
		||||
  text = text.toString().toUpperCase();
 | 
			
		||||
  
 | 
			
		||||
  var letterSizeX = pixel((size == 6) ? size - 1 : size);
 | 
			
		||||
  var letterSizeY = pixel(size);
 | 
			
		||||
  var maxWrapWidth = Math.floor(OS.camera.width / (letterSizeX + pixel(1)));
 | 
			
		||||
  
 | 
			
		||||
  wrapWidth = (wrapWidth <= 0 || wrapWidth > maxWrapWidth) ? maxWrapWidth : wrapWidth;
 | 
			
		||||
  
 | 
			
		||||
  // var alphabet = guiControl.alphabet_sheet[color + size.toString()];
 | 
			
		||||
 | 
			
		||||
	// Make words wrap nicely, but let punctuation wrap.
 | 
			
		||||
	var wordsInText = text.split(" ");
 | 
			
		||||
	if (wordsInText.length > 1) {
 | 
			
		||||
		var indexToBreak = 0;
 | 
			
		||||
		var replacementText = "";
 | 
			
		||||
		var punctuation = [".", ",", "-", "?", "!"];
 | 
			
		||||
		for (var w = 0; w < wordsInText.length; w++) {
 | 
			
		||||
			// console.log("\"" + wordsInText[w].charAt(wordsInText[w].length - 1) + "\"");
 | 
			
		||||
			
 | 
			
		||||
			if (punctuation.indexOf(wordsInText[w]) == -1 && punctuation.indexOf(wordsInText[w].charAt(wordsInText[w].length - 1)) != -1) {
 | 
			
		||||
				// If the last character of a word is punctuation, separate it out
 | 
			
		||||
				wordsInText.splice(w + 1, 0, wordsInText[w].charAt(wordsInText[w].length - 1));
 | 
			
		||||
				// console.log("punctuation:" + wordsInText[w].charAt(wordsInText[w].length - 1));
 | 
			
		||||
				wordsInText[w] = wordsInText[w].substr(0, wordsInText[w].length - 1);
 | 
			
		||||
				// console.log("Turns to:" + wordsInText[w]);
 | 
			
		||||
				w--;
 | 
			
		||||
			} else if (replacementText.substr(indexToBreak).length + wordsInText[w].length + 1 <= wrapWidth) {
 | 
			
		||||
				// console.log("Adding: \"" + wordsInText[w] + " \" to \"" + replacementText.substr(indexToBreak) + "\"");
 | 
			
		||||
				// console.log(replacementText.substr(indexToBreak).length + wordsInText[w].length + " < " + wrapWidth);
 | 
			
		||||
				// console.log("\"" + replacementText.substr(indexToBreak) + "\"");
 | 
			
		||||
				replacementText += wordsInText[w];
 | 
			
		||||
  // Make words wrap nicely, but let punctuation wrap.
 | 
			
		||||
  var wordsInText = text.split(" ");
 | 
			
		||||
  if (wordsInText.length > 1) {
 | 
			
		||||
    var indexToBreak = 0;
 | 
			
		||||
    var replacementText = "";
 | 
			
		||||
    var punctuation = [".", ",", "-", "?", "!"];
 | 
			
		||||
    for (var w = 0; w < wordsInText.length; w++) {
 | 
			
		||||
      // console.log("\"" + wordsInText[w].charAt(wordsInText[w].length - 1) + "\"");
 | 
			
		||||
      
 | 
			
		||||
      if (punctuation.indexOf(wordsInText[w]) == -1 && punctuation.indexOf(wordsInText[w].charAt(wordsInText[w].length - 1)) != -1) {
 | 
			
		||||
        // If the last character of a word is punctuation, separate it out
 | 
			
		||||
        wordsInText.splice(w + 1, 0, wordsInText[w].charAt(wordsInText[w].length - 1));
 | 
			
		||||
        // console.log("punctuation:" + wordsInText[w].charAt(wordsInText[w].length - 1));
 | 
			
		||||
        wordsInText[w] = wordsInText[w].substr(0, wordsInText[w].length - 1);
 | 
			
		||||
        // console.log("Turns to:" + wordsInText[w]);
 | 
			
		||||
        w--;
 | 
			
		||||
      } else if (replacementText.substr(indexToBreak).length + wordsInText[w].length + 1 <= wrapWidth) {
 | 
			
		||||
        // console.log("Adding: \"" + wordsInText[w] + " \" to \"" + replacementText.substr(indexToBreak) + "\"");
 | 
			
		||||
        // console.log(replacementText.substr(indexToBreak).length + wordsInText[w].length + " < " + wrapWidth);
 | 
			
		||||
        // console.log("\"" + replacementText.substr(indexToBreak) + "\"");
 | 
			
		||||
        replacementText += wordsInText[w];
 | 
			
		||||
 | 
			
		||||
				if (punctuation.indexOf(wordsInText[w + 1]) == -1) {	// If the next word in the array is not punctuation,
 | 
			
		||||
					replacementText += " ";								// Then add a space after.
 | 
			
		||||
				}
 | 
			
		||||
				// console.log("Turns to: \"" + replacementText.substr(indexToBreak) + "\"");
 | 
			
		||||
			} else if (replacementText.substr(indexToBreak).length + wordsInText[w].length <= wrapWidth) {
 | 
			
		||||
				// console.log("Adding: \"" + wordsInText[w] + "\" to \"" + replacementText.substr(indexToBreak) + "\"");
 | 
			
		||||
				// console.log(replacementText.substr(indexToBreak).length + wordsInText[w].length + " < " + wrapWidth);
 | 
			
		||||
				// console.log("\"" + replacementText.substr(indexToBreak) + "\"");
 | 
			
		||||
				replacementText += wordsInText[w];
 | 
			
		||||
				// console.log("Turns to: \"" + replacementText.substr(indexToBreak) + "\"");
 | 
			
		||||
				indexToBreak = replacementText.length;
 | 
			
		||||
			} else {
 | 
			
		||||
				// console.log("Checking: \"" + replacementText.substr(indexToBreak) + wordsInText[w] + "\"");
 | 
			
		||||
				// console.log(replacementText.substr(indexToBreak).length + wordsInText[w].length + " > " + wrapWidth);
 | 
			
		||||
				// console.log("\"" + replacementText.substr(indexToBreak) + "\"");
 | 
			
		||||
				// indexToBreak = replacementText.length - 1;
 | 
			
		||||
				var numberOfSpaces = wrapWidth - replacementText.substr(indexToBreak).length;
 | 
			
		||||
				for (var s = 0; s < numberOfSpaces; s++) {
 | 
			
		||||
					replacementText += " ";
 | 
			
		||||
				}
 | 
			
		||||
				// console.log("Turns to: \"" + replacementText.substr(indexToBreak) + "\"");
 | 
			
		||||
				indexToBreak = replacementText.length;
 | 
			
		||||
				w--;
 | 
			
		||||
				// replacementText += wordsInText[w];
 | 
			
		||||
        if (punctuation.indexOf(wordsInText[w + 1]) == -1) {  // If the next word in the array is not punctuation,
 | 
			
		||||
          replacementText += " ";                // Then add a space after.
 | 
			
		||||
        }
 | 
			
		||||
        // console.log("Turns to: \"" + replacementText.substr(indexToBreak) + "\"");
 | 
			
		||||
      } else if (replacementText.substr(indexToBreak).length + wordsInText[w].length <= wrapWidth) {
 | 
			
		||||
        // console.log("Adding: \"" + wordsInText[w] + "\" to \"" + replacementText.substr(indexToBreak) + "\"");
 | 
			
		||||
        // console.log(replacementText.substr(indexToBreak).length + wordsInText[w].length + " < " + wrapWidth);
 | 
			
		||||
        // console.log("\"" + replacementText.substr(indexToBreak) + "\"");
 | 
			
		||||
        replacementText += wordsInText[w];
 | 
			
		||||
        // console.log("Turns to: \"" + replacementText.substr(indexToBreak) + "\"");
 | 
			
		||||
        indexToBreak = replacementText.length;
 | 
			
		||||
      } else {
 | 
			
		||||
        // console.log("Checking: \"" + replacementText.substr(indexToBreak) + wordsInText[w] + "\"");
 | 
			
		||||
        // console.log(replacementText.substr(indexToBreak).length + wordsInText[w].length + " > " + wrapWidth);
 | 
			
		||||
        // console.log("\"" + replacementText.substr(indexToBreak) + "\"");
 | 
			
		||||
        // indexToBreak = replacementText.length - 1;
 | 
			
		||||
        var numberOfSpaces = wrapWidth - replacementText.substr(indexToBreak).length;
 | 
			
		||||
        for (var s = 0; s < numberOfSpaces; s++) {
 | 
			
		||||
          replacementText += " ";
 | 
			
		||||
        }
 | 
			
		||||
        // console.log("Turns to: \"" + replacementText.substr(indexToBreak) + "\"");
 | 
			
		||||
        indexToBreak = replacementText.length;
 | 
			
		||||
        w--;
 | 
			
		||||
        // replacementText += wordsInText[w];
 | 
			
		||||
      }
 | 
			
		||||
      // console.log("----");
 | 
			
		||||
    }
 | 
			
		||||
    text = replacementText;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  for (var i = 0; i < text.length; i++) {
 | 
			
		||||
    var letterCellX, letterCellY;
 | 
			
		||||
    switch (text.charAt(i)) {
 | 
			
		||||
      case "A": {
 | 
			
		||||
        letterCellX = 0;
 | 
			
		||||
        letterCellY = 0;
 | 
			
		||||
				break;
 | 
			
		||||
			}
 | 
			
		||||
			// console.log("----");
 | 
			
		||||
		}
 | 
			
		||||
		text = replacementText;
 | 
			
		||||
	}
 | 
			
		||||
      case "B": {
 | 
			
		||||
        letterCellX = 1;
 | 
			
		||||
        letterCellY = 0;
 | 
			
		||||
				break;
 | 
			
		||||
			}
 | 
			
		||||
      case "C": {
 | 
			
		||||
        letterCellX = 2;
 | 
			
		||||
        letterCellY = 0;
 | 
			
		||||
				break;
 | 
			
		||||
			}
 | 
			
		||||
      case "D": {
 | 
			
		||||
        letterCellX = 3;
 | 
			
		||||
        letterCellY = 0;
 | 
			
		||||
				break;
 | 
			
		||||
			}
 | 
			
		||||
      case "E": {
 | 
			
		||||
        letterCellX = 4;
 | 
			
		||||
        letterCellY = 0;
 | 
			
		||||
				break;
 | 
			
		||||
			}
 | 
			
		||||
      case "F": {
 | 
			
		||||
        letterCellX = 5;
 | 
			
		||||
        letterCellY = 0;
 | 
			
		||||
				break;
 | 
			
		||||
			}
 | 
			
		||||
      case "G": {
 | 
			
		||||
        letterCellX = 0;
 | 
			
		||||
        letterCellY = 1;
 | 
			
		||||
				break;
 | 
			
		||||
			}
 | 
			
		||||
      case "H": {
 | 
			
		||||
        letterCellX = 1;
 | 
			
		||||
        letterCellY = 1;
 | 
			
		||||
				break;
 | 
			
		||||
			}
 | 
			
		||||
      case "I": {
 | 
			
		||||
        letterCellX = 2;
 | 
			
		||||
        letterCellY = 1;
 | 
			
		||||
				break;
 | 
			
		||||
			}
 | 
			
		||||
      case "J": {
 | 
			
		||||
        letterCellX = 3;
 | 
			
		||||
        letterCellY = 1;
 | 
			
		||||
				break;
 | 
			
		||||
			}
 | 
			
		||||
      case "K": {
 | 
			
		||||
        letterCellX = 4;
 | 
			
		||||
        letterCellY = 1;
 | 
			
		||||
				break;
 | 
			
		||||
			}
 | 
			
		||||
      case "L": {
 | 
			
		||||
        letterCellX = 5;
 | 
			
		||||
        letterCellY = 1;
 | 
			
		||||
				break;
 | 
			
		||||
			}
 | 
			
		||||
      case "M": {
 | 
			
		||||
        letterCellX = 0;
 | 
			
		||||
        letterCellY = 2;
 | 
			
		||||
				break;
 | 
			
		||||
			}
 | 
			
		||||
      case "N": {
 | 
			
		||||
        letterCellX = 1;
 | 
			
		||||
        letterCellY = 2;
 | 
			
		||||
				break;
 | 
			
		||||
			}
 | 
			
		||||
      case "O": {
 | 
			
		||||
        letterCellX = 2;
 | 
			
		||||
        letterCellY = 2;
 | 
			
		||||
				break;
 | 
			
		||||
			}
 | 
			
		||||
      case "P": {
 | 
			
		||||
        letterCellX = 3;
 | 
			
		||||
        letterCellY = 2;
 | 
			
		||||
				break;
 | 
			
		||||
			}
 | 
			
		||||
      case "Q": {
 | 
			
		||||
        letterCellX = 4;
 | 
			
		||||
        letterCellY = 2;
 | 
			
		||||
				break;
 | 
			
		||||
			}
 | 
			
		||||
      case "R": {
 | 
			
		||||
        letterCellX = 5;
 | 
			
		||||
        letterCellY = 2;
 | 
			
		||||
				break;
 | 
			
		||||
			}
 | 
			
		||||
      case "S": {
 | 
			
		||||
        letterCellX = 0;
 | 
			
		||||
        letterCellY = 3;
 | 
			
		||||
				break;
 | 
			
		||||
			}
 | 
			
		||||
      case "T": {
 | 
			
		||||
        letterCellX = 1;
 | 
			
		||||
        letterCellY = 3;
 | 
			
		||||
				break;
 | 
			
		||||
			}
 | 
			
		||||
      case "U": {
 | 
			
		||||
        letterCellX = 2;
 | 
			
		||||
        letterCellY = 3;
 | 
			
		||||
				break;
 | 
			
		||||
			}
 | 
			
		||||
      case "V": {
 | 
			
		||||
        letterCellX = 3;
 | 
			
		||||
        letterCellY = 3;
 | 
			
		||||
				break;
 | 
			
		||||
			}
 | 
			
		||||
      case "W": {
 | 
			
		||||
        letterCellX = 4;
 | 
			
		||||
        letterCellY = 3;
 | 
			
		||||
				break;
 | 
			
		||||
			}
 | 
			
		||||
      case "X": {
 | 
			
		||||
        letterCellX = 5;
 | 
			
		||||
        letterCellY = 3;
 | 
			
		||||
				break;
 | 
			
		||||
			}
 | 
			
		||||
      case "Y": {
 | 
			
		||||
        letterCellX = 0;
 | 
			
		||||
        letterCellY = 4;
 | 
			
		||||
				break;
 | 
			
		||||
			}
 | 
			
		||||
      case "Z": {
 | 
			
		||||
        letterCellX = 1;
 | 
			
		||||
        letterCellY = 4;
 | 
			
		||||
				break;
 | 
			
		||||
			}
 | 
			
		||||
      case "1": {
 | 
			
		||||
        letterCellX = 2;
 | 
			
		||||
        letterCellY = 4;
 | 
			
		||||
				break;
 | 
			
		||||
			}
 | 
			
		||||
      case "2": {
 | 
			
		||||
        letterCellX = 3;
 | 
			
		||||
        letterCellY = 4;
 | 
			
		||||
				break;
 | 
			
		||||
			}
 | 
			
		||||
      case "3": {
 | 
			
		||||
        letterCellX = 4;
 | 
			
		||||
        letterCellY = 4;
 | 
			
		||||
				break;
 | 
			
		||||
			}
 | 
			
		||||
      case "4": {
 | 
			
		||||
        letterCellX = 5;
 | 
			
		||||
        letterCellY = 4;
 | 
			
		||||
				break;
 | 
			
		||||
			}
 | 
			
		||||
      case "5": {
 | 
			
		||||
        letterCellX = 0;
 | 
			
		||||
        letterCellY = 5;
 | 
			
		||||
				break;
 | 
			
		||||
			}
 | 
			
		||||
      case "6": {
 | 
			
		||||
        letterCellX = 1;
 | 
			
		||||
        letterCellY = 5;
 | 
			
		||||
				break;
 | 
			
		||||
			}
 | 
			
		||||
      case "7": {
 | 
			
		||||
        letterCellX = 2;
 | 
			
		||||
        letterCellY = 5;
 | 
			
		||||
				break;
 | 
			
		||||
			}
 | 
			
		||||
      case "8": {
 | 
			
		||||
        letterCellX = 3;
 | 
			
		||||
        letterCellY = 5;
 | 
			
		||||
				break;
 | 
			
		||||
			}
 | 
			
		||||
      case "9": {
 | 
			
		||||
        letterCellX = 4;
 | 
			
		||||
        letterCellY = 5;
 | 
			
		||||
				break;
 | 
			
		||||
			}
 | 
			
		||||
      case "0": {
 | 
			
		||||
        letterCellX = 5;
 | 
			
		||||
        letterCellY = 5;
 | 
			
		||||
				break;
 | 
			
		||||
			}
 | 
			
		||||
      case ".": {
 | 
			
		||||
        letterCellX = 0;
 | 
			
		||||
        letterCellY = 6;
 | 
			
		||||
				break;
 | 
			
		||||
			}
 | 
			
		||||
      case ",": {
 | 
			
		||||
        letterCellX = 1;
 | 
			
		||||
        letterCellY = 6;
 | 
			
		||||
				break;
 | 
			
		||||
			}
 | 
			
		||||
      case "-": {
 | 
			
		||||
        letterCellX = 2;
 | 
			
		||||
        letterCellY = 6;
 | 
			
		||||
				break;
 | 
			
		||||
			}
 | 
			
		||||
      case "?": {
 | 
			
		||||
        letterCellX = 3;
 | 
			
		||||
        letterCellY = 6;
 | 
			
		||||
				break;
 | 
			
		||||
			}
 | 
			
		||||
      case "!": {
 | 
			
		||||
        letterCellX = 4;
 | 
			
		||||
        letterCellY = 6;
 | 
			
		||||
				break;
 | 
			
		||||
			}
 | 
			
		||||
      default:  {// Default to Space
 | 
			
		||||
        letterCellX = 5;
 | 
			
		||||
        letterCellY = 6;
 | 
			
		||||
				break;
 | 
			
		||||
			}
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
	for (var i = 0; i < text.length; i++) {
 | 
			
		||||
		var letterCellX, letterCellY;
 | 
			
		||||
		switch (text.charAt(i)) {
 | 
			
		||||
			case "A":
 | 
			
		||||
				letterCellX = 0;
 | 
			
		||||
				letterCellY = 0;
 | 
			
		||||
				break;
 | 
			
		||||
			case "B":
 | 
			
		||||
				letterCellX = 1;
 | 
			
		||||
				letterCellY = 0;
 | 
			
		||||
				break;
 | 
			
		||||
			case "C":
 | 
			
		||||
				letterCellX = 2;
 | 
			
		||||
				letterCellY = 0;
 | 
			
		||||
				break;
 | 
			
		||||
			case "D":
 | 
			
		||||
				letterCellX = 3;
 | 
			
		||||
				letterCellY = 0;
 | 
			
		||||
				break;
 | 
			
		||||
			case "E":
 | 
			
		||||
				letterCellX = 4;
 | 
			
		||||
				letterCellY = 0;
 | 
			
		||||
				break;
 | 
			
		||||
			case "F":
 | 
			
		||||
				letterCellX = 5;
 | 
			
		||||
				letterCellY = 0;
 | 
			
		||||
				break;
 | 
			
		||||
			case "G":
 | 
			
		||||
				letterCellX = 0;
 | 
			
		||||
				letterCellY = 1;
 | 
			
		||||
				break;
 | 
			
		||||
			case "H":
 | 
			
		||||
				letterCellX = 1;
 | 
			
		||||
				letterCellY = 1;
 | 
			
		||||
				break;
 | 
			
		||||
			case "I":
 | 
			
		||||
				letterCellX = 2;
 | 
			
		||||
				letterCellY = 1;
 | 
			
		||||
				break;
 | 
			
		||||
			case "J":
 | 
			
		||||
				letterCellX = 3;
 | 
			
		||||
				letterCellY = 1;
 | 
			
		||||
				break;
 | 
			
		||||
			case "K":
 | 
			
		||||
				letterCellX = 4;
 | 
			
		||||
				letterCellY = 1;
 | 
			
		||||
				break;
 | 
			
		||||
			case "L":
 | 
			
		||||
				letterCellX = 5;
 | 
			
		||||
				letterCellY = 1;
 | 
			
		||||
				break;
 | 
			
		||||
			case "M":
 | 
			
		||||
				letterCellX = 0;
 | 
			
		||||
				letterCellY = 2;
 | 
			
		||||
				break;
 | 
			
		||||
			case "N":
 | 
			
		||||
				letterCellX = 1;
 | 
			
		||||
				letterCellY = 2;
 | 
			
		||||
				break;
 | 
			
		||||
			case "O":
 | 
			
		||||
				letterCellX = 2;
 | 
			
		||||
				letterCellY = 2;
 | 
			
		||||
				break;
 | 
			
		||||
			case "P":
 | 
			
		||||
				letterCellX = 3;
 | 
			
		||||
				letterCellY = 2;
 | 
			
		||||
				break;
 | 
			
		||||
			case "Q":
 | 
			
		||||
				letterCellX = 4;
 | 
			
		||||
				letterCellY = 2;
 | 
			
		||||
				break;
 | 
			
		||||
			case "R":
 | 
			
		||||
				letterCellX = 5;
 | 
			
		||||
				letterCellY = 2;
 | 
			
		||||
				break;
 | 
			
		||||
			case "S":
 | 
			
		||||
				letterCellX = 0;
 | 
			
		||||
				letterCellY = 3;
 | 
			
		||||
				break;
 | 
			
		||||
			case "T":
 | 
			
		||||
				letterCellX = 1;
 | 
			
		||||
				letterCellY = 3;
 | 
			
		||||
				break;
 | 
			
		||||
			case "U":
 | 
			
		||||
				letterCellX = 2;
 | 
			
		||||
				letterCellY = 3;
 | 
			
		||||
				break;
 | 
			
		||||
			case "V":
 | 
			
		||||
				letterCellX = 3;
 | 
			
		||||
				letterCellY = 3;
 | 
			
		||||
				break;
 | 
			
		||||
			case "W":
 | 
			
		||||
				letterCellX = 4;
 | 
			
		||||
				letterCellY = 3;
 | 
			
		||||
				break;
 | 
			
		||||
			case "X":
 | 
			
		||||
				letterCellX = 5;
 | 
			
		||||
				letterCellY = 3;
 | 
			
		||||
				break;
 | 
			
		||||
			case "Y":
 | 
			
		||||
				letterCellX = 0;
 | 
			
		||||
				letterCellY = 4;
 | 
			
		||||
				break;
 | 
			
		||||
			case "Z":
 | 
			
		||||
				letterCellX = 1;
 | 
			
		||||
				letterCellY = 4;
 | 
			
		||||
				break;
 | 
			
		||||
			case "1":
 | 
			
		||||
				letterCellX = 2;
 | 
			
		||||
				letterCellY = 4;
 | 
			
		||||
				break;
 | 
			
		||||
			case "2":
 | 
			
		||||
				letterCellX = 3;
 | 
			
		||||
				letterCellY = 4;
 | 
			
		||||
				break;
 | 
			
		||||
			case "3":
 | 
			
		||||
				letterCellX = 4;
 | 
			
		||||
				letterCellY = 4;
 | 
			
		||||
				break;
 | 
			
		||||
			case "4":
 | 
			
		||||
				letterCellX = 5;
 | 
			
		||||
				letterCellY = 4;
 | 
			
		||||
				break;
 | 
			
		||||
			case "5":
 | 
			
		||||
				letterCellX = 0;
 | 
			
		||||
				letterCellY = 5;
 | 
			
		||||
				break;
 | 
			
		||||
			case "6":
 | 
			
		||||
				letterCellX = 1;
 | 
			
		||||
				letterCellY = 5;
 | 
			
		||||
				break;
 | 
			
		||||
			case "7":
 | 
			
		||||
				letterCellX = 2;
 | 
			
		||||
				letterCellY = 5;
 | 
			
		||||
				break;
 | 
			
		||||
			case "8":
 | 
			
		||||
				letterCellX = 3;
 | 
			
		||||
				letterCellY = 5;
 | 
			
		||||
				break;
 | 
			
		||||
			case "9":
 | 
			
		||||
				letterCellX = 4;
 | 
			
		||||
				letterCellY = 5;
 | 
			
		||||
				break;
 | 
			
		||||
			case "0":
 | 
			
		||||
				letterCellX = 5;
 | 
			
		||||
				letterCellY = 5;
 | 
			
		||||
				break;
 | 
			
		||||
			case ".":
 | 
			
		||||
				letterCellX = 0;
 | 
			
		||||
				letterCellY = 6;
 | 
			
		||||
				break;
 | 
			
		||||
			case ",":
 | 
			
		||||
				letterCellX = 1;
 | 
			
		||||
				letterCellY = 6;
 | 
			
		||||
				break;
 | 
			
		||||
			case "-":
 | 
			
		||||
				letterCellX = 2;
 | 
			
		||||
				letterCellY = 6;
 | 
			
		||||
				break;
 | 
			
		||||
			case "?":
 | 
			
		||||
				letterCellX = 3;
 | 
			
		||||
				letterCellY = 6;
 | 
			
		||||
				break;
 | 
			
		||||
			case "!":
 | 
			
		||||
				letterCellX = 4;
 | 
			
		||||
				letterCellY = 6;
 | 
			
		||||
				break;
 | 
			
		||||
			default:	// Default to Space
 | 
			
		||||
				letterCellX = 5;
 | 
			
		||||
				letterCellY = 6;
 | 
			
		||||
				break;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		var lineNumber = Math.floor(i/wrapWidth);
 | 
			
		||||
		var horizontal = i - (wrapWidth * lineNumber);
 | 
			
		||||
		var letterSheetX = guiControl.alphabet_sheet[color + size.toString()].x + (letterSizeX * letterCellX);
 | 
			
		||||
		var letterSheetY = guiControl.alphabet_sheet[color + size.toString()].y + (letterSizeY * letterCellY);
 | 
			
		||||
		var letterX = x + (letterSizeX * horizontal) + pixel(horizontal);	//Places a space between characters horizontally
 | 
			
		||||
		var letterY = y + (letterSizeY * lineNumber) + pixel(lineNumber);	//Places a space between characters vertically
 | 
			
		||||
		OS.context.drawImage(guiControl.alphabet_sheet, letterSheetX, letterSheetY, letterSizeX, letterSizeY, letterX, letterY, letterSizeX, letterSizeY);
 | 
			
		||||
	}
 | 
			
		||||
    var lineNumber = Math.floor(i/wrapWidth);
 | 
			
		||||
    var horizontal = i - (wrapWidth * lineNumber);
 | 
			
		||||
    var letterSheetX = guiControl.alphabet_sheet[color + size.toString()].x + (letterSizeX * letterCellX);
 | 
			
		||||
    var letterSheetY = guiControl.alphabet_sheet[color + size.toString()].y + (letterSizeY * letterCellY);
 | 
			
		||||
    var letterX = x + (letterSizeX * horizontal) + pixel(horizontal);  //Places a space between characters horizontally
 | 
			
		||||
    var letterY = y + (letterSizeY * lineNumber) + pixel(lineNumber);  //Places a space between characters vertically
 | 
			
		||||
    OS.context.drawImage(guiControl.alphabet_sheet, letterSheetX, letterSheetY, letterSizeX, letterSizeY, letterX, letterY, letterSizeX, letterSizeY);
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -3,220 +3,220 @@ G = Game;
 | 
			
		|||
 | 
			
		||||
G.gameStarted = false;
 | 
			
		||||
G.savedGameExists = (OS.Load("TradeWindsSave")) ? true : false;
 | 
			
		||||
G.player = {};	// Just a reference until G.player is created at rm_Ocean's load time.
 | 
			
		||||
G.oceanParticle = {};	// One ocean particle will exist at any time and move around the boat.
 | 
			
		||||
G.map = [];	// List of island objects, generated/loaded and saved at game start, loaded on room start.
 | 
			
		||||
G.currentScreen = "";	// For pause screen, stats screen, inventory screen
 | 
			
		||||
G.player = {};  // Just a reference until G.player is created at rm_Ocean's load time.
 | 
			
		||||
G.oceanParticle = {};  // One ocean particle will exist at any time and move around the boat.
 | 
			
		||||
G.map = [];  // List of island objects, generated/loaded and saved at game start, loaded on room start.
 | 
			
		||||
G.currentScreen = "";  // For pause screen, stats screen, inventory screen
 | 
			
		||||
G.inventory = {
 | 
			
		||||
    money: 100,
 | 
			
		||||
	supplies: 20,	// How much stuff you have to maintain your crew's illness with.
 | 
			
		||||
	cargo:	[0, 0, 0, 0,		// Keeps track of how much of each item you have.
 | 
			
		||||
			 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();
 | 
			
		||||
		}
 | 
			
		||||
  money: 100,
 | 
			
		||||
  supplies: 20,  // How much stuff you have to maintain your crew's illness with.
 | 
			
		||||
  cargo:  [0, 0, 0, 0,    // Keeps track of how much of each item you have.
 | 
			
		||||
           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++) {
 | 
			
		||||
			if (G.inventory.cargo[i] > 0) {
 | 
			
		||||
				indicesWithCargo.push(i);
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
		return indicesWithCargo;
 | 
			
		||||
	},
 | 
			
		||||
	CargoTotal: function () {
 | 
			
		||||
		var cargo = G.inventory.CheckCargo();
 | 
			
		||||
		var cargoTotal = 0;
 | 
			
		||||
		for (var i = 0; i < cargo.length; i++) {
 | 
			
		||||
			cargoTotal += G.inventory.cargo[cargo[i]];
 | 
			
		||||
		}
 | 
			
		||||
		return cargoTotal;
 | 
			
		||||
	},
 | 
			
		||||
	CanBuy: function (itemIndex, price) {
 | 
			
		||||
		if (G.inventory.cargo[itemIndex] < G.stats.hold && G.inventory.money > price &&
 | 
			
		||||
				(G.inventory.cargo[itemIndex] > 0 || G.inventory.CheckCargo().length < G.stats.inventory))
 | 
			
		||||
		{
 | 
			
		||||
			return true;
 | 
			
		||||
		} else {
 | 
			
		||||
			return false;
 | 
			
		||||
		}
 | 
			
		||||
	},
 | 
			
		||||
	CanSell: function (itemIndex) {
 | 
			
		||||
		return G.inventory.cargo[itemIndex] > 0;
 | 
			
		||||
	}
 | 
			
		||||
    return moneyString;
 | 
			
		||||
  },
 | 
			
		||||
  CheckCargo: function () { // Returns an array of indices that have cargo
 | 
			
		||||
    var indicesWithCargo = [];
 | 
			
		||||
    for (var i = 0; i < G.inventory.cargo.length; i++) {
 | 
			
		||||
      if (G.inventory.cargo[i] > 0) {
 | 
			
		||||
        indicesWithCargo.push(i);
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
    return indicesWithCargo;
 | 
			
		||||
  },
 | 
			
		||||
  CargoTotal: function () {
 | 
			
		||||
    var cargo = G.inventory.CheckCargo();
 | 
			
		||||
    var cargoTotal = 0;
 | 
			
		||||
    for (var i = 0; i < cargo.length; i++) {
 | 
			
		||||
      cargoTotal += G.inventory.cargo[cargo[i]];
 | 
			
		||||
    }
 | 
			
		||||
    return cargoTotal;
 | 
			
		||||
  },
 | 
			
		||||
  CanBuy: function (itemIndex, price) {
 | 
			
		||||
    if (G.inventory.cargo[itemIndex] < G.stats.hold && G.inventory.money > price &&
 | 
			
		||||
        (G.inventory.cargo[itemIndex] > 0 || G.inventory.CheckCargo().length < G.stats.inventory))
 | 
			
		||||
    {
 | 
			
		||||
      return true;
 | 
			
		||||
    } else {
 | 
			
		||||
      return false;
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
  CanSell: function (itemIndex) {
 | 
			
		||||
    return G.inventory.cargo[itemIndex] > 0;
 | 
			
		||||
  }
 | 
			
		||||
};
 | 
			
		||||
G.stats = {
 | 
			
		||||
    inventory: 3,   // Maximum number of different things the cargo can hold.
 | 
			
		||||
    hold: 20,		// Maximum number of each individual kind of thing in the inventory.
 | 
			
		||||
    speed: 1,		// How many pixels you move.
 | 
			
		||||
    hull: 3,		// Your HP, pretty much. How many times you can crash without exploding.
 | 
			
		||||
    maxHull: 3,		// How much your hull can refill to.
 | 
			
		||||
    popularity: 5,	// Haggle success rate in percentage.
 | 
			
		||||
    haggling: 10,	// How much you can increase the asking price by.
 | 
			
		||||
    crew: 2,		// How many crew members you have. Influences how fast your energy recovers.
 | 
			
		||||
    energy: 25,		// Drains rate determined by current speed. When drained, currentSpeed reduces until you have enough energy to continue.
 | 
			
		||||
    maxEnergy: 50,	// How much to refill your energy to. Can increase with upgrades.
 | 
			
		||||
    illness: 0		// Your crew's overall health. When this is low, your ship slows down.
 | 
			
		||||
  inventory: 3,   // Maximum number of different things the cargo can hold.
 | 
			
		||||
  hold: 20,    // Maximum number of each individual kind of thing in the inventory.
 | 
			
		||||
  speed: 1,    // How many pixels you move.
 | 
			
		||||
  hull: 3,    // Your HP, pretty much. How many times you can crash without exploding.
 | 
			
		||||
  maxHull: 3,    // How much your hull can refill to.
 | 
			
		||||
  popularity: 5,  // Haggle success rate in percentage.
 | 
			
		||||
  haggling: 10,  // How much you can increase the asking price by.
 | 
			
		||||
  crew: 2,    // How many crew members you have. Influences how fast your energy recovers.
 | 
			
		||||
  energy: 25,    // Drains rate determined by current speed. When drained, currentSpeed reduces until you have enough energy to continue.
 | 
			
		||||
  maxEnergy: 50,  // How much to refill your energy to. Can increase with upgrades.
 | 
			
		||||
  illness: 0,    // Your crew's overall health. When this is low, your ship slows down.
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
G.economy = {	// Aww yea, supply and demand.
 | 
			
		||||
G.economy = {  // Aww yea, supply and demand.
 | 
			
		||||
// Items are determined by their index, and their position on the sheet determines their index.
 | 
			
		||||
// So the second item on the top row is index 1, and to get its value, you get `G.economy.cargoItemWorth[1]`
 | 
			
		||||
	innCost:		50,
 | 
			
		||||
	innStays:		0,
 | 
			
		||||
	cargoItemWorth: [10, 20, 30, 30,	//Can be adjusted based on sales.
 | 
			
		||||
					 40, 20, 50, 80,
 | 
			
		||||
					 65, 20, 20, 30,
 | 
			
		||||
					 30, 60, 45, 70],
 | 
			
		||||
	maxPriceChange: 10,
 | 
			
		||||
	cargoSold: 		[0, 0, 0, 0,		// The more you sell, the lower the price gets
 | 
			
		||||
					 0, 0, 0, 0,
 | 
			
		||||
					 0, 0, 0, 0,
 | 
			
		||||
					 0, 0, 0, 0],
 | 
			
		||||
	cargoBought:	[0, 0, 0, 0,		// The more you buy, the higher the price gets
 | 
			
		||||
					 0, 0, 0, 0,
 | 
			
		||||
					 0, 0, 0, 0,
 | 
			
		||||
					 0, 0, 0, 0],
 | 
			
		||||
	UpdateEconomy: function () {
 | 
			
		||||
		// console.log(G.economy.cargoItemWorth);
 | 
			
		||||
		for (var i = 0; i < G.economy.cargoItemWorth.length; i++) {
 | 
			
		||||
			var totalPriceDifference = 0;
 | 
			
		||||
			for (var m = 0; m < G.map.length; m++) {
 | 
			
		||||
				// console.log("map: " + G.map[m].island);
 | 
			
		||||
				totalPriceDifference += G.map[m].island.priceDifferences[i];
 | 
			
		||||
				// console.log(G.map[m].island.priceDifferences[i]);
 | 
			
		||||
			}
 | 
			
		||||
			G.economy.cargoItemWorth[i] += Math.round(totalPriceDifference / G.map.length);	// Apply the average price difference for the item.
 | 
			
		||||
		}
 | 
			
		||||
		var totalInnCost = 0;
 | 
			
		||||
		for (var m = 0; m < G.map.length; m++) {
 | 
			
		||||
			totalInnCost += G.map[m].island.innPriceDifference;
 | 
			
		||||
		}
 | 
			
		||||
		G.economy.innCost += Math.round(totalInnCost / G.map.length);	// Apply the average inn price.
 | 
			
		||||
		// console.log(G.economy.cargoItemWorth);
 | 
			
		||||
	}
 | 
			
		||||
  innCost: 50,
 | 
			
		||||
  innStays: 0,
 | 
			
		||||
  cargoItemWorth: [10, 20, 30, 30,  //Can be adjusted based on sales.
 | 
			
		||||
                   40, 20, 50, 80,
 | 
			
		||||
                   65, 20, 20, 30,
 | 
			
		||||
                   30, 60, 45, 70],
 | 
			
		||||
  maxPriceChange: 10,
 | 
			
		||||
  cargoSold: [0, 0, 0, 0,    // The more you sell, the lower the price gets
 | 
			
		||||
              0, 0, 0, 0,
 | 
			
		||||
              0, 0, 0, 0,
 | 
			
		||||
              0, 0, 0, 0],
 | 
			
		||||
  cargoBought: [0, 0, 0, 0,    // The more you buy, the higher the price gets
 | 
			
		||||
                0, 0, 0, 0,
 | 
			
		||||
                0, 0, 0, 0,
 | 
			
		||||
                0, 0, 0, 0],
 | 
			
		||||
  UpdateEconomy: function () {
 | 
			
		||||
    // console.log(G.economy.cargoItemWorth);
 | 
			
		||||
    for (var i = 0; i < G.economy.cargoItemWorth.length; i++) {
 | 
			
		||||
      var totalPriceDifference = 0;
 | 
			
		||||
      for (var m = 0; m < G.map.length; m++) {
 | 
			
		||||
        // console.log("map: " + G.map[m].island);
 | 
			
		||||
        totalPriceDifference += G.map[m].island.priceDifferences[i];
 | 
			
		||||
        // console.log(G.map[m].island.priceDifferences[i]);
 | 
			
		||||
      }
 | 
			
		||||
      G.economy.cargoItemWorth[i] += Math.round(totalPriceDifference / G.map.length);  // Apply the average price difference for the item.
 | 
			
		||||
    }
 | 
			
		||||
    var totalInnCost = 0;
 | 
			
		||||
    for (var m = 0; m < G.map.length; m++) {
 | 
			
		||||
      totalInnCost += G.map[m].island.innPriceDifference;
 | 
			
		||||
    }
 | 
			
		||||
    G.economy.innCost += Math.round(totalInnCost / G.map.length);  // Apply the average inn price.
 | 
			
		||||
    // console.log(G.economy.cargoItemWorth);
 | 
			
		||||
  },
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
G.SaveGame = function () {
 | 
			
		||||
	var saveObject = {
 | 
			
		||||
		playerX: G.player.x,
 | 
			
		||||
		playerY: G.player.y,
 | 
			
		||||
		money: G.inventory.money,
 | 
			
		||||
		supplies: G.inventory.supplies,
 | 
			
		||||
		cargo: G.inventory.cargo.slice(),
 | 
			
		||||
		stats: {
 | 
			
		||||
			inventory: G.stats.inventory,
 | 
			
		||||
			hold: G.stats.hold,
 | 
			
		||||
			speed: G.stats.speed,
 | 
			
		||||
			hull: G.stats.hull,
 | 
			
		||||
			maxHull: G.stats.maxHull,
 | 
			
		||||
			popularity: G.stats.popularity,
 | 
			
		||||
			haggling: G.stats.haggling,
 | 
			
		||||
			crew: G.stats.crew,
 | 
			
		||||
			energy: G.stats.energy,
 | 
			
		||||
			maxEnergy: G.stats.maxEnergy,
 | 
			
		||||
			illness: G.stats.illness
 | 
			
		||||
		},
 | 
			
		||||
		economy: {
 | 
			
		||||
			innCost: G.economy.innCost,
 | 
			
		||||
			innStays: G.economy.innStays,
 | 
			
		||||
			itemWorth: G.economy.cargoItemWorth.slice(),
 | 
			
		||||
			cargoSold: G.economy.cargoSold.slice(),
 | 
			
		||||
			cargoBought: G.economy.cargoBought.slice()
 | 
			
		||||
		},
 | 
			
		||||
		map: []
 | 
			
		||||
	};
 | 
			
		||||
	for (var i = 0; i < G.map.length; i++) {
 | 
			
		||||
		saveObject.map.push({
 | 
			
		||||
			drawX: G.map[i].drawX,
 | 
			
		||||
			drawY: G.map[i].drawY,
 | 
			
		||||
			drawWidth: G.map[i].drawWidth,
 | 
			
		||||
			drawHeight: G.map[i].drawHeight,
 | 
			
		||||
			inventory: G.map[i].island.inventory.slice(),
 | 
			
		||||
			innPriceDifference: G.map[i].island.innPriceDifference,
 | 
			
		||||
			innStays: G.map[i].island.innStays,
 | 
			
		||||
			priceDifferences: G.map[i].island.priceDifferences.slice(),
 | 
			
		||||
			itemsSold: G.map[i].island.itemsSold.slice(),
 | 
			
		||||
			itemsBought: G.map[i].island.itemsBought.slice()
 | 
			
		||||
		});
 | 
			
		||||
	}
 | 
			
		||||
  var saveObject = {
 | 
			
		||||
    playerX: G.player.x,
 | 
			
		||||
    playerY: G.player.y,
 | 
			
		||||
    money: G.inventory.money,
 | 
			
		||||
    supplies: G.inventory.supplies,
 | 
			
		||||
    cargo: G.inventory.cargo.slice(),
 | 
			
		||||
    stats: {
 | 
			
		||||
      inventory: G.stats.inventory,
 | 
			
		||||
      hold: G.stats.hold,
 | 
			
		||||
      speed: G.stats.speed,
 | 
			
		||||
      hull: G.stats.hull,
 | 
			
		||||
      maxHull: G.stats.maxHull,
 | 
			
		||||
      popularity: G.stats.popularity,
 | 
			
		||||
      haggling: G.stats.haggling,
 | 
			
		||||
      crew: G.stats.crew,
 | 
			
		||||
      energy: G.stats.energy,
 | 
			
		||||
      maxEnergy: G.stats.maxEnergy,
 | 
			
		||||
      illness: G.stats.illness,
 | 
			
		||||
    },
 | 
			
		||||
    economy: {
 | 
			
		||||
      innCost: G.economy.innCost,
 | 
			
		||||
      innStays: G.economy.innStays,
 | 
			
		||||
      itemWorth: G.economy.cargoItemWorth.slice(),
 | 
			
		||||
      cargoSold: G.economy.cargoSold.slice(),
 | 
			
		||||
      cargoBought: G.economy.cargoBought.slice(),
 | 
			
		||||
    },
 | 
			
		||||
    map: [],
 | 
			
		||||
  };
 | 
			
		||||
  for (var i = 0; i < G.map.length; i++) {
 | 
			
		||||
    saveObject.map.push({
 | 
			
		||||
      drawX: G.map[i].drawX,
 | 
			
		||||
      drawY: G.map[i].drawY,
 | 
			
		||||
      drawWidth: G.map[i].drawWidth,
 | 
			
		||||
      drawHeight: G.map[i].drawHeight,
 | 
			
		||||
      inventory: G.map[i].island.inventory.slice(),
 | 
			
		||||
      innPriceDifference: G.map[i].island.innPriceDifference,
 | 
			
		||||
      innStays: G.map[i].island.innStays,
 | 
			
		||||
      priceDifferences: G.map[i].island.priceDifferences.slice(),
 | 
			
		||||
      itemsSold: G.map[i].island.itemsSold.slice(),
 | 
			
		||||
      itemsBought: G.map[i].island.itemsBought.slice(),
 | 
			
		||||
    });
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
	if (OS.Save("TradeWindsSave", JSON.stringify(saveObject))) {
 | 
			
		||||
		console.log("Game Saved!");
 | 
			
		||||
	}
 | 
			
		||||
  if (OS.Save("TradeWindsSave", JSON.stringify(saveObject))) {
 | 
			
		||||
    console.log("Game Saved!");
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
G.LoadGame = function () {
 | 
			
		||||
	var loadObject = OS.Load("TradeWindsSave");
 | 
			
		||||
	if (loadObject) {
 | 
			
		||||
		loadObject = JSON.parse(loadObject);
 | 
			
		||||
		G.player.x = loadObject.playerX;
 | 
			
		||||
		G.player.y = loadObject.playerY;
 | 
			
		||||
		G.inventory.money = loadObject.money;
 | 
			
		||||
		G.inventory.supplies = loadObject.supplies;
 | 
			
		||||
		G.inventory.cargo = loadObject.cargo.slice();
 | 
			
		||||
		G.stats.inventory = loadObject.stats.inventory;
 | 
			
		||||
		G.stats.hold = loadObject.stats.hold;
 | 
			
		||||
		G.stats.speed = loadObject.stats.speed;
 | 
			
		||||
		G.stats.hull = loadObject.stats.hull;
 | 
			
		||||
		G.stats.maxHull = loadObject.stats.maxHull;
 | 
			
		||||
		G.stats.popularity = loadObject.stats.popularity;
 | 
			
		||||
		G.stats.haggling = loadObject.stats.haggling;
 | 
			
		||||
		G.stats.crew = loadObject.stats.crew;
 | 
			
		||||
		G.stats.energy = loadObject.stats.energy;
 | 
			
		||||
		G.stats.maxEnergy = loadObject.stats.maxEnergy;
 | 
			
		||||
		G.stats.illness = loadObject.stats.illness;
 | 
			
		||||
		G.economy.innCost = loadObject.economy.innCost;
 | 
			
		||||
		G.economy.innStays = loadObject.economy.innStays;
 | 
			
		||||
		G.economy.cargoItemWorth = loadObject.economy.itemWorth.slice();
 | 
			
		||||
		G.economy.cargoSold = loadObject.economy.cargoSold.slice();
 | 
			
		||||
		G.economy.cargoBought = loadObject.economy.cargoBought.slice();
 | 
			
		||||
  var loadObject = OS.Load("TradeWindsSave");
 | 
			
		||||
  if (loadObject) {
 | 
			
		||||
    loadObject = JSON.parse(loadObject);
 | 
			
		||||
    G.player.x = loadObject.playerX;
 | 
			
		||||
    G.player.y = loadObject.playerY;
 | 
			
		||||
    G.inventory.money = loadObject.money;
 | 
			
		||||
    G.inventory.supplies = loadObject.supplies;
 | 
			
		||||
    G.inventory.cargo = loadObject.cargo.slice();
 | 
			
		||||
    G.stats.inventory = loadObject.stats.inventory;
 | 
			
		||||
    G.stats.hold = loadObject.stats.hold;
 | 
			
		||||
    G.stats.speed = loadObject.stats.speed;
 | 
			
		||||
    G.stats.hull = loadObject.stats.hull;
 | 
			
		||||
    G.stats.maxHull = loadObject.stats.maxHull;
 | 
			
		||||
    G.stats.popularity = loadObject.stats.popularity;
 | 
			
		||||
    G.stats.haggling = loadObject.stats.haggling;
 | 
			
		||||
    G.stats.crew = loadObject.stats.crew;
 | 
			
		||||
    G.stats.energy = loadObject.stats.energy;
 | 
			
		||||
    G.stats.maxEnergy = loadObject.stats.maxEnergy;
 | 
			
		||||
    G.stats.illness = loadObject.stats.illness;
 | 
			
		||||
    G.economy.innCost = loadObject.economy.innCost;
 | 
			
		||||
    G.economy.innStays = loadObject.economy.innStays;
 | 
			
		||||
    G.economy.cargoItemWorth = loadObject.economy.itemWorth.slice();
 | 
			
		||||
    G.economy.cargoSold = loadObject.economy.cargoSold.slice();
 | 
			
		||||
    G.economy.cargoBought = loadObject.economy.cargoBought.slice();
 | 
			
		||||
 | 
			
		||||
		for (var i = 0; i < loadObject.map.length; i++) {
 | 
			
		||||
			G.map[i].drawX = loadObject.map[i].drawX;
 | 
			
		||||
			G.map[i].drawY = loadObject.map[i].drawY;
 | 
			
		||||
			G.map[i].drawWidth = loadObject.map[i].drawWidth;
 | 
			
		||||
			G.map[i].drawHeight = loadObject.map[i].drawHeight;
 | 
			
		||||
			G.map[i].island.x = rm_Ocean.squareSize * loadObject.map[i].drawX;
 | 
			
		||||
			G.map[i].island.y = rm_Ocean.squareSize * loadObject.map[i].drawY;
 | 
			
		||||
			G.map[i].island.inventory = loadObject.map[i].inventory.slice();
 | 
			
		||||
			G.map[i].island.innPriceDifference = loadObject.map[i].innPriceDifference;
 | 
			
		||||
			G.map[i].island.innStays = loadObject.map[i].innStays;
 | 
			
		||||
			G.map[i].island.priceDifferences = loadObject.map[i].priceDifferences.slice();
 | 
			
		||||
			G.map[i].island.itemsSold = loadObject.map[i].itemsSold.slice();
 | 
			
		||||
			G.map[i].island.itemsBought = loadObject.map[i].itemsBought.slice();
 | 
			
		||||
		}
 | 
			
		||||
		loadObject = null;
 | 
			
		||||
		console.log("Game Loaded!");
 | 
			
		||||
	} else {
 | 
			
		||||
		console.log("Could not load game!");
 | 
			
		||||
		return false;
 | 
			
		||||
	}
 | 
			
		||||
    for (var i = 0; i < loadObject.map.length; i++) {
 | 
			
		||||
      G.map[i].drawX = loadObject.map[i].drawX;
 | 
			
		||||
      G.map[i].drawY = loadObject.map[i].drawY;
 | 
			
		||||
      G.map[i].drawWidth = loadObject.map[i].drawWidth;
 | 
			
		||||
      G.map[i].drawHeight = loadObject.map[i].drawHeight;
 | 
			
		||||
      G.map[i].island.x = rm_Ocean.squareSize * loadObject.map[i].drawX;
 | 
			
		||||
      G.map[i].island.y = rm_Ocean.squareSize * loadObject.map[i].drawY;
 | 
			
		||||
      G.map[i].island.inventory = loadObject.map[i].inventory.slice();
 | 
			
		||||
      G.map[i].island.innPriceDifference = loadObject.map[i].innPriceDifference;
 | 
			
		||||
      G.map[i].island.innStays = loadObject.map[i].innStays;
 | 
			
		||||
      G.map[i].island.priceDifferences = loadObject.map[i].priceDifferences.slice();
 | 
			
		||||
      G.map[i].island.itemsSold = loadObject.map[i].itemsSold.slice();
 | 
			
		||||
      G.map[i].island.itemsBought = loadObject.map[i].itemsBought.slice();
 | 
			
		||||
    }
 | 
			
		||||
    loadObject = null;
 | 
			
		||||
    console.log("Game Loaded!");
 | 
			
		||||
  } else {
 | 
			
		||||
    console.log("Could not load game!");
 | 
			
		||||
    return false;
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function loadGameManager () {
 | 
			
		||||
	for (var i = 0; i < G.economy.cargoItemWorth.length; i++) {
 | 
			
		||||
		G.economy.cargoItemWorth[i] += Math.round(Math.randomRange(-5, 5));
 | 
			
		||||
	}
 | 
			
		||||
  for (var i = 0; i < G.economy.cargoItemWorth.length; i++) {
 | 
			
		||||
    G.economy.cargoItemWorth[i] += Math.round(Math.randomRange(-5, 5));
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
    if (Oversimplified.DEBUG.showMessages) console.log("Ran loadGameManager()");
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,33 +1,32 @@
 | 
			
		|||
var prefabsLoaded = 0;
 | 
			
		||||
var prefabsToLoad = 4;
 | 
			
		||||
function loadPrefabs() {
 | 
			
		||||
    OS.AddScript("prefabs/shipPrefab.js");
 | 
			
		||||
    OS.AddScript("prefabs/islandPrefab.js");
 | 
			
		||||
    OS.AddScript("prefabs/oceanTilePrefab.js");
 | 
			
		||||
	OS.AddScript("prefabs/wavePrefab.js");
 | 
			
		||||
  OS.AddScript("prefabs/shipPrefab.js");
 | 
			
		||||
  OS.AddScript("prefabs/islandPrefab.js");
 | 
			
		||||
  OS.AddScript("prefabs/oceanTilePrefab.js");
 | 
			
		||||
  OS.AddScript("prefabs/wavePrefab.js");
 | 
			
		||||
 | 
			
		||||
    // Delay switching to Ocean room until everything is loaded.
 | 
			
		||||
    WaitForPrefabsToLoad();
 | 
			
		||||
  // Delay switching to Ocean room until everything is loaded.
 | 
			
		||||
  WaitForPrefabsToLoad();
 | 
			
		||||
 | 
			
		||||
    if (Oversimplified.DEBUG.showMessages) console.log("Ran loadPrefabs()");
 | 
			
		||||
  if (Oversimplified.DEBUG.showMessages) console.log("Ran loadPrefabs()");
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Callback function that prevents Ocean room from loading before everything it references is loaded.
 | 
			
		||||
WaitForPrefabsToLoad = function () {
 | 
			
		||||
    console.log("waiting for " + (prefabsToLoad - prefabsLoaded).toString() + " prefabs to load");
 | 
			
		||||
    if (prefabsLoaded < prefabsToLoad || !window["oceanRoom"])
 | 
			
		||||
    {
 | 
			
		||||
        setTimeout(function(){WaitForPrefabsToLoad()}, 0.1);
 | 
			
		||||
  console.log("waiting for " + (prefabsToLoad - prefabsLoaded).toString() + " prefabs to load");
 | 
			
		||||
  if (prefabsLoaded < prefabsToLoad || !window["oceanRoom"]) {
 | 
			
		||||
    setTimeout(function(){WaitForPrefabsToLoad()}, 0.1);
 | 
			
		||||
  } else {
 | 
			
		||||
    // Create player and ocean objects in rm_Ocean.
 | 
			
		||||
    G.player = rm_Ocean.AddObject(OS.P["Ship"]);
 | 
			
		||||
    G.oceanParticle = rm_Ocean.AddObject(OS.P["Ocean Particle"]);
 | 
			
		||||
    
 | 
			
		||||
    if (G.player.xBound) {  // Force rm_Ocean to wait until G.player is completely loaded!
 | 
			
		||||
      // Load the rooms only after the prefabs are loaded.
 | 
			
		||||
      rm_Ocean.SetAsCurrentRoom();
 | 
			
		||||
    } else {
 | 
			
		||||
        // Create player and ocean objects in rm_Ocean.
 | 
			
		||||
        G.player = rm_Ocean.AddObject(OS.P["Ship"]);
 | 
			
		||||
        G.oceanParticle = rm_Ocean.AddObject(OS.P["Ocean Particle"]);
 | 
			
		||||
        
 | 
			
		||||
        if (G.player.xBound) {  // Force rm_Ocean to wait until G.player is completely loaded!
 | 
			
		||||
            // Load the rooms only after the prefabs are loaded.
 | 
			
		||||
            rm_Ocean.SetAsCurrentRoom();
 | 
			
		||||
        } else {
 | 
			
		||||
            setTimeout(function(){WaitForPrefabsToLoad()}, 0.1);
 | 
			
		||||
        }
 | 
			
		||||
      setTimeout(function(){WaitForPrefabsToLoad()}, 0.1);
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										26
									
								
								loadRooms.js
									
										
									
									
									
								
							
							
						
						
									
										26
									
								
								loadRooms.js
									
										
									
									
									
								
							| 
						 | 
				
			
			@ -1,20 +1,20 @@
 | 
			
		|||
var rm_Load = OS.R.Add("Default");
 | 
			
		||||
var rm_Ocean = OS.R.Add("Ocean Room", {
 | 
			
		||||
    // Putting my room "constants" here.
 | 
			
		||||
    width: pixel(64) * 50,  //50x45 map of 64x64 squares. This will allow a single pixel on the map to represent a 64x square and fit comfortably on screen.
 | 
			
		||||
    height: pixel(64) * 44,
 | 
			
		||||
    backgroundColor: "#1b2632",
 | 
			
		||||
    squaresX: 50,
 | 
			
		||||
    squaresY: 44,
 | 
			
		||||
    squareSize: pixel(64),
 | 
			
		||||
    numberOfIslands: 10,
 | 
			
		||||
    clockTimerCutoff: ((1 / OS.S.defaultStep) * 60) * 5 // 5 minute day.
 | 
			
		||||
  // Putting my room "constants" here.
 | 
			
		||||
  width: pixel(64) * 50,  //50x45 map of 64x64 squares. This will allow a single pixel on the map to represent a 64x square and fit comfortably on screen.
 | 
			
		||||
  height: pixel(64) * 44,
 | 
			
		||||
  backgroundColor: "#1b2632",
 | 
			
		||||
  squaresX: 50,
 | 
			
		||||
  squaresY: 44,
 | 
			
		||||
  squareSize: pixel(64),
 | 
			
		||||
  numberOfIslands: 10,
 | 
			
		||||
  clockTimerCutoff: ((1 / OS.S.defaultStep) * 60) * 5, // 5 minute day.
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
function loadRooms() {
 | 
			
		||||
    OS.AddScript("rooms/oceanRoom.js");
 | 
			
		||||
    
 | 
			
		||||
    rm_Load.SetAsCurrentRoom();
 | 
			
		||||
  OS.AddScript("rooms/oceanRoom.js");
 | 
			
		||||
  
 | 
			
		||||
  rm_Load.SetAsCurrentRoom();
 | 
			
		||||
 | 
			
		||||
    if (Oversimplified.DEBUG.showMessages) console.log("Ran loadRooms()");
 | 
			
		||||
  if (Oversimplified.DEBUG.showMessages) console.log("Ran loadRooms()");
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,243 +1,243 @@
 | 
			
		|||
var ani_island_1 = OS.A.Add("Island 1", 256, 256, {});
 | 
			
		||||
 | 
			
		||||
function islandPrefab() {
 | 
			
		||||
	if (Oversimplified.DEBUG.showMessages) console.log("Ran islandPrefab()");
 | 
			
		||||
	prefabsLoaded++;
 | 
			
		||||
  if (Oversimplified.DEBUG.showMessages) console.log("Ran islandPrefab()");
 | 
			
		||||
  prefabsLoaded++;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
var pr_island = OS.P.Add("Island", {
 | 
			
		||||
	solid: true,
 | 
			
		||||
	imageSrc: "images/island.png",
 | 
			
		||||
	animations: [ani_island_1],
 | 
			
		||||
	depth: -50,
 | 
			
		||||
  solid: true,
 | 
			
		||||
  imageSrc: "images/island.png",
 | 
			
		||||
  animations: [ani_island_1],
 | 
			
		||||
  depth: -50,
 | 
			
		||||
 | 
			
		||||
	mapX: 0,
 | 
			
		||||
	mapY: 0,
 | 
			
		||||
	mapWidth: 1,
 | 
			
		||||
	mapHeight: 1,
 | 
			
		||||
	mapColor: "#00AB00",
 | 
			
		||||
  mapX: 0,
 | 
			
		||||
  mapY: 0,
 | 
			
		||||
  mapWidth: 1,
 | 
			
		||||
  mapHeight: 1,
 | 
			
		||||
  mapColor: "#00AB00",
 | 
			
		||||
 | 
			
		||||
	canTrade: true,
 | 
			
		||||
	haggleAmount: 0,
 | 
			
		||||
	timesHaggledToday: 0,
 | 
			
		||||
	itemsSoldToday:		[0, 0, 0, 0,
 | 
			
		||||
						 0, 0, 0, 0,
 | 
			
		||||
						 0, 0, 0, 0,
 | 
			
		||||
						 0, 0, 0, 0],
 | 
			
		||||
	itemsBoughtToday:	[0, 0, 0, 0,
 | 
			
		||||
						 0, 0, 0, 0,
 | 
			
		||||
						 0, 0, 0, 0,
 | 
			
		||||
						 0, 0, 0, 0],
 | 
			
		||||
	
 | 
			
		||||
	money: 0,
 | 
			
		||||
	inventory:		[0, 0, 0, 0,
 | 
			
		||||
					 0, 0, 0, 0,
 | 
			
		||||
					 0, 0, 0, 0,
 | 
			
		||||
					 0, 0, 0, 0],
 | 
			
		||||
	
 | 
			
		||||
	storageSpace:	[0, 0, 0, 0,
 | 
			
		||||
					 0, 0, 0, 0,
 | 
			
		||||
					 0, 0, 0, 0,
 | 
			
		||||
					 0, 0, 0, 0],
 | 
			
		||||
	innPriceDifference: 0,
 | 
			
		||||
	innStays: 0,
 | 
			
		||||
	priceDifferences: 	[0, 0, 0, 0,
 | 
			
		||||
						 0, 0, 0, 0,
 | 
			
		||||
						 0, 0, 0, 0,
 | 
			
		||||
						 0, 0, 0, 0],
 | 
			
		||||
	itemsSold: 		[0, 0, 0, 0,		// The more you sell, the lower the price gets
 | 
			
		||||
					 0, 0, 0, 0,
 | 
			
		||||
					 0, 0, 0, 0,
 | 
			
		||||
					 0, 0, 0, 0],
 | 
			
		||||
	itemsBought:	[0, 0, 0, 0,		// The more you buy, the higher the price gets
 | 
			
		||||
					 0, 0, 0, 0,
 | 
			
		||||
					 0, 0, 0, 0,
 | 
			
		||||
					 0, 0, 0, 0],
 | 
			
		||||
  canTrade: true,
 | 
			
		||||
  haggleAmount: 0,
 | 
			
		||||
  timesHaggledToday: 0,
 | 
			
		||||
  itemsSoldToday: [0, 0, 0, 0,
 | 
			
		||||
             			 0, 0, 0, 0,
 | 
			
		||||
									 0, 0, 0, 0,
 | 
			
		||||
             			 0, 0, 0, 0],
 | 
			
		||||
  itemsBoughtToday: [0, 0, 0, 0,
 | 
			
		||||
             				 0, 0, 0, 0,
 | 
			
		||||
            				 0, 0, 0, 0,
 | 
			
		||||
            				 0, 0, 0, 0],
 | 
			
		||||
  
 | 
			
		||||
  money: 0,
 | 
			
		||||
  inventory: [0, 0, 0, 0,
 | 
			
		||||
							0, 0, 0, 0,
 | 
			
		||||
           		0, 0, 0, 0,
 | 
			
		||||
           		0, 0, 0, 0],
 | 
			
		||||
  
 | 
			
		||||
  storageSpace: [0, 0, 0, 0,
 | 
			
		||||
           			 0, 0, 0, 0,
 | 
			
		||||
          			 0, 0, 0, 0,
 | 
			
		||||
          			 0, 0, 0, 0],
 | 
			
		||||
  innPriceDifference: 0,
 | 
			
		||||
  innStays: 0,
 | 
			
		||||
  priceDifferences: [0, 0, 0, 0,
 | 
			
		||||
             				 0, 0, 0, 0,
 | 
			
		||||
            				 0, 0, 0, 0,
 | 
			
		||||
            				 0, 0, 0, 0],
 | 
			
		||||
  itemsSold: [0, 0, 0, 0,    // The more you sell, the lower the price gets
 | 
			
		||||
							0, 0, 0, 0,
 | 
			
		||||
							0, 0, 0, 0,
 | 
			
		||||
           		0, 0, 0, 0],
 | 
			
		||||
  itemsBought: [0, 0, 0, 0,    // The more you buy, the higher the price gets
 | 
			
		||||
           			0, 0, 0, 0,
 | 
			
		||||
           			0, 0, 0, 0,
 | 
			
		||||
           			0, 0, 0, 0],
 | 
			
		||||
 | 
			
		||||
	storageFee: 10,
 | 
			
		||||
	storageFeeMultiplier: 0.1,
 | 
			
		||||
	storage: 			[0, 0, 0, 0,
 | 
			
		||||
						 0, 0, 0, 0,
 | 
			
		||||
						 0, 0, 0, 0,
 | 
			
		||||
						 0, 0, 0, 0]
 | 
			
		||||
  storageFee: 10,
 | 
			
		||||
  storageFeeMultiplier: 0.1,
 | 
			
		||||
  storage: [0, 0, 0, 0,
 | 
			
		||||
						0, 0, 0, 0,
 | 
			
		||||
						0, 0, 0, 0,
 | 
			
		||||
						0, 0, 0, 0],
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
pr_island.DoFirst = function () {
 | 
			
		||||
	this.GetMapPosition();
 | 
			
		||||
	this.SetUp();
 | 
			
		||||
  this.GetMapPosition();
 | 
			
		||||
  this.SetUp();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
pr_island.GetMapPosition = function () {
 | 
			
		||||
	this.mapX = (this.x / OS.S.pixelScale) / (OS.camera.width / OS.S.pixelScale);
 | 
			
		||||
	this.mapY = (this.y / OS.S.pixelScale) / (OS.camera.height / OS.S.pixelScale);
 | 
			
		||||
  this.mapX = (this.x / OS.S.pixelScale) / (OS.camera.width / OS.S.pixelScale);
 | 
			
		||||
  this.mapY = (this.y / OS.S.pixelScale) / (OS.camera.height / OS.S.pixelScale);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
pr_island.SetUp = function () {
 | 
			
		||||
	for (var i = 0; i < 16; i++) {
 | 
			
		||||
		this.storageSpace[i] = Math.round(Math.randomRange(20, 35));
 | 
			
		||||
  for (var i = 0; i < 16; i++) {
 | 
			
		||||
    this.storageSpace[i] = Math.round(Math.randomRange(20, 35));
 | 
			
		||||
 | 
			
		||||
		if (this.storageSpace[i] > 30) {
 | 
			
		||||
			this.inventory[i] = Math.round(this.storageSpace[i] - Math.randomRange(0, 30));
 | 
			
		||||
		} else if (Math.randomRange(0, 100) < 25) {
 | 
			
		||||
			this.inventory[i] = Math.round(Math.randomRange(0, this.storageSpace[i]));
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	// console.log(this.name + " stock: " + this.inventory);
 | 
			
		||||
    if (this.storageSpace[i] > 30) {
 | 
			
		||||
      this.inventory[i] = Math.round(this.storageSpace[i] - Math.randomRange(0, 30));
 | 
			
		||||
    } else if (Math.randomRange(0, 100) < 25) {
 | 
			
		||||
      this.inventory[i] = Math.round(Math.randomRange(0, this.storageSpace[i]));
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
  // console.log(this.name + " stock: " + this.inventory);
 | 
			
		||||
 | 
			
		||||
	this.AdjustPrices();
 | 
			
		||||
	// console.log(this.name + " pricing: " + this.priceDifferences);
 | 
			
		||||
  this.AdjustPrices();
 | 
			
		||||
  // console.log(this.name + " pricing: " + this.priceDifferences);
 | 
			
		||||
 | 
			
		||||
	if (this.CheckInventory().length < 4) {
 | 
			
		||||
		this.SetUp();
 | 
			
		||||
	} else {
 | 
			
		||||
		for (var i = 0; i < 16; i++) {
 | 
			
		||||
			// Generate the amount of money the shop has based on what it has.
 | 
			
		||||
			this.money += (G.economy.cargoItemWorth[i] + this.priceDifferences[i]) * this.inventory[i];
 | 
			
		||||
		}
 | 
			
		||||
		
 | 
			
		||||
		// Minimum amount of money is 100.
 | 
			
		||||
		if (this.money < 100) this.money = 100;
 | 
			
		||||
	}
 | 
			
		||||
  if (this.CheckInventory().length < 4) {
 | 
			
		||||
    this.SetUp();
 | 
			
		||||
  } else {
 | 
			
		||||
    for (var i = 0; i < 16; i++) {
 | 
			
		||||
      // Generate the amount of money the shop has based on what it has.
 | 
			
		||||
      this.money += (G.economy.cargoItemWorth[i] + this.priceDifferences[i]) * this.inventory[i];
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    // Minimum amount of money is 100.
 | 
			
		||||
    if (this.money < 100) this.money = 100;
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
pr_island.AdjustPrices = function () {
 | 
			
		||||
	for (var i = 0; i < 16; i++) {
 | 
			
		||||
		// Save the previous price difference so the change doesn't get above a certain thereshold.
 | 
			
		||||
		var previousPrice = newPriceDifference = this.priceDifferences[i];
 | 
			
		||||
  for (var i = 0; i < 16; i++) {
 | 
			
		||||
    // Save the previous price difference so the change doesn't get above a certain thereshold.
 | 
			
		||||
    var previousPrice = newPriceDifference = this.priceDifferences[i];
 | 
			
		||||
 | 
			
		||||
		if (this.inventory[i] > (this.storageSpace[i] / 2)) {
 | 
			
		||||
			newPriceDifference -= Math.round(this.inventory[i] * Math.randomRange(1, 3));
 | 
			
		||||
		}
 | 
			
		||||
		else if (this.inventory[i] < (this.storageSpace[i] / 4)) {
 | 
			
		||||
			newPriceDifference += Math.round((this.storageSpace[i] - this.inventory[i]) * Math.randomRange(1, 3));
 | 
			
		||||
		}
 | 
			
		||||
		else {
 | 
			
		||||
			newPriceDifference += Math.round(Math.randomRange(-2, 2));
 | 
			
		||||
		}
 | 
			
		||||
    if (this.inventory[i] > (this.storageSpace[i] / 2)) {
 | 
			
		||||
      newPriceDifference -= Math.round(this.inventory[i] * Math.randomRange(1, 3));
 | 
			
		||||
    }
 | 
			
		||||
    else if (this.inventory[i] < (this.storageSpace[i] / 4)) {
 | 
			
		||||
      newPriceDifference += Math.round((this.storageSpace[i] - this.inventory[i]) * Math.randomRange(1, 3));
 | 
			
		||||
    }
 | 
			
		||||
    else {
 | 
			
		||||
      newPriceDifference += Math.round(Math.randomRange(-2, 2));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
		newPriceDifference = Math.round(newPriceDifference * ((this.itemsBought[i] + 1) / (this.itemsSold[i] + 1)));
 | 
			
		||||
    newPriceDifference = Math.round(newPriceDifference * ((this.itemsBought[i] + 1) / (this.itemsSold[i] + 1)));
 | 
			
		||||
 | 
			
		||||
		if (Math.abs(newPriceDifference) > Math.abs(previousPrice) + G.economy.maxPriceChange) {
 | 
			
		||||
			// Prevent price from changing more than the limit.
 | 
			
		||||
			newPriceDifference = previousPrice + ((previousPrice < 0) ? -G.economy.maxPriceChange : G.economy.maxPriceChange);
 | 
			
		||||
		}
 | 
			
		||||
    if (Math.abs(newPriceDifference) > Math.abs(previousPrice) + G.economy.maxPriceChange) {
 | 
			
		||||
      // Prevent price from changing more than the limit.
 | 
			
		||||
      newPriceDifference = previousPrice + ((previousPrice < 0) ? -G.economy.maxPriceChange : G.economy.maxPriceChange);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
		if (G.economy.cargoItemWorth[i] + newPriceDifference < 0) {
 | 
			
		||||
			newPriceDifference = -G.economy.cargoItemWorth[i] + 1;
 | 
			
		||||
		}
 | 
			
		||||
    if (G.economy.cargoItemWorth[i] + newPriceDifference < 0) {
 | 
			
		||||
      newPriceDifference = -G.economy.cargoItemWorth[i] + 1;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
		this.priceDifferences[i] = newPriceDifference;
 | 
			
		||||
	}
 | 
			
		||||
    this.priceDifferences[i] = newPriceDifference;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
	var priceDifferencesOrdered = this.priceDifferences.slice().sort(sortNumber);
 | 
			
		||||
	this.innPriceDifference += Math.round(Math.randomRange(priceDifferencesOrdered[0], priceDifferencesOrdered[priceDifferencesOrdered.length -1])) - Math.round(Math.randomRange(0, this.innStays));
 | 
			
		||||
  var priceDifferencesOrdered = this.priceDifferences.slice().sort(sortNumber);
 | 
			
		||||
  this.innPriceDifference += Math.round(Math.randomRange(priceDifferencesOrdered[0], priceDifferencesOrdered[priceDifferencesOrdered.length -1])) - Math.round(Math.randomRange(0, this.innStays));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
pr_island.SimulateTrade = function () {
 | 
			
		||||
// This will be run on a timer that runs when not trading.
 | 
			
		||||
	for (var i = 0; i < 16; i++) {
 | 
			
		||||
		var amount = 0;
 | 
			
		||||
		if (this.inventory[i] > 0) {
 | 
			
		||||
			amount = Math.round(Math.randomRange(-this.storageSpace[i], this.storageSpace[i]));
 | 
			
		||||
			this.inventory[i] += amount;
 | 
			
		||||
  for (var i = 0; i < 16; i++) {
 | 
			
		||||
    var amount = 0;
 | 
			
		||||
    if (this.inventory[i] > 0) {
 | 
			
		||||
      amount = Math.round(Math.randomRange(-this.storageSpace[i], this.storageSpace[i]));
 | 
			
		||||
      this.inventory[i] += amount;
 | 
			
		||||
 | 
			
		||||
			if (this.inventory[i] < 0) {
 | 
			
		||||
				this.inventory[i] = 0;
 | 
			
		||||
			}
 | 
			
		||||
			if (this.inventory[i] > this.storageSpace[i]) {
 | 
			
		||||
				this.inventory[i] = this.storageSpace[i];
 | 
			
		||||
			}
 | 
			
		||||
		} else {
 | 
			
		||||
			if (Math.randomRange(0, 100) < 15) {
 | 
			
		||||
				amount = Math.round(Math.randomRange(0, this.storageSpace[i]));
 | 
			
		||||
				this.inventory[i] = amount;
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
		// If the amount is positive, then subtract half the amount from the money (because they bought stuff)
 | 
			
		||||
		// Otherwise, add the negative amount (because they sold that much)
 | 
			
		||||
		this.money += (-amount * (G.economy.cargoItemWorth[i] + this.priceDifferences[i])) * ((amount > 0) ? 0.5 : 1);
 | 
			
		||||
	}
 | 
			
		||||
      if (this.inventory[i] < 0) {
 | 
			
		||||
        this.inventory[i] = 0;
 | 
			
		||||
      }
 | 
			
		||||
      if (this.inventory[i] > this.storageSpace[i]) {
 | 
			
		||||
        this.inventory[i] = this.storageSpace[i];
 | 
			
		||||
      }
 | 
			
		||||
    } else {
 | 
			
		||||
      if (Math.randomRange(0, 100) < 15) {
 | 
			
		||||
        amount = Math.round(Math.randomRange(0, this.storageSpace[i]));
 | 
			
		||||
        this.inventory[i] = amount;
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
    // If the amount is positive, then subtract half the amount from the money (because they bought stuff)
 | 
			
		||||
    // Otherwise, add the negative amount (because they sold that much)
 | 
			
		||||
    this.money += (-amount * (G.economy.cargoItemWorth[i] + this.priceDifferences[i])) * ((amount > 0) ? 0.5 : 1);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
	if (this.money <= 0) this.money = 100;	// If they run out of money, give them some.
 | 
			
		||||
  if (this.money <= 0) this.money = 100;  // If they run out of money, give them some.
 | 
			
		||||
 | 
			
		||||
	this.AdjustPrices();
 | 
			
		||||
  this.AdjustPrices();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
pr_island.NewDay = function () {
 | 
			
		||||
	this.haggleAmount = 0;
 | 
			
		||||
  this.haggleAmount = 0;
 | 
			
		||||
    this.timesHaggledToday = 0;
 | 
			
		||||
    this.itemsSoldToday =	[0, 0, 0, 0,
 | 
			
		||||
					 		 0, 0, 0, 0,
 | 
			
		||||
					 		 0, 0, 0, 0,
 | 
			
		||||
					 		 0, 0, 0, 0];
 | 
			
		||||
    this.itemsBoughtToday =	[0, 0, 0, 0,
 | 
			
		||||
					 		 0, 0, 0, 0,
 | 
			
		||||
					 		 0, 0, 0, 0,
 | 
			
		||||
					 		 0, 0, 0, 0];
 | 
			
		||||
    this.itemsSoldToday =  [0, 0, 0, 0,
 | 
			
		||||
                						0, 0, 0, 0,
 | 
			
		||||
														0, 0, 0, 0,
 | 
			
		||||
                						0, 0, 0, 0];
 | 
			
		||||
    this.itemsBoughtToday = [0, 0, 0, 0,
 | 
			
		||||
														 0, 0, 0, 0,
 | 
			
		||||
                						 0, 0, 0, 0,
 | 
			
		||||
                						 0, 0, 0, 0];
 | 
			
		||||
    this.SimulateTrade();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
pr_island.CheckInventory = function () {	// Returns an array of indices that have cargo
 | 
			
		||||
	var indicesWithCargo = [];
 | 
			
		||||
	for (var i = 0; i < this.inventory.length; i++) {
 | 
			
		||||
		if (this.inventory[i] > 0) {
 | 
			
		||||
			indicesWithCargo.push(i);
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	return indicesWithCargo;
 | 
			
		||||
pr_island.CheckInventory = function () {  // Returns an array of indices that have cargo
 | 
			
		||||
  var indicesWithCargo = [];
 | 
			
		||||
  for (var i = 0; i < this.inventory.length; i++) {
 | 
			
		||||
    if (this.inventory[i] > 0) {
 | 
			
		||||
      indicesWithCargo.push(i);
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
  return indicesWithCargo;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
pr_island.TradeWith = function () {
 | 
			
		||||
	// Change music to Trade.
 | 
			
		||||
	// console.log(this.inventory);
 | 
			
		||||
	mus_sail.Stop();
 | 
			
		||||
	mus_trade.Play();
 | 
			
		||||
	guiControl.trade.island = this;
 | 
			
		||||
	guiControl.trade.haggleAmount = 0;
 | 
			
		||||
	guiControl.trade.activateDelay = 5;
 | 
			
		||||
	guiControl.trade.show = true;
 | 
			
		||||
  // Change music to Trade.
 | 
			
		||||
  // console.log(this.inventory);
 | 
			
		||||
  mus_sail.Stop();
 | 
			
		||||
  mus_trade.Play();
 | 
			
		||||
  guiControl.trade.island = this;
 | 
			
		||||
  guiControl.trade.haggleAmount = 0;
 | 
			
		||||
  guiControl.trade.activateDelay = 5;
 | 
			
		||||
  guiControl.trade.show = true;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
pr_island.CanSellTo = function (itemIndex, price) {
 | 
			
		||||
	if (this.inventory[itemIndex] < this.storageSpace[itemIndex] && price < this.money) {
 | 
			
		||||
			// If there's space in the inventory and there's enough money.
 | 
			
		||||
			return true;
 | 
			
		||||
	}
 | 
			
		||||
	return false;
 | 
			
		||||
  if (this.inventory[itemIndex] < this.storageSpace[itemIndex] && price < this.money) {
 | 
			
		||||
      // If there's space in the inventory and there's enough money.
 | 
			
		||||
      return true;
 | 
			
		||||
  }
 | 
			
		||||
  return false;
 | 
			
		||||
}
 | 
			
		||||
pr_island.SellTo = function (itemIndex, price) {
 | 
			
		||||
	// Play Buy sound.
 | 
			
		||||
	this.inventory[itemIndex]++;
 | 
			
		||||
	this.itemsBought[itemIndex]++;
 | 
			
		||||
	this.money -= price;
 | 
			
		||||
  // Play Buy sound.
 | 
			
		||||
  this.inventory[itemIndex]++;
 | 
			
		||||
  this.itemsBought[itemIndex]++;
 | 
			
		||||
  this.money -= price;
 | 
			
		||||
 | 
			
		||||
	G.inventory.cargo[itemIndex]--;
 | 
			
		||||
	G.inventory.money += price;
 | 
			
		||||
	G.economy.cargoSold[itemIndex]++;
 | 
			
		||||
  G.inventory.cargo[itemIndex]--;
 | 
			
		||||
  G.inventory.money += price;
 | 
			
		||||
  G.economy.cargoSold[itemIndex]++;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
pr_island.CanBuyFrom = function (itemIndex, price) {
 | 
			
		||||
	if (this.inventory[itemIndex] > 0) {	// If there's enough of the item
 | 
			
		||||
			return true;
 | 
			
		||||
	}
 | 
			
		||||
	return false;
 | 
			
		||||
  if (this.inventory[itemIndex] > 0) {  // If there's enough of the item
 | 
			
		||||
		return true;
 | 
			
		||||
  }
 | 
			
		||||
  return false;
 | 
			
		||||
}
 | 
			
		||||
pr_island.BuyFrom = function (itemIndex, price) {
 | 
			
		||||
	// Play Sell sound.
 | 
			
		||||
	this.inventory[itemIndex]--;
 | 
			
		||||
	this.itemsSold[itemIndex]++;
 | 
			
		||||
	this.money += price;
 | 
			
		||||
  // Play Sell sound.
 | 
			
		||||
  this.inventory[itemIndex]--;
 | 
			
		||||
  this.itemsSold[itemIndex]++;
 | 
			
		||||
  this.money += price;
 | 
			
		||||
 | 
			
		||||
	G.inventory.cargo[itemIndex]++;
 | 
			
		||||
	G.inventory.money -= price;
 | 
			
		||||
	G.economy.cargoBought[itemIndex]++;
 | 
			
		||||
  G.inventory.cargo[itemIndex]++;
 | 
			
		||||
  G.inventory.money -= price;
 | 
			
		||||
  G.economy.cargoBought[itemIndex]++;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
pr_island.StayAtInn = function () {
 | 
			
		||||
	// Play Sell sound.
 | 
			
		||||
	this.innStays++;
 | 
			
		||||
  // Play Sell sound.
 | 
			
		||||
  this.innStays++;
 | 
			
		||||
 | 
			
		||||
	G.stats.illness--;
 | 
			
		||||
	G.inventory.money -= G.economy.innCost + this.innPriceDifference;
 | 
			
		||||
	G.economy.innStays++;
 | 
			
		||||
  G.stats.illness--;
 | 
			
		||||
  G.inventory.money -= G.economy.innCost + this.innPriceDifference;
 | 
			
		||||
  G.economy.innStays++;
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,84 +1,93 @@
 | 
			
		|||
var ani_ocean = OS.A.Add("Ocean", 256, 256, {columns: 10, speed: 1/60});
 | 
			
		||||
var ani_ocean = OS.A.Add("Ocean", 256, 256, { columns: 10, speed: 1/60 });
 | 
			
		||||
 | 
			
		||||
function oceanTilePrefab() {
 | 
			
		||||
	if (Oversimplified.DEBUG.showMessages) console.log("Ran oceanTilePrefab()");
 | 
			
		||||
	prefabsLoaded++;
 | 
			
		||||
  if (Oversimplified.DEBUG.showMessages) console.log("Ran oceanTilePrefab()");
 | 
			
		||||
  prefabsLoaded++;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
var pr_ocean = OS.P.Add("Ocean Particle", {
 | 
			
		||||
	imageSrc: "images/ocean_sheet.png",
 | 
			
		||||
	animations: [ani_ocean],
 | 
			
		||||
	depth: -100,	// Draw below everything.
 | 
			
		||||
  imageSrc: "images/ocean_sheet.png",
 | 
			
		||||
  animations: [ani_ocean],
 | 
			
		||||
  depth: -100,  // Draw below everything.
 | 
			
		||||
 | 
			
		||||
	positionCheckStep: 30,
 | 
			
		||||
	positionCheckProgress: 30,
 | 
			
		||||
	doCheckPosition: false,
 | 
			
		||||
  positionCheckStep: 30,
 | 
			
		||||
  positionCheckProgress: 30,
 | 
			
		||||
  doCheckPosition: false,
 | 
			
		||||
 | 
			
		||||
	moveTimer: 0,
 | 
			
		||||
  moveTimer: 0,
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
pr_ocean.BeforeDo = function () {
 | 
			
		||||
	this.positionCheckProgress++;
 | 
			
		||||
	if (this.positionCheckProgress >= this.positionCheckStep) {
 | 
			
		||||
		this.positionCheckProgress = 0;
 | 
			
		||||
		this.doCheckPosition = true;
 | 
			
		||||
	}
 | 
			
		||||
  this.positionCheckProgress++;
 | 
			
		||||
  if (this.positionCheckProgress >= this.positionCheckStep) {
 | 
			
		||||
    this.positionCheckProgress = 0;
 | 
			
		||||
    this.doCheckPosition = true;
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
pr_ocean.Do = function () {
 | 
			
		||||
	// Move around randomly.
 | 
			
		||||
	this.moveTimer++;
 | 
			
		||||
	if (this.moveTimer >= 120) {
 | 
			
		||||
		this.x += 1 * pixel(Math.round(Math.randomRange(-1, 1)));
 | 
			
		||||
		this.y += 1 * pixel(Math.round(Math.randomRange(-1, 1)));
 | 
			
		||||
		this.moveTimer = 0;
 | 
			
		||||
	}
 | 
			
		||||
  // Move around randomly.
 | 
			
		||||
  this.moveTimer++;
 | 
			
		||||
  if (this.moveTimer >= 120) {
 | 
			
		||||
    this.x += 1 * pixel(Math.round(Math.randomRange(-1, 1)));
 | 
			
		||||
    this.y += 1 * pixel(Math.round(Math.randomRange(-1, 1)));
 | 
			
		||||
    this.moveTimer = 0;
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
pr_ocean.CheckPosition = function (checkX, checkY, direction) {
 | 
			
		||||
	if (this.doCheckPosition) {
 | 
			
		||||
		// If it's completely off the screen, then update position.
 | 
			
		||||
		if ((Math.abs(this.x - checkX) > (OS.camera.width + this.xBound)) ||
 | 
			
		||||
			(Math.abs(this.y - checkY) > (OS.camera.height + this.yBound)))
 | 
			
		||||
		{
 | 
			
		||||
			switch (direction) {
 | 
			
		||||
				case 0:
 | 
			
		||||
					this.x = checkX + (OS.camera.width + this.xBound) + randomSmidge();
 | 
			
		||||
					this.y = checkY + randomSmidge();
 | 
			
		||||
  if (this.doCheckPosition) {
 | 
			
		||||
    // If it's completely off the screen, then update position.
 | 
			
		||||
    if ((Math.abs(this.x - checkX) > (OS.camera.width + this.xBound)) ||
 | 
			
		||||
      (Math.abs(this.y - checkY) > (OS.camera.height + this.yBound)))
 | 
			
		||||
    {
 | 
			
		||||
      switch (direction) {
 | 
			
		||||
        case 0: {
 | 
			
		||||
          this.x = checkX + (OS.camera.width + this.xBound) + randomSmidge();
 | 
			
		||||
          this.y = checkY + randomSmidge();
 | 
			
		||||
					break;
 | 
			
		||||
				case 45:
 | 
			
		||||
					this.x = checkX + (OS.camera.width + this.xBound) + randomSmidge();
 | 
			
		||||
					this.y = checkY - (OS.camera.height + this.yBound) + randomSmidge();
 | 
			
		||||
				}
 | 
			
		||||
        case 45: {
 | 
			
		||||
          this.x = checkX + (OS.camera.width + this.xBound) + randomSmidge();
 | 
			
		||||
          this.y = checkY - (OS.camera.height + this.yBound) + randomSmidge();
 | 
			
		||||
					break;
 | 
			
		||||
				case 90:
 | 
			
		||||
					this.x = checkX + randomSmidge();
 | 
			
		||||
					this.y = checkY - (OS.camera.height + this.yBound) + randomSmidge();
 | 
			
		||||
				}
 | 
			
		||||
        case 90: {
 | 
			
		||||
          this.x = checkX + randomSmidge();
 | 
			
		||||
          this.y = checkY - (OS.camera.height + this.yBound) + randomSmidge();
 | 
			
		||||
					break;
 | 
			
		||||
				case 135:
 | 
			
		||||
					this.x = checkX - (OS.camera.width + this.xBound) + randomSmidge();
 | 
			
		||||
					this.y = checkY - (OS.camera.height + this.yBound) + randomSmidge();
 | 
			
		||||
				}
 | 
			
		||||
        case 135: {
 | 
			
		||||
          this.x = checkX - (OS.camera.width + this.xBound) + randomSmidge();
 | 
			
		||||
          this.y = checkY - (OS.camera.height + this.yBound) + randomSmidge();
 | 
			
		||||
					break;
 | 
			
		||||
				case 180:
 | 
			
		||||
					this.x = checkX - (OS.camera.width + this.xBound) + randomSmidge();
 | 
			
		||||
					this.y = checkY + randomSmidge();
 | 
			
		||||
				}
 | 
			
		||||
        case 180: {
 | 
			
		||||
          this.x = checkX - (OS.camera.width + this.xBound) + randomSmidge();
 | 
			
		||||
          this.y = checkY + randomSmidge();
 | 
			
		||||
					break;
 | 
			
		||||
				case 225:
 | 
			
		||||
					this.x = checkX - (OS.camera.width + this.xBound) + randomSmidge();
 | 
			
		||||
					this.y = checkY + (OS.camera.height + this.yBound) + randomSmidge();
 | 
			
		||||
				}
 | 
			
		||||
        case 225: {
 | 
			
		||||
          this.x = checkX - (OS.camera.width + this.xBound) + randomSmidge();
 | 
			
		||||
          this.y = checkY + (OS.camera.height + this.yBound) + randomSmidge();
 | 
			
		||||
					break;
 | 
			
		||||
				case 270:
 | 
			
		||||
					this.x = checkX + randomSmidge();
 | 
			
		||||
					this.y = checkY + (OS.camera.height + this.yBound) + randomSmidge();
 | 
			
		||||
				}
 | 
			
		||||
        case 270: {
 | 
			
		||||
          this.x = checkX + randomSmidge();
 | 
			
		||||
          this.y = checkY + (OS.camera.height + this.yBound) + randomSmidge();
 | 
			
		||||
					break;
 | 
			
		||||
				case 315:
 | 
			
		||||
					this.x = checkX + (OS.camera.width + this.xBound) + randomSmidge();
 | 
			
		||||
					this.y = checkY + (OS.camera.height + this.yBound) + randomSmidge();
 | 
			
		||||
				}
 | 
			
		||||
        case 315: {
 | 
			
		||||
          this.x = checkX + (OS.camera.width + this.xBound) + randomSmidge();
 | 
			
		||||
          this.y = checkY + (OS.camera.height + this.yBound) + randomSmidge();
 | 
			
		||||
					break;
 | 
			
		||||
				default:
 | 
			
		||||
					console.log("No valid direction");
 | 
			
		||||
				}
 | 
			
		||||
        default: {
 | 
			
		||||
          console.log("No valid direction");
 | 
			
		||||
					break;
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
				}
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
		this.doCheckPosition = false;
 | 
			
		||||
	}
 | 
			
		||||
    this.doCheckPosition = false;
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -8,224 +8,233 @@ var ani_ship_d = OS.A.Add("Ship Down", 64, 64, {columns: 2, speed: 1/60, yOffset
 | 
			
		|||
var ani_ship_dr = OS.A.Add("Ship Down-Right", 64, 64, {columns: 2, speed: 1/60, yOffset: 64 * 2});
 | 
			
		||||
 | 
			
		||||
function shipPrefab() {
 | 
			
		||||
	if (Oversimplified.DEBUG.showMessages) console.log("Ran shipPrefab()");
 | 
			
		||||
	prefabsLoaded++;
 | 
			
		||||
  if (Oversimplified.DEBUG.showMessages) console.log("Ran shipPrefab()");
 | 
			
		||||
  prefabsLoaded++;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
var pr_ship = OS.P.Add("Ship", {
 | 
			
		||||
	solid: true,
 | 
			
		||||
	imageSrc: "images/ship_sheet.png",
 | 
			
		||||
	maskImageSrc: "images/ship_mask.png",
 | 
			
		||||
	animations: [ani_ship_r, ani_ship_ur, ani_ship_u, ani_ship_ul, ani_ship_l, ani_ship_dl, ani_ship_d, ani_ship_dr],
 | 
			
		||||
	
 | 
			
		||||
	direction: 0,
 | 
			
		||||
	currentSpeed: 0,
 | 
			
		||||
	pointInFront : {x: 0, y: 0 },
 | 
			
		||||
	moveStepSize: 3,
 | 
			
		||||
	moveStepAmount: 5 * OS.R[OS.R.currentRoom].stepSpeed,
 | 
			
		||||
	moveStepProgress: 0,
 | 
			
		||||
	doTakeStep: false,
 | 
			
		||||
  solid: true,
 | 
			
		||||
  imageSrc: "images/ship_sheet.png",
 | 
			
		||||
  maskImageSrc: "images/ship_mask.png",
 | 
			
		||||
  animations: [ani_ship_r, ani_ship_ur, ani_ship_u, ani_ship_ul, ani_ship_l, ani_ship_dl, ani_ship_d, ani_ship_dr],
 | 
			
		||||
  
 | 
			
		||||
  direction: 0,
 | 
			
		||||
  currentSpeed: 0,
 | 
			
		||||
  pointInFront : {x: 0, y: 0 },
 | 
			
		||||
  moveStepSize: 3,
 | 
			
		||||
  moveStepAmount: 5 * OS.R[OS.R.currentRoom].stepSpeed,
 | 
			
		||||
  moveStepProgress: 0,
 | 
			
		||||
  doTakeStep: false,
 | 
			
		||||
 | 
			
		||||
	energyRefillTimer: 0,
 | 
			
		||||
  energyRefillTimer: 0,
 | 
			
		||||
 | 
			
		||||
	drawSickIndicator: 0,
 | 
			
		||||
	drawSickIndicatorTime: secondsWorthOfFrames(1.5)
 | 
			
		||||
  drawSickIndicator: 0,
 | 
			
		||||
  drawSickIndicatorTime: secondsWorthOfFrames(1.5),
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
pr_ship.BeforeDo = function () {
 | 
			
		||||
	if (G.gameStarted) {
 | 
			
		||||
		this.GetMapPosition();
 | 
			
		||||
	}
 | 
			
		||||
  if (G.gameStarted) {
 | 
			
		||||
    this.GetMapPosition();
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
pr_ship.Do = function () {
 | 
			
		||||
	if (G.gameStarted) {
 | 
			
		||||
		if (guiControl && guiControl.inventory && guiControl.map && guiControl.trade) {   // Force it to wait until loaded.
 | 
			
		||||
			if (!guiControl.inventory.show && !guiControl.map.show && !guiControl.trade.show) {
 | 
			
		||||
				if (ct_left().down) {
 | 
			
		||||
					this.direction += 45;
 | 
			
		||||
				} else if (ct_right().down) {
 | 
			
		||||
					this.direction -= 45;
 | 
			
		||||
				}
 | 
			
		||||
				this.direction = Math.clampAngle(this.direction);
 | 
			
		||||
			
 | 
			
		||||
				if (ct_up().down) {
 | 
			
		||||
					this.currentSpeed++;
 | 
			
		||||
				} else if (ct_down().down) {
 | 
			
		||||
					this.currentSpeed--;
 | 
			
		||||
				}
 | 
			
		||||
				this.AdjustSpeedBasedOnEnergy();
 | 
			
		||||
  if (G.gameStarted) {
 | 
			
		||||
    if (guiControl && guiControl.inventory && guiControl.map && guiControl.trade) {   // Force it to wait until loaded.
 | 
			
		||||
      if (!guiControl.inventory.show && !guiControl.map.show && !guiControl.trade.show) {
 | 
			
		||||
        if (ct_left().down) {
 | 
			
		||||
          this.direction += 45;
 | 
			
		||||
        } else if (ct_right().down) {
 | 
			
		||||
          this.direction -= 45;
 | 
			
		||||
        }
 | 
			
		||||
        this.direction = Math.clampAngle(this.direction);
 | 
			
		||||
      
 | 
			
		||||
        if (ct_up().down) {
 | 
			
		||||
          this.currentSpeed++;
 | 
			
		||||
        } else if (ct_down().down) {
 | 
			
		||||
          this.currentSpeed--;
 | 
			
		||||
        }
 | 
			
		||||
        this.AdjustSpeedBasedOnEnergy();
 | 
			
		||||
 | 
			
		||||
				this.CheckInteraction();
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
        this.CheckInteraction();
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
		this.currentSpeed = Math.clamp(this.currentSpeed, 0, 4);
 | 
			
		||||
		
 | 
			
		||||
		this.moveStepProgress += this.currentSpeed * this.moveStepAmount;
 | 
			
		||||
		if (this.moveStepProgress >= this.moveStepSize) {
 | 
			
		||||
			this.moveStepProgress -= this.moveStepSize;
 | 
			
		||||
			this.doTakeStep = true;
 | 
			
		||||
		} else {
 | 
			
		||||
			this.doTakeStep = false;
 | 
			
		||||
		}
 | 
			
		||||
    this.currentSpeed = Math.clamp(this.currentSpeed, 0, 4);
 | 
			
		||||
    
 | 
			
		||||
    this.moveStepProgress += this.currentSpeed * this.moveStepAmount;
 | 
			
		||||
    if (this.moveStepProgress >= this.moveStepSize) {
 | 
			
		||||
      this.moveStepProgress -= this.moveStepSize;
 | 
			
		||||
      this.doTakeStep = true;
 | 
			
		||||
    } else {
 | 
			
		||||
      this.doTakeStep = false;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
		this.SeamlessScroll();
 | 
			
		||||
		// console.log(G.player.name + " created at " + G.player.x + ", " + G.player.y);
 | 
			
		||||
	}
 | 
			
		||||
    this.SeamlessScroll();
 | 
			
		||||
    // console.log(G.player.name + " created at " + G.player.x + ", " + G.player.y);
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
pr_ship.AfterDo = function () {
 | 
			
		||||
	if (G.gameStarted) {
 | 
			
		||||
		this.CheckMovement();
 | 
			
		||||
		this.UpdateEnergy();
 | 
			
		||||
	}
 | 
			
		||||
  if (G.gameStarted) {
 | 
			
		||||
    this.CheckMovement();
 | 
			
		||||
    this.UpdateEnergy();
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
pr_ship.DrawAbove = function () {
 | 
			
		||||
	if (G.gameStarted) {
 | 
			
		||||
		this.drawSickIndicator--;
 | 
			
		||||
		if (this.drawSickIndicator < 0) {
 | 
			
		||||
			this.drawSickIndicator = 0;
 | 
			
		||||
		}
 | 
			
		||||
		if (this.drawSickIndicator > 0) {
 | 
			
		||||
			var sickIndicatorHeight = Math.round((this.drawSickIndicatorTime - this.drawSickIndicator) / 2) / OS.S.pixelScale;
 | 
			
		||||
			var sickIndicatorY = this.y - sickIndicatorHeight - Oversimplified.camera.y - (guiControl.iconScaled / 2);
 | 
			
		||||
			guiControl.drawIcon(4, 1, this.x - Oversimplified.camera.x - (guiControl.iconScaled / 2), sickIndicatorY);
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
  if (G.gameStarted) {
 | 
			
		||||
    this.drawSickIndicator--;
 | 
			
		||||
    if (this.drawSickIndicator < 0) {
 | 
			
		||||
      this.drawSickIndicator = 0;
 | 
			
		||||
    }
 | 
			
		||||
    if (this.drawSickIndicator > 0) {
 | 
			
		||||
      var sickIndicatorHeight = Math.round((this.drawSickIndicatorTime - this.drawSickIndicator) / 2) / OS.S.pixelScale;
 | 
			
		||||
      var sickIndicatorY = this.y - sickIndicatorHeight - Oversimplified.camera.y - (guiControl.iconScaled / 2);
 | 
			
		||||
      guiControl.drawIcon(4, 1, this.x - Oversimplified.camera.x - (guiControl.iconScaled / 2), sickIndicatorY);
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
pr_ship.GetMapPosition = function () {
 | 
			
		||||
	this.mapX = pixel(Math.round(this.x / pixel(64)));
 | 
			
		||||
	this.mapY = pixel(Math.round(this.y / pixel(64)));
 | 
			
		||||
	// console.log(this.mapX + ", " + this.mapY);
 | 
			
		||||
  this.mapX = pixel(Math.round(this.x / pixel(64)));
 | 
			
		||||
  this.mapY = pixel(Math.round(this.y / pixel(64)));
 | 
			
		||||
  // console.log(this.mapX + ", " + this.mapY);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
pr_ship.CheckInteraction = function () {
 | 
			
		||||
	if (ct_confirm().down) {
 | 
			
		||||
		var objectsFound = OS.GameObjectsAtPoint(this.pointInFront.x, this.pointInFront.y);
 | 
			
		||||
		if (objectsFound.length > 0) {
 | 
			
		||||
			for (var i = 0; i < objectsFound.length; i++) {
 | 
			
		||||
				if (objectsFound[i].canTrade) {
 | 
			
		||||
					// console.log("interacting with island: " + objectsFound[i].name);
 | 
			
		||||
					objectsFound[i].TradeWith();
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
  if (ct_confirm().down) {
 | 
			
		||||
    var objectsFound = OS.GameObjectsAtPoint(this.pointInFront.x, this.pointInFront.y);
 | 
			
		||||
    if (objectsFound.length > 0) {
 | 
			
		||||
      for (var i = 0; i < objectsFound.length; i++) {
 | 
			
		||||
        if (objectsFound[i].canTrade) {
 | 
			
		||||
          // console.log("interacting with island: " + objectsFound[i].name);
 | 
			
		||||
          objectsFound[i].TradeWith();
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
pr_ship.CheckMovement = function () {
 | 
			
		||||
	var moveAmount = pixel(G.stats.speed + this.currentSpeed);
 | 
			
		||||
	var movedSuccessfully = false;
 | 
			
		||||
	switch (this.direction) {
 | 
			
		||||
		case 0:
 | 
			
		||||
			if (this.sprite.currentAnimation != "Ship Right") this.SetAnimation("Ship Right");
 | 
			
		||||
			if (this.doTakeStep) movedSuccessfully = this.SimpleMove(moveAmount, 0, true, pixel(4));
 | 
			
		||||
			this.pointInFront.x = this.x + this.xBound + pixel(2) + moveAmount;
 | 
			
		||||
			this.pointInFront.y = this.y;
 | 
			
		||||
			break;
 | 
			
		||||
		case 45:
 | 
			
		||||
			if (this.sprite.currentAnimation != "Ship Up-Right") this.SetAnimation("Ship Up-Right");
 | 
			
		||||
			if (this.doTakeStep) movedSuccessfully = this.SimpleMove(moveAmount, -moveAmount, true, pixel(4));
 | 
			
		||||
			this.pointInFront.x = this.x + this.xBound + pixel(2) + moveAmount;
 | 
			
		||||
			this.pointInFront.y = this.y - this.yBound - pixel(2) - moveAmount;
 | 
			
		||||
			break;
 | 
			
		||||
		case 90:
 | 
			
		||||
			if (this.sprite.currentAnimation != "Ship Up") this.SetAnimation("Ship Up");
 | 
			
		||||
			if (this.doTakeStep) movedSuccessfully = this.SimpleMove(0, -moveAmount, true, pixel(4));
 | 
			
		||||
			this.pointInFront.x = this.x;
 | 
			
		||||
			this.pointInFront.y = this.y - this.yBound - pixel(2) - moveAmount;
 | 
			
		||||
			break;
 | 
			
		||||
		case 135:
 | 
			
		||||
			if (this.sprite.currentAnimation != "Ship Up-Left") this.SetAnimation("Ship Up-Left");
 | 
			
		||||
			if (this.doTakeStep) movedSuccessfully = this.SimpleMove(-moveAmount, -moveAmount, true, pixel(4));
 | 
			
		||||
			this.pointInFront.x = this.x - this.xBound - pixel(2) - moveAmount;
 | 
			
		||||
			this.pointInFront.y = this.y - this.yBound - pixel(2) - moveAmount;
 | 
			
		||||
			break;
 | 
			
		||||
		case 180:
 | 
			
		||||
			if (this.sprite.currentAnimation != "Ship Left") this.SetAnimation("Ship Left");
 | 
			
		||||
			if (this.doTakeStep) movedSuccessfully = this.SimpleMove(-moveAmount, 0, true, pixel(4));
 | 
			
		||||
			this.pointInFront.x = this.x - this.xBound - pixel(2) - moveAmount;
 | 
			
		||||
			this.pointInFront.y = this.y;
 | 
			
		||||
			break;
 | 
			
		||||
		case 225:
 | 
			
		||||
			if (this.sprite.currentAnimation != "Ship Down-Left") this.SetAnimation("Ship Down-Left");
 | 
			
		||||
			if (this.doTakeStep) movedSuccessfully = this.SimpleMove(-moveAmount, moveAmount, true, pixel(4));
 | 
			
		||||
			this.pointInFront.x = this.x - this.xBound - pixel(2) - moveAmount;
 | 
			
		||||
			this.pointInFront.y = this.y + this.yBound + pixel(2) + moveAmount;
 | 
			
		||||
			break;
 | 
			
		||||
		case 270:
 | 
			
		||||
			if (this.sprite.currentAnimation != "Ship Down") this.SetAnimation("Ship Down");
 | 
			
		||||
			if (this.doTakeStep) movedSuccessfully = this.SimpleMove(0, moveAmount, true, pixel(4));
 | 
			
		||||
			this.pointInFront.x = this.x;
 | 
			
		||||
			this.pointInFront.y = this.y + this.yBound + pixel(2) + moveAmount;
 | 
			
		||||
			break;
 | 
			
		||||
		case 315:
 | 
			
		||||
			if (this.sprite.currentAnimation != "Ship Down-Right") this.SetAnimation("Ship Down-Right");
 | 
			
		||||
			if (this.doTakeStep) movedSuccessfully = this.SimpleMove(moveAmount, moveAmount, true, pixel(4));
 | 
			
		||||
			this.pointInFront.x = this.x + this.xBound + pixel(2) + moveAmount;
 | 
			
		||||
			this.pointInFront.y = this.y + this.yBound + pixel(2) + moveAmount;
 | 
			
		||||
			break;
 | 
			
		||||
		default:
 | 
			
		||||
			console.log("No valid direction");
 | 
			
		||||
			break;
 | 
			
		||||
	}
 | 
			
		||||
  var moveAmount = pixel(G.stats.speed + this.currentSpeed);
 | 
			
		||||
  var movedSuccessfully = false;
 | 
			
		||||
  switch (this.direction) {
 | 
			
		||||
    case 0: {
 | 
			
		||||
      if (this.sprite.currentAnimation != "Ship Right") this.SetAnimation("Ship Right");
 | 
			
		||||
      if (this.doTakeStep) movedSuccessfully = this.SimpleMove(moveAmount, 0, true, pixel(4));
 | 
			
		||||
      this.pointInFront.x = this.x + this.xBound + pixel(2) + moveAmount;
 | 
			
		||||
      this.pointInFront.y = this.y;
 | 
			
		||||
      break;
 | 
			
		||||
    }
 | 
			
		||||
    case 45: {
 | 
			
		||||
      if (this.sprite.currentAnimation != "Ship Up-Right") this.SetAnimation("Ship Up-Right");
 | 
			
		||||
      if (this.doTakeStep) movedSuccessfully = this.SimpleMove(moveAmount, -moveAmount, true, pixel(4));
 | 
			
		||||
      this.pointInFront.x = this.x + this.xBound + pixel(2) + moveAmount;
 | 
			
		||||
      this.pointInFront.y = this.y - this.yBound - pixel(2) - moveAmount;
 | 
			
		||||
      break;
 | 
			
		||||
    }
 | 
			
		||||
    case 90: {
 | 
			
		||||
      if (this.sprite.currentAnimation != "Ship Up") this.SetAnimation("Ship Up");
 | 
			
		||||
      if (this.doTakeStep) movedSuccessfully = this.SimpleMove(0, -moveAmount, true, pixel(4));
 | 
			
		||||
      this.pointInFront.x = this.x;
 | 
			
		||||
      this.pointInFront.y = this.y - this.yBound - pixel(2) - moveAmount;
 | 
			
		||||
      break;
 | 
			
		||||
    }
 | 
			
		||||
    case 135: {
 | 
			
		||||
      if (this.sprite.currentAnimation != "Ship Up-Left") this.SetAnimation("Ship Up-Left");
 | 
			
		||||
      if (this.doTakeStep) movedSuccessfully = this.SimpleMove(-moveAmount, -moveAmount, true, pixel(4));
 | 
			
		||||
      this.pointInFront.x = this.x - this.xBound - pixel(2) - moveAmount;
 | 
			
		||||
      this.pointInFront.y = this.y - this.yBound - pixel(2) - moveAmount;
 | 
			
		||||
      break;
 | 
			
		||||
    }
 | 
			
		||||
    case 180: {
 | 
			
		||||
      if (this.sprite.currentAnimation != "Ship Left") this.SetAnimation("Ship Left");
 | 
			
		||||
      if (this.doTakeStep) movedSuccessfully = this.SimpleMove(-moveAmount, 0, true, pixel(4));
 | 
			
		||||
      this.pointInFront.x = this.x - this.xBound - pixel(2) - moveAmount;
 | 
			
		||||
      this.pointInFront.y = this.y;
 | 
			
		||||
      break;
 | 
			
		||||
    }
 | 
			
		||||
    case 225: {
 | 
			
		||||
      if (this.sprite.currentAnimation != "Ship Down-Left") this.SetAnimation("Ship Down-Left");
 | 
			
		||||
      if (this.doTakeStep) movedSuccessfully = this.SimpleMove(-moveAmount, moveAmount, true, pixel(4));
 | 
			
		||||
      this.pointInFront.x = this.x - this.xBound - pixel(2) - moveAmount;
 | 
			
		||||
      this.pointInFront.y = this.y + this.yBound + pixel(2) + moveAmount;
 | 
			
		||||
      break;
 | 
			
		||||
    }
 | 
			
		||||
    case 270: {
 | 
			
		||||
      if (this.sprite.currentAnimation != "Ship Down") this.SetAnimation("Ship Down");
 | 
			
		||||
      if (this.doTakeStep) movedSuccessfully = this.SimpleMove(0, moveAmount, true, pixel(4));
 | 
			
		||||
      this.pointInFront.x = this.x;
 | 
			
		||||
      this.pointInFront.y = this.y + this.yBound + pixel(2) + moveAmount;
 | 
			
		||||
      break;
 | 
			
		||||
    }
 | 
			
		||||
    case 315: {
 | 
			
		||||
      if (this.sprite.currentAnimation != "Ship Down-Right") this.SetAnimation("Ship Down-Right");
 | 
			
		||||
      if (this.doTakeStep) movedSuccessfully = this.SimpleMove(moveAmount, moveAmount, true, pixel(4));
 | 
			
		||||
      this.pointInFront.x = this.x + this.xBound + pixel(2) + moveAmount;
 | 
			
		||||
      this.pointInFront.y = this.y + this.yBound + pixel(2) + moveAmount;
 | 
			
		||||
      break;
 | 
			
		||||
    }
 | 
			
		||||
    default: {
 | 
			
		||||
      console.log("No valid direction");
 | 
			
		||||
      break;
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
	if (this.doTakeStep && !movedSuccessfully) {
 | 
			
		||||
		this.currentSpeed = 0;
 | 
			
		||||
	}
 | 
			
		||||
  if (this.doTakeStep && !movedSuccessfully) {
 | 
			
		||||
    this.currentSpeed = 0;
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
pr_ship.UpdateEnergy = function () {
 | 
			
		||||
	this.energyRefillTimer++;
 | 
			
		||||
	if (this.energyRefillTimer >= (100 / G.stats.crew) + ((G.stats.illness) * (100 / G.stats.crew))) {
 | 
			
		||||
		G.stats.energy += G.stats.crew;
 | 
			
		||||
		this.energyRefillTimer = 0;
 | 
			
		||||
	}
 | 
			
		||||
  this.energyRefillTimer++;
 | 
			
		||||
  if (this.energyRefillTimer >= (100 / G.stats.crew) + ((G.stats.illness) * (100 / G.stats.crew))) {
 | 
			
		||||
    G.stats.energy += G.stats.crew;
 | 
			
		||||
    this.energyRefillTimer = 0;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
	if (this.doTakeStep) {
 | 
			
		||||
		G.stats.energy -= ((this.currentSpeed / G.stats.speed) + ((G.stats.illness) * 0.1)) * 0.25;
 | 
			
		||||
	}
 | 
			
		||||
  if (this.doTakeStep) {
 | 
			
		||||
    G.stats.energy -= ((this.currentSpeed / G.stats.speed) + ((G.stats.illness) * 0.1)) * 0.25;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
	if (G.stats.energy < 0) G.stats.energy = 0;
 | 
			
		||||
	if (G.stats.energy > G.stats.maxEnergy) G.stats.energy = G.stats.maxEnergy;
 | 
			
		||||
  if (G.stats.energy < 0) G.stats.energy = 0;
 | 
			
		||||
  if (G.stats.energy > G.stats.maxEnergy) G.stats.energy = G.stats.maxEnergy;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
pr_ship.SeamlessScroll = function () {
 | 
			
		||||
	if (this.x <= rm_Ocean.mapLeftTrigger) {
 | 
			
		||||
		this.x = rm_Ocean.mapLeftTriggerTarget;
 | 
			
		||||
		OS.SetCamera({x: rm_Ocean.width});
 | 
			
		||||
	}
 | 
			
		||||
	else if (this.x >= rm_Ocean.mapRightTrigger) {
 | 
			
		||||
		this.x = rm_Ocean.mapRightTriggerTarget;
 | 
			
		||||
		OS.SetCamera({x: 0});
 | 
			
		||||
	}
 | 
			
		||||
	else if (this.y <= rm_Ocean.mapUpTrigger) {
 | 
			
		||||
		this.y = rm_Ocean.mapUpTriggerTarget;
 | 
			
		||||
		OS.SetCamera({y: rm_Ocean.height});
 | 
			
		||||
	}
 | 
			
		||||
	else if (this.y >= rm_Ocean.mapDownTrigger) {
 | 
			
		||||
		this.y = rm_Ocean.mapDownTriggerTarget;
 | 
			
		||||
		OS.SetCamera({y: 0});
 | 
			
		||||
	}
 | 
			
		||||
  if (this.x <= rm_Ocean.mapLeftTrigger) {
 | 
			
		||||
    this.x = rm_Ocean.mapLeftTriggerTarget;
 | 
			
		||||
    OS.SetCamera({x: rm_Ocean.width});
 | 
			
		||||
  }
 | 
			
		||||
  else if (this.x >= rm_Ocean.mapRightTrigger) {
 | 
			
		||||
    this.x = rm_Ocean.mapRightTriggerTarget;
 | 
			
		||||
    OS.SetCamera({x: 0});
 | 
			
		||||
  }
 | 
			
		||||
  else if (this.y <= rm_Ocean.mapUpTrigger) {
 | 
			
		||||
    this.y = rm_Ocean.mapUpTriggerTarget;
 | 
			
		||||
    OS.SetCamera({y: rm_Ocean.height});
 | 
			
		||||
  }
 | 
			
		||||
  else if (this.y >= rm_Ocean.mapDownTrigger) {
 | 
			
		||||
    this.y = rm_Ocean.mapDownTriggerTarget;
 | 
			
		||||
    OS.SetCamera({y: 0});
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
pr_ship.AdjustSpeedBasedOnEnergy = function () {
 | 
			
		||||
	if (this.currentSpeed > 3 && G.stats.energy < (G.stats.maxEnergy * 0.3) ||
 | 
			
		||||
		this.currentSpeed > 2 && G.stats.energy < (G.stats.maxEnergy * 0.15) ||
 | 
			
		||||
		this.currentSpeed > 1 && G.stats.energy < (G.stats.maxEnergy * 0.05))
 | 
			
		||||
	{
 | 
			
		||||
		this.currentSpeed--;
 | 
			
		||||
	}
 | 
			
		||||
  if (this.currentSpeed > 3 && G.stats.energy < (G.stats.maxEnergy * 0.3) ||
 | 
			
		||||
    this.currentSpeed > 2 && G.stats.energy < (G.stats.maxEnergy * 0.15) ||
 | 
			
		||||
    this.currentSpeed > 1 && G.stats.energy < (G.stats.maxEnergy * 0.05))
 | 
			
		||||
  {
 | 
			
		||||
    this.currentSpeed--;
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
pr_ship.CheckIllnessIncrease = function () {
 | 
			
		||||
	var percentChance = G.stats.crew + ((this.currentSpeed / (G.stats.energy + 0.001)) * G.stats.illness);	// +0.001 on the off-chance that energy reaches 0.
 | 
			
		||||
	if (Math.randomRange(0, 100) < percentChance) {
 | 
			
		||||
		snd_illness.Play();
 | 
			
		||||
		G.stats.illness++;
 | 
			
		||||
		this.drawSickIndicator += secondsWorthOfFrames(1.5);
 | 
			
		||||
	}
 | 
			
		||||
  var percentChance = G.stats.crew + ((this.currentSpeed / (G.stats.energy + 0.001)) * G.stats.illness);  // +0.001 on the off-chance that energy reaches 0.
 | 
			
		||||
  if (Math.randomRange(0, 100) < percentChance) {
 | 
			
		||||
    snd_illness.Play();
 | 
			
		||||
    G.stats.illness++;
 | 
			
		||||
    this.drawSickIndicator += secondsWorthOfFrames(1.5);
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,27 +1,27 @@
 | 
			
		|||
var ani_wave = OS.A.Add("Wave", 64, 64, {columns: 10, speed: 1/10});
 | 
			
		||||
 | 
			
		||||
function wavePrefab() {
 | 
			
		||||
	if (Oversimplified.DEBUG.showMessages) console.log("Ran wavePrefab()");
 | 
			
		||||
	prefabsLoaded++;
 | 
			
		||||
  if (Oversimplified.DEBUG.showMessages) console.log("Ran wavePrefab()");
 | 
			
		||||
  prefabsLoaded++;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
var pr_wave = OS.P.Add("Wave Particle", {
 | 
			
		||||
	imageSrc: "images/wave_sheet.png",
 | 
			
		||||
	animations: [ani_wave],
 | 
			
		||||
	depth: -90,	// Draw above ocean, below everything else.
 | 
			
		||||
  imageSrc: "images/wave_sheet.png",
 | 
			
		||||
  animations: [ani_wave],
 | 
			
		||||
  depth: -90,  // Draw above ocean, below everything else.
 | 
			
		||||
 | 
			
		||||
	lifeTimer: 100,
 | 
			
		||||
  lifeTimer: 100,
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
pr_wave.DoFirst = function () {
 | 
			
		||||
	if (!snd_wave.IsPlaying()) {
 | 
			
		||||
		snd_wave.Play();
 | 
			
		||||
	}
 | 
			
		||||
  if (!snd_wave.IsPlaying()) {
 | 
			
		||||
    snd_wave.Play();
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
pr_wave.Do = function () {
 | 
			
		||||
	// Move around randomly.
 | 
			
		||||
	this.lifeTimer--;
 | 
			
		||||
	if (this.lifeTimer <= 0) {
 | 
			
		||||
		this.Destroy();
 | 
			
		||||
	}
 | 
			
		||||
  // Move around randomly.
 | 
			
		||||
  this.lifeTimer--;
 | 
			
		||||
  if (this.lifeTimer <= 0) {
 | 
			
		||||
    this.Destroy();
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -1,177 +1,177 @@
 | 
			
		|||
function oceanRoom () {
 | 
			
		||||
    if (Oversimplified.DEBUG.showMessages) console.log("Ran oceanRoom()");
 | 
			
		||||
  if (Oversimplified.DEBUG.showMessages) console.log("Ran oceanRoom()");
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
rm_Ocean.waveTimer = Math.round(Math.randomRange(30, 150));
 | 
			
		||||
rm_Ocean.clockTimerCount = 1;   // Set it to 1 so it doesn't check for player illness immediately!
 | 
			
		||||
 | 
			
		||||
rm_Ocean.DoFirst = function () {
 | 
			
		||||
    mus_title.Play();
 | 
			
		||||
  mus_title.Play();
 | 
			
		||||
 | 
			
		||||
    // G.player and G.oceanParticle are created in loadPrefabs.js
 | 
			
		||||
  // G.player and G.oceanParticle are created in loadPrefabs.js
 | 
			
		||||
 | 
			
		||||
    rm_Ocean.GenerateMap();
 | 
			
		||||
  rm_Ocean.GenerateMap();
 | 
			
		||||
 | 
			
		||||
    console.log("player xBound: " + G.player.xBound);
 | 
			
		||||
    G.player.x = (this.squareSize * (this.squaresX / 2)) - (this.squareSize / 2) - G.player.xBound;
 | 
			
		||||
    G.player.y = (this.squareSize * (this.squaresY / 2));
 | 
			
		||||
    // console.log(G.player.name + " created at " + G.player.x + ", " + G.player.y);
 | 
			
		||||
  console.log("player xBound: " + G.player.xBound);
 | 
			
		||||
  G.player.x = (this.squareSize * (this.squaresX / 2)) - (this.squareSize / 2) - G.player.xBound;
 | 
			
		||||
  G.player.y = (this.squareSize * (this.squaresY / 2));
 | 
			
		||||
  // console.log(G.player.name + " created at " + G.player.x + ", " + G.player.y);
 | 
			
		||||
 | 
			
		||||
    G.oceanParticle.x = G.player.x + randomSmidge();
 | 
			
		||||
    G.oceanParticle.y = G.player.y + randomSmidge();
 | 
			
		||||
  G.oceanParticle.x = G.player.x + randomSmidge();
 | 
			
		||||
  G.oceanParticle.y = G.player.y + randomSmidge();
 | 
			
		||||
 | 
			
		||||
    // Reset camera whenever room starts
 | 
			
		||||
    OS.SetCamera({
 | 
			
		||||
        x: G.player.x - (OS.camera.width / 2),
 | 
			
		||||
        y: G.player.y - (OS.camera.height / 2),
 | 
			
		||||
        objectToFollow: G.player
 | 
			
		||||
    });
 | 
			
		||||
  // Reset camera whenever room starts
 | 
			
		||||
  OS.SetCamera({
 | 
			
		||||
    x: G.player.x - (OS.camera.width / 2),
 | 
			
		||||
    y: G.player.y - (OS.camera.height / 2),
 | 
			
		||||
    objectToFollow: G.player,
 | 
			
		||||
  });
 | 
			
		||||
 | 
			
		||||
    this.mapLeftTrigger = OS.camera.hBorder;
 | 
			
		||||
    this.mapLeftTriggerTarget = this.width - (OS.camera.width - OS.camera.hBorder);
 | 
			
		||||
    this.mapRightTrigger = this.width - OS.camera.hBorder;
 | 
			
		||||
    this.mapRightTriggerTarget = OS.camera.width - OS.camera.hBorder;
 | 
			
		||||
    this.mapUpTrigger = OS.camera.vBorder;
 | 
			
		||||
    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.mapLeftTrigger = OS.camera.hBorder;
 | 
			
		||||
  this.mapLeftTriggerTarget = this.width - (OS.camera.width - OS.camera.hBorder);
 | 
			
		||||
  this.mapRightTrigger = this.width - OS.camera.hBorder;
 | 
			
		||||
  this.mapRightTriggerTarget = OS.camera.width - OS.camera.hBorder;
 | 
			
		||||
  this.mapUpTrigger = OS.camera.vBorder;
 | 
			
		||||
  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;
 | 
			
		||||
 | 
			
		||||
    // G.economy.UpdateEconomy();
 | 
			
		||||
  // G.economy.UpdateEconomy();
 | 
			
		||||
}
 | 
			
		||||
rm_Ocean.Do = function () {
 | 
			
		||||
    if (G.gameStarted) {
 | 
			
		||||
        if (guiControl && guiControl.inventory && guiControl.map && guiControl.trade) {   // Force it to wait until loaded.
 | 
			
		||||
            if (!guiControl.inventory.show && !guiControl.map.show && !guiControl.trade.show) {
 | 
			
		||||
                // Move G.oceanParticle around based on player's movement.
 | 
			
		||||
                if (G.oceanParticle.CheckPosition) G.oceanParticle.CheckPosition(G.player.x, G.player.y, G.player.direction);
 | 
			
		||||
  if (G.gameStarted) {
 | 
			
		||||
    if (guiControl && guiControl.inventory && guiControl.map && guiControl.trade) {   // Force it to wait until loaded.
 | 
			
		||||
      if (!guiControl.inventory.show && !guiControl.map.show && !guiControl.trade.show) {
 | 
			
		||||
        // Move G.oceanParticle around based on player's movement.
 | 
			
		||||
        if (G.oceanParticle.CheckPosition) G.oceanParticle.CheckPosition(G.player.x, G.player.y, G.player.direction);
 | 
			
		||||
 | 
			
		||||
                if (ct_cancel().down) {
 | 
			
		||||
                    snd_select.Play();
 | 
			
		||||
                    guiControl.inventory.activateDelay = 5;
 | 
			
		||||
                    guiControl.inventory.show = true;
 | 
			
		||||
                }
 | 
			
		||||
                if (ct_m.down) {
 | 
			
		||||
                    snd_select.Play();
 | 
			
		||||
                    guiControl.map.activateDelay = 5;
 | 
			
		||||
                    guiControl.map.show = true;
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        if (ct_cancel().down) {
 | 
			
		||||
          snd_select.Play();
 | 
			
		||||
          guiControl.inventory.activateDelay = 5;
 | 
			
		||||
          guiControl.inventory.show = true;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        this.RunClock();
 | 
			
		||||
    }
 | 
			
		||||
    // Make waves even if the game hasn't started, but not when on trade screen.
 | 
			
		||||
    if (guiControl && guiControl.trade) {   // Force it to wait until loaded.
 | 
			
		||||
        if (!guiControl.trade.show) {
 | 
			
		||||
            this.waveTimer--;
 | 
			
		||||
            if (this.waveTimer <= 0) {
 | 
			
		||||
                var wave = this.AddObject(OS.P["Wave Particle"]);
 | 
			
		||||
                wave.x = G.player.x + (randomSmidge() * 4);
 | 
			
		||||
                wave.y = G.player.y + (randomSmidge() * 4);
 | 
			
		||||
 | 
			
		||||
                this.waveTimer = Math.round(Math.randomRange(30, 150));
 | 
			
		||||
            }
 | 
			
		||||
        if (ct_m.down) {
 | 
			
		||||
          snd_select.Play();
 | 
			
		||||
          guiControl.map.activateDelay = 5;
 | 
			
		||||
          guiControl.map.show = true;
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    this.RunClock();
 | 
			
		||||
  }
 | 
			
		||||
  // Make waves even if the game hasn't started, but not when on trade screen.
 | 
			
		||||
  if (guiControl && guiControl.trade) {   // Force it to wait until loaded.
 | 
			
		||||
    if (!guiControl.trade.show) {
 | 
			
		||||
      this.waveTimer--;
 | 
			
		||||
      if (this.waveTimer <= 0) {
 | 
			
		||||
        var wave = this.AddObject(OS.P["Wave Particle"]);
 | 
			
		||||
        wave.x = G.player.x + (randomSmidge() * 4);
 | 
			
		||||
        wave.y = G.player.y + (randomSmidge() * 4);
 | 
			
		||||
 | 
			
		||||
        this.waveTimer = Math.round(Math.randomRange(30, 150));
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
rm_Ocean.DrawAbove = function () {
 | 
			
		||||
    if (G.gameStarted) {
 | 
			
		||||
        this.DrawNightDarkness();
 | 
			
		||||
  if (G.gameStarted) {
 | 
			
		||||
    this.DrawNightDarkness();
 | 
			
		||||
 | 
			
		||||
        guiControl.drawSpeedGauge();
 | 
			
		||||
    guiControl.drawSpeedGauge();
 | 
			
		||||
 | 
			
		||||
        guiControl.drawEnergyBar();
 | 
			
		||||
    guiControl.drawEnergyBar();
 | 
			
		||||
 | 
			
		||||
        guiControl.drawClock();
 | 
			
		||||
    guiControl.drawClock();
 | 
			
		||||
 | 
			
		||||
        guiControl.inventory.Draw();
 | 
			
		||||
        guiControl.map.Draw();
 | 
			
		||||
        guiControl.trade.Draw();
 | 
			
		||||
    } else {
 | 
			
		||||
        guiControl.title.Draw();
 | 
			
		||||
    }
 | 
			
		||||
    guiControl.inventory.Draw();
 | 
			
		||||
    guiControl.map.Draw();
 | 
			
		||||
    guiControl.trade.Draw();
 | 
			
		||||
  } else {
 | 
			
		||||
    guiControl.title.Draw();
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
rm_Ocean.DoLast = function () {
 | 
			
		||||
    // Clear Objects on room exit. This is best practice unless you need persistent objects.
 | 
			
		||||
    //rm_Ocean.objects = {};
 | 
			
		||||
  // Clear Objects on room exit. This is best practice unless you need persistent objects.
 | 
			
		||||
  //rm_Ocean.objects = {};
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
rm_Ocean.RunClock = function () {
 | 
			
		||||
    if (guiControl.trade && !guiControl.trade.show) {   // Only advance time when not trading.
 | 
			
		||||
        rm_Ocean.clockTimerCount++;
 | 
			
		||||
        if (rm_Ocean.clockTimerCount > rm_Ocean.clockTimerCutoff) {
 | 
			
		||||
            rm_Ocean.clockTimerCount = 0;
 | 
			
		||||
            // Play New_Day sound.
 | 
			
		||||
            G.economy.UpdateEconomy();
 | 
			
		||||
  if (guiControl.trade && !guiControl.trade.show) {   // Only advance time when not trading.
 | 
			
		||||
    rm_Ocean.clockTimerCount++;
 | 
			
		||||
    if (rm_Ocean.clockTimerCount > rm_Ocean.clockTimerCutoff) {
 | 
			
		||||
      rm_Ocean.clockTimerCount = 0;
 | 
			
		||||
      // Play New_Day sound.
 | 
			
		||||
      G.economy.UpdateEconomy();
 | 
			
		||||
 | 
			
		||||
            for (var i = 0; i < G.map.length; i++) {
 | 
			
		||||
                G.map[i].island.NewDay();
 | 
			
		||||
            }
 | 
			
		||||
      for (var i = 0; i < G.map.length; i++) {
 | 
			
		||||
        G.map[i].island.NewDay();
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
            G.SaveGame();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        if (rm_Ocean.clockTimerCount == 0 ||
 | 
			
		||||
            rm_Ocean.clockTimerCount == Math.round(rm_Ocean.clockTimerCutoff * 0.33) ||
 | 
			
		||||
            rm_Ocean.clockTimerCount == Math.round(rm_Ocean.clockTimerCutoff * 0.66)) {
 | 
			
		||||
            G.player.CheckIllnessIncrease();
 | 
			
		||||
        }
 | 
			
		||||
      G.SaveGame();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if (rm_Ocean.clockTimerCount == 0 ||
 | 
			
		||||
      rm_Ocean.clockTimerCount == Math.round(rm_Ocean.clockTimerCutoff * 0.33) ||
 | 
			
		||||
      rm_Ocean.clockTimerCount == Math.round(rm_Ocean.clockTimerCutoff * 0.66)) {
 | 
			
		||||
      G.player.CheckIllnessIncrease();
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
rm_Ocean.DrawNightDarkness = function () {
 | 
			
		||||
    var alphaFormula = (Math.sin((((this.clockTimerCount / (this.clockTimerCutoff * Math.PI)) * 10) * 1.5) - 2) - 0.4);
 | 
			
		||||
    if (alphaFormula < 0) alphaFormula = 0;
 | 
			
		||||
    
 | 
			
		||||
    if (alphaFormula > 0) {
 | 
			
		||||
        var saveGlobalAlpha = OS.context.globalAlpha;
 | 
			
		||||
        var tmp = Oversimplified.context.fillStyle;
 | 
			
		||||
        OS.context.globalAlpha = alphaFormula;
 | 
			
		||||
        Oversimplified.context.fillStyle = "#112189";
 | 
			
		||||
        Oversimplified.context.fillRect(0, 0, Oversimplified.camera.width, Oversimplified.camera.height);
 | 
			
		||||
        Oversimplified.context.fillStyle = tmp;
 | 
			
		||||
        Oversimplified.context.globalAlpha = saveGlobalAlpha;
 | 
			
		||||
    }
 | 
			
		||||
  var alphaFormula = (Math.sin((((this.clockTimerCount / (this.clockTimerCutoff * Math.PI)) * 10) * 1.5) - 2) - 0.4);
 | 
			
		||||
  if (alphaFormula < 0) alphaFormula = 0;
 | 
			
		||||
  
 | 
			
		||||
  if (alphaFormula > 0) {
 | 
			
		||||
    var saveGlobalAlpha = OS.context.globalAlpha;
 | 
			
		||||
    var tmp = Oversimplified.context.fillStyle;
 | 
			
		||||
    OS.context.globalAlpha = alphaFormula;
 | 
			
		||||
    Oversimplified.context.fillStyle = "#112189";
 | 
			
		||||
    Oversimplified.context.fillRect(0, 0, Oversimplified.camera.width, Oversimplified.camera.height);
 | 
			
		||||
    Oversimplified.context.fillStyle = tmp;
 | 
			
		||||
    Oversimplified.context.globalAlpha = saveGlobalAlpha;
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
rm_Ocean.GenerateMap = function () {
 | 
			
		||||
	var xSquares = [25];
 | 
			
		||||
	var ySquares = [22];
 | 
			
		||||
	while (xSquares.length < this.numberOfIslands) {
 | 
			
		||||
		var randomNumber = Math.round(Math.randomRange(2, this.squaresX - 2));
 | 
			
		||||
		var found = false;
 | 
			
		||||
		for (var i = 0; i < xSquares.length; i++) {
 | 
			
		||||
			if (xSquares[i] - ((this.squaresX / this.numberOfIslands) / 2) < randomNumber && randomNumber < xSquares[i] + ((this.squaresX / this.numberOfIslands) / 2)) {
 | 
			
		||||
				found = true;
 | 
			
		||||
				break;
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
		if (!found) xSquares.push(randomNumber);
 | 
			
		||||
	}
 | 
			
		||||
	while (ySquares.length < this.numberOfIslands) {
 | 
			
		||||
		var randomNumber = Math.round(Math.randomRange(2, this.squaresY - 2));
 | 
			
		||||
		var found = false;
 | 
			
		||||
		for (var i = 0; i < ySquares.length; i++) {
 | 
			
		||||
			if (ySquares[i] - ((this.squaresY / this.numberOfIslands) / 2) < randomNumber && randomNumber < ySquares[i] + ((this.squaresY / this.numberOfIslands) / 2)) {
 | 
			
		||||
				found = true;
 | 
			
		||||
				break;
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
		if (!found) ySquares.push(randomNumber);
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	for (var i = 0; i < this.numberOfIslands; i++) {
 | 
			
		||||
		G.map[i] = {
 | 
			
		||||
			island: rm_Ocean.AddObject(OS.P["Island"], {
 | 
			
		||||
				x: this.squareSize * xSquares[i],
 | 
			
		||||
				y: this.squareSize * ySquares[i]
 | 
			
		||||
			}),
 | 
			
		||||
			drawX: xSquares[i],
 | 
			
		||||
			drawY: ySquares[i],
 | 
			
		||||
			drawWidth: 1,
 | 
			
		||||
			drawHeight: 1
 | 
			
		||||
		};
 | 
			
		||||
	}
 | 
			
		||||
  var xSquares = [25];
 | 
			
		||||
  var ySquares = [22];
 | 
			
		||||
  while (xSquares.length < this.numberOfIslands) {
 | 
			
		||||
    var randomNumber = Math.round(Math.randomRange(2, this.squaresX - 2));
 | 
			
		||||
    var found = false;
 | 
			
		||||
    for (var i = 0; i < xSquares.length; i++) {
 | 
			
		||||
      if (xSquares[i] - ((this.squaresX / this.numberOfIslands) / 2) < randomNumber && randomNumber < xSquares[i] + ((this.squaresX / this.numberOfIslands) / 2)) {
 | 
			
		||||
        found = true;
 | 
			
		||||
        break;
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
    if (!found) xSquares.push(randomNumber);
 | 
			
		||||
  }
 | 
			
		||||
  while (ySquares.length < this.numberOfIslands) {
 | 
			
		||||
    var randomNumber = Math.round(Math.randomRange(2, this.squaresY - 2));
 | 
			
		||||
    var found = false;
 | 
			
		||||
    for (var i = 0; i < ySquares.length; i++) {
 | 
			
		||||
      if (ySquares[i] - ((this.squaresY / this.numberOfIslands) / 2) < randomNumber && randomNumber < ySquares[i] + ((this.squaresY / this.numberOfIslands) / 2)) {
 | 
			
		||||
        found = true;
 | 
			
		||||
        break;
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
    if (!found) ySquares.push(randomNumber);
 | 
			
		||||
  }
 | 
			
		||||
  
 | 
			
		||||
  for (var i = 0; i < this.numberOfIslands; i++) {
 | 
			
		||||
    G.map[i] = {
 | 
			
		||||
      island: rm_Ocean.AddObject(OS.P["Island"], {
 | 
			
		||||
        x: this.squareSize * xSquares[i],
 | 
			
		||||
        y: this.squareSize * ySquares[i]
 | 
			
		||||
      }),
 | 
			
		||||
      drawX: xSquares[i],
 | 
			
		||||
      drawY: ySquares[i],
 | 
			
		||||
      drawWidth: 1,
 | 
			
		||||
      drawHeight: 1,
 | 
			
		||||
    };
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										34
									
								
								start.js
									
										
									
									
									
								
							
							
						
						
									
										34
									
								
								start.js
									
										
									
									
									
								
							| 
						 | 
				
			
			@ -3,36 +3,36 @@ OS.S.numberOfScriptsToLoad = 16;
 | 
			
		|||
OS.S.pixelScale = 4;
 | 
			
		||||
// Oversimplified.DEBUG.showMessages = false;
 | 
			
		||||
OS.SetCamera({
 | 
			
		||||
	width: pixel(160),	// 640
 | 
			
		||||
	height: pixel(120),	// 480
 | 
			
		||||
	hBorder: pixel(64),
 | 
			
		||||
	vBorder: pixel(48)});
 | 
			
		||||
  width: pixel(160),  // 640
 | 
			
		||||
  height: pixel(120),  // 480
 | 
			
		||||
  hBorder: pixel(64),
 | 
			
		||||
  vBorder: pixel(48),
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
function start()
 | 
			
		||||
{
 | 
			
		||||
    OS.AddScript("loadControls.js");
 | 
			
		||||
    OS.AddScript("loadAudio.js");
 | 
			
		||||
    OS.AddScript("loadGameManager.js");
 | 
			
		||||
    OS.AddScript("loadGUIs.js");
 | 
			
		||||
    OS.AddScript("loadPrefabs.js");
 | 
			
		||||
    OS.AddScript("loadRooms.js");
 | 
			
		||||
function start() {
 | 
			
		||||
  OS.AddScript("loadControls.js");
 | 
			
		||||
  OS.AddScript("loadAudio.js");
 | 
			
		||||
  OS.AddScript("loadGameManager.js");
 | 
			
		||||
  OS.AddScript("loadGUIs.js");
 | 
			
		||||
  OS.AddScript("loadPrefabs.js");
 | 
			
		||||
  OS.AddScript("loadRooms.js");
 | 
			
		||||
 | 
			
		||||
    if (Oversimplified.DEBUG.showMessages) console.log("Ran start()");
 | 
			
		||||
  if (Oversimplified.DEBUG.showMessages) console.log("Ran start()");
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function pixel(number) {
 | 
			
		||||
	return ((typeof number !== 'undefined') ? number : 1) * OS.S.pixelScale;
 | 
			
		||||
  return ((typeof number !== 'undefined') ? number : 1) * OS.S.pixelScale;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function secondsWorthOfFrames(seconds) {
 | 
			
		||||
	return seconds * (1 / OS.R[OS.R.currentRoom].stepSpeed);
 | 
			
		||||
  return seconds * (1 / OS.R[OS.R.currentRoom].stepSpeed);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function randomSmidge() {
 | 
			
		||||
// Return a random amount between -10 and 10 on the pixel scale.
 | 
			
		||||
	return (pixel(Math.round(Math.randomRange(-10, 10))));
 | 
			
		||||
  return (pixel(Math.round(Math.randomRange(-10, 10))));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function sortNumber(a, b) {
 | 
			
		||||
	return a - b;
 | 
			
		||||
  return a - b;
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -28,13 +28,12 @@ time, mark, audio, video {
 | 
			
		|||
body {
 | 
			
		||||
  padding:10px 50px 0 0;
 | 
			
		||||
  font-family:"Helvetica Neue", Helvetica, Arial, sans-serif;
 | 
			
		||||
	font-size: 14px;
 | 
			
		||||
	color: #232323;
 | 
			
		||||
	background-color: #FBFAF7;
 | 
			
		||||
	margin: 0;
 | 
			
		||||
	line-height: 1.8em;
 | 
			
		||||
	-webkit-font-smoothing: antialiased;
 | 
			
		||||
 | 
			
		||||
  font-size: 14px;
 | 
			
		||||
  color: #232323;
 | 
			
		||||
  background-color: #FBFAF7;
 | 
			
		||||
  margin: 0;
 | 
			
		||||
  line-height: 1.8em;
 | 
			
		||||
  -webkit-font-smoothing: antialiased;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
h1, h2, h3, h4, h5, h6 {
 | 
			
		||||
| 
						 | 
				
			
			@ -47,32 +46,32 @@ p, ul, ol, table, dl {
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
h1, h2, h3 {
 | 
			
		||||
	font-family: Arvo, Monaco, serif;
 | 
			
		||||
  font-family: Arvo, Monaco, serif;
 | 
			
		||||
  line-height:1.3;
 | 
			
		||||
	font-weight: normal;
 | 
			
		||||
  font-weight: normal;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
h1,h2, h3 {
 | 
			
		||||
	display: block;
 | 
			
		||||
	border-bottom: 1px solid #ccc;
 | 
			
		||||
	padding-bottom: 5px;
 | 
			
		||||
  display: block;
 | 
			
		||||
  border-bottom: 1px solid #ccc;
 | 
			
		||||
  padding-bottom: 5px;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
h1 {
 | 
			
		||||
	font-size: 30px;
 | 
			
		||||
  font-size: 30px;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
h2 {
 | 
			
		||||
	font-size: 24px;
 | 
			
		||||
  font-size: 24px;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
h3 {
 | 
			
		||||
	font-size: 18px;
 | 
			
		||||
  font-size: 18px;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
h4, h5, h6 {
 | 
			
		||||
	font-family: Arvo, Monaco, serif;
 | 
			
		||||
	font-weight: 700;
 | 
			
		||||
  font-family: Arvo, Monaco, serif;
 | 
			
		||||
  font-weight: 700;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
a {
 | 
			
		||||
| 
						 | 
				
			
			@ -82,15 +81,15 @@ a {
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
a:hover {
 | 
			
		||||
	text-decoration: underline;
 | 
			
		||||
  text-decoration: underline;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
a small {
 | 
			
		||||
	font-size: 12px;
 | 
			
		||||
  font-size: 12px;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
em {
 | 
			
		||||
	font-style: italic;
 | 
			
		||||
  font-style: italic;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
strong {
 | 
			
		||||
| 
						 | 
				
			
			@ -116,7 +115,7 @@ blockquote {
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
dl, dt, dd, dl p {
 | 
			
		||||
	font-color: #444;
 | 
			
		||||
  font-color: #444;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
dl dt {
 | 
			
		||||
| 
						 | 
				
			
			@ -163,19 +162,19 @@ p img {
 | 
			
		|||
/* Code blocks */
 | 
			
		||||
 | 
			
		||||
code, pre {
 | 
			
		||||
	font-family: Monaco, "Bitstream Vera Sans Mono", "Lucida Console", Terminal, monospace;
 | 
			
		||||
  font-family: Monaco, "Bitstream Vera Sans Mono", "Lucida Console", Terminal, monospace;
 | 
			
		||||
  color:#000;
 | 
			
		||||
  font-size:14px;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
pre {
 | 
			
		||||
	padding: 4px 12px;
 | 
			
		||||
  padding: 4px 12px;
 | 
			
		||||
  background: #FDFEFB;
 | 
			
		||||
  border-radius:4px;
 | 
			
		||||
  border:1px solid #D7D8C8;
 | 
			
		||||
  overflow: auto;
 | 
			
		||||
  overflow-y: hidden;
 | 
			
		||||
	margin-bottom: 32px;
 | 
			
		||||
  margin-bottom: 32px;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -193,8 +192,8 @@ table {
 | 
			
		|||
 | 
			
		||||
th {
 | 
			
		||||
  font-family: 'Arvo', Helvetica, Arial, sans-serif;
 | 
			
		||||
	font-size: 18px;
 | 
			
		||||
	font-weight: normal;
 | 
			
		||||
  font-size: 18px;
 | 
			
		||||
  font-weight: normal;
 | 
			
		||||
  padding: 10px;
 | 
			
		||||
  background: #232323;
 | 
			
		||||
  color: #FDFEFB;
 | 
			
		||||
| 
						 | 
				
			
			@ -202,7 +201,7 @@ th {
 | 
			
		|||
 | 
			
		||||
td {
 | 
			
		||||
  padding: 10px;
 | 
			
		||||
	background: #ccc;
 | 
			
		||||
  background: #ccc;
 | 
			
		||||
 }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -215,47 +214,47 @@ td {
 | 
			
		|||
/* Header */
 | 
			
		||||
 | 
			
		||||
header {
 | 
			
		||||
	background-color: #171717;
 | 
			
		||||
	color: #FDFDFB;
 | 
			
		||||
  background-color: #171717;
 | 
			
		||||
  color: #FDFDFB;
 | 
			
		||||
  width:170px;
 | 
			
		||||
  float:left;
 | 
			
		||||
  position:fixed;
 | 
			
		||||
	border: 1px solid #000;
 | 
			
		||||
	-webkit-border-top-right-radius: 4px;
 | 
			
		||||
	-webkit-border-bottom-right-radius: 4px;
 | 
			
		||||
	-moz-border-radius-topright: 4px;
 | 
			
		||||
	-moz-border-radius-bottomright: 4px;
 | 
			
		||||
	border-top-right-radius: 4px;
 | 
			
		||||
	border-bottom-right-radius: 4px;
 | 
			
		||||
	padding: 34px 25px 22px 50px;
 | 
			
		||||
	margin: 30px 25px 0 0;
 | 
			
		||||
	-webkit-font-smoothing: antialiased;
 | 
			
		||||
  border: 1px solid #000;
 | 
			
		||||
  -webkit-border-top-right-radius: 4px;
 | 
			
		||||
  -webkit-border-bottom-right-radius: 4px;
 | 
			
		||||
  -moz-border-radius-topright: 4px;
 | 
			
		||||
  -moz-border-radius-bottomright: 4px;
 | 
			
		||||
  border-top-right-radius: 4px;
 | 
			
		||||
  border-bottom-right-radius: 4px;
 | 
			
		||||
  padding: 34px 25px 22px 50px;
 | 
			
		||||
  margin: 30px 25px 0 0;
 | 
			
		||||
  -webkit-font-smoothing: antialiased;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
p.header {
 | 
			
		||||
	font-size: 16px;
 | 
			
		||||
  font-size: 16px;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
h1.header {
 | 
			
		||||
	font-family: Arvo, sans-serif;
 | 
			
		||||
	font-size: 30px;
 | 
			
		||||
	font-weight: 300;
 | 
			
		||||
	line-height: 1.3em;
 | 
			
		||||
	border-bottom: none;
 | 
			
		||||
	margin-top: 0;
 | 
			
		||||
  font-family: Arvo, sans-serif;
 | 
			
		||||
  font-size: 30px;
 | 
			
		||||
  font-weight: 300;
 | 
			
		||||
  line-height: 1.3em;
 | 
			
		||||
  border-bottom: none;
 | 
			
		||||
  margin-top: 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
h1.header, a.header, a.name, header a{
 | 
			
		||||
	color: #fff;
 | 
			
		||||
  color: #fff;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
a.header {
 | 
			
		||||
	text-decoration: underline;
 | 
			
		||||
  text-decoration: underline;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
a.name {
 | 
			
		||||
	white-space: nowrap;
 | 
			
		||||
  white-space: nowrap;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
header ul {
 | 
			
		||||
| 
						 | 
				
			
			@ -264,32 +263,32 @@ header ul {
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
header li {
 | 
			
		||||
	list-style-type: none;
 | 
			
		||||
  list-style-type: none;
 | 
			
		||||
  width:132px;
 | 
			
		||||
  height:15px;
 | 
			
		||||
	margin-bottom: 12px;
 | 
			
		||||
	line-height: 1em;
 | 
			
		||||
	padding: 6px 6px 6px 7px;
 | 
			
		||||
  margin-bottom: 12px;
 | 
			
		||||
  line-height: 1em;
 | 
			
		||||
  padding: 6px 6px 6px 7px;
 | 
			
		||||
 | 
			
		||||
	background: #AF0011;
 | 
			
		||||
	background: -moz-linear-gradient(top, #AF0011 0%, #820011 100%);
 | 
			
		||||
  background: #AF0011;
 | 
			
		||||
  background: -moz-linear-gradient(top, #AF0011 0%, #820011 100%);
 | 
			
		||||
  background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#f8f8f8), color-stop(100%,#dddddd));
 | 
			
		||||
  background: -webkit-linear-gradient(top, #AF0011 0%,#820011 100%);
 | 
			
		||||
  background: -o-linear-gradient(top, #AF0011 0%,#820011 100%);
 | 
			
		||||
  background: -ms-linear-gradient(top, #AF0011 0%,#820011 100%);
 | 
			
		||||
  background: linear-gradient(top, #AF0011 0%,#820011 100%);
 | 
			
		||||
 | 
			
		||||
	border-radius:4px;
 | 
			
		||||
  border-radius:4px;
 | 
			
		||||
  border:1px solid #0D0D0D;
 | 
			
		||||
 | 
			
		||||
	-webkit-box-shadow: inset 0px 1px 1px 0 rgba(233,2,38, 1);
 | 
			
		||||
	box-shadow: inset 0px 1px 1px 0 rgba(233,2,38, 1);
 | 
			
		||||
  -webkit-box-shadow: inset 0px 1px 1px 0 rgba(233,2,38, 1);
 | 
			
		||||
  box-shadow: inset 0px 1px 1px 0 rgba(233,2,38, 1);
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
header li:hover {
 | 
			
		||||
	background: #C3001D;
 | 
			
		||||
	background: -moz-linear-gradient(top, #C3001D 0%, #950119 100%);
 | 
			
		||||
  background: #C3001D;
 | 
			
		||||
  background: -moz-linear-gradient(top, #C3001D 0%, #950119 100%);
 | 
			
		||||
  background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#f8f8f8), color-stop(100%,#dddddd));
 | 
			
		||||
  background: -webkit-linear-gradient(top, #C3001D 0%,#950119 100%);
 | 
			
		||||
  background: -o-linear-gradient(top, #C3001D 0%,#950119 100%);
 | 
			
		||||
| 
						 | 
				
			
			@ -298,21 +297,21 @@ header li:hover {
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
a.buttons {
 | 
			
		||||
	-webkit-font-smoothing: antialiased;
 | 
			
		||||
	background: url(../images/arrow-down.png) no-repeat;
 | 
			
		||||
	font-weight: normal;
 | 
			
		||||
	text-shadow: rgba(0, 0, 0, 0.4) 0 -1px 0;
 | 
			
		||||
	padding: 2px 2px 2px 22px;
 | 
			
		||||
	height: 30px;
 | 
			
		||||
  -webkit-font-smoothing: antialiased;
 | 
			
		||||
  background: url(../images/arrow-down.png) no-repeat;
 | 
			
		||||
  font-weight: normal;
 | 
			
		||||
  text-shadow: rgba(0, 0, 0, 0.4) 0 -1px 0;
 | 
			
		||||
  padding: 2px 2px 2px 22px;
 | 
			
		||||
  height: 30px;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
a.github {
 | 
			
		||||
	background: url(../images/octocat-small.png) no-repeat 1px;
 | 
			
		||||
  background: url(../images/octocat-small.png) no-repeat 1px;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
a.buttons:hover {
 | 
			
		||||
	color: #fff;
 | 
			
		||||
	text-decoration: none;
 | 
			
		||||
  color: #fff;
 | 
			
		||||
  text-decoration: none;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -332,7 +331,7 @@ footer {
 | 
			
		|||
  float:left;
 | 
			
		||||
  position:fixed;
 | 
			
		||||
  bottom:10px;
 | 
			
		||||
	padding-left: 50px;
 | 
			
		||||
  padding-left: 50px;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@media print, screen and (max-width: 960px) {
 | 
			
		||||
| 
						 | 
				
			
			@ -348,11 +347,11 @@ footer {
 | 
			
		|||
    width:auto;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
	footer {
 | 
			
		||||
		border-top: 1px solid #ccc;
 | 
			
		||||
		margin:0 84px 0 50px;
 | 
			
		||||
		padding:0;
 | 
			
		||||
	}
 | 
			
		||||
  footer {
 | 
			
		||||
    border-top: 1px solid #ccc;
 | 
			
		||||
    margin:0 84px 0 50px;
 | 
			
		||||
    padding:0;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  header {
 | 
			
		||||
    padding-right:320px;
 | 
			
		||||
| 
						 | 
				
			
			@ -381,17 +380,17 @@ footer {
 | 
			
		|||
 | 
			
		||||
  header {
 | 
			
		||||
    padding:10px 20px 0;
 | 
			
		||||
		margin-right: 0;
 | 
			
		||||
    margin-right: 0;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
	section {
 | 
			
		||||
  section {
 | 
			
		||||
    padding:10px 0 10px 20px;
 | 
			
		||||
    margin:0 0 30px;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
	footer {
 | 
			
		||||
		margin: 0 0 0 30px;
 | 
			
		||||
	}
 | 
			
		||||
  footer {
 | 
			
		||||
    margin: 0 0 0 30px;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  header ul, header p.view {
 | 
			
		||||
    position:static;
 | 
			
		||||
| 
						 | 
				
			
			@ -404,13 +403,13 @@ footer {
 | 
			
		|||
    display:none;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
	footer {
 | 
			
		||||
		margin: 0 0 0 20px;
 | 
			
		||||
	}
 | 
			
		||||
  footer {
 | 
			
		||||
    margin: 0 0 0 20px;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
	footer a{
 | 
			
		||||
		display:block;
 | 
			
		||||
	}
 | 
			
		||||
  footer a{
 | 
			
		||||
    display:block;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		
		Reference in a new issue