/
node.php
131 lines (131 loc) · 4.31 KB
/
node.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
<?php
include 'core/config.php';
include 'core/core.php';
include 'core/game.php';
include 'locales/'.$_SESSION[$shortTitle.'User']['locale'].'/gl.php';
$db->query('start transaction');
if (isset($_SESSION[$shortTitle.'User']['id'], $_GET['action']))
{
foreach ($_POST as $key=>$value)
{
if ($key=='name') $value=preg_replace('/[^a-zA-Z0-9]/', '', $value);
if (in_array($key, array('x', 'y', 'faction'))) $_POST[$key]=misc::clean($value, 'numeric');
else $_POST[$key]=misc::clean($value);
}
foreach ($_GET as $key=>$value)
if ($key=='nodeId') $_GET[$key]=misc::clean($value, 'numeric');
else $_GET[$key]=misc::clean($value);
switch ($_GET['action'])
{
case 'get':
if (isset($_GET['nodeId']))
{
$node=new node();
$status=$node->get('id', $_GET['nodeId']);
if ($status=='done')
if ($node->data['user']==$_SESSION[$shortTitle.'User']['id'])
{
$node->checkAll(time());
$node->getLocation();
$node->getQueue('build');
$node->getQueue('combat');
$buildQueue=array();
for ($i=0; $i<$game['factions'][$node->data['faction']]['modules']; $i++) $buildQueue[$i]=0;
foreach ($node->queue['build'] as $item) $buildQueue[$item['slot']]=1;
}
else $message=$ui['accessDenied'];
else $message=$ui[$status];
}
else $message=$ui['insufficientData'];
break;
case 'set':
if (isset($_GET['nodeId']))
{
$node=new node();
$status=$node->get('id', $_GET['nodeId']);
if ($status=='done')
{
if ((isset($_POST['name'], $_POST['focus']))&&($_POST['name']))
if (in_array($_POST['focus'], array('hp', 'armor', 'damage')))
if ($node->data['user']==$_SESSION[$shortTitle.'User']['id'])
{
$oldName=$node->data['name'];
$oldFocus=$node->data['focus'];
$node->data['name']=$_POST['name'];
$node->data['focus']=$_POST['focus'];
$status=$node->set();
if ($status!='done')
{
$node->data['name']=$oldName;
$node->data['focus']=$oldFocus;
}
$message=$ui[$status];
}
else $message=$ui['accessDenied'];
else $message=$ui['invalidFocus'];
}
else $message=$ui[$status];
}
else $message=$ui['accessDenied'];
break;
case 'add':
if (isset($_POST['faction'], $_POST['name'], $_POST['x'], $_POST['y']))
if (($_POST['faction']!='')&&($_POST['name']!='')&&($_POST['x']!='')&&($_POST['y']!=''))
{
$node=new node();
$node->data['faction']=$_POST['faction'];
$node->data['user']=$_SESSION[$shortTitle.'User']['id'];
$node->data['name']=$_POST['name'];
$node->location['x']=$_POST['x'];
$node->location['y']=$_POST['y'];
$message=$ui[$node->add($_SESSION[$shortTitle.'User']['id'])];
}
else $message=$ui['insufficientData'];
break;
case 'remove':
if (isset($_GET['nodeId']))
{
$node=new node();
$status=$node->get('id', $_GET['nodeId']);
if ($status=='done')
{
if ((isset($_GET['go']))&&($_GET['go']))
if ($node->data['user']==$_SESSION[$shortTitle.'User']['id'])
{
$status=node::remove($_GET['nodeId']);
if ($status=='done') header('location: node.php?action=list');
else $message=$ui[$status];
}
else $message=$ui['accessDenied'];
}
else $message=$ui[$status];
}
else $message=$ui['insufficientData'];
break;
case 'move':
if (isset($_GET['nodeId']))
{
$node=new node();
$status=$node->get('id', $_GET['nodeId']);
if ($status=='done')
{
if (isset($_POST['x'], $_POST['y']))
if ($node->data['user']==$_SESSION[$shortTitle.'User']['id'])
if ($game['factions'][$node->data['faction']]['costs']['move'][0]['resource']>-1)
$message=$ui[$node->move($_POST['x'], $_POST['y'])];
else $message=$ui['nodeMoveDisabled'];
else $message=$ui['accessDenied'];
}
else $message=$ui[$status];
}
else $message=$ui['insufficientData'];
break;
case 'list':
$nodes=node::getList($_SESSION[$shortTitle.'User']['id']);
break;
}
}
else $message=$ui['accessDenied'];
if ((isset($status))&&($status=='error')) $db->query('rollback');
else $db->query('commit');
include 'templates/'.$_SESSION[$shortTitle.'User']['template'].'/node.php'; ?>