Added PHP

This commit is contained in:
MasterGordon 2018-04-13 00:18:05 +02:00
parent 62f982a2b0
commit 0c43dc4efd
13 changed files with 412 additions and 31 deletions

95
css/login.css Normal file
View File

@ -0,0 +1,95 @@
body {
background-image: url("../images/wool.jpg");
}
#login {
position: fixed;
width: 520;
background-color: floralwhite;
font-family: 'Electrolize', sans-serif;
padding-top: 10px;
padding-bottom: 10px;
border-color: #35170B;
border-width: 5;
border-style: solid;
}
#register {
position: fixed;
width: 520;
background-color: floralwhite;
font-family: 'Electrolize', sans-serif;
padding-top: 10px;
padding-bottom: 10px;
border-color: #35170B;
border-width: 5;
border-style: solid;
}
#login_button {
font-family: 'Electrolize', sans-serif;
background-color: #35170B;
color: white;
cursor: pointer;
}
#register_button {
font-family: 'Electrolize', sans-serif;
background-color: #35170B;
color: white;
cursor: pointer;
}
p {
display: block;
text-align: center;
font-size: 1.5em;
color: #35170B;
}
.change {
margin-top: 5px;
display: block;
text-align: center;
font-size: 1em;
color: #35170B;
cursor: pointer;
}
.change:hover {
display: block;
text-align: center;
font-size: 1em;
color: #FF6E35;
}
.form {
width: 400;
margin-left: 60;
font-size: 1.5em;
text-align: center;
border-color: #35170B;
border-width: 1;
border-style: solid;
color: #35170B;
}
.logo {
width: 500;
margin-left: 10;
}
body {
-webkit-touch-callout: none;
/* iOS Safari */
-webkit-user-select: none;
/* Safari */
-khtml-user-select: none;
/* Konqueror HTML */
-moz-user-select: none;
/* Firefox */
-ms-user-select: none;
/* Internet Explorer/Edge */
user-select: none;
/* Non-prefixed version, currently supported by Chrome and Opera */
}

View File

@ -39,6 +39,14 @@ body {
padding: 4; padding: 4;
} }
#playerinfo {
position: fixed;
width: 100%;
text-align: right;
top: 0;
color: floralwhite;
}
#selectItem { #selectItem {
position: fixed; position: fixed;
border: 1px, solid, black; border: 1px, solid, black;

View File

@ -1,7 +1,7 @@
<html> <html>
<head> <head>
<title>Factory</title> <title>Factory Master</title>
<!-- Google Font --> <!-- Google Font -->
<link href="https://fonts.googleapis.com/css?family=Electrolize" rel="stylesheet"> <link href="https://fonts.googleapis.com/css?family=Electrolize" rel="stylesheet">
<link rel="stylesheet" type="text/css" href="css/cssreset.css"> <link rel="stylesheet" type="text/css" href="css/cssreset.css">
@ -53,7 +53,7 @@
??? Dollar ??? Dollar
</span> </span>
<span style="position: fixed;color: white" id="speed"></span> <span style="position: fixed;color: white" id="speed"></span>
<div style="margin-left: 250px"><textarea id="textarea"></textarea><button id="save">save</button><button id="load">load</button></div> <div id="playerinfo"><span id="lastsave">Last Save 10Min ago</span><br><button id="forcesave">Force Save</button><button id="logout">Logout</button></div>
</body> </body>
</html> </html>

93
index.html Normal file
View File

@ -0,0 +1,93 @@
<html>
<head>
<title>Factory Master</title>
<!-- Google Font -->
<link href="https://fonts.googleapis.com/css?family=Electrolize" rel="stylesheet">
<link rel="stylesheet" type="text/css" href="css/cssreset.css">
<link rel="stylesheet" type="text/css" href="css/login.css">
<link rel="stylesheet" href="jquery-ui/jquery-ui.min.css">
<!-- Libs -->
<script src="js/libs/jquery.js"></script>
<script src="js/libs/copyCSS.js"></script>
<script src="js/libs/js.cookie.js"></script>
<script src="jquery-ui/jquery-ui.min.js"></script>
<!-- Own scripts-->
</head>
<body>
<div id="login">
<img class="logo" draggable="false" src="images/logo.svg"><br><br>
<p>Username:</p><input class="form" id="login_username"></input><br><br>
<p>Password:</p><input class="form" id="login_password" type="password"></input><br><br>
<button class="form" id="login_button">Login</button>
<p class="change">Register?</p>
</div>
<div id="register">
<img class="logo" draggable="false" src="images/logo.svg"><br><br>
<p>Username:</p><input class="form" id="register_username"></input><br><br>
<p>Password:</p><input class="form" id="register_password1" type="password"></input><br><br>
<p>Repeat Password:</p><input class="form" id="register_password2" type="password"></input><br><br>
<button class="form" id="register_button">Register</button>
<p class="change">Login?</p>
</div>
<script>
$(window).resize(function() {
style();
})
$(document).ready(function() {
style();
$("#register").hide()
})
function style() {
var loginMarginTop = (window.innerHeight - $('#login').outerHeight()) / 2
var loginMarginLeft = (window.innerWidth - $('#login').outerWidth()) / 2
$('#login').css('margin-top', loginMarginTop)
$('#login').css('margin-left', loginMarginLeft)
var registerMarginTop = (window.innerHeight - $('#register').outerHeight()) / 2
var registerMarginLeft = (window.innerWidth - $('#register').outerWidth()) / 2
$('#register').css('margin-top', registerMarginTop)
$('#register').css('margin-left', registerMarginLeft)
}
$("#login_button").click(function() {
$.get("php/login.php?username=" + $("#login_username").val() + "&password=" + $("#login_password").val(), function(data) {
if (JSON.parse(data).status == "error") {
$("#login").css("background-color", "red")
} else {
$("#login").css("background-color", "green")
window.location.replace("game.html")
}
})
})
$("#register_button").click(function() {
$("#register_username").css("background-color", "white")
$("#register_password1").css("background-color", "white")
$("#register_password2").css("background-color", "white")
$.get("php/register.php?username=" + $("#register_username").val() + "&password1=" + $("#register_password1").val() + "&password2=" + $("#register_password2").val(), function(data) {
if (JSON.parse(data).status == "error") {
$("#register").css("background-color", "red")
} else if (JSON.parse(data).status == "succes") {
$("#login").css("background-color", "green")
window.location.replace("game.html")
} else {
$("#register_" + JSON.parse(data).status).css("background-color", "red")
}
})
})
$(".change").click(function() {
$("#login").toggle()
$("#register").toggle()
})
$(document).keypress(function(e){
if(e.which == 13){
$("button:visible").click()
}
})
</script>
</body>
</html>

View File

@ -5,6 +5,7 @@ var money = 100
var items = [] var items = []
var time = 0 var time = 0
var gametime = 0
var timestep = 1000 / 48 var timestep = 1000 / 48
var delta = 0 var delta = 0
var lastFrameTimeMs = 0 var lastFrameTimeMs = 0
@ -22,14 +23,21 @@ var mode = "none"
var renderItems = true var renderItems = true
var playername = "Player"
var lastsave = 0
$(document).ready(function() { $(document).ready(function() {
$("#save").click(function() { $("#forcesave").click(function() {
save() save()
$("#textarea").val(JSON.stringify(game))
}) })
$("#load").click(function() { $("#logout").click(function() {
game = JSON.parse($("#textarea").val()) $.get("php/logout.php", function(data) {
loadGameData() window.location.replace("index.html")
})
})
$.get("php/playerdata.php", function(data) {
if (JSON.parse(data).status == "nologin")
window.location.replace("index.html")
}) })
loadGameData() loadGameData()
loadItems() loadItems()
@ -47,6 +55,7 @@ $(window).on("beforeunload", function() {
function save() { function save() {
game = {} game = {}
game.money = money game.money = money
game.gametime = gametime
game.inventory = [] game.inventory = []
for (var i = 0; i < inventory.items.length; i++) { for (var i = 0; i < inventory.items.length; i++) {
game.inventory.push(inventory.items[i].id) game.inventory.push(inventory.items[i].id)
@ -81,40 +90,64 @@ function save() {
} }
} }
Cookies.set("game", JSON.stringify(game)) Cookies.set("game", JSON.stringify(game))
$.ajax({
url: 'php/savegame.php',
type: 'POST',
data: {
gamedata: JSON.stringify(game),
"gametime": gametime
},
success: function(result) {
console.log(result)
if (JSON.parse(result).status == "succes") {
lastsave = new Date().getTime()
}
}
});
} }
function loadGameData() { function loadGameData() {
lastsave = new Date().getTime()
//Keine Save Vorhanden //Keine Save Vorhanden
factorys.push(new Factory()) factorys.push(new Factory())
inventory = new Inventory() inventory = new Inventory()
//game = Cookies.get("game") //game = Cookies.get("game")
if (game != 0) { $.get("php/playerdata.php", function(data) {
//game = JSON.parse(game) if (JSON.parse(data).gametime != undefined) {
money = game.money game = JSON.parse(data)
inventory = new Inventory() } else {
factorys = [] game = 0
for (var i = 0; i < game.inventory.length; i++) {
inventory.addItem(new Item(game.inventory[i]))
} }
for (var i = 0; i < game.factorys.length; i++) { if (game != 0) {
factorys.push(new Factory) //game = JSON.parse(game)
for (var x = 0; x < 25; x++) { console.log("Loading Game")
for (var y = 0; y < 12; y++) { money = game.money
if (game.factorys[i].tiles[x][y] != 0) { gametime = game.gametime
var keys = Object.keys(game.factorys[i].tiles[x][y]) inventory = new Inventory()
factorys[i].tiles[x][y] = new tileClasses[game.factorys[i].tiles[x][y].i](game.factorys[i].tiles[x][y].x, game.factorys[i].tiles[x][y].y) factorys = []
factorys[i].tiles[x][y].factory = factorys[i] for (var i = 0; i < game.inventory.length; i++) {
for (var key = 0; key < keys.length; key++) { inventory.addItem(new Item(game.inventory[i]))
if (keys[key] == "d") }
factorys[i].tiles[x][y].direction = d[game.factorys[i].tiles[x][y]["d"]] for (var i = 0; i < game.factorys.length; i++) {
else factorys.push(new Factory)
factorys[i].tiles[x][y][keys[key]] = game.factorys[i].tiles[x][y][keys[key]] for (var x = 0; x < 25; x++) {
for (var y = 0; y < 12; y++) {
if (game.factorys[i].tiles[x][y] != 0) {
var keys = Object.keys(game.factorys[i].tiles[x][y])
factorys[i].tiles[x][y] = new tileClasses[game.factorys[i].tiles[x][y].i](game.factorys[i].tiles[x][y].x, game.factorys[i].tiles[x][y].y)
factorys[i].tiles[x][y].factory = factorys[i]
for (var key = 0; key < keys.length; key++) {
if (keys[key] == "d")
factorys[i].tiles[x][y].direction = d[game.factorys[i].tiles[x][y]["d"]]
else
factorys[i].tiles[x][y][keys[key]] = game.factorys[i].tiles[x][y][keys[key]]
}
} }
} }
} }
} }
} }
} });
} }
function loadItems() { function loadItems() {
@ -177,6 +210,7 @@ var tick = []
function gametick(timestep) { function gametick(timestep) {
//time gibt an in den Wievielten von 40 Ticks man sich befindet //time gibt an in den Wievielten von 40 Ticks man sich befindet
time++ time++
gametime++
time = time % 48 time = time % 48
//Wird 40 mal in einer Sekunde aufgerufen //Wird 40 mal in einer Sekunde aufgerufen
for (var i = 0; i < factorys.length; i++) { for (var i = 0; i < factorys.length; i++) {
@ -189,6 +223,9 @@ function gametick(timestep) {
tick = tick.splice(1) tick = tick.splice(1)
$("#speed").text("Game Speed: " + ((tick[47] - tick[0] + 30) / 10) + "%") $("#speed").text("Game Speed: " + ((tick[47] - tick[0] + 30) / 10) + "%")
} }
if (Math.round((new Date().getTime() - lastsave) / 60000) > 5 && lastsave != 0) {
save()
}
} }
function render() { function render() {
@ -293,6 +330,7 @@ function render() {
if (mode == "showmore") { if (mode == "showmore") {
drawBigInventory(inventory) drawBigInventory(inventory)
} }
$('#lastsave').text("last save " + Math.round((new Date().getTime() - lastsave) / 60000) + "min ago")
} }
function getItemFormId(id) { function getItemFormId(id) {

View File

@ -253,7 +253,7 @@ class Quarry extends Tile {
this.hasNoInventory = true this.hasNoInventory = true
this.cost = [{ this.cost = [{
"id": 0, "id": 0,
"count": 10000 "count": 5000
}, { }, {
"id": 2, "id": 2,
"count": 50 "count": 50

View File

@ -12,7 +12,11 @@ $(document).ready(function() {
}) })
function style() { function style() {
var screenMarginTop = window.innerHeight - 912 var top = 0
if (window.innerHeight < 910) {
top = 43
}
var screenMarginTop = window.innerHeight - 912 + top
var screenMarginLeft = (window.innerWidth - 1200) / 2 var screenMarginLeft = (window.innerWidth - 1200) / 2
var itemCountMarginTop = screenMarginTop + 624 var itemCountMarginTop = screenMarginTop + 624
var infoMarginLeft = screenMarginLeft + 768 var infoMarginLeft = screenMarginLeft + 768

View File

@ -47,6 +47,8 @@ function infoDrawRotatedImage(image, x, y, angle) {
} }
function formatCount(c) { function formatCount(c) {
if (c == 0)
return 0
for (var pow = 0; pow < lang.numbers.length; pow++) { for (var pow = 0; pow < lang.numbers.length; pow++) {
if (c / Math.pow(10, pow * 3) >= 1 && c / Math.pow(10, pow * 3) < 1000) { if (c / Math.pow(10, pow * 3) >= 1 && c / Math.pow(10, pow * 3) < 1000) {
return round(c / Math.pow(10, pow * 3), 3) + lang.numbers[pow] return round(c / Math.pow(10, pow * 3), 3) + lang.numbers[pow]

View File

@ -1,7 +1,36 @@
<?php <?php
error_reporting(E_ERROR | E_WARNING | E_PARSE);
include "mysqldata.php" include "mysqldata.php"
?> ?>
<?php <?php
session_start();
$username = $_GET['username'];
$passwort = $_GET['password'];
if( isset($_GET['username']) && isset($_GET['password']) ){
$conn = new mysqli($GLOBALS["sqlservername"], $GLOBALS["sqlusername"], $GLOBALS["sqlpassword"], $GLOBALS["sqldatabase"]);
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$sql = "SELECT password FROM users WHERE username='".$_GET['username']."'";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
// output data of each row
while($row = $result->fetch_assoc()) {
if(password_verify($_GET['password'],$row["password"])){
$_SESSION["login"] = "true";
$_SESSION["username"] = $_GET['username'];
echo '{"status": "succes"}';
}else{
//Wrong PW
echo '{"status": "error"}';
}
}
} else {
//Wrong Username
echo '{"status": "error"}';
}
} else {
echo '{"status": "error"}';
}
?> ?>

5
php/logout.php Normal file
View File

@ -0,0 +1,5 @@
<?php
session_start();
session_unset();
session_destroy();
?>

24
php/playerdata.php Normal file
View File

@ -0,0 +1,24 @@
<?php
//error_reporting(E_ERROR | E_WARNING | E_PARSE);
session_start();
include "mysqldata.php";
if(isset($_SESSION["login"])){
if($_SESSION["login"]=="true"){
$conn = new mysqli($GLOBALS["sqlservername"], $GLOBALS["sqlusername"], $GLOBALS["sqlpassword"], $GLOBALS["sqldatabase"]);
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$sql = "SELECT gamedata FROM users WHERE username='".$_SESSION["username"]."'";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
// output data of each row
while($row = $result->fetch_assoc()) {
echo $row["gamedata"];
}
}
}
}else{
echo '{"status": "nologin"}';
}
?>

48
php/register.php Normal file
View File

@ -0,0 +1,48 @@
<?php
session_start();
error_reporting(E_ERROR | E_WARNING | E_PARSE);
include "mysqldata.php";
$pdo = new PDO('mysql:host=' . $GLOBALS["sqlservername"] . ';dbname=' . $GLOBALS["sqldatabase"], $GLOBALS["sqlusername"], $GLOBALS["sqlpassword"]);
$error = false;
$username = $_GET['username'];
$passwort = $_GET['password1'];
$passwort2 = $_GET['password2'];
if(strlen($username) == 0 || strlen($username) > 15) {
echo '{"status":"username"}';
$error = true;
}
if(strlen($passwort) == 0 && !$error) {
echo '{"status":"password1"}';
$error = true;
}
if($passwort != $passwort2 && !$error) {
echo '{"status":"password2"}';
$error = true;
}
if(!$error) {
$statement = $pdo->prepare("SELECT * FROM users WHERE username = :username");
$result = $statement->execute(array('username' => $username));
$user = $statement->fetch();
if($user !== false) {
echo '{"status":"username"}';
$error = true;
}
}
if(!$error) {
$passwort_hash = password_hash($passwort, PASSWORD_DEFAULT);
$statement = $pdo->prepare("INSERT INTO users (username, password) VALUES (:username, :password)");
$result = $statement->execute(array('username' => $username, 'password' => $passwort_hash));
if($result) {
$_SESSION["login"] = "true";
$_SESSION["username"] = $_GET['username'];
echo '{"status":"succes"}';
} else {
echo '{"status":"error"}';
}
}
?>

35
php/savegame.php Normal file
View File

@ -0,0 +1,35 @@
<?php
error_reporting(E_ERROR | E_WARNING | E_PARSE);
session_start();
include "mysqldata.php";
$gamedata = $_POST["gamedata"];
$gametime = $_POST["gametime"];
if(isset($_SESSION["login"])){
if($_SESSION["login"]=="true"){
$conn = new mysqli($GLOBALS["sqlservername"], $GLOBALS["sqlusername"], $GLOBALS["sqlpassword"], $GLOBALS["sqldatabase"]);
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$sql = "SELECT gametime FROM users WHERE username='".$_SESSION["username"]."'";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
// output data of each row
while($row = $result->fetch_assoc()) {
if( intval($row["gametime"]) < intval($gametime) ){
$sql = "UPDATE users SET gamedata = '". $gamedata ."' WHERE username = '".$_SESSION["username"]."'";
$result = $conn->query($sql);
$sql = "UPDATE users SET gametime = '". $gametime ."' WHERE username = '".$_SESSION["username"]."'";
$result = $conn->query($sql);
echo '{"status": "succes"}';
die();
} else {
echo '{"status": "old"}';
}
}
} else {
//Wrong Username
echo '{"status": "error"}';
}
}
}
?>