Passed
Push — master ( 4879bd...03e56f )
by Anthony
02:23
created

Bataille::getMissionsAleatoire()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 7
Code Lines 4

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
c 0
b 0
f 0
dl 0
loc 7
rs 9.4285
cc 2
eloc 4
nc 2
nop 0
1
<?php
2
	namespace modules\bataille\app\controller;
3
	use core\App;
4
	use core\database\Database;
5
6
	class Bataille {
7
		private static $ressource;
8
		private static $base;
9
		private static $batiment;
10
		private static $points;
11
		private static $unite;
12
		private static $centre_recherche;
13
		private static $missions_aleatoire;
14
		private static $map;
15
		private static $database;
16
		private static $nation;
17
18
		private static $id_base;
19
20
		public static $values = [];
21
22
		
23
		//-------------------------- BUILDER ----------------------------------------------------------------------------//
24
		public function __construct() {
25
26
		}
27
		//-------------------------- END BUILDER ----------------------------------------------------------------------------//
28
		
29
		
30
		
31
		//-------------------------- GETTER ----------------------------------------------------------------------------//
32
		/**
33
		 * @return array
34
		 * get array of all values wich will be used in the page
35
		 */
36
		public static function getValues() {
37
			return ["bataille" => self::$values];
38
		}
39
40
		//initilisation of all classes of battle
41
		//initialisation of Ressource class
42
		public static function getRessource() {
43
			if (self::$ressource == null) {
44
				self::$ressource = new Ressource();
45
			}
46
47
			return self::$ressource;
48
		}
49
50
		//initialisation of Base class
51
		public static function getBase() {
52
			if (self::$base == null) {
53
				self::$base = new Base();
54
			}
55
56
			return self::$base;
57
		}
58
59
		//initialisation of Batiment class
60
		public static function getBatiment() {
61
			if (self::$batiment == null) {
62
				self::$batiment = new Batiment();
63
			}
64
65
			return self::$batiment;
66
		}
67
68
		//initialisation of Points class
69
		public static function getPoints() {
70
			if (self::$points == null) {
71
				self::$points = new Points();
72
			}
73
74
			return self::$points;
75
		}
76
77
		//initialisation of Map class
78
		public static function getMap() {
79
			if (self::$map == null) {
80
				self::$map = new Map();
81
			}
82
83
			return self::$map;
84
		}
85
86
		//initialisation of Batiment class
87
		public static function getUnite() {
88
			if (self::$unite == null) {
89
				self::$unite = new Unite();
90
			}
91
92
			return self::$unite;
93
		}
94
95
		//initialisation of CentreRecherche class
96
		public static function getCentreRecherche() {
97
			if (self::$centre_recherche == null) {
98
				self::$centre_recherche = new CentreRecherche();
99
			}
100
101
			return self::$centre_recherche;
102
		}
103
		
104
		//initialisation of MissionsAleatoire class
105
		public static function getMissionsAleatoire() {
106
			if (self::$missions_aleatoire == null) {
107
				self::$missions_aleatoire = new MissionsAleatoire();
108
			}
109
			
110
			return self::$missions_aleatoire;
111
		}
112
113
		//initialisation of Database Core connexion
114
		public static function getDb() {
115
			require_once("config.config.php");
116
			
117
			if (self::$database == null) {
118
				self::$database = new Database($type_co, $dbname, $dbuser, $dbpass, $dbhost);
0 ignored issues
show
Bug introduced by
The variable $type_co does not exist. Did you forget to declare it?

This check marks access to variables or properties that have not been declared yet. While PHP has no explicit notion of declaring a variable, accessing it before a value is assigned to it is most likely a bug.

Loading history...
Bug introduced by
The variable $dbname does not exist. Did you forget to declare it?

This check marks access to variables or properties that have not been declared yet. While PHP has no explicit notion of declaring a variable, accessing it before a value is assigned to it is most likely a bug.

Loading history...
Bug introduced by
The variable $dbuser does not exist. Did you forget to declare it?

This check marks access to variables or properties that have not been declared yet. While PHP has no explicit notion of declaring a variable, accessing it before a value is assigned to it is most likely a bug.

Loading history...
Bug introduced by
The variable $dbpass does not exist. Did you forget to declare it?

This check marks access to variables or properties that have not been declared yet. While PHP has no explicit notion of declaring a variable, accessing it before a value is assigned to it is most likely a bug.

Loading history...
Bug introduced by
The variable $dbhost does not exist. Did you forget to declare it?

This check marks access to variables or properties that have not been declared yet. While PHP has no explicit notion of declaring a variable, accessing it before a value is assigned to it is most likely a bug.

Loading history...
119
			}
120
			return self::$database;
121
		}
122
123
		/**
124
		 * @return mixe
125
		 * récupère l'ID_identité du joueur
126
		 */
127
		public static function getIdIdentite() {
0 ignored issues
show
Coding Style introduced by
getIdIdentite uses the super-global variable $_SESSION which is generally not recommended.

Instead of super-globals, we recommend to explicitly inject the dependencies of your class. This makes your code less dependent on global state and it becomes generally more testable:

// Bad
class Router
{
    public function generate($path)
    {
        return $_SERVER['HOST'].$path;
    }
}

// Better
class Router
{
    private $host;

    public function __construct($host)
    {
        $this->host = $host;
    }

    public function generate($path)
    {
        return $this->host.$path;
    }
}

class Controller
{
    public function myAction(Request $request)
    {
        // Instead of
        $page = isset($_GET['page']) ? intval($_GET['page']) : 1;

        // Better (assuming you use the Symfony2 request)
        $page = $request->query->get('page', 1);
    }
}
Loading history...
128
			return $_SESSION['idlogin'.CLEF_SITE];
129
		}
130
131
		/**
132
		 * @return mixed
133
		 * renvoi l'id_base du joueur
134
		 */
135
		public static function getIdBase() {
0 ignored issues
show
Coding Style introduced by
getIdBase uses the super-global variable $_SESSION which is generally not recommended.

Instead of super-globals, we recommend to explicitly inject the dependencies of your class. This makes your code less dependent on global state and it becomes generally more testable:

// Bad
class Router
{
    public function generate($path)
    {
        return $_SERVER['HOST'].$path;
    }
}

// Better
class Router
{
    private $host;

    public function __construct($host)
    {
        $this->host = $host;
    }

    public function generate($path)
    {
        return $this->host.$path;
    }
}

class Controller
{
    public function myAction(Request $request)
    {
        // Instead of
        $page = isset($_GET['page']) ? intval($_GET['page']) : 1;

        // Better (assuming you use the Symfony2 request)
        $page = $request->query->get('page', 1);
    }
}
Loading history...
136
			if (self::$id_base == null) {
137
				self::$id_base = $_SESSION['id_base'];
138
139
				return self::$id_base;
140
			}
141
142
			return self::$id_base;
143
		}
144
145
		/**
146
		 * @return mixed
147
		 * renvoi le premier ID_base du joueur (première base et base princ du joueur)
148
		 */
149
		public static function getFirstBase() {
150
			$dbc = App::getDb();
151
152
			$query = $dbc->select("ID_base")->from("_bataille_base")
153
				->where("ID_identite", "=", self::getIdIdentite())
154
				->orderBy("ID_base")
155
				->limit(0, 1)
156
				->get();
157
158
			if ((is_array($query)) && (count($query) == 1)) {
159
				foreach ($query as $obj) return $obj->ID_base;
160
			}
161
		}
162
163
		/**
164
		 * @param $id_base
165
		 * @return array
166
		 * fonction qui renvoi les posisitons en x et y d'une base
167
		 */
168
		private static function getPosistionBase($id_base) {
169
			$dbc = App::getDb();
170
			
171
			$posx = 0;
172
			$posy = 0;
173
174
			$query = $dbc->select("posx")
175
				->select("posy")
176
				->from("_bataille_base")
177
				->where("ID_base", "=", $id_base)
178
				->get();
179
180
			foreach ($query as $obj) {
181
				$posx = $obj->posx;
182
				$posy = $obj->posy;
183
			}
184
185
			return ["posx" => $posx, "posy" => $posy];
186
		}
187
188
		/**
189
		 * @return int
190
		 * return now timestamp
191
		 */
192
		public static function getToday() {
193
			$today = new \DateTime();
194
			return $today->getTimestamp();
195
		}
196
197
		/**
198
		 * @param null $id_base -> sert si definit a recuperer l'id identite de la abse en question
199
		 * @return string|null
200
		 * recupere la date de la derniere connexion
201
		 */
202
		public static function getLastConnexion($id_base = null) {
203
			$dbc = App::getDb();
204
205
			if ($id_base === null) {
206
				$query = $dbc->select()->from("_bataille_last_connexion")->where("ID_identite", "=", self::getIdIdentite())->get();
207
			}
208
			else {
209
				$query = $dbc->select("_bataille_last_connexion.last_connexion")->from("_bataille_base")
210
					->from("_bataille_last_connexion")
211
					->from("identite")
212
					->where("_bataille_base.ID_base", "=", $id_base, "AND")
213
					->where("_bataille_base.ID_identite", "=", "identite.ID_identite", "AND", true)
214
					->where("identite.ID_identite", "=", "_bataille_last_connexion.ID_identite", "", true)
215
					->get();
216
			}
217
218
			if ((is_array($query)) && (count($query) > 0)) {
219
				foreach ($query as $obj) {
220
					return $obj->last_connexion;
221
				}
222
			}
223
		}
224
225
		/**
226
		 * @param string $nom_ressource
227
		 * @param $ressource
228
		 * @return array
229
		 * fonction qui permet de renvyer la couleur rouge si pas assez de ressource pour construire le batiment
230
		 * ou pour creer une unité...
231
		 */
232
		public static function getTestAssezRessourceBase($nom_ressource, $ressource) {
233
			$f = "get".ucfirst($nom_ressource);
234
235
			if ($ressource > Bataille::getRessource()->$f()) {
236
				return [
237
					"ressource" => $ressource,
238
					"class" => "rouge"
239
				];
240
			}
241
242
			return [
243
				"ressource" => $ressource,
244
				"class" => ""
245
			];
246
		}
247
		
248
		/**
249
		 * @param $id_base
250
		 * @param integer $vitesse = vitesse de l'unité en question
251
		 * @return number
252
		 * fonction qui renvoi le temps de trajet entre la base du joueur et une autre base en secondes
253
		 */
254
		public static function getDureeTrajet($id_base, $vitesse = 1) {
0 ignored issues
show
Coding Style introduced by
getDureeTrajet uses the super-global variable $_SESSION which is generally not recommended.

Instead of super-globals, we recommend to explicitly inject the dependencies of your class. This makes your code less dependent on global state and it becomes generally more testable:

// Bad
class Router
{
    public function generate($path)
    {
        return $_SERVER['HOST'].$path;
    }
}

// Better
class Router
{
    private $host;

    public function __construct($host)
    {
        $this->host = $host;
    }

    public function generate($path)
    {
        return $this->host.$path;
    }
}

class Controller
{
    public function myAction(Request $request)
    {
        // Instead of
        $page = isset($_GET['page']) ? intval($_GET['page']) : 1;

        // Better (assuming you use the Symfony2 request)
        $page = $request->query->get('page', 1);
    }
}
Loading history...
255
			//récupération de la posisiotn de la base du joueur + la base sur laquelle on a cliqué
256
			$base_joueur = self::getPosistionBase($_SESSION['id_base']);
257
			$base_autre = self::getPosistionBase($id_base);
258
			
259
			//calcul des distances séparant les deux bases en x et y
260
			//cette dstance sera multipliée par 15 sur x et y puis ajoutée pour avoir le temps du trajte en seconde
261
			$calc_x = abs($base_joueur['posx']-$base_autre['posx']);
262
			$calc_y = abs($base_joueur['posy']-$base_autre['posy']);
263
			
264
			$temps_voyage = (($calc_x*70)+($calc_y*70))/$vitesse;
265
			
266
			return $temps_voyage;
267
		}
268
269
		/**
270
		 * @param null $id_identite
271
		 * get nation of a player
272
		 */
273
		public static function getNation($id_identite = null) {
274
			$dbc = App::getDb();
275
276
			if (($id_identite === null) && (self::$nation == null)) {
277
				$id_identite = Bataille::getIdIdentite();
278
			}
279
280
			$query = $dbc->select("nation")
281
				->from("identite")
282
				->from("_bataille_nation")
283
				->where("identite.ID_identite", "=", $id_identite, "AND")
284
				->where("identite.ID_identite", "=", "_bataille_nation.ID_identite", "", true)
285
				->get();
286
287
			if ((is_array($query)) && (count($query) > 0)) {
288
				foreach ($query as $obj) {
289
					self::setValues(["nation" => $obj->nation]);
290
				}
291
			}
292
		}
293
294
		/**
295
		 * @param $posx
296
		 * @param $posy
297
		 * @return int
298
		 * fonction qui renvoi un ID_base en fonction de sa posx et posy et 0 si base inexistante
299
		 */
300
		public static function getBaseExistPosition($posx, $posy) {
301
			$dbc = App::getDb();
302
303
			$query = $dbc->select("ID_base")->from("_bataille_base")
304
				->where("posx", "=", $posx, "AND")
305
				->where("posy", "=", $posy)
306
				->get();
307
308
			if ((is_array($query)) && (count($query) == 1)) {
309
				foreach ($query as $obj) return $obj->ID_base;
310
			}
311
312
			return 0;
313
		}
314
315
		/**
316
		 * @return integer
317
		 * fonction qui permet de récupérer le nombre de joueurs sur le serveur
318
		 */
319
		public static function getNombreJoueur() {
320
			$dbc = App::getDb();
321
322
			$query = $dbc->select("nombre_joueur")->from("_bataille_nombre_joueur")->where("ID_nombre_joueur", "=", 1)->get();
323
324
			if ((is_array($query)) && (count($query) == 1)) {
325
				foreach ($query as $obj) return $obj->nombre_joueur;
326
			}
327
328
			return 0;
329
		}
330
331
		/**
332
		 * @param string $param
333
		 * @return mixed
334
		 * fonction qui sert à récupérer un parametre spécifique pour un batiment
335
		 * par exemple la vitesse d'un marchand ou  le nombred'emplacment de la base
336
		 */
337
		public static function getParam($param) {
338
			$dbc = self::getDb();
339
340
			$query = $dbc->select($param)->from("configuration")->where("ID_configuration", "=", 1)->get();
341
342
			if ((is_array($query)) && (count($query) == 1)) {
343
				foreach ($query as $obj) return $obj->$param;
344
			}
345
		}
346
		//-------------------------- END GETTER ----------------------------------------------------------------------------//
347
		
348
		
349
		
350
		//-------------------------- SETTER ----------------------------------------------------------------------------//
351
		/**
352
		 * set la date de derniere connexion a now
353
		 */
354
		public static function setLastConnexion($id_base = null) {
355
			$dbc = App::getDb();
356
			
357
			$id_identite = self::getIdIdentite();
358
			
359
			if ($id_base !== null) {
360
				$query = $dbc->select("ID_identite")->from("_bataille_base")->where("ID_base", "=", $id_base)->get();
361
362
				foreach ($query as $obj) $id_identite = $obj->ID_identite;
363
			}
364
365
			$dbc->update("last_connexion", date("Y-m-d H:i:s"))
366
				->from("_bataille_last_connexion")
367
				->where("ID_identite", "=", $id_identite)
368
				->set();
369
		}
370
371
		/**
372
		 * @param $values
373
		 * can set values while keep older infos
374
		 */
375
		public static function setValues($values) {
376
			Bataille::$values = array_merge(Bataille::$values, $values);
377
		}
378
		//-------------------------- END SETTER ----------------------------------------------------------------------------//
379
	}