Bläddra i källkod

OS Differentiation (#579)

* Divide Game Servers by Name and OS

* OS Icons in Menu Only As Needed

* Better Icons for OS
OwN-3m-All 4 år sedan
förälder
incheckning
d46f04f2cd
9 ändrade filer med 129 tillägg och 6 borttagningar
  1. 75 1
      css/global.css
  2. 31 3
      home.php
  3. BIN
      images/os/linux.png
  4. BIN
      images/os/linux32.png
  5. BIN
      images/os/linux64.png
  6. BIN
      images/os/win32.png
  7. BIN
      images/os/win64.png
  8. BIN
      images/os/windows.png
  9. 23 2
      includes/functions.php

+ 75 - 1
css/global.css

@@ -105,4 +105,78 @@ table.hundred{
 @keyframes spin {
 	0% { transform: rotate(0deg); }
 	100% { transform: rotate(360deg); }
-}
+}
+
+span.osIcon{
+	display: inline-block;
+	width: 24px;
+	height: 24px;
+	vertical-align: middle;
+	padding-left: 20px;
+}
+
+span.win32{
+	background: url('../images/os/windows.png') no-repeat center center;
+	background-size: contain;
+}
+
+span.linux32{
+	background: url('../images/os/linux.png') no-repeat center center;
+	background-size: contain;
+}
+
+span.win64{
+	background: url('../images/os/windows.png') no-repeat center center;
+	background-size: contain;
+}
+
+span.linux64{
+	background: url('../images/os/linux.png') no-repeat center center;
+	background-size: contain;
+}
+
+span.win32::before, span.linux32::before{
+	content: "32";
+	text-shadow:  0 0 0.2em #000, 0 0 0.2em #000, 0 0 0.2em #000, 0 0 0.2em #000, 0 0 0.2em #000;
+}
+
+span.win64::before, span.linux64::before{
+	content: "64";
+	text-shadow:  0 0 0.2em #000, 0 0 0.2em #000, 0 0 0.2em #000, 0 0 0.2em #000, 0 0 0.2em #000;
+}
+
+li.osIcon{
+	padding-right: 24px;
+}
+
+li.win32{
+	background: url('../images/os/win32.png') no-repeat 97% center;
+	background-size: 24px auto;
+}
+
+li.linux32{
+	background: url('../images/os/linux32.png') no-repeat 97% center;
+	background-size: 24px auto;
+}
+
+li.win64{
+	background: url('../images/os/win64.png') no-repeat 97% center;
+	background-size: 24px auto;
+}
+
+li.linux64{
+	background: url('../images/os/linux64.png') no-repeat 97% center;
+	background-size: 24px auto;
+}
+
+/*
+li.win32::after, li.linux32::after{
+	content: "32";
+	text-shadow:  0 0 0.2em #000, 0 0 0.2em #000, 0 0 0.2em #000, 0 0 0.2em #000, 0 0 0.2em #000;
+}
+
+li.win64::after, li.linux64::after{
+	content: "64";
+	text-shadow:  0 0 0.2em #000, 0 0 0.2em #000, 0 0 0.2em #000, 0 0 0.2em #000, 0 0 0.2em #000;
+}
+*/

+ 31 - 3
home.php

@@ -166,6 +166,7 @@ function ogpHome()
 		if(!empty($server_homes))
 		{
 			$servers_by_game_name = array();
+			$list_of_servers_by_game_name_already_displayed = array();
 			foreach( $server_homes as $server_home )
 			{
 				if(isset($settings['check_expiry_by']) and $settings['check_expiry_by'] == "once_logged_in")
@@ -173,13 +174,30 @@ function ogpHome()
 					if($db->check_expire_date($_SESSION['user_id'], $server_home['home_id']))
 						continue;
 				}
-				$servers_by_game_name["$server_home[game_name]"][] = $server_home;
+				$servers_by_game_name[$server_home['game_name'] . "{SPLIT_STRING_OGP}" . $server_home['game_key']][] = $server_home;
+				if(array_key_exists($server_home["game_name"], $list_of_servers_by_game_name_already_displayed)){
+					if(array_key_exists($server_home['game_key'], $list_of_servers_by_game_name_already_displayed[$server_home["game_name"]])){
+						$list_of_servers_by_game_name_already_displayed[$server_home["game_name"]][$server_home['game_key']] = $list_of_servers_by_game_name_already_displayed[$server_home["game_name"]][$server_home['game_key']] + 1;
+					}else{
+						$list_of_servers_by_game_name_already_displayed[$server_home["game_name"]][$server_home['game_key']] = 1;
+					}
+				}else{
+					$list_of_servers_by_game_name_already_displayed[$server_home["game_name"]] = array($server_home['game_key'] => 1);
+				}
+				
 			}
 			ksort($servers_by_game_name);
 			$game_homes_list = "<ul id='submenu_0' >\n";
 			require_once("modules/config_games/server_config_parser.php");
 			foreach( $servers_by_game_name as $game_name => $server_homes )
 			{
+				$pieces = explode("{SPLIT_STRING_OGP}", $game_name);
+				
+				$game_key = $pieces[1];
+				$game_key_parts = explode("_", $game_key);
+				$game_key_os = $game_key_parts[1];
+				$game_name = $pieces[0];
+				
 				$server_xml = read_server_config(SERVER_CONFIG_LOCATION."/".$server_homes[0]['home_cfg_file']);
 				$mod = $server_homes[0]['mod_key'];
 				// If query name does not exist use mod key instead.
@@ -199,8 +217,18 @@ function ogpHome()
 
 				$icon_path = get_first_existing_file($icon_paths);
 				
-				$game_homes_list .= "<li>\n<a href='?m=gamemanager&p=game_monitor&home_cfg_id=".$server_homes[0]['home_cfg_id'].
-									"'><span data-icon_path='$icon_path'>$game_name</span></a>\n<ul id='submenu_1' >\n";
+				$game_homes_list .= "<li";
+				
+				if(count(array_keys($list_of_servers_by_game_name_already_displayed[$game_name])) > 1){
+					$game_homes_list .= " class='osIcon " . $game_key_os . "'";
+				}
+				
+				$game_homes_list .= ">\n<a href='?m=gamemanager&p=game_monitor&home_cfg_id=".$server_homes[0]['home_cfg_id'].
+									"'><span data-icon_path='$icon_path'>$game_name</span>";
+				
+				$game_homes_list .= "</a>\n<ul id='submenu_1' >\n";
+				
+				
 				foreach($server_homes as $server_home)
 				{
 					$button_name = htmlentities($server_home['home_name']);

BIN
images/os/linux.png


BIN
images/os/linux32.png


BIN
images/os/linux64.png


BIN
images/os/win32.png


BIN
images/os/win64.png


BIN
images/os/windows.png


+ 23 - 2
includes/functions.php

@@ -259,18 +259,39 @@ function create_home_selector_game_type($module, $subpage, $server_homes) {
 		 "<option>".get_lang('game_type')."</option>\n";
 	
 	$servers_by_game_name = array();
+	$list_of_servers_by_game_name_already_displayed = array();
 	foreach( $server_homes as $server_home )
 	{
 		if( !isset($server_home['ip']) or !isset($server_home['mod_id']) )
 			continue;
-		$servers_by_game_name["$server_home[game_name]"] = $server_home['home_cfg_id'];
+		$servers_by_game_name[$server_home["game_name"] . "{SPLIT_STRING_OGP}" . $server_home["game_key"]] = $server_home['home_cfg_id'];
+		if(array_key_exists($server_home["game_name"], $list_of_servers_by_game_name_already_displayed)){
+			if(array_key_exists($server_home['game_key'], $list_of_servers_by_game_name_already_displayed[$server_home["game_name"]])){
+				$list_of_servers_by_game_name_already_displayed[$server_home["game_name"]][$server_home['game_key']] = $list_of_servers_by_game_name_already_displayed[$server_home["game_name"]][$server_home['game_key']] + 1;
+			}else{
+				$list_of_servers_by_game_name_already_displayed[$server_home["game_name"]][$server_home['game_key']] = 1;
+			}
+		}else{
+			$list_of_servers_by_game_name_already_displayed[$server_home["game_name"]] = array($server_home['game_key'] => 1);
+		}
 	}
 	ksort($servers_by_game_name);
 	
 	foreach( $servers_by_game_name as $game_name => $home_cfg_id )
 	{
+		$pieces = explode("{SPLIT_STRING_OGP}", $game_name);
+				
+		$game_key = $pieces[1];
+		$game_key_parts = explode("_", $game_key);
+		$game_key_os = $game_key_parts[1];
+		$game_name = $pieces[0];
+				
 		$selected = (isset($_GET['home_cfg_id']) and $_GET['home_cfg_id'] == $home_cfg_id) ? 'selected="selected"' : "";
-		echo "<option value='". $home_cfg_id . "' $selected >" . $game_name . "</option>\n";
+		echo "<option value='". $home_cfg_id . "' $selected >" . $game_name;
+		if(count(array_keys($list_of_servers_by_game_name_already_displayed[$game_name])) > 1){
+			echo " | " . ucfirst($game_key_os);
+		}
+		echo "</option>\n";
 	}
 	echo "</select>\n</form>\n";
 }