Passed
Push — master ( 7b3593...78d9ba )
by Anthony
02:43
created

Map::getNombreJoueur()   A

Complexity

Conditions 4
Paths 3

Size

Total Lines 11
Code Lines 6

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
c 0
b 0
f 0
dl 0
loc 11
rs 9.2
cc 4
eloc 6
nc 3
nop 0
1
<?php
2
3
	namespace modules\bataille\app\controller;
4
5
	use core\App;
6
	use core\functions\DateHeure;
7
8
	class Map {
9
		private $largeur;
10
		private $hauteur;
11
12
13
		//-------------------------- BUILDER ----------------------------------------------------------------------------//
14
		/**
15
		 * Map constructor.
16
		 * @param null $id_base
17
		 * @param null $install_base
18
		 * si id_base == null et install_base != null on renvoi true car on est sur l'install d'une base
19
		 * donc inutile de tout cahrger la map
20
		 */
21
		public function __construct($id_base = null, $install_base = null) {
22
			$dbc = App::getDb();
23
			$temps_trajet = "";
24
			$map = [];
25
26
			if ($install_base != null) {
27
				return true;
0 ignored issues
show
Bug introduced by
Constructors do not have meaningful return values, anything that is returned from here is discarded. Are you sure this is correct?
Loading history...
28
			}
29
			
30
			if ($id_base == null) {
31
				$this->getParametres();
32
				
33
				$query = $dbc->select("_bataille_base.nom_base")
34
					->select("_bataille_base.points")
35
					->select("_bataille_base.posx")
36
					->select("_bataille_base.posy")
37
					->select("_bataille_base.ID_base")
38
					->select("identite.pseudo")
39
					->select("identite.ID_identite")
40
					->from("identite")
41
					->from("_bataille_base")
42
					->where("_bataille_base.ID_identite", "=", "identite.ID_identite", "", true)
43
					->get();
44
			}
45
			else {
46
				$query = $dbc->select("_bataille_base.nom_base")
47
					->select("_bataille_base.points")
48
					->select("_bataille_base.posx")
49
					->select("_bataille_base.posy")
50
					->select("_bataille_base.ID_base")
51
					->select("identite.ID_identite")
52
					->select("identite.pseudo")
53
					->from("identite")
54
					->from("_bataille_base")
55
					->where("_bataille_base.ID_base", "=", $id_base, "AND")
56
					->where("_bataille_base.ID_identite", "=", "identite.ID_identite", "", true)
57
					->get();
58
				
59
				$temps_trajet = DateHeure::Secondeenheure(Bataille::getDureeTrajet($id_base));
60
			}
61
			
62
			if ((is_array($query)) && (count($query) > 0)) {
63
				foreach ($query as $obj) {
64
					$ma_base = "";
65
					if ($obj->ID_base == Bataille::getIdBase()) {
66
						$ma_base = "ma-base";
67
					}
68
					
69
					$map[] = [
70
						"nom_base" => $obj->nom_base,
71
						"points" => $obj->points,
72
						"posx" => $obj->posx,
73
						"posy" => $obj->posy,
74
						"id_base" => $obj->ID_base,
75
						"id_identite" => $obj->ID_identite,
76
						"pseudo" => $obj->pseudo,
77
						"ma_base" => $ma_base,
78
						"temps_trajet" => $temps_trajet
79
					];
80
				}
81
				
82
				Bataille::setValues(["map" => $map]);
83
			}
84
		}
85
		//-------------------------- END BUILDER ----------------------------------------------------------------------------//
86
87
88
89
		//-------------------------- GETTER ----------------------------------------------------------------------------//
90
		/**
91
		 * @return integer
92
		 * fonction qui permet de récupérer le nombre de joueurs sur le serveur
93
		 */
94
		private function getNombreJoueur() {
95
			$dbc = App::getDb();
96
			
97
			$query = $dbc->select("nombre_joueur")->from("_bataille_nombre_joueur")->where("ID_nombre_joueur", "=", 1)->get();
98
			
99
			if ((is_array($query)) && (count($query) == 1)) {
100
				foreach ($query as $obj) return $obj->nombre_joueur;
101
			}
102
			
103
			return 0;
104
		}
105
		
106
		/**
107
		 * fonction qui sert à récupérer les parametres de la map
108
		 */
109
		private function getParametres() {
110
			$dbc = Bataille::getDb();
111
112
			$query = $dbc->select()->from("map")->where("ID_map", "=", 1)->get();
113
114
			foreach ($query as $obj) {
115
				Bataille::setValues([
116
					"largeur_map" => $obj->largeur,
117
					"hauteur_map" => $obj->hauteur
118
				]);
119
120
				$this->largeur = $obj->largeur;
121
				$this->hauteur = $obj->hauteur;
122
			}
123
		}
124
125
		/**
126
		 * @return array
127
		 * fonction utilisée lors de la création d'un compte
128
		 * renvoi les positions en x et y non occupées
129
		 */
130
		public function getPositionNewBase() {
131
			$this->getParametres();
132
133
			if ($this->getNombreJoueur() <= 150) {
134
				$posx = rand(0, 79);
135
				$posy = rand(0, 75);
136
			}
137
			else {
138
				$posx = rand(0, $this->largeur);
139
				$posy = rand(0, $this->hauteur);
140
			}
141
142
			//on test si il y a une base sur ces positions
143
			if (Bataille::getBaseExistPosition($posx, $posy)) {
144
				$this->getPositionNewBase();
145
			}
146
			else {
147
				//on a une position de base inexistante donc on la return
148
				return ["posx" => $posx, "posy" => $posy];
149
			}
150
		}
151
		//-------------------------- END GETTER ----------------------------------------------------------------------------//
152
153
154
155
		//-------------------------- SETTER ----------------------------------------------------------------------------//
156
		//-------------------------- END SETTER ----------------------------------------------------------------------------//
157
	}