commit c51e60ed059b875f1e9a1ff1293315cbe9ee98bd Author: IM23a-bachmannj2 Date: Wed Sep 11 12:32:01 2024 +0200 1st commit diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..13566b8 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,8 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Editor-based HTTP Client requests +/httpRequests/ +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml diff --git a/app.py b/app.py new file mode 100644 index 0000000..6604ca0 --- /dev/null +++ b/app.py @@ -0,0 +1,61 @@ +from flask import Flask, render_template, jsonify +import json + +app = Flask(__name__) + +# Load the data from the JSON file +with open('data.json') as f: + guns = json.load(f) + + +@app.route('/') +def index(): + return render_template('index.html') + + +@app.route('/api/guns', methods=['GET']) +def get_guns(): + updated_guns = [] + for gun in guns: + # Calculate RPS, DPS, DPM, avgDPS + rps = gun['rpm'] / 60 + dps = gun['damage'] * rps + reload_time_min = gun['reload_time'] / 60 + dpm = (gun['mag_size'] * gun['damage']) / (reload_time_min + (gun['mag_size'] / gun['rpm'])) + avg_dps = dpm / 60 + + # Add calculated stats to the gun data + gun.update({ + 'rps': rps, + 'dps': dps, + 'dpm': dpm, + 'avg_dps': avg_dps + }) + updated_guns.append(gun) + + return jsonify(updated_guns) + +@app.route('/calculator') +def calculator(): + return render_template('calculator.html') + + +def dps_calculation(damage, extra_dmg_percent, rpm, extra_fire_rate): + dps = damage * (extra_dmg_percent / 100 + 1) * (rpm * (extra_fire_rate / 100 + 1) / 60) + return round(dps, 2) + + +def dpm_calculation(reload_time, extra_reload_speed, rpm, damage, extra_dmg_percent, mag_size, extra_fire_rate): + adjusted_reload_time = reload_time * (extra_reload_speed / 100 + 1) + adjusted_fire_rate = rpm * (extra_fire_rate / 100 + 1) + total_damage_per_mag = damage * (extra_dmg_percent / 100 + 1) * mag_size + dpm = total_damage_per_mag / ((adjusted_reload_time / 60) + (mag_size / adjusted_fire_rate)) + return round(dpm, 2) + + +def average_dpm_calculation(): + dpm = float(dpm_calculation()) + return round(dpm / 60, 2) + +if __name__ == '__main__': + app.run(debug=True) \ No newline at end of file diff --git a/data.json b/data.json new file mode 100644 index 0000000..da8dc13 --- /dev/null +++ b/data.json @@ -0,0 +1,882 @@ +[ + { + "id": 1, + "name": "G18", + "damage": 32, + "damage_multiplier": 1, + "rpm": 550, + "mag_size": 18, + "reload_time": 2, + "gunytpe": "PISTOL" + }, + { + "id": 2, + "name": "M1911", + "damage": 37, + "damage_multiplier": 1, + "rpm": 580, + "mag_size": 8, + "reload_time": 1.15, + "gunytpe": "PISTOL" + }, + { + "id": 3, + "name": "M9A", + "damage": 31, + "damage_multiplier": 1, + "rpm": 850, + "mag_size": 15, + "reload_time": 2, + "gunytpe": "PISTOL" + }, + { + "id": 4, + "name": "M1911MK2", + "damage": 48, + "damage_multiplier": 1, + "rpm": 720, + "mag_size": 16, + "reload_time": 3, + "gunytpe": "PISTOL" + }, + { + "id": 5, + "name": "Luger", + "damage": 58, + "damage_multiplier": 1, + "rpm": 500, + "mag_size": 8, + "reload_time": 1.95, + "gunytpe": "PISTOL" + }, + { + "id": 6, + "name": "AK47", + "damage": 40, + "damage_multiplier": 1, + "rpm": 600, + "mag_size": 30, + "reload_time": 2.1, + "gunytpe": "RIFLE" + }, + { + "id": 7, + "name": "G36", + "damage": 42, + "damage_multiplier": 1, + "rpm": 700, + "mag_size": 30, + "reload_time": 2.4, + "gunytpe": "RIFLE" + }, + { + "id": 8, + "name": "CRL10", + "damage": 75, + "damage_multiplier": 1, + "rpm": 400, + "mag_size": 24, + "reload_time": 2.6, + "gunytpe": "RIFLE" + }, + { + "id": 9, + "name": "BRH17", + "damage": 58, + "damage_multiplier": 1, + "rpm": 670, + "mag_size": 30, + "reload_time": 3.25, + "gunytpe": "RIFLE" + }, + { + "id": 10, + "name": "M4", + "damage": 40, + "damage_multiplier": 1, + "rpm": 700, + "mag_size": 30, + "reload_time": 2.35, + "gunytpe": "RIFLE" + }, + { + "id": 11, + "name": "M1", + "damage": 425, + "damage_multiplier": 1, + "rpm": 60, + "mag_size": 8, + "reload_time": 2.8, + "gunytpe": "RIFLE" + }, + { + "id": 12, + "name": "R870", + "damage": 92, + "damage_multiplier": 6, + "rpm": 70, + "mag_size": 12, + "reload_time": 12, + "gunytpe": "SHOTGUN" + }, + { + "id": 13, + "name": "R870 (1 Pellet Hit DPS/DPM)", + "damage": 92, + "damage_multiplier": 1, + "rpm": 70, + "mag_size": 12, + "reload_time": 12, + "gunytpe": "SHOTGUN" + }, + { + "id": 14, + "name": "Scattergun", + "damage": 110, + "damage_multiplier": 4, + "rpm": 300, + "mag_size": 7, + "reload_time": 4, + "gunytpe": "SHOTGUN" + }, + { + "id": 15, + "name": "Scattergun (1 Pellet Hit DPS/DPM)", + "damage": 58, + "damage_multiplier": 1, + "rpm": 300, + "mag_size": 7, + "reload_time": 4.5, + "gunytpe": "SHOTGUN" + }, + { + "id": 16, + "name": "Shorty", + "damage": 29, + "damage_multiplier": 4, + "rpm": 185, + "mag_size": 8, + "reload_time": 3.5, + "gunytpe": "SHOTGUN" + }, + { + "id": 17, + "name": "Shorty (1 Pellet Hit DPS/DPM)", + "damage": 29, + "damage_multiplier": 1, + "rpm": 185, + "mag_size": 8, + "reload_time": 3.5, + "gunytpe": "SHOTGUN" + }, + { + "id": 18, + "name": "AA12", + "damage": 22, + "damage_multiplier": 4, + "rpm": 300, + "mag_size": 20, + "reload_time": 2.2, + "gunytpe": "SHOTGUN" + }, + { + "id": 19, + "name": "AA12 (1 Pellet Hit DPS/DPM)", + "damage": 22, + "damage_multiplier": 1, + "rpm": 300, + "mag_size": 20, + "reload_time": 2.2, + "gunytpe": "SHOTGUN" + }, + { + "id": 20, + "name": "P90", + "damage": 32, + "damage_multiplier": 1, + "rpm": 900, + "mag_size": 50, + "reload_time": 3, + "gunytpe": "SMG" + }, + { + "id": 21, + "name": "Thompson", + "damage": 38, + "damage_multiplier": 1, + "rpm": 750, + "mag_size": 50, + "reload_time": 2.5, + "gunytpe": "SMG" + }, + { + "id": 22, + "name": "Uzi", + "damage": 20, + "damage_multiplier": 1, + "rpm": 850, + "mag_size": 32, + "reload_time": 2, + "gunytpe": "SMG" + }, + { + "id": 23, + "name": "Vector", + "damage": 32, + "damage_multiplier": 1, + "rpm": 1050, + "mag_size": 33, + "reload_time": 2, + "gunytpe": "SMG" + }, + { + "id": 24, + "name": "MP5", + "damage": 23, + "damage_multiplier": 1, + "rpm": 800, + "mag_size": 30, + "reload_time": 2.1, + "gunytpe": "SMG" + }, + { + "id": 25, + "name": "U10", + "damage": 18, + "damage_multiplier": 1, + "rpm": 750, + "mag_size": 65, + "reload_time": 2, + "gunytpe": "SMG" + }, + { + "id": 26, + "name": "MPX", + "damage": 28, + "damage_multiplier": 1, + "rpm": 780, + "mag_size": 30, + "reload_time": 2.65, + "gunytpe": "SMG" + }, + { + "id": 27, + "name": "UMP45", + "damage": 28, + "damage_multiplier": 1, + "rpm": 600, + "mag_size": 25, + "reload_time": 2, + "gunytpe": "SMG" + }, + { + "id": 28, + "name": "Prototype", + "damage": 21, + "damage_multiplier": 1, + "rpm": 800, + "mag_size": 25, + "reload_time": 2.5, + "gunytpe": "SMG" + }, + { + "id": 29, + "name": "Prototype (Overcharged)", + "damage": 21, + "damage_multiplier": 1.35, + "rpm": 800, + "mag_size": 25, + "reload_time": 2.5, + "gunytpe": "SMG" + }, + { + "id": 30, + "name": "MP40", + "damage": 50, + "damage_multiplier": 1, + "rpm": 550, + "mag_size": 32, + "reload_time": 3, + "gunytpe": "SMG" + }, + { + "id": 31, + "name": "PKM", + "damage": 41, + "damage_multiplier": 1, + "rpm": 750, + "mag_size": 100, + "reload_time": 5.5, + "gunytpe": "LMG" + }, + { + "id": 32, + "name": "M249", + "damage": 42, + "damage_multiplier": 1, + "rpm": 850, + "mag_size": 100, + "reload_time": 6, + "gunytpe": "LMG" + }, + { + "id": 33, + "name": "T49", + "damage": 48, + "damage_multiplier": 1, + "rpm": 780, + "mag_size": 125, + "reload_time": 5.5, + "gunytpe": "LMG" + }, + { + "id": 34, + "name": "T32", + "damage": 52, + "damage_multiplier": 1, + "rpm": 700, + "mag_size": 50, + "reload_time": 3.25, + "gunytpe": "RIFLE" + }, + { + "id": 35, + "name": "Improved T49", + "damage": 48, + "damage_multiplier": 1, + "rpm": 850, + "mag_size": 125, + "reload_time": 5.5, + "gunytpe": "LMG" + }, + { + "id": 36, + "name": "Improved T32", + "damage": 52, + "damage_multiplier": 1, + "rpm": 750, + "mag_size": 50, + "reload_time": 3.25, + "gunytpe": "RIFLE" + }, + { + "id": 37, + "name": "AMR 12.7", + "damage": 1000, + "damage_multiplier": 1, + "rpm": 30, + "mag_size": 5, + "reload_time": 3.5, + "gunytpe": "RIFLE?" + }, + { + "id": 38, + "name": "Golden Thompson", + "damage": 44, + "damage_multiplier": 1, + "rpm": 800, + "mag_size": 50, + "reload_time": 2.5, + "gunytpe": "SMG" + }, + { + "id": 39, + "name": "MilTech SMGs", + "damage": 40, + "damage_multiplier": 1, + "rpm": 900, + "mag_size": 64, + "reload_time": 4, + "gunytpe": "SMG" + }, + { + "id": 40, + "name": "Eradicator", + "damage": 40, + "damage_multiplier": 1, + "rpm": 1000, + "mag_size": 50, + "reload_time": 2.45, + "gunytpe": "RIFLE" + }, + { + "id": 41, + "name": "A10", + "damage": 1000, + "damage_multiplier": 1, + "rpm": 3000, + "mag_size": 10000000000000000000, + "reload_time": 0, + "gunytpe": "SPECIAL" + }, + { + "id": 42, + "name": "Turret (Manual)", + "damage": 100, + "damage_multiplier": 1, + "rpm": 500, + "mag_size": 650, + "reload_time": 0, + "gunytpe": "SPECIAL" + }, + { + "id": 43, + "name": "Turret (Automatic)", + "damage": 100, + "damage_multiplier": 1, + "rpm": 300, + "mag_size": 650, + "reload_time": 0, + "gunytpe": "SPECIAL" + }, + { + "id": 44, + "name": "Improved G18", + "damage": 38, + "damage_multiplier": 1, + "rpm": 650, + "mag_size": 18, + "reload_time": 2, + "gunytpe": "PISTOL" + }, + { + "id": 45, + "name": "Silenced G18", + "damage": 38, + "damage_multiplier": 1, + "rpm": 550, + "mag_size": 18, + "reload_time": 2, + "gunytpe": "PISTOL" + }, + { + "id": 46, + "name": "RC12", + "damage": 50, + "damage_multiplier": 4, + "rpm": 225, + "mag_size": 10, + "reload_time": 5, + "gunytpe": "SHOTGUN" + }, + { + "id": 47, + "name": "RC12 (1 pellet hit)", + "damage": 50, + "damage_multiplier": 1, + "rpm": 225, + "mag_size": 10, + "reload_time": 5, + "gunytpe": "SHOTGUN" + }, + { + "id": 48, + "name": "MRL4", + "damage": 48.5, + "damage_multiplier": 1, + "rpm": 550, + "mag_size": 30, + "reload_time": 2.35, + "gunytpe": "RIFLE" + }, + { + "id": 49, + "name": "Improved MRL4", + "damage": 48.5, + "damage_multiplier": 1, + "rpm": 600, + "mag_size": 30, + "reload_time": 2.35, + "gunytpe": "RIFLE" + }, + { + "id": 50, + "name": "K4LAS", + "damage": 45, + "damage_multiplier": 1, + "rpm": 600, + "mag_size": 32, + "reload_time": 2.45, + "gunytpe": "RIFLE" + }, + { + "id": 51, + "name": "Improved K4LAS", + "damage": 45, + "damage_multiplier": 1, + "rpm": 650, + "mag_size": 32, + "reload_time": 2.45, + "gunytpe": "RIFLE" + }, + { + "id": 52, + "name": "MK49", + "damage": 40, + "damage_multiplier": 1, + "rpm": 625, + "mag_size": 100, + "reload_time": 4.5, + "gunytpe": "LMG" + }, + { + "id": 53, + "name": "Improved MK49", + "damage": 40, + "damage_multiplier": 1, + "rpm": 700, + "mag_size": 100, + "reload_time": 4.5, + "gunytpe": "LMG" + }, + { + "id": 54, + "name": "Improved P90", + "damage": 32, + "damage_multiplier": 1, + "rpm": 800, + "mag_size": 50, + "reload_time": 2.6, + "gunytpe": "SMG" + }, + { + "id": 55, + "name": "STEN Gun", + "damage": 50, + "damage_multiplier": 1, + "rpm": 550, + "mag_size": 32, + "reload_time": 2.5, + "gunytpe": "SMG" + }, + { + "id": 56, + "name": "Akimbo G18", + "damage": 52, + "damage_multiplier": 1, + "rpm": 700, + "mag_size": 34, + "reload_time": 3.5, + "gunytpe": "PISTOL" + }, + { + "id": 57, + "name": "ASR", + "damage": 100, + "damage_multiplier": 1, + "rpm": 440, + "mag_size": 18, + "reload_time": 3.5, + "gunytpe": "RIFLE" + }, + { + "id": 58, + "name": "Improved ASR", + "damage": 100, + "damage_multiplier": 1, + "rpm": 540, + "mag_size": 18, + "reload_time": 3.5, + "gunytpe": "RIFLE" + }, + { + "id": 59, + "name": "Improved G36", + "damage": 42, + "damage_multiplier": 1, + "rpm": 780, + "mag_size": 30, + "reload_time": 2.25, + "gunytpe": "RIFLE" + }, + { + "id": 60, + "name": "Akimbo Voids", + "damage": 15, + "damage_multiplier": 1, + "rpm": 900, + "mag_size": 26, + "reload_time": 2.5, + "gunytpe": "SMG?" + }, + { + "id": 61, + "name": "Improved Akimbo Voids", + "damage": 38, + "damage_multiplier": 1, + "rpm": 1200, + "mag_size": 26, + "reload_time": 2, + "gunytpe": "SMG?" + }, + { + "id": 62, + "name": "Improved MP5", + "damage": 34, + "damage_multiplier": 1, + "rpm": 800, + "mag_size": 30, + "reload_time": 1.5, + "gunytpe": "SMG" + }, + { + "id": 63, + "name": "LTL Laser", + "damage": 28, + "damage_multiplier": 1, + "rpm": 200, + "mag_size": 2, + "reload_time": 3, + "gunytpe": "SPECIAL" + }, + { + "id": 64, + "name": "Improved Vector", + "damage": 36, + "damage_multiplier": 1, + "rpm": 1050, + "mag_size": 30, + "reload_time": 2, + "gunytpe": "SMG" + }, + { + "id": 65, + "name": "T45", + "damage": 28, + "damage_multiplier": 1, + "rpm": 850, + "mag_size": 30, + "reload_time": 2, + "gunytpe": "SMG" + }, + { + "id": 66, + "name": "Improved T45", + "damage": 40, + "damage_multiplier": 1, + "rpm": 850, + "mag_size": 30, + "reload_time": 2, + "gunytpe": "SMG" + }, + { + "id": 67, + "name": "Freeze Ray", + "damage": 2, + "damage_multiplier": 1, + "rpm": 600, + "mag_size": 20, + "reload_time": 2, + "gunytpe": "SPECIAL" + }, + { + "id": 68, + "name": "Freeze Rifle", + "damage": 4, + "damage_multiplier": 1, + "rpm": 650, + "mag_size": 30, + "reload_time": 2.35, + "gunytpe": "SPECIAL" + }, + { + "id": 69, + "name": "R416", + "damage": 40, + "damage_multiplier": 1, + "rpm": 830, + "mag_size": 30, + "reload_time": 2.5, + "gunytpe": "RIFLE" + }, + { + "id": 70, + "name": "Improved R416", + "damage": 44, + "damage_multiplier": 1, + "rpm": 900, + "mag_size": 30, + "reload_time": 2.5, + "gunytpe": "RIFLE" + }, + { + "id": 71, + "name": "Flare Gun", + "damage": 125, + "damage_multiplier": 1, + "rpm": 480, + "mag_size": 1, + "reload_time": 1, + "gunytpe": "SPECIAL" + }, + { + "id": 72, + "name": "Improved BRH17", + "damage": 58, + "damage_multiplier": 1, + "rpm": 700, + "mag_size": 30, + "reload_time": 3.25, + "gunytpe": "RIFLE" + }, + { + "id": 73, + "name": "Deagle", + "damage": 70, + "damage_multiplier": 1, + "rpm": 400, + "mag_size": 18, + "reload_time": 2.1, + "gunytpe": "PISTOL" + }, + { + "id": 74, + "name": "Akimbo Deagles", + "damage": 70, + "damage_multiplier": 1, + "rpm": 400, + "mag_size": 36, + "reload_time": 3.5, + "gunytpe": "PISTOL" + }, + { + "id": 75, + "name": "CRL11", + "damage": 130, + "damage_multiplier": 1, + "rpm": 300, + "mag_size": 10, + "reload_time": 3, + "gunytpe": "RIFLE" + }, + { + "id": 76, + "name": "Scan Rifle", + "damage": 30, + "damage_multiplier": 1, + "rpm": 700, + "mag_size": 10, + "reload_time": 2, + "gunytpe": "RIFLE?" + }, + { + "id": 77, + "name": "PPSH41", + "damage": 28, + "damage_multiplier": 1, + "rpm": 1000, + "mag_size": 71, + "reload_time": 2.5, + "gunytpe": "UNKOWN" + }, + { + "id": 78, + "name": "AK74M", + "damage": 40, + "damage_multiplier": 1, + "rpm": 690, + "mag_size": 30, + "reload_time": 2.5, + "gunytpe": "RIFLE" + }, + { + "id": 79, + "name": "Akimbo Uzi", + "damage": 38, + "damage_multiplier": 1, + "rpm": 800, + "mag_size": 64, + "reload_time": 4, + "gunytpe": "SMG" + }, + { + "id": 80, + "name": "Akimbo MP5", + "damage": 42, + "damage_multiplier": 1, + "rpm": 800, + "mag_size": 60, + "reload_time": 4, + "gunytpe": "SMG" + }, + { + "id": 81, + "name": "Improved Thompson", + "damage": 38, + "damage_multiplier": 1, + "rpm": 800, + "mag_size": 50, + "reload_time": 2.5, + "gunytpe": "SMG" + }, + { + "id": 82, + "name": "RV9", + "damage": 100, + "damage_multiplier": 1, + "rpm": 400, + "mag_size": 12, + "reload_time": 2.6, + "gunytpe": "RIFLE" + }, + { + "id": 83, + "name": "SPAS-12", + "damage": 24, + "damage_multiplier": 8, + "rpm": 150, + "mag_size": 8, + "reload_time": 2.2, + "gunytpe": "SHOTGUN" + }, + { + "id": 84, + "name": "Akimbo Shotguns", + "damage": 51, + "damage_multiplier": 8, + "rpm": 200, + "mag_size": 1000000000000000000000000000000000000000000000000000000000000000, + "reload_time": 0, + "gunytpe": "SHOTGUN" + }, + { + "id": 85, + "name": "SK17", + "damage": 58, + "damage_multiplier": 1, + "rpm": 900, + "mag_size": 30, + "reload_time": 4, + "gunytpe": "RIFLE" + }, + { + "id": 86, + "name": "Type49", + "damage": 999, + "damage_multiplier": 1, + "rpm": 9999, + "mag_size": 999, + "reload_time": 1, + "gunytpe": "RIFLE" + }, + { + "id": 87, + "name": "M32", + "damage": 500, + "damage_multiplier": 1, + "rpm": 9999, + "mag_size": 6, + "reload_time": 12, + "gunytpe": "SPECIAL" + }, + { + "id": 88, + "name": "M32NL", + "damage": 1, + "damage_multiplier": 1, + "rpm": 9999, + "mag_size": 6, + "reload_time": 12, + "gunytpe": "SPECIAL" + } +] diff --git a/img/trlbg1.jpg b/img/trlbg1.jpg new file mode 100644 index 0000000..d858c66 Binary files /dev/null and b/img/trlbg1.jpg differ diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..87692d1 Binary files /dev/null and b/requirements.txt differ diff --git a/static/filterTable.js b/static/filterTable.js new file mode 100644 index 0000000..30d2615 --- /dev/null +++ b/static/filterTable.js @@ -0,0 +1,18 @@ +function filterTable() { + const input = document.getElementById('search'); + const filter = input.value.toLowerCase(); + const table = document.getElementById('gun-stats'); + const tr = table.getElementsByTagName('tr'); + + for (let i = 1; i < tr.length; i++) { + const td = tr[i].getElementsByTagName('td')[1]; + if (td) { + const txtValue = td.textContent || td.innerText; + if (txtValue.toLowerCase().indexOf(filter) > -1) { + tr[i].style.display = ''; + } else { + tr[i].style.display = 'none'; + } + } + } +} \ No newline at end of file diff --git a/static/populateTable.js b/static/populateTable.js new file mode 100644 index 0000000..02e7bac --- /dev/null +++ b/static/populateTable.js @@ -0,0 +1,27 @@ +document.addEventListener('DOMContentLoaded', () => { + fetch('/api/guns') + .then(response => response.json()) + .then(data => { + populateTable(data); + }); +}); + +function populateTable(data) { + const table = document.getElementById('gun-stats').getElementsByTagName('tbody')[0]; + table.innerHTML = ''; // Clear existing table data + data.forEach(gun => { + const row = table.insertRow(); + row.insertCell(0).innerText = gun.id; + row.insertCell(1).innerText = gun.name; + row.insertCell(2).innerText = gun.damage; + row.insertCell(3).innerText = gun.damage_multiplier; + row.insertCell(4).innerText = gun.rpm; + row.insertCell(5).innerText = gun.mag_size; + row.insertCell(6).innerText = gun.reload_time; + row.insertCell(7).innerText = gun.guntype; + row.insertCell(8).innerText = gun.rps.toFixed(2); + row.insertCell(9).innerText = gun.dps.toFixed(2); + row.insertCell(10).innerText = gun.dpm.toFixed(2); + row.insertCell(11).innerText = gun.avg_dps.toFixed(2); + }); +} \ No newline at end of file diff --git a/static/style.css b/static/style.css new file mode 100644 index 0000000..76ab0be --- /dev/null +++ b/static/style.css @@ -0,0 +1,61 @@ +.background_image { + background-image: url("img/trlbg1.jpg"); +} + +body { + font-family: Arial, sans-serif; + margin: 20px; +} + +h1 { + color: #333; +} + +table { + width: 100%; + border-collapse: collapse; + margin-bottom: 20px; +} + +table, th, td { + border: 1px solid #ddd; +} + +th, td { + padding: 8px; + text-align: left; +} + +th { + background-color: #f2f2f2; +} + +button { + padding: 5px 10px; + background-color: #4CAF50; + color: white; + border: none; + cursor: pointer; +} + +button:hover { + background-color: #45a049; +} + +input { + padding: 5px; + margin-bottom: 20px; +} + +#result { + margin-top: 20px; +} + +#search { + width: 33%; + padding: 6px; + border: 2px black solid; + margin-top: 8px; + margin-right: 16px; + font-size: 17px; +} \ No newline at end of file diff --git a/templates/calculator.html b/templates/calculator.html new file mode 100644 index 0000000..79aa938 --- /dev/null +++ b/templates/calculator.html @@ -0,0 +1,22 @@ + + + + + + Gun Stats + + +
+ +
+
+
+ +

+ +

+ +
+
+ + diff --git a/templates/index.html b/templates/index.html new file mode 100644 index 0000000..9bdfdc6 --- /dev/null +++ b/templates/index.html @@ -0,0 +1,45 @@ + + + + + + Gun Stats + + + +
+ +
+
+

Gun Stats

+
+ +
+ + + + + + + + + + + + + + + + + + + + +
IDNameDamageDamage multiplierRounds per minuteMagazine SizeReload timeGun typeRPSDPSDPMAvg DPS
+ + +
+ + \ No newline at end of file