Files
reallife-gamemode/ReallifeGamemode.Client/assets/html/inventory/vehicle/script.js

609 lines
20 KiB
JavaScript

$(document).ready(function () {
//fire functions before page load
drawToKofferraum();
drawToPage();
moveItemsInv();
mp.trigger("CEF:BrowserLoadedVehicle");
console.log("loading finished");
});
var vehID;
function setItems(itemIdArr1, itemAmountArr1) {
var itemIdArr = JSON.parse(itemIdArr1);
var itemAmountArr = JSON.parse(itemAmountArr1);
for (var i = 0; i < itemIdArr.length; i++) {
for (x = 0; x < itemAmountArr[i]; x++) {
commands.addToPlayerInv(itemIdArr[i]);
}
}
}
function setVehItems(itemIdArr1, itemAmountArr1, vehID1) {
vehID = vehID1;
var itemIdArr = JSON.parse(itemIdArr1);
var itemAmountArr = JSON.parse(itemAmountArr1);
for (var i = 0; i < itemIdArr.length; i++) {
for (x = 0; x < itemAmountArr[i]; x++) {
commands.addToVehInv(itemIdArr[i]);
}
}
}
var holz = {
name: "Holz",
rarity: 'common',
selected: 'false',
usable: 'true',
amount: 1,
currentWeight: 0.65,
stackable: 'true',
object: 'true',
itemId: 1,
img: "package://assets/img/items/wood.svg"
}
var hamburger = {
name: "Hamburger",
rarity: 'common',
selected: 'false',
usable: 'true',
amount: 1,
currentWeight: 0.3,
stackable: 'true',
object: 'true',
itemId: 2,
img: "package://assets/img/items/burger.svg"
}
var cocaine = {
name: "Koks",
rarity: 'common',
selected: 'false',
usable: 'true',
amount: 1,
currentWeight: 0.05,
stackable: 'true',
object: 'true',
itemId: 3,
img: "package://assets/img/items/cocaine.svg"
}
var cannabis = {
name: "Cannabis",
rarity: 'common',
selected: 'false',
usable: 'true',
amount: 1,
currentWeight: 0.05,
stackable: 'true',
object: 'true',
itemId: 4,
img: "package://assets/img/items/cannabis.svg"
}
var flunder = {
name: "Flunder",
weight: 7.7,
currentWeight: 7.7,
rarity: 'fishes',
statSlots: [],
runes: [],
amount: 1,
usable: 'false',
selected: 'false',
stackable: 'false',
object: 'true',
itemId: 5,
img: 'package://assets/img/items/flounder.svg'
}
var aal = {
name: "Aal",
weight: 3.6,
currentWeight: 3.6,
rarity: 'fishes',
statSlots: [],
runes: [],
amount: 1,
usable: 'false',
selected: 'false',
stackable: 'false',
object: 'true',
itemId: 6,
img: 'package://assets/img/items/aal.svg'
}
var barsch = {
name: "Barsch",
weight: 2.6,
currentWeight: 2.6,
rarity: 'fishes',
statSlots: [],
runes: [],
amount: 1,
usable: 'false',
selected: 'false',
stackable: 'false',
object: 'true',
itemId: 7,
img: 'package://assets/img/items/perch.svg'
}
var lachs = {
name: "Lachs",
weight: 4.2,
currentWeight: 4.2,
rarity: 'fishes',
statSlots: [],
runes: [],
amount: 1,
usable: 'false',
selected: 'false',
stackable: 'false',
object: 'true',
itemId: 8,
img: 'package://assets/img/items/salmon.svg'
}
var thunfisch = {
name: "Thunfisch",
weight: 11,
currentWeight: 11,
rarity: 'fishes',
statSlots: [],
runes: [],
amount: 1,
usable: 'false',
selected: 'false',
stackable: 'false',
object: 'true',
itemId: 9,
img: 'package://assets/img/items/salmon.svg'
}
var zander = {
name: "Zander",
weight: 5,
currentWeight: 5,
rarity: 'fishes',
statSlots: [],
runes: [],
amount: 1,
usable: 'false',
selected: 'false',
stackable: 'false',
object: 'true',
itemId: 10,
img: 'package://assets/img/items/zander.svg'
}
var allItems = [holz, hamburger, cocaine, cannabis, flunder, aal, barsch, lachs, thunfisch, zander];
////////////////////////
// Player Invenotry //
////////////////////////
var playerInventory = [];
var EmptySlot = { name: 'blankSpace', rarity: '', object: 'false' };
function addToVehInvenotry(addItem) {
var cloneItem = Object.assign({}, addItem);
var getExsistingId = cloneItem.itemId;
var unfininshedStack;
//Checks to see if any items can be stacked, the location, and stack amount
for (var i = 24; i < playerInventory.length; i++) {
if (playerInventory[i].itemId === getExsistingId && cloneItem.stackable === 'true' && playerInventory[i].amount < 10) {
unfininshedStack = i
break;
}
}
if (cloneItem.currentWeight * cloneItem.amount + weightInv >= 250) {
return;
}
//Adds item to inventory
for (var i = 24; i < playerInventory.length; i++) {
if (unfininshedStack != undefined) {
if (playerInventory[unfininshedStack].amount + cloneItem.amount <= 30) {
playerInventory[unfininshedStack].amount += cloneItem.amount;
unfininshedStack = undefined;
drawToKofferraum();
moveItemsInv();
break;
}
else if (playerInventory[unfininshedStack].amount + cloneItem.amount > 30) {
var stackRemainder = 30 - playerInventory[unfininshedStack].amount;
playerInventory[unfininshedStack].amount += stackRemainder;
cloneItem.amount -= stackRemainder;
var recycleCloned = cloneItem;
addToInvenotry(recycleCloned);
unfininshedStack = undefined;
drawToKofferraum();
moveItemsInv();
break;
}
}
else if (cloneItem.amount > 30 && playerInventory[i].object === 'false') {
var reduceCloneAmount = Object.assign({}, cloneItem);
reduceCloneAmount.amount = 30;
playerInventory[i] = reduceCloneAmount;
cloneItem.amount -= 30;
addToInvenotry(cloneItem);
drawToKofferraum();
moveItemsInv();
break;
}
else if (unfininshedStack == undefined && playerInventory[i].object === 'false') {
playerInventory[i] = cloneItem;
drawToKofferraum();
moveItemsInv();
break;
}
}
}
function addToInvenotry(addItem) {
var cloneItem = Object.assign({}, addItem);
var getExsistingId = cloneItem.itemId;
var unfininshedStack;
//Checks to see if any items can be stacked, the location, and stack amount
for (var i = 0; i < playerInventory.length; i++) {
if (playerInventory[i].itemId === getExsistingId && cloneItem.stackable === 'true' && playerInventory[i].amount < 10) {
unfininshedStack = i
break;
}
}
if (cloneItem.currentWeight * cloneItem.amount + weightInv >= 45) {
return;
}
//Adds item to inventory
for (var i = 0; i < playerInventory.length; i++) {
if (unfininshedStack != undefined) {
if (playerInventory[unfininshedStack].amount + cloneItem.amount <= 10) {
playerInventory[unfininshedStack].amount += cloneItem.amount;
unfininshedStack = undefined;
drawToPage();
moveItemsInv();
break;
}
else if (playerInventory[unfininshedStack].amount + cloneItem.amount > 10) {
var stackRemainder = 10 - playerInventory[unfininshedStack].amount;
playerInventory[unfininshedStack].amount += stackRemainder;
cloneItem.amount -= stackRemainder;
var recycleCloned = cloneItem;
addToInvenotry(recycleCloned);
unfininshedStack = undefined;
drawToPage();
moveItemsInv();
break;
}
}
else if (cloneItem.amount > 10 && playerInventory[i].object === 'false') {
var reduceCloneAmount = Object.assign({}, cloneItem);
reduceCloneAmount.amount = 10;
playerInventory[i] = reduceCloneAmount;
cloneItem.amount -= 10;
addToInvenotry(cloneItem);
drawToPage();
moveItemsInv();
break;
}
else if (unfininshedStack == undefined && playerInventory[i].object === 'false') {
playerInventory[i] = cloneItem;
drawToPage();
moveItemsInv();
break;
}
}
}
var getItemSlotData;
function getAllItemSlotData() {
getItemSlotData = document.getElementsByClassName('itemSlot');
}
var currentSelected;
function moveItemsInv() {
getAllItemSlotData();
for (var i = 0; i < getItemSlotData.length; i++) {
$(getItemSlotData[i]).click(function () {
if (this.getAttribute('inv-type') != 'p') {
return;
}
if (this.classList.contains('selected')) {
this.classList.remove('selected');
currentSelected = undefined;
}
else if (this.getAttribute('object') === 'false' && isNaN(currentSelected)) {
return;
}
else if (currentSelected) {
if (playerInventory[currentSelected].stackable === 'false' || playerInventory[currentSelected].itemId != playerInventory[this.getAttribute('data-value')].itemId) {
if (playerInventory[this.getAttribute('data-value')] == EmptySlot && this.getAttribute('data-value') > 23 && currentSelected < 24) {
var hItem = this.getAttribute('data-value');
var iItem = currentSelected;
var Copy = Object.assign({}, playerInventory[iItem]);
playerInventory.splice(hItem, 0, Copy);
if (playerInventory[currentSelected].stackable === 'false') {
playerInventory[hItem].amount = playerInventory[iItem].amount;
playerInventory[iItem] = EmptySlot;
} else {
$(".Betrag").show();
$("#tf_submitZahl").click(function () {
if ($('#tf_zahl').val() < playerInventory[iItem].amount && playerInventory[currentSelected].stackable) {
console.log(playerInventory[hItem].amount + " " + playerInventory[iItem].amount + " " + hItem);
var y = parseInt($('#tf_zahl').val(), 10);
playerInventory[iItem].amount -= y;
console.log(playerInventory[hItem].amount + " " + playerInventory[iItem] + " " + parseInt($('#tf_zahl').val(), 10) + " " + hItem);
playerInventory[hItem].amount = y;
console.log(playerInventory[hItem].amount + " " + playerInventory[iItem].amount + " " + parseInt($('#tf_zahl').val(), 10) + " " + hItem);
} else {
playerInventory[hItem].amount = playerInventory[iItem].amount;
playerInventory[iItem] = EmptySlot;
}
drawToPage();
drawToKofferraum();
currentSelected = undefined;
getItemSlotData = document.getElementsByClassName('itemSlot');
moveItemsInv();
$(".Betrag").hide();
saveAllItems();
});
}
return;
} else {
var swap = playerInventory[this.getAttribute('data-value')];
playerInventory[this.getAttribute('data-value')] = playerInventory[currentSelected];
playerInventory[currentSelected] = swap;
drawToPage();
drawToKofferraum();
currentSelected = undefined;
getItemSlotData = document.getElementsByClassName('itemSlot');
moveItemsInv();
}
}
else if ((playerInventory[currentSelected].itemId == playerInventory[this.getAttribute('data-value')].itemId && playerInventory[currentSelected].stackable) && this.getAttribute('inv-type') === 'p') {
$(".Betrag").show();
$("#tf_submitZahl").click(function () {
playerInventory[this.getAttribute('data-value')].amount += playerInventory[currentSelected].amount
playerInventory[currentSelected] = EmptySlot;
drawToPage();
drawToKofferraum();
currentSelected = undefined;
getItemSlotData = document.getElementsByClassName('itemSlot');
moveItemsInv();
$(".Betrag").hide();
saveAllItems();
});
}
}
else {
this.className += ' selected';
currentSelected = this.getAttribute('data-value');
}
});
}
}
//Inventar
function saveAllItems() {
mp.trigger("CEF:saveItemsHelper", JSON.stringify(vehId));
for (var i = 0; i < playerInventory.length; i++) {
if (playerInventory[i].object === 'true') {
mp.trigger("CEF:saveItems", JSON.stringify(playerInventory[i].itemId), JSON.stringify(playerInventory[i].amount), JSON.stringify(i));
}
}
}
function refreshAllCurrentItems() {
var remove = document.getElementById('invContainer');
while (remove.firstChild) remove.removeChild(remove.firstChild);
}
function fillOutEmptyInv() {
for (var i = 0; i < 24; i++) {
if (!playerInventory[i]) {
playerInventory.push(EmptySlot);
drawToPage();
}
}
}
var weightInv = 0;
function drawToPage() {
refreshAllCurrentItems();
weightInv = 0;
for (var i = 0; i < playerInventory.length; i++) {
if (playerInventory[i].selected == 'true') {
var className = ' selected';
}
else {
var className = '';
}
if (i >= 24) {
//Keeps inventory set to 10 items max
console.log('Inventory is full!')
return;
}
else {
//creates item element
var item = document.createElement("div");
item.className = "itemSlot " + playerInventory[i].rarity + className;
item.setAttribute("data-value", i);
item.setAttribute("inv-type", 'p');
item.setAttribute("object", playerInventory[i].object);
item.setAttribute('style', 'background: url(' + playerInventory[i].img + '); background-size: contain;');
//show element amounts
var itemAmount = document.createElement("div");
itemAmount.className = "itemAmount";
var itemAmountDisplay = document.createElement("p");
if (playerInventory[i].amount) {
var itemDisplayStatsName = document.createTextNode(playerInventory[i].amount);
}
else {
var itemDisplayStatsName = document.createTextNode('');
}
item.appendChild(itemAmount);
itemAmount.appendChild(itemAmountDisplay);
itemAmountDisplay.appendChild(itemDisplayStatsName);
//adds item element or elements
document.getElementById("invContainer").appendChild(item);
//creates item display information
if (playerInventory[i].object === 'true') {
var itemDesc = document.createElement("div");
var itemDescTitle = document.createElement("h3");
var getItemTitle = document.createTextNode(playerInventory[i].name + " (" + Math.round(playerInventory[i].currentWeight * playerInventory[i].amount * 100) / 100 + " kg)");
itemDesc.className = "itemDesc";
item.appendChild(itemDesc);
itemDesc.appendChild(itemDescTitle);
itemDescTitle.appendChild(getItemTitle);
weightInv += playerInventory[i].currentWeight * playerInventory[i].amount;
document.getElementById('gewicht').innerText = Math.round(weightInv * 100) / 100 + "/45 kg";
}
}
}
fillOutEmptyInv();
}
//Kofferraum
function refreshAllCurrentKofItems() {
var remove = document.getElementById('kofContainer');
while (remove.firstChild) remove.removeChild(remove.firstChild);
}
function fillOutEmptyInvKofferraum() {
for (var i = 24; i < 54; i++) {
if (!playerInventory[i]) {
playerInventory.push(EmptySlot);
drawToKofferraum();
}
}
}
var vehWeightInv = 0;
function drawToKofferraum() {
refreshAllCurrentKofItems();
vehWeightInv = 0;
for (var i = 24; i < playerInventory.length; i++) {
if (playerInventory[i].selected == 'true') {
var className = ' selected';
}
else {
var className = '';
}
if (i >= 54) {
//Keeps inventory set to 10 items max
console.log('Inventory is full!')
return;
}
else {
//creates item element
var item = document.createElement("div");
item.className = "itemSlot " + playerInventory[i].rarity + className;
item.setAttribute("data-value", i);
item.setAttribute("inv-type", 'p');
item.setAttribute("object", playerInventory[i].object);
item.setAttribute('style', 'background: url(' + playerInventory[i].img + '); background-size: contain;');
//show element amounts
var itemAmount = document.createElement("div");
itemAmount.className = "itemAmount";
var itemAmountDisplay = document.createElement("p");
if (playerInventory[i].amount) {
var itemDisplayStatsName = document.createTextNode(playerInventory[i].amount);
}
else {
var itemDisplayStatsName = document.createTextNode('');
}
item.appendChild(itemAmount);
itemAmount.appendChild(itemAmountDisplay);
itemAmountDisplay.appendChild(itemDisplayStatsName);
//adds item element or elements
document.getElementById("kofContainer").appendChild(item);
//creates item display information
if (playerInventory[i].object === 'true') {
var itemDesc = document.createElement("div");
var itemDescTitle = document.createElement("h3");
var getItemTitle = document.createTextNode(playerInventory[i].name + " (" + Math.round(playerInventory[i].currentWeight * playerInventory[i].amount * 100) / 100 + " kg)");
itemDesc.className = "itemDesc";
item.appendChild(itemDesc);
itemDesc.appendChild(itemDescTitle);
itemDescTitle.appendChild(getItemTitle);
vehWeightInv += playerInventory[i].currentWeight * playerInventory[i].amount;
document.getElementById('vehGewicht').innerText = Math.round(weightInv * 100) / 100 + "/250 kg";
}
}
}
fillOutEmptyInvKofferraum();
}
///////////////////
// Dev Commands //
///////////////////
var commands = {
addToPlayerInv: function (itemGiveId) {
for (var i = 0; i < allItems.length; i++) {
if (allItems[i].itemId === itemGiveId) {
addToInvenotry(allItems[i]);
}
}
},
addToVehInv: function(itemGiveId) {
for (var i = 0; i < allItems.length; i++) {
if (allItems[i].itemId === itemGiveId) {
addToVehInvenotry(allItems[i]);
}
}
},
clearPlayerInv: function () {
playerInventory = [];
drawToPage();
drawToKofferraum();
},
}
//Handel Akzeptierenfenster
var trade = 1;
$("#Fahrzeug").click(function () {
if (trade == 1) {
$(".fahrzeugWrapper").show();
drawToKofferraum();
drawToPage();
moveItemsInv();
trade = 0;
} else {
$(".fahrzeugWrapper").hide();
trade = 1;
}
currentSelected = undefined;
});