Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //############# Database Information #############
- //Initialize Firebase Database
- const firebaseConfig = {
- apiKey: "AIzaSyA-U1As1xWNjXr8JSfGW2ZU9tnXkbUmQtI",
- authDomain: "red-vs-blue-teams.firebaseapp.com",
- databaseURL: "https://red-vs-blue-teams.firebaseio.com",
- projectId: "red-vs-blue-teams",
- storageBucket: "red-vs-blue-teams.appspot.com",
- messagingSenderId: "1014387499527",
- appId: "1:1014387499527:web:880313bba6be14a2"
- };
- firebase.initializeApp(firebaseConfig);
- //############# Variables #############
- var uniqueID = createUniqueID();
- var basicCost = 1;
- var betterCost = 3;
- var totalCost = 5;
- var shipCapacity = 5;
- var startingShips = 10;
- var badShips = 0;
- var basicSearches = 0;
- var betterSearches = 0;
- var totalSearches = 0;
- var j = startingShips;
- var redTurnCounterNumber = 1;
- var blueTurnCounterNumber = 1;
- var allocatedContraband = 0;
- var activeContraband = allocatedContraband;
- var successfulContraband = 0;
- var drugsFound = 0;
- var interceptedContraband = 0;
- var inspectionPointsCounter = document.getElementById("inspectionPointsCounter");
- var successfulContrabandCounter = document.getElementById("counterNumberSuccessfulContraband");
- var interceptContrabandCounter = document.getElementById("interceptedContrabandCounter");
- var successfulContrabandCounterNumber = 0;
- var interceptContrabandCounterNumber = 0;
- var shipCargos = [
- [],
- [false, false, false, false, false],
- [false, false, false, false, false],
- [false, false, false, false, false],
- [false, false, false, false, false],
- [false, false, false, false, false],
- [false, false, false, false, false],
- [false, false, false, false, false],
- [false, false, false, false, false],
- [false, false, false, false, false],
- [false, false, false, false, false]
- ];
- var shipCounters = [
- [],
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ];
- //Reference Database
- var db = firebase.firestore();
- var gameRef = db.collection('games').doc(uniqueID);
- //############# Settings #############
- //Contraband
- var settingsContrabandCounter = document.getElementById("contrabandDisplay");
- var contrabandCounter = document.getElementById("counterNumberContraband");
- var contrabandInput = 10;
- var startingContraband = contrabandInput;
- settingsContrabandCounter.innerHTML = contrabandInput;
- contrabandCounter.innerHTML = contrabandInput;
- function contrabandSettings(determiner){
- //Modifies the number of starting contraband in the settings menu.
- if(determiner == 0){
- //Subtraction
- if(contrabandInput == 1){
- alert("Error: you can't play with no contraband! ");
- return;
- }
- contrabandInput -= 1;
- settingsContrabandCounter.innerHTML = contrabandInput;
- }
- else{
- //Addition
- contrabandInput += 1;
- settingsContrabandCounter.innerHTML = contrabandInput;
- }
- settingsContrabandCounter.innerHTML = contrabandInput;
- window.startingContraband = contrabandInput;
- };
- function contrabandCounterUpdate(){
- //Updates the contraband counter
- contrabandCounter.innerHTML = startingContraband;
- };
- //Inspection Points
- var settingsIpCounter = document.getElementById("ipDisplay");
- var inspectionPointsCounter = document.getElementById("inspectionPointsCounter");
- var ipInput = 10;
- var startingInspectionPoints = ipInput;
- settingsIpCounter.innerHTML = ipInput;
- inspectionPointsCounter.innerHTML = ipInput;
- function ipSettings(determiner){
- //Modifies the number of starting inspection points in the settings menu.
- if(determiner == 0){
- //Subtraction
- if(ipInput == 1){
- alert("Error: you can't play with no inspection points! ");
- return;
- }
- ipInput -= 1;
- settingsIpCounter.innerHTML = ipInput;
- }
- else{
- //Addition
- ipInput += 1;
- settingsIpCounter.innerHTML = ipInput;
- }
- settingsIpCounter.innerHTML = ipInput;
- window.startingInspectionPoints = ipInput;
- };
- function ipCounterUpdate(){
- //Updates the contraband counter
- inspectionPointsCounter.innerHTML = startingInspectionPoints;
- };
- //Rounds
- var settingsRoundsCounter = document.getElementById("roundsDisplay");
- var turnsInput = 5;
- var numberOfTurns = turnsInput;
- settingsRoundsCounter.innerHTML = turnsInput;
- function roundsSettings(determiner){
- //Modifies the number of rounds in the settings menu.
- if(determiner == 0){
- //Subtraction
- if(turnsInput == 1){
- alert("Error: too few turns! ");
- return;
- }
- turnsInput -= 1;
- settingsRoundsCounter.innerHTML = turnsInput;
- }
- else{
- //Addition
- turnsInput += 1;
- settingsRoundsCounter.innerHTML = turnsInput;
- }
- settingsRoundsCounter.innerHTML = turnsInput;
- window.numberOfTurns = turnsInput;
- };
- ////############# Red Team's Turn #############
- function allocateContraband(determiner, shipNumber) {
- //Subtracts or adds contraband to the selected ship based on the determiner's value (0 for subtraction, 1 for addition).
- var shipID = String("ship counter " + shipNumber);
- var shipContrabandCounter = document.getElementById(shipID);
- //Subtraction
- if (determiner == 0) {
- if (shipCounters[shipNumber] <= 0) {
- alert("Error: ship can't hold negative contraband!");
- return;
- }
- shipCounters[shipNumber] -= 1;
- startingContraband += 1;
- shipContrabandCounter.innerHTML = shipCounters[shipNumber];
- contrabandCounterUpdate();
- for (var i = 0; i < shipCounters[shipNumber]; i++) {
- shipCargos[shipNumber][i] = false;
- }
- allocatedContraband -= 1;
- }
- //Addition
- else if (determiner == 1) {
- if (startingContraband <= 0) {
- alert("Error: you are out of contraband!");
- return;
- } else if (shipCounters[shipNumber] >= shipCapacity) {
- alert("Error: ship capacity reached!");
- return;
- }
- shipCounters[shipNumber] += 1;
- startingContraband -= 1;
- shipContrabandCounter.innerHTML = shipCounters[shipNumber];
- contrabandCounterUpdate();
- for (var i = 0; i < shipCounters[shipNumber]; i++) {
- shipCargos[shipNumber][i] = true;
- }
- allocatedContraband += 1;
- }
- var shipDiv = document.getElementById("redDiv"+shipNumber);
- if(shipDiv.children.length>1){
- shipDiv.removeChild(shipDiv.children[shipDiv.children.length-1]);
- }
- if(shipCounters[shipNumber]!=0){
- shipDiv.innerHTML += "<div class='contrabandCountLabel'><img id = \"countLabel\" src=\"res/contraband.png\">" + shipCounters[shipNumber] + "</div>";
- shipDiv.children[0].setAttribute("src","res/ship_active.png");
- }
- else{
- shipDiv.children[0].setAttribute("src","res/ship.png");
- }
- };
- function redOn(clicked_id) {
- //Enables the red ship assignment overlay.
- document.getElementById("redOverlay").style.display = "block";
- j = clicked_id;
- var x = shipCounters[j];
- var overlaytext = "";
- overlaytext += "<div class=\"redshipCard\"><div class=\"allocate\"><div class=\"ship\" onclick=\"selectShip(" + j + ")\"><img id=\"ship " + j + "\" class=\"shipImg\" src=\"res\\ship_active.png\"><p class=\"shipLabel\">Ship " + j + "</p></div><div class=\"allocateCommands\"><img class=\"allocateImg\" src=\"res/contraband.png\"><button class=\"allocateMinus\" onclick=\"allocateContraband(0," + j + ")\">-</button><p class=\"allocateCounter\" id=\"ship counter " + j + "\">" + x + "</p><button class=\"allocateAdd\" onclick=\"allocateContraband(1," + j + ")\">+</button></div><button class=\" allocateRedConfirmBtn\" onclick=\"redOff()\">Confirm</button></div></div>"
- document.getElementById("redOverlay").innerHTML = overlaytext;
- };
- function redOff() {
- //Disables the red ship assignment overlay.
- document.getElementById("redOverlay").style.display = "none";
- };
- var text = "";
- for (var i = 1; i < 11; i++) {
- text += "<div class = \"shiphover\" id = \"redDiv" + i + "\" onclick=\"redOn(" + i + ");\"><img src = \"res/ship.png\" class=\"shiplist\" id=\"ship"+i+"\"></div>";
- };
- document.getElementById("redFlex").innerHTML = text;
- //############# Blue Team's Turn #############
- function blueOn(clicked_id) {
- //Enables the blue ship assignment overlay.
- document.getElementById("blueOverlay").style.display = "block";
- j = clicked_id;
- var x = shipCounters[j];
- var overlaytext = "";
- overlaytext += "<div class=\"blueshipCard\"><div class=\"ship\" onclick=\"selectShip(" + j + ")\"><img id=\"ship " + j + " class=\"shipImg\" src=\"res/ship_active.png\"><p class=\"shipLabel\">Ship " + j + "</p></div><div class=\"inspection\"><div><span><img src=\"res/basic_search.png\" alt=\"\"><button class=\"searchButton\" onclick=\"inspection(0, " + j + ")\">Basic Search</button></span></div><div><span><img src=\"res/better_search.png\" alt=\"\"><button class=\"searchButton\" onclick=\"inspection(1, " + j + ")\">Better Search</button></span></div><span><img src=\"res/total_search.png\" alt=\"\"><button class=\"searchButton\" onclick=\"inspection(2, " + j + ")\">Total Search</button></span><button class=\" searchBlueConfirmBtn\" onclick=\"blueOff()\">Confirm</button></div></div>"
- document.getElementById("blueOverlay").innerHTML = overlaytext;
- };
- function blueOff() {
- //Disables the blue ship assignment overlay.
- document.getElementById("blueOverlay").style.display = "none";
- };
- var text = "";
- for (var i = 1; i < 11; i++) {
- text += "<div class = \"shiphover\" id = \"blueDiv" + i + "\" onclick=\"blueOn(" + i + ");\"><img src = \"res/ship.png\" class=\"shiplist\" id=\"ship"+i+"\"></div>";
- };
- document.getElementById("blueFlex").innerHTML = text;
- function inspection(determiner, shipNumber) {
- //Performs inspection on the ship to see if it contains contraband.
- var arr = shipCargos[shipNumber];
- function randomInteger(min, max) {
- //Generates a random integer between the minimum and maximum values for use in the inspection function.
- return Math.floor(Math.random() * (max - min + 1)) + min;
- };
- if(arr.length>0){
- //Basic Search
- if (determiner == 0) {
- if (startingInspectionPoints >= basicCost) {
- var index = randomInteger(0, arr.length - 1);
- if (arr[index] === true) {
- // ####DRUGS FOUND#####
- alert("Contraband Located! 1 unit seized!")
- drugsFound += 1;
- //arr[index] = false;
- } else {
- // ####NO DRUGS FOUND####
- alert("No contraband was located.")
- }
- shipCargos[shipNumber].splice(index,1);
- startingInspectionPoints -= basicCost;
- ipCounterUpdate();
- basicSearches += 1;
- } else {
- alert("Error: insufficient inspection points!")
- return;
- }
- activeContraband -= drugsFound;
- interceptedContraband += drugsFound;
- }
- //Better Search
- else if (determiner == 1) {
- if (startingInspectionPoints >= betterCost) {
- if(arr.length>=3){
- var a = randomInteger(0, arr.length-1);
- var b = randomInteger(0, arr.length-1);
- while(b==a){
- b = randomInteger(0,arr.length-1);
- }
- var c = randomInteger(0,arr.length-1);
- while(c==a || c==b){
- c = randomInteger(0,arr.length-1);
- }
- var indexList = [a, b, c];
- } else if (arr.length==2){
- var a = randomInteger(0, arr.length-1);
- var b = randomInteger(0, arr.length-1);
- while(b==a){
- b = randomInteger(0,arr.length-1);
- }
- var indexList = [a, b];
- } else{
- var a = randomInteger(0, arr.length-1);
- var indexList = [a];
- }
- for (var i = 0; i <= indexList.length; i++) {
- var checker = indexList[i];
- if (arr[checker] === true) {
- // ####DRUGS FOUND#####
- alert("Contraband Located! 1 unit seized!")
- drugsFound += 1;
- //arr[checker] = false;
- } else if (arr[checker] == false) {
- // ####NO DRUGS FOUND####
- alert("No contraband was located.")
- } else {
- alert("End of inspection.")
- }
- }
- startingInspectionPoints -= betterCost;
- ipCounterUpdate();
- betterSearches += 1;
- indexList.sort(function(a, b){return b-a});
- var counter = 0;
- for(var i=0;i<indexList.length;i++){
- console.log(shipCargos[shipNumber]);
- shipCargos[shipNumber].splice(indexList[i]-counter,1);
- console.log(shipCargos[shipNumber]);
- counter++;
- }
- } else {
- alert("Error: insufficient inspection points!")
- return;
- }
- activeContraband -= drugsFound;
- interceptedContraband += drugsFound;
- }
- //Total Search
- else if (determiner == 2) {
- if (startingInspectionPoints >= totalCost) {
- var contains = arr.includes(true);
- if (contains === true) {
- drugsFound += 1;
- for (x = 1; arr.length >= x; x++) {
- if (arr[x] === true) {
- drugsFound += 1;
- }
- }
- alert("Contraband Located! " + drugsFound + " units seized!")
- //arr = [false, false, false, false, false]
- } else {
- // ####NO DRUGS FOUND####
- alert("No contraband was located.");
- }
- startingInspectionPoints -= totalCost;
- ipCounterUpdate();
- totalSearches += 1;
- } else {
- alert("Error: insufficient inspection points!")
- return;
- }
- shipCargos[shipNumber] = [];
- activeContraband -= drugsFound;
- interceptedContraband += drugsFound;
- }
- var shipDiv = document.getElementById("blueDiv"+shipNumber);
- var updatedShipDrugsFound = drugsFound;
- if(shipDiv.children.length>1){
- updatedShipDrugsFound += parseInt(shipDiv.children[shipDiv.children.length-1].innerHTML,10);
- shipDiv.removeChild(shipDiv.children[shipDiv.children.length-1]);
- }
- shipDiv.innerHTML += "<div class=\"contrabandCountLabel\">" + updatedShipDrugsFound + "<img id = \"countLabel\" src=\"res/contraband_not_found.png\"></div>";
- shipDiv.children[0].setAttribute("src","res/ship_active.png");
- drugsFound = 0;
- } else{
- alert("Error: All cargo units on this ship have already been searched");
- }
- };
- //############# Navigation #############
- function gameStart(){
- //Changes the view from the home to red turn screens.
- document.getElementById("homeScreen").style.display = "none";
- document.getElementById("redTurn").style.display = "block";
- playerNames();
- contrabandCounterUpdate();
- ipCounterUpdate();
- gameInfo(redPlayer, bluePlayer, startingContraband, startingInspectionPoints, startingShips, numberOfTurns);
- };
- function homeToSettings(){
- //Changes the view from the home to settings screens.
- document.getElementById("homeScreen").style.display = "none";
- document.getElementById("settingsScreen").style.display = "block";
- };
- function settingsToHome(){
- //Changes the view from the settings to home screens.
- document.getElementById("settingsScreen").style.display = "none";
- document.getElementById("homeScreen").style.display = "block";
- };
- function redToBlue() {
- //Switches from red to blue turns.
- if (blueTurnCounterNumber <= numberOfTurns) {
- activeContraband = allocatedContraband;
- //Switch Turns
- redTurnCounterNumber += 1;
- document.getElementById("redTurnCounter").innerHTML = redTurnCounterNumber;
- document.getElementById("redTurn").style.display = "none";
- document.getElementById("blueTurn").style.display = "block";
- }
- for(i=1;i<11;i++){
- var shipDiv = document.getElementById("redDiv"+i);
- if(shipDiv.children.length>1){
- shipDiv.removeChild(shipDiv.children[shipDiv.children.length-1]);
- shipDiv.children[0].setAttribute("src","res/ship.png");
- };
- }
- };
- function blueToRed() {
- if (redTurnCounterNumber == numberOfTurns + 1) {
- //Game Ends
- //Database Purposes
- shipCounter();
- //Updating Score
- successfulContraband += activeContraband;
- interceptedContraband += drugsFound;
- successfulContrabandCounterNumber += successfulContraband;
- interceptContrabandCounterNumber += interceptedContraband;
- successfulContrabandCounter.innerHTML = successfulContrabandCounterNumber;
- interceptContrabandCounter.innerHTML = interceptContrabandCounterNumber;
- //Database Upload
- saveRound(blueTurnCounterNumber, shipCounters, badShips, successfulContraband, interceptedContraband, basicSearches, betterSearches, totalSearches, successfulContrabandCounterNumber, interceptContrabandCounterNumber);
- gameEnd();
- return;
- } else {
- //Database Purposes
- shipCounter();
- //Updating Score
- successfulContraband += activeContraband;
- interceptedContraband += drugsFound;
- successfulContrabandCounterNumber += successfulContraband;
- interceptContrabandCounterNumber += interceptedContraband;
- successfulContrabandCounter.innerHTML = successfulContrabandCounterNumber;
- interceptContrabandCounter.innerHTML = interceptContrabandCounterNumber;
- //Database Upload
- saveRound(blueTurnCounterNumber, shipCounters, badShips, successfulContraband, interceptedContraband, basicSearches, betterSearches, totalSearches, successfulContrabandCounterNumber, interceptContrabandCounterNumber);
- //Reset Board
- blueReset();
- //Switch Turns
- blueTurnCounterNumber += 1;
- document.getElementById("blueTurnCounter").innerHTML = blueTurnCounterNumber;
- document.getElementById("redTurn").style.display = "block";
- document.getElementById("blueTurn").style.display = "none";
- }
- for(i=1;i<11;i++){
- var shipDiv = document.getElementById("blueDiv"+i);
- if(shipDiv.children.length>1){
- shipDiv.removeChild(shipDiv.children[shipDiv.children.length-1]);
- shipDiv.children[0].setAttribute("src","res/ship.png");
- };
- }
- };
- function blueReset() {
- //Resets the board after blue finishes their turn (thereby ending the round).
- shipCargos = [
- [],
- [false, false, false, false, false],
- [false, false, false, false, false],
- [false, false, false, false, false],
- [false, false, false, false, false],
- [false, false, false, false, false],
- [false, false, false, false, false],
- [false, false, false, false, false],
- [false, false, false, false, false],
- [false, false, false, false, false],
- [false, false, false, false, false]
- ];
- shipCounters = [
- [],
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ];
- uniqueID = null;
- gameID = null;
- startingContraband = contrabandInput;
- allocatedContraband = 0;
- contrabandCounterUpdate();
- drugsFound = 0;
- startingInspectionPoints = ipInput;
- ipCounterUpdate();
- badShips = 0;
- basicSearches = 0;
- betterSearches = 0;
- totalSearches = 0;
- successfulContrabandCounterNumber = 0;
- interceptContrabandCounterNumber = 0;
- contrabandCounter.innerHTML = startingContraband;
- inspectionPointsCounter.innerHTML = startingInspectionPoints;
- };
- //############# Database Purposes #############
- function saveRound(blueTurnCounterNumber, shipCounters, badShips, successfulContraband, interceptedContraband, basicSearches, betterSearches, totalSearches, successfulContrabandCounterNumber, interceptContrabandCounterNumber){
- //Saves game data to Firebase.
- gameRef.set({
- [blueTurnCounterNumber]: {
- ship1: shipCounters[1],
- ship2: shipCounters[2],
- ship3: shipCounters[3],
- ship4: shipCounters[4],
- ship5: shipCounters[5],
- ship6: shipCounters[6],
- ship7: shipCounters[7],
- ship8: shipCounters[8],
- ship9: shipCounters[9],
- ship10: shipCounters[10],
- badShips: badShips,
- redTeamScore: successfulContraband,
- blueTeamScore: interceptedContraband,
- basicSearches: basicSearches,
- betterSearches: betterSearches,
- totalSearches: totalSearches,
- redScoreChange: successfulContrabandCounterNumber,
- blueScoreChange: interceptContrabandCounterNumber
- }
- },{ merge: true }
- );
- };
- function gameInfo(redPlayer, bluePlayer, startingContraband, startingInspectionPoints, startingShips, numberOfTurns){
- gameRef.set({
- gameInfo: {
- redPlayer: redPlayer,
- bluePlayer: bluePlayer,
- startingContraband: startingContraband,
- startingInspectionPoints: startingInspectionPoints,
- startingShips: startingShips,
- numberOfTurns: numberOfTurns
- }
- },{ merge: true }
- );
- };
- function createUniqueID() {
- //Generates a unique ID using date and time information for data storage.
- //Format is the following: YEAR-MONTH-DAY-HOUR-MINUTE-SECOND
- var d = new Date();
- var y = d.getFullYear();
- var mo = d.getMonth();
- var da = d.getDate();
- var h = d.getHours();
- var m = d.getMinutes();
- var s = d.getSeconds();
- var uniqueID = String(y + "-" + mo + "-" + da + "-" + h + "-" + m + "-" + s);
- alert("The unique ID for this game is: " + uniqueID);
- return uniqueID;
- };
- function playerNames(){
- //Allows each team's player to enter their name.
- //Used for database purposes.
- window.redPlayer = String(prompt("Red Player Name: ").toLowerCase());
- window.bluePlayer = String(prompt("Blue Player Name: ").toLowerCase());
- };
- function shipCounter() {
- //Determines the number of ships containing contraband for every round.
- for (i = 0; i < shipCounters.length + 1; i++) {
- if (shipCounters[i] > 0) {
- badShips += 1;
- }
- }
- return badShips;
- };
- // ##########################End of Game####################################
- function gameEnd() {
- //Ends the game.
- document.getElementById("blueTurn").style.display = "none";
- document.getElementById("endTurn").style.display = "block";
- var overlaytext = "";
- overlaytext += "<div class=\"endTurnDiv\"><h1 class=\"endTitle\">Results</h1><div class=\"itemsListEnd\"><div class =\"setTableEnd\"><div class=\"setRowsEnd\" id = \"redPoints\"><img class=\"settingsCounterEnd\" id=\"endSmuggled\" src=\"res/found contraband.png\"><div id=\"successCounter\"></div></div><div class=\"setRowsEnd\" id = \"bluePoints\"><img class=\"settingsCounterEnd\" id=\"endIntercepted\" src=\"res/contraband_not_found.png\"><div id=\"interceptCounter\">0</th></div></div></div><h1 id=\"redTeamEnd\"></h1><h1 id=\"blueTeamEnd\"></h1><h1 id=\"tieEnd\"></h1><button class=\"rePlay\" id=\"end\" onclick=\"restart()\">Play Again</button></div>"
- document.getElementById("endTurn").innerHTML = overlaytext;
- document.getElementById("successCounter").innerHTML = successfulContraband;
- document.getElementById("interceptCounter").innerHTML = interceptedContraband;
- if (successfulContraband > interceptedContraband) {
- document.getElementById("redTeamEnd").innerHTML = "Red Wins!";
- } else if (successfulContraband < interceptedContraband) {
- document.getElementById("blueTeamEnd").innerHTML = "Blue Wins!";
- } else {
- document.getElementById("tieEnd").innerHTML = "Tie Game!";
- }
- };
- function restart(){
- //Restarts the game.
- location.reload(true);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement