mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2026-01-05 15:04:21 +00:00
Virology - NanoUI, gameplay tweaks, bugfixes
This commit is contained in:
@@ -1,17 +1,17 @@
|
||||
// NanoBaseHelpers is where the base template helpers (common to all templates) are stored
|
||||
NanoBaseHelpers = function ()
|
||||
NanoBaseHelpers = function ()
|
||||
{
|
||||
var _urlParameters = {}; // This is populated with the base url parameters (used by all links), which is probaby just the "src" parameter
|
||||
|
||||
var init = function ()
|
||||
|
||||
var init = function ()
|
||||
{
|
||||
var body = $('body'); // We store data in the body tag, it's as good a place as any
|
||||
|
||||
|
||||
_urlParameters = body.data('urlParameters');
|
||||
|
||||
|
||||
initHelpers();
|
||||
};
|
||||
|
||||
|
||||
var initHelpers = function ()
|
||||
{
|
||||
$.views.helpers({
|
||||
@@ -31,7 +31,7 @@ NanoBaseHelpers = function ()
|
||||
|
||||
// Generate a Byond link
|
||||
link: function( text, icon, parameters, status, elementClass, elementId) {
|
||||
|
||||
|
||||
var iconHtml = '';
|
||||
var iconClass = 'noIcon';
|
||||
if (typeof icon != 'undefined' && icon)
|
||||
@@ -39,45 +39,45 @@ NanoBaseHelpers = function ()
|
||||
iconHtml = '<div class="uiLinkPendingIcon"></div><div class="uiIcon16 icon-' + icon + '"></div>';
|
||||
iconClass = 'hasIcon';
|
||||
}
|
||||
|
||||
|
||||
if (typeof elementClass == 'undefined' || !elementClass)
|
||||
{
|
||||
elementClass = '';
|
||||
}
|
||||
|
||||
|
||||
var elementIdHtml = '';
|
||||
if (typeof elementId != 'undefined' && elementId)
|
||||
{
|
||||
elementIdHtml = 'id="' + elementId + '"';
|
||||
}
|
||||
|
||||
|
||||
if (typeof status != 'undefined' && status)
|
||||
{
|
||||
return '<div unselectable="on" class="link ' + iconClass + ' ' + elementClass + ' ' + status + '" ' + elementIdHtml + '>' + iconHtml + text + '</div>';
|
||||
}
|
||||
|
||||
|
||||
return '<div unselectable="on" class="link linkActive ' + iconClass + ' ' + elementClass + '" data-href="' + generateHref(parameters) + '" ' + elementIdHtml + '>' + iconHtml + text + '</div>';
|
||||
},
|
||||
// Round a number to the nearest integer
|
||||
round: function(number) {
|
||||
round: function(number) {
|
||||
return Math.round(number);
|
||||
},
|
||||
// Round a number down to integer
|
||||
floor: function(number) {
|
||||
floor: function(number) {
|
||||
return Math.floor(number);
|
||||
},
|
||||
// Round a number up to integer
|
||||
ceil: function(number) {
|
||||
ceil: function(number) {
|
||||
return Math.ceil(number);
|
||||
},
|
||||
// Format a string (~string("Hello {0}, how are {1}?", 'Martin', 'you') becomes "Hello Martin, how are you?")
|
||||
string: function() {
|
||||
string: function() {
|
||||
if (arguments.length == 0)
|
||||
{
|
||||
{
|
||||
return '';
|
||||
}
|
||||
else if (arguments.length == 1)
|
||||
{
|
||||
{
|
||||
return arguments[0];
|
||||
}
|
||||
else if (arguments.length > 1)
|
||||
@@ -85,15 +85,21 @@ NanoBaseHelpers = function ()
|
||||
stringArgs = [];
|
||||
for (var i = 1; i < arguments.length; i++)
|
||||
{
|
||||
stringArgs.push(arguments[i]);
|
||||
stringArgs.push(arguments[i]);
|
||||
}
|
||||
return arguments[0].format(stringArgs);
|
||||
}
|
||||
return '';
|
||||
},
|
||||
formatNumber: function(x) {
|
||||
// From http://stackoverflow.com/questions/2901102/how-to-print-a-number-with-commas-as-thousands-separators-in-javascript
|
||||
var parts = x.toString().split(".");
|
||||
parts[0] = parts[0].replace(/\B(?=(\d{3})+(?!\d))/g, ",");
|
||||
return parts.join(".");
|
||||
},
|
||||
// Display a bar. Used to show health, capacity, etc.
|
||||
displayBar: function(value, rangeMin, rangeMax, styleClass, showText) {
|
||||
|
||||
displayBar: function(value, rangeMin, rangeMax, styleClass, showText) {
|
||||
|
||||
if (rangeMin < rangeMax)
|
||||
{
|
||||
if (value < rangeMin)
|
||||
@@ -115,31 +121,31 @@ NanoBaseHelpers = function ()
|
||||
{
|
||||
value = rangeMax;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if (typeof styleClass == 'undefined' || !styleClass)
|
||||
{
|
||||
styleClass = '';
|
||||
}
|
||||
|
||||
|
||||
if (typeof showText == 'undefined' || !showText)
|
||||
{
|
||||
showText = '';
|
||||
}
|
||||
|
||||
|
||||
var percentage = Math.round((value - rangeMin) / (rangeMax - rangeMin) * 100);
|
||||
|
||||
|
||||
return '<div class="displayBar ' + styleClass + '"><div class="displayBarFill ' + styleClass + '" style="width: ' + percentage + '%;"></div><div class="displayBarText ' + styleClass + '">' + showText + '</div></div>';
|
||||
},
|
||||
// Display DNA Blocks (for the DNA Modifier UI)
|
||||
displayDNABlocks: function(dnaString, selectedBlock, selectedSubblock, blockSize, paramKey) {
|
||||
displayDNABlocks: function(dnaString, selectedBlock, selectedSubblock, blockSize, paramKey) {
|
||||
if (!dnaString)
|
||||
{
|
||||
return '<div class="notice">Please place a valid subject into the DNA modifier.</div>';
|
||||
}
|
||||
|
||||
|
||||
var characters = dnaString.split('');
|
||||
|
||||
|
||||
var html = '<div class="dnaBlock"><div class="link dnaBlockNumber">1</div>';
|
||||
var block = 1;
|
||||
var subblock = 1;
|
||||
@@ -149,7 +155,7 @@ NanoBaseHelpers = function ()
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
|
||||
var parameters;
|
||||
if (paramKey.toUpperCase() == 'UI')
|
||||
{
|
||||
@@ -158,41 +164,41 @@ NanoBaseHelpers = function ()
|
||||
else
|
||||
{
|
||||
parameters = { 'selectSEBlock' : block, 'selectSESubblock' : subblock };
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
var status = 'linkActive';
|
||||
if (block == selectedBlock && subblock == selectedSubblock)
|
||||
{
|
||||
status = 'selected';
|
||||
}
|
||||
|
||||
|
||||
html += '<div class="link ' + status + ' dnaSubBlock" data-href="' + generateHref(parameters) + '" id="dnaBlock' + index + '">' + characters[index] + '</div>'
|
||||
|
||||
|
||||
index++;
|
||||
if (index % blockSize == 0 && index < characters.length)
|
||||
{
|
||||
block++;
|
||||
subblock = 1;
|
||||
html += '</div><div class="dnaBlock"><div class="link dnaBlockNumber">' + block + '</div>';
|
||||
html += '</div><div class="dnaBlock"><div class="link dnaBlockNumber">' + block + '</div>';
|
||||
}
|
||||
else
|
||||
{
|
||||
subblock++;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
html += '</div>';
|
||||
|
||||
|
||||
return html;
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
// generate a Byond href, combines _urlParameters with parameters
|
||||
var generateHref = function (parameters)
|
||||
{
|
||||
var queryString = '?';
|
||||
|
||||
|
||||
for (var key in _urlParameters)
|
||||
{
|
||||
if (_urlParameters.hasOwnProperty(key))
|
||||
@@ -204,7 +210,7 @@ NanoBaseHelpers = function ()
|
||||
queryString += key + '=' + _urlParameters[key];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
for (var key in parameters)
|
||||
{
|
||||
if (parameters.hasOwnProperty(key))
|
||||
@@ -220,14 +226,14 @@ NanoBaseHelpers = function ()
|
||||
};
|
||||
|
||||
return {
|
||||
init: function ()
|
||||
init: function ()
|
||||
{
|
||||
init();
|
||||
}
|
||||
};
|
||||
} ();
|
||||
|
||||
$(document).ready(function()
|
||||
$(document).ready(function()
|
||||
{
|
||||
NanoBaseHelpers.init();
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user