Added option to donate money to faction

This commit is contained in:
Daniel Xie 2017-05-20 03:19:13 -05:00
parent 0054ab7222
commit c454e3729b
4 changed files with 89 additions and 11 deletions

@ -274,26 +274,45 @@
margin: 6px; margin: 6px;
} }
#faction-hack-div, #faction-hack-div,
#faction-fieldwork-div, #faction-fieldwork-div,
#faction-securitywork-div { #faction-securitywork-div,
#faction-donate-div {
overflow: hidden; overflow: hidden;
width: 80%;
height: 100%; height: 100%;
} }
#faction-hack-div-wrapper, #faction-hack-div-wrapper,
#faction-fieldwork-div-wrapper, #faction-fieldwork-div-wrapper,
#faction-securitywork-div-wrapper { #faction-securitywork-div-wrapper,
#faction-donate-div-wrapper {
float: left; float: left;
border: 2px solid #333; border: 2px solid #333;
padding: 14px 6px 4px 6px; padding: 14px 6px 4px 6px;
margin: 6px; margin: 6px;
} }
#faction-hack-button { #faction-hack-button,
#faction-fieldwork-button,
#faction-securitywork-button {
margin: 8px; margin: 8px;
} }
#faction-donate-amount-txt,
#faction-donate-input {
padding: 6px;
margin: 6px;
display: inline-block;
color: #66ff33;
}
#faction-donate-amount-txt {
width:50%;
}
div.faction-clear { div.faction-clear {
clear: both; clear: both;
} }
@ -301,6 +320,7 @@ div.faction-clear {
#faction-container p { #faction-container p {
padding: 6px; padding: 6px;
margin: 6px; margin: 6px;
width: 80%;
} }
/* Faction Augmentations */ /* Faction Augmentations */

@ -443,7 +443,7 @@
<p id="faction-reputation"></p> <p id="faction-reputation"></p>
<p id="work-description-text"> <p id="faction-work-description-text">
Perform work/carry out assignments for your faction to help further its cause! By doing so Perform work/carry out assignments for your faction to help further its cause! By doing so
you will gain reputation for your faction. You will also gain reputation passively over time, you will gain reputation for your faction. You will also gain reputation passively over time,
although at a very slow rate. Note that you cannot although at a very slow rate. Note that you cannot
@ -454,8 +454,8 @@
<div id="faction-hack-div-wrapper"> <div id="faction-hack-div-wrapper">
<a href="#" id="faction-hack-button" class="a-link-button">Hacking Contracts</a> <a href="#" id="faction-hack-button" class="a-link-button">Hacking Contracts</a>
<p id="faction-hack-text"> <p id="faction-hack-text">
Complete hacking contracts for your faction! <br> Complete hacking contracts for your faction.
Your effectiveness, which determines how much reputation you gain for this faction, is based on your hacking skill. <br> Your effectiveness, which determines how much reputation you gain for this faction, is based on your hacking skill.
You will gain hacking exp. You will gain hacking exp.
</p> </p>
</div> </div>
@ -466,8 +466,8 @@
<div id="faction-fieldwork-div-wrapper"> <div id="faction-fieldwork-div-wrapper">
<a href="#" id="faction-fieldwork-button" class="a-link-button">Field Work</a> <a href="#" id="faction-fieldwork-button" class="a-link-button">Field Work</a>
<p id="faction-fieldwork-text"> <p id="faction-fieldwork-text">
Carry out field missions for your faction. <br> Carry out field missions for your faction.
Your effectiveness, which determines how much reputation you gain for this faction, is based on all of your stats. <br> Your effectiveness, which determines how much reputation you gain for this faction, is based on all of your stats.
You will gain exp for all stats. You will gain exp for all stats.
</p> </p>
</div> </div>
@ -478,13 +478,29 @@
<div id="faction-securitywork-div-wrapper"> <div id="faction-securitywork-div-wrapper">
<a href="#" id="faction-securitywork-button" class="a-link-button">Security Work</a> <a href="#" id="faction-securitywork-button" class="a-link-button">Security Work</a>
<p id="faction-securitywork-text"> <p id="faction-securitywork-text">
Serve in a security detail for your faction. <br> Serve in a security detail for your faction.
Your effectiveness, which determines how much reputation you gain for this faction, is based on your combat stats. <br> Your effectiveness, which determines how much reputation you gain for this faction, is based on your combat stats.
You will gain exp for all combat stats. You will gain exp for all combat stats.
</p> </p>
</div> </div>
<div class="faction-clear"></div> <div class="faction-clear"></div>
</div> </div>
<div id="faction-donate-div">
<div id="faction-donate-div-wrapper">
<a href="#" id="faction-donate-button" class="a-link-button">Donate Money</a>
<p id="faction-donate-text">
Donate money to your faction. You will gain reputation based on how much money you donate
</p>
<div>
<label id="faction-donate-amount-txt">Enter amount to donate: $</label>
<input id="faction-donate-input" type="number"> </input>
</div>
<p id="faction-donate-rep-gain"> This donation will result in 0 reputation gain</p>
</div>
<div class="faction-clear"></div>
</div>
<p> <p>
<br><br><br> <br><br><br>

@ -1,4 +1,21 @@
//Netburner Faction class //Netburner Faction class
function factionInit() {
$('#faction-donate-input').on('input', function() {
if (Engine.currentPage == Engine.Page.Faction) {
var val = document.getElementById("faction-donate-input").value;
if (isPositiveNumber(val)) {
var numMoneyDonate = Number(val);
document.getElementById("faction-donate-rep-gain").innerHTML =
"This donation will result in " + formatNumber(numMoneyDonate/1000, 3) + " reputation gain";
} else {
document.getElementById("faction-donate-rep-gain").innerHTML =
"This donation will result in 0 reputation gain";
}
}
});
}
document.addEventListener("DOMContentLoaded", factionInit, false);
function Faction(name) { function Faction(name) {
this.name = name; this.name = name;
this.augmentations = []; //Name of augmentation only this.augmentations = []; //Name of augmentation only
@ -553,13 +570,14 @@ displayFactionContent = function(factionName) {
var hackDiv = document.getElementById("faction-hack-div"); var hackDiv = document.getElementById("faction-hack-div");
var fieldWorkDiv = document.getElementById("faction-fieldwork-div"); var fieldWorkDiv = document.getElementById("faction-fieldwork-div");
var securityWorkDiv = document.getElementById("faction-securitywork-div"); var securityWorkDiv = document.getElementById("faction-securitywork-div");
var donateDiv = document.getElementById("faction-donate-div");
//Set new event listener for all of the work buttons //Set new event listener for all of the work buttons
//The old buttons need to be replaced to clear the old event listeners //The old buttons need to be replaced to clear the old event listeners
var newHackButton = clearEventListeners("faction-hack-button"); var newHackButton = clearEventListeners("faction-hack-button");
var newFieldWorkButton = clearEventListeners("faction-fieldwork-button"); var newFieldWorkButton = clearEventListeners("faction-fieldwork-button");
var newSecurityWorkButton = clearEventListeners("faction-securitywork-button"); var newSecurityWorkButton = clearEventListeners("faction-securitywork-button");
var newDonateWorkButton = clearEventListeners("faction-donate-button");
newHackButton.addEventListener("click", function() { newHackButton.addEventListener("click", function() {
Player.startFactionHackWork(faction); Player.startFactionHackWork(faction);
@ -576,6 +594,24 @@ displayFactionContent = function(factionName) {
return false; return false;
}); });
newDonateWorkButton.addEventListener("click", function() {
var donateAmountVal = document.getElementById("faction-donate-input").value;
if (isPositiveNumber(donateAmountVal)) {
var numMoneyDonate = Number(donateAmountVal);
if (Player.money < numMoneyDonate) {
dialogBoxCreate("You cannot afford to donate this much money!");
return;
}
Player.loseMoney(numMoneyDonate);
var repGain = numMoneyDonate / 1000;
faction.playerReputation += repGain;
dialogBoxCreate("You just donated $" + formatNumber(numMoneyDonate, 2) + " to " +
faction.name + " to gain " + formatNumber(repGain, 3) + " reputation");
} else {
dialogBoxCreate("Invalid amount entered!");
}
return false;
});
//Set new event listener for the purchase augmentation buttons //Set new event listener for the purchase augmentation buttons
//The old button needs to be replaced to clear the old event listeners //The old button needs to be replaced to clear the old event listeners
@ -596,6 +632,7 @@ displayFactionContent = function(factionName) {
}); });
if (faction.isMember) { if (faction.isMember) {
donateDiv.style.display = "inline";
switch(faction.name) { switch(faction.name) {
case "Illuminati": case "Illuminati":
hackDiv.style.display = "inline"; hackDiv.style.display = "inline";

@ -68,6 +68,11 @@ function isString(str) {
return (typeof str === 'string' || str instanceof String); return (typeof str === 'string' || str instanceof String);
} }
//Returns true if string contains only digits (meaning it would be a positive number)
function isPositiveNumber(str) {
return /^\d+$/.test(str);
}
//Returns whether an array contains entirely of string objects //Returns whether an array contains entirely of string objects
function containsAllStrings(arr) { function containsAllStrings(arr) {
return arr.every(isString); return arr.every(isString);