389 lines
13 KiB
JavaScript
389 lines
13 KiB
JavaScript
function loadGUIs() {
|
|
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()");
|
|
}
|
|
|
|
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),
|
|
|
|
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);
|
|
},
|
|
|
|
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));
|
|
}
|
|
}
|
|
guiControl.gui_sheet = new Image();
|
|
guiControl.gui_sheet.src = "images/gui_sheet.png";
|
|
guiControl.gui_sheet.clock = { x: 0, y: 0 };
|
|
guiControl.gui_sheet.gauge = { x: 288, y: 132 };
|
|
guiControl.gui_sheet.arrows = { x: 256, y: 134 };
|
|
guiControl.gui_sheet.guiCursor = { x: 256, y: 164 };
|
|
guiControl.gui_sheet.guiBackground = { x: 0, y: 36, width: pixel(61), height: pixel(61) };
|
|
guiControl.gui_sheet.titleImage = { x: 0, y: 276, width: pixel(64), height: pixel(33) };
|
|
guiControl.gui_sheet.icons = { x: 256, y: 36 };
|
|
guiControl.gui_sheet.items = { x: 448, y: 132 };
|
|
|
|
guiControl.alphabet_sheet = new Image();
|
|
guiControl.alphabet_sheet.src = "images/alphabets_sheet.png";
|
|
guiControl.alphabet_sheet.black4 = { x: 0, y: 0 };
|
|
guiControl.alphabet_sheet.black6 = { x: 0, y: 112 };
|
|
guiControl.alphabet_sheet.white4 = { x: 96, y: 0 };
|
|
guiControl.alphabet_sheet.white6 = { x: 120, y: 112 };
|
|
guiControl.alphabet_sheet.yellow4 = { x: 192, y: 0 };
|
|
guiControl.alphabet_sheet.yellow6 = { x: 240, y: 112 };
|
|
|
|
guiControl.drawPixelText = function (text, x, y, wrapWidth, color, size) {
|
|
// Draw the text at the given x and y on the canvas using the alphabet images.
|
|
// 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()];
|
|
|
|
// 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];
|
|
}
|
|
// 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;
|
|
}
|
|
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);
|
|
}
|
|
}
|