Players parsing fixes and short info done.
Fixed players parsing in server's response, now we can show 0 players. Showr info (kinda) completed, general server info, players and vars are here. Some work on sorting is in ToDo.
This commit is contained in:
parent
5ba0664964
commit
8cfbca284e
@ -11,13 +11,10 @@ package ioq3dataparser
|
||||
|
||||
import (
|
||||
// stdlib
|
||||
"fmt"
|
||||
"strings"
|
||||
)
|
||||
|
||||
func ParseInfoToMap(data string) map[string]string {
|
||||
fmt.Println(data)
|
||||
|
||||
parsed_data := make(map[string]string)
|
||||
|
||||
srv_config := strings.Split(data, "\\")
|
||||
@ -25,10 +22,27 @@ func ParseInfoToMap(data string) map[string]string {
|
||||
// Parse server configuration into passed server's datamodel.
|
||||
for i := 0; i < len(srv_config[1:]); i = i + 2 {
|
||||
parsed_data[srv_config[i]] = srv_config[i + 1]
|
||||
fmt.Println(srv_config[i] + " => " + srv_config[i + 1])
|
||||
}
|
||||
|
||||
fmt.Println(parsed_data)
|
||||
|
||||
return parsed_data
|
||||
}
|
||||
|
||||
func ParsePlayersInfoToMap(data string) map[string]map[string]string {
|
||||
parsed_data := make(map[string]map[string]string)
|
||||
|
||||
// Structure: frags|ping|nick
|
||||
raw_data := strings.Split(data, "\\")
|
||||
for i := range raw_data {
|
||||
raw_player_data := strings.Split(raw_data[i], " ")
|
||||
player_data := make(map[string]string)
|
||||
if len(raw_player_data) > 1 {
|
||||
nickname := strings.Join(raw_player_data[2:], " ")
|
||||
player_data["nick"] = string([]byte(nickname)[1:len(nickname)-1])
|
||||
player_data["ping"] = raw_player_data[1]
|
||||
player_data["frags"] = raw_player_data[0]
|
||||
parsed_data[player_data["nick"]] = player_data
|
||||
}
|
||||
}
|
||||
|
||||
return parsed_data
|
||||
}
|
||||
|
@ -197,8 +197,14 @@ func (p *Pooler) updateSpecificServer(server *datamodels.Server) error {
|
||||
if len(received_lines) >= 2 {
|
||||
// Here we go, players information.
|
||||
players := received_lines[2:]
|
||||
fmt.Println(players, len(players), len(players[0]))
|
||||
// Calculate players!
|
||||
if len(players) == 1 && len(players[0]) > 255 {
|
||||
server.Players = "0"
|
||||
} else {
|
||||
server.Players = strconv.Itoa(len(players))
|
||||
//server.PlayersInfo = received_lines[2:]
|
||||
}
|
||||
server.PlayersInfo = strings.Join(received_lines[2:], "\\")
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1079,23 +1079,35 @@ func (m *MainWindow) showShortServerInformation() {
|
||||
// Getting server information from cache.
|
||||
if len(srv_address) > 0 {
|
||||
server_info := ctx.Cache.Servers[srv_address].Server
|
||||
parsed := ioq3dataparser.ParseInfoToMap(server_info.ExtendedConfig)
|
||||
parsed_general_data := ioq3dataparser.ParseInfoToMap(server_info.ExtendedConfig)
|
||||
parsed_players_info := ioq3dataparser.ParsePlayersInfoToMap(server_info.PlayersInfo)
|
||||
// Append to treeview generic info first. After appending it
|
||||
// will be deleted from map.
|
||||
|
||||
iter = new(gtk.TreeIter)
|
||||
m.server_info_store.Append(iter)
|
||||
m.server_info_store.SetValue(iter, 0, "<markup><span font_weight=\"bold\">GENERAL INFO</span></markup>")
|
||||
|
||||
// Server's name.
|
||||
iter := new(gtk.TreeIter)
|
||||
m.server_info_store.Append(iter)
|
||||
m.server_info_store.SetValue(iter, 0, "Server's name")
|
||||
m.server_info_store.SetValue(iter, 1, ctx.Colorizer.Fix(parsed["sv_hostname"]))
|
||||
delete(parsed, "sv_hostname")
|
||||
m.server_info_store.SetValue(iter, 1, ctx.Colorizer.Fix(parsed_general_data["sv_hostname"]))
|
||||
delete(parsed_general_data, "sv_hostname")
|
||||
|
||||
// Game version.
|
||||
iter = new(gtk.TreeIter)
|
||||
m.server_info_store.Append(iter)
|
||||
m.server_info_store.SetValue(iter, 0, "Game version")
|
||||
m.server_info_store.SetValue(iter, 1, parsed_general_data["g_modversion"])
|
||||
delete(parsed_general_data, "g_modversion")
|
||||
|
||||
// Players.
|
||||
iter = new(gtk.TreeIter)
|
||||
m.server_info_store.Append(iter)
|
||||
m.server_info_store.SetValue(iter, 0, "Players")
|
||||
m.server_info_store.SetValue(iter, 1, server_info.Players + " of " + parsed["sv_maxclients"])
|
||||
delete(parsed, "sv_maxclients")
|
||||
m.server_info_store.SetValue(iter, 1, server_info.Players + " of " + parsed_general_data["sv_maxclients"])
|
||||
delete(parsed_general_data, "sv_maxclients")
|
||||
|
||||
// Ping
|
||||
iter = new(gtk.TreeIter)
|
||||
@ -1120,11 +1132,27 @@ func (m *MainWindow) showShortServerInformation() {
|
||||
m.server_info_store.Append(iter)
|
||||
m.server_info_store.SetValue(iter, 0, "Passworded")
|
||||
passworded_status := "<markup><span foreground=\"green\">No</span></markup>"
|
||||
if parsed["g_needpass"] == "1" {
|
||||
if parsed_general_data["g_needpass"] == "1" {
|
||||
passworded_status = "<markup><span foreground=\"red\">Yes</span></markup>"
|
||||
}
|
||||
m.server_info_store.SetValue(iter, 1, passworded_status)
|
||||
delete(parsed, "g_needpass")
|
||||
delete(parsed_general_data, "g_needpass")
|
||||
|
||||
// Just a separator.
|
||||
iter = new(gtk.TreeIter)
|
||||
m.server_info_store.Append(iter)
|
||||
|
||||
// Players information
|
||||
iter = new(gtk.TreeIter)
|
||||
m.server_info_store.Append(iter)
|
||||
m.server_info_store.SetValue(iter, 0, "<markup><span font_weight=\"bold\">PLAYERS</span></markup>")
|
||||
|
||||
for _, value := range parsed_players_info {
|
||||
iter = new(gtk.TreeIter)
|
||||
m.server_info_store.Append(iter)
|
||||
m.server_info_store.SetValue(iter, 0, value["nick"])
|
||||
m.server_info_store.SetValue(iter, 1, "(frags: " + value["frags"] + " | ping: " + value["ping"] + ")")
|
||||
}
|
||||
|
||||
// Just a separator.
|
||||
iter = new(gtk.TreeIter)
|
||||
@ -1135,7 +1163,7 @@ func (m *MainWindow) showShortServerInformation() {
|
||||
m.server_info_store.Append(iter)
|
||||
m.server_info_store.SetValue(iter, 0, "<markup><span font_weight=\"bold\">OTHER PARAMETERS</span></markup>")
|
||||
|
||||
for key, value := range parsed {
|
||||
for key, value := range parsed_general_data {
|
||||
iter = new(gtk.TreeIter)
|
||||
m.server_info_store.Append(iter)
|
||||
m.server_info_store.SetValue(iter, 0, key)
|
||||
|
Reference in New Issue
Block a user