Skip to content

Commit de351eb

Browse files
committed
fixed parameters names
1 parent 60ef76e commit de351eb

File tree

10 files changed

+134
-38
lines changed

10 files changed

+134
-38
lines changed

app.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ func (a *App) startup(ctx context.Context) {
2626
winUser, err := user.Current()
2727
if err == nil {
2828
CONFIG_FILE_PATH = winUser.HomeDir + "\\Documents\\alt-launcher-config.json"
29+
fmt.Println("CONFIG_FILE_PATH=", CONFIG_FILE_PATH)
2930
} else {
3031
runtime.MessageDialog(ctx, runtime.MessageDialogOptions{
3132
Title: "Ошибка",
@@ -126,3 +127,10 @@ func (a *App) SaveConfig(json string) {
126127
})
127128
}
128129
}
130+
131+
func (a *App) UpdateServerInfo(host string) {
132+
server, err := getServerQueryInfo(host, 7777)
133+
if err == nil {
134+
runtime.EventsEmit(a.ctx, "server:update_players", host, server.Players, server.MaxPlayers)
135+
}
136+
}

frontend/index.html

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -28,9 +28,13 @@
2828
<div class="settings-checkboxes">
2929
<input class="input-name" type="text" readonly placeholder="Нажмите что бы указать папку" id="path">
3030
<div class="checkbox-item">
31-
<label for="wideScreen">ОЗУ</label>
31+
<label for="memory">ОЗУ</label>
3232
<input id="memory" type="number" placeholder="4096">
3333
</div>
34+
<div class="checkbox-item">
35+
<label for="pass">Пароль</label>
36+
<input id="pass" type="text" placeholder="Необязательно">
37+
</div>
3438
<div class="checkbox-item">
3539
<label for="wideScreen">Широкий экран</label>
3640
<input type="checkbox" id="wideScreen">
@@ -61,23 +65,23 @@
6165
</div>
6266
<div class="checkbox-item">
6367
<label for="cefDirtyRects">Старые разрешения</label>
64-
<input type="checkbox" id="cefDirtyRects">
68+
<input type="checkbox" id="oldResolution">
6569
</div>
6670
<div class="checkbox-item">
6771
<label for="authCef">Поддержка HDR</label>
68-
<input type="checkbox" id="authCef">
72+
<input type="checkbox" id="hdrResolution">
6973
</div>
7074
<div class="checkbox-item">
7175
<label for="grass">Растительность</label>
7276
<input type="checkbox" id="grass">
7377
</div>
7478
<div class="checkbox-item">
7579
<label for="oldResolution">Новая авторизация</label>
76-
<input type="checkbox" id="oldResolution">
80+
<input type="checkbox" id="authCef">
7781
</div>
7882
<div class="checkbox-item">
7983
<label for="hdrResolution">Оптимизация интерфейсов</label>
80-
<input type="checkbox" id="hdrResolution">
84+
<input type="checkbox" id="cefDirtyRects">
8185
</div>
8286
</div>
8387
</div>

frontend/src/config.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ export type Config = {
44
path: string,
55
memory: number,
66
selectedServer: number,
7+
pass: string,
78
params: {
89
wideScreen: boolean,
910
autoLogin: boolean,
@@ -25,6 +26,7 @@ export var config: Config = {
2526
path: '',
2627
memory: 4096,
2728
selectedServer: 1,
29+
pass: '',
2830
params: {
2931
wideScreen: false,
3032
autoLogin: false,
@@ -66,6 +68,8 @@ export function loadConfig() {
6668
document.getElementById('memory').value = config.memory;
6769
// @ts-ignore
6870
document.getElementById('path').value = config.path;
71+
// @ts-ignore
72+
document.getElementById('pass').value = config.pass ?? '';
6973

7074
// @ts-ignore
7175
for (const [k, v] of Object.entries(config.params)) document.getElementById(k).checked = v;
@@ -79,6 +83,8 @@ export function saveConfig() {
7983
config.memory = document.getElementById('memory').value;
8084
// @ts-ignore
8185
config.path = document.getElementById('path').value;
86+
// @ts-ignore
87+
config.pass = document.getElementById('pass').value;
8288

8389

8490
for (const name of Object.keys(parameterName)) {

frontend/src/main.ts

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import './style.css';
22
import './app.css';
33
import { EventsOn, EventsEmit } from '../wailsjs/runtime'
44
import { config, loadConfig, saveConfig, parameterName } from './config';
5-
import { StartGame } from '../wailsjs/go/main/App';
5+
import { StartGame, UpdateServerInfo } from '../wailsjs/go/main/App';
66

77
type Server = {
88
number: number,
@@ -35,6 +35,7 @@ function createServer(server: Server, id: number, isSelected = false, hideNumber
3535
el.classList.remove('server-selected');
3636
});
3737
serverDiv.classList.add('server-selected');
38+
UpdateServerInfo(server.ip);
3839
config.selectedServer = server.number;
3940
saveConfig();
4041
};
@@ -52,6 +53,7 @@ function createServer(server: Server, id: number, isSelected = false, hideNumber
5253
serverName.textContent = server.name;
5354

5455
const serverPlayers = document.createElement('a');
56+
serverPlayers.id = `players-count-${server.number}`
5557
serverPlayers.classList.add('server-players');
5658
serverPlayers.textContent = `${server.online}/${server.maxplayers}`;
5759

@@ -92,7 +94,8 @@ addEventListener('DOMContentLoaded', () => {
9294
`-n ${config.name}`,
9395
`-mem ${config.memory.toString().length > 0 ? config.memory : '2048'}`,
9496
'-referrer',
95-
'-userId undefined'
97+
'-userId undefined',
98+
config.pass.length > 0 ? `-z ${config.pass}` : '',
9699
];
97100
for (const [param, value] of Object.entries(config.params)) {
98101
if (value) params.push(`-${parameterName[param] ?? "-UNKNOWN_" + param}`);
@@ -130,4 +133,13 @@ EventsOn('servers:update', (servers: Server[], mobileServers: Server[]) => {
130133
});
131134
//@ts-ignore
132135
if (scrollAfterCreation) document.getElementById('servers-list').scrollTop = (config.selectedServer - 1) * 42
133-
});
136+
});
137+
138+
EventsOn('server:update_players', (host: string, players: number, maxplayers: number) => {
139+
const server = serversList.find((s) => s.ip == host);
140+
if (server) {
141+
const playersCount = document.getElementById(`players-count-${server.number}`);
142+
if (playersCount) playersCount.textContent = `${players}/${maxplayers}`;
143+
}
144+
console.log('server:update_players', host, players, maxplayers);
145+
})

frontend/wailsjs/go/main/App.d.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,3 +6,5 @@ export function ReadConfig():Promise<string>;
66
export function SaveConfig(arg1:string):Promise<void>;
77

88
export function StartGame(arg1:string,arg2:string,arg3:Array<string>):Promise<void>;
9+
10+
export function UpdateServerInfo(arg1:string):Promise<void>;

frontend/wailsjs/go/main/App.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,3 +13,7 @@ export function SaveConfig(arg1) {
1313
export function StartGame(arg1, arg2, arg3) {
1414
return window['go']['main']['App']['StartGame'](arg1, arg2, arg3);
1515
}
16+
17+
export function UpdateServerInfo(arg1) {
18+
return window['go']['main']['App']['UpdateServerInfo'](arg1);
19+
}

go.mod

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,10 @@ go 1.21
44

55
toolchain go1.21.0
66

7-
require github.com/wailsapp/wails/v2 v2.9.2
7+
require (
8+
github.com/Southclaws/go-samp-query v1.2.1
9+
github.com/wailsapp/wails/v2 v2.9.2
10+
)
811

912
require (
1013
github.com/bep/debounce v1.2.1 // indirect
@@ -23,6 +26,7 @@ require (
2326
github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8 // indirect
2427
github.com/pkg/errors v0.9.1 // indirect
2528
github.com/rivo/uniseg v0.4.4 // indirect
29+
github.com/saintfish/chardet v0.0.0-20120816061221-3af4cd4741ca // indirect
2630
github.com/samber/lo v1.38.1 // indirect
2731
github.com/tkrajina/go-reflector v0.5.6 // indirect
2832
github.com/valyala/bytebufferpool v1.0.0 // indirect

go.sum

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
github.com/Southclaws/go-samp-query v1.2.1 h1:UOPzYdnwcZDxJ5bsZ5zZ+YOlFX8QmRLZ20YBNuKMh0Y=
2+
github.com/Southclaws/go-samp-query v1.2.1/go.mod h1:veYZpOaPw6PXwvTGo9Rg3INKQV/2PR8Bn8p+bQedFNM=
13
github.com/bep/debounce v1.2.1 h1:v67fRdBA9UQu2NhLFXrSg0Brw7CexQekrBwDMM8bzeY=
24
github.com/bep/debounce v1.2.1/go.mod h1:H8yggRPQKLUhUoqrJC1bO2xNya7vanpDl7xR3ISbCJ0=
35
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
@@ -37,16 +39,20 @@ github.com/mattn/go-isatty v0.0.19 h1:JITubQf0MOLdlGRuRq+jtsDlekdYPia9ZFsB8h/APP
3739
github.com/mattn/go-isatty v0.0.19/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
3840
github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8 h1:KoWmjvw+nsYOo29YJK9vDA65RGE3NrOnUtO7a+RF9HU=
3941
github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8/go.mod h1:HKlIX3XHQyzLZPlr7++PzdhaXEj94dEiJgZDTsxEqUI=
42+
github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
4043
github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
4144
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
4245
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
4346
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
4447
github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc=
4548
github.com/rivo/uniseg v0.4.4 h1:8TfxU8dW6PdqD27gjM8MVNuicgxIjxpm4K7x4jp8sis=
4649
github.com/rivo/uniseg v0.4.4/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88=
50+
github.com/saintfish/chardet v0.0.0-20120816061221-3af4cd4741ca h1:NugYot0LIVPxTvN8n+Kvkn6TrbMyxQiuvKdEwFdR9vI=
51+
github.com/saintfish/chardet v0.0.0-20120816061221-3af4cd4741ca/go.mod h1:uugorj2VCxiV1x+LzaIdVa9b4S4qGAcH6cbhh4qVxOU=
4752
github.com/samber/lo v1.38.1 h1:j2XEAqXKb09Am4ebOg31SpvzUTTs6EN3VfgeLUhPdXM=
4853
github.com/samber/lo v1.38.1/go.mod h1:+m/ZKRl6ClXCE2Lgf3MsQlWfh4bn1bz6CXEOxnEXnEA=
4954
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
55+
github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
5056
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
5157
github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk=
5258
github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo=
@@ -83,6 +89,7 @@ golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
8389
golang.org/x/sys v0.20.0 h1:Od9JTbYCk261bKm4M/mw7AklTlFYIa0bIp9BgSm1S8Y=
8490
golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
8591
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
92+
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
8693
golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
8794
golang.org/x/text v0.15.0 h1:h1V/4gjBv8v9cjcR6+AR5+/cIYK5N/WAgiv4xlsEtAk=
8895
golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=

query.go

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package main
2+
3+
import (
4+
"context"
5+
6+
sampquery "github.com/Southclaws/go-samp-query"
7+
)
8+
9+
func getServerQueryInfo(host string, port int) (sampquery.Server, error) {
10+
var result sampquery.Server
11+
query, err := sampquery.NewQuery(host)
12+
if err != nil {
13+
return result, err
14+
}
15+
var ctx context.Context
16+
result, err = query.GetInfo(ctx, true)
17+
if err != nil {
18+
return result, err
19+
}
20+
return result, nil
21+
}

servers.go

Lines changed: 57 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,11 @@ package main
22

33
import (
44
"encoding/json"
5+
"fmt"
56
"io"
67
"net/http"
8+
"os"
9+
"os/user"
710
"sort"
811
)
912

@@ -13,48 +16,73 @@ type ServerPlotPoint struct {
1316
}
1417

1518
type Server struct {
16-
Number int `json:"number"`
17-
Name string `json:"name"`
18-
IP string `json:"ip"`
19-
Port int `json:"port"`
20-
Online int `json:"online"`
21-
MaxPlayers int `json:"maxplayers"`
22-
Password bool `json:"password"`
23-
VK string `json:"vk"`
24-
TG string `json:"tg"`
25-
Inst string `json:"inst"`
26-
Icon string `json:"icon"`
27-
AdditionalIps []string `json:"additionalIps"`
28-
DonateMultiplier int `json:"donateMultiplier"`
29-
ExperienceMultiplier int `json:"experienceMultiplier"`
30-
PlotPoints []ServerPlotPoint `json:"plotPoints"`
19+
Number int `json:"number"`
20+
Name string `json:"name"`
21+
IP string `json:"ip"`
22+
Port int `json:"port"`
23+
Online int `json:"online"`
24+
MaxPlayers int `json:"maxplayers"`
25+
// Password bool `json:"password"`
26+
// VK string `json:"vk"`
27+
// TG string `json:"tg"`
28+
// Inst string `json:"inst"`
29+
Icon string `json:"icon"`
30+
// AdditionalIps []string `json:"additionalIps"`
31+
// DonateMultiplier int `json:"donateMultiplier"`
32+
// ExperienceMultiplier int `json:"experienceMultiplier"`
33+
// PlotPoints []ServerPlotPoint `json:"plotPoints"`
3134
}
3235

3336
type ArizonaServerInfo struct {
34-
Arizona []Server `json:"arizona"`
35-
ArizonaMobile []Server `json:"arizonaMobile"`
36-
ArizonaStaging []Server `json:"arizona_staging"`
37-
Rodina []Server `json:"rodina"`
38-
Village []Server `json:"village"`
39-
Arizonav []Server `json:"arizonav"`
37+
Arizona []Server `json:"arizona"`
38+
ArizonaMobile []Server `json:"arizonaMobile"`
39+
// ArizonaStaging []Server `json:"arizona_staging"`
40+
// Rodina []Server `json:"rodina"`
41+
// Village []Server `json:"village"`
42+
// Arizonav []Server `json:"arizonav"`
4043
}
4144

42-
const ArizonaServersList string = "https://api.arizona-five.com/launcher/servers"
45+
const (
46+
ArizonaServersListURL string = "https://api.arizona-five.com/launcher/servers"
47+
)
4348

4449
func LoadServers() (ArizonaServerInfo, error) {
4550
var servers ArizonaServerInfo
4651
var err error
47-
response, err := http.Get(ArizonaServersList)
52+
var jsonBytes []byte
53+
var listFileReaded = false
54+
winUser, err := user.Current()
4855
if err == nil {
49-
bytes, err := io.ReadAll(response.Body)
50-
if err == nil {
51-
err = json.Unmarshal(bytes, &servers)
56+
listPath := winUser.HomeDir + "\\Documents\\alt-launcher-servers.json"
57+
fmt.Println("Custom servers list path=", listPath)
58+
if _, err := os.Stat(listPath); err == nil {
59+
jsonBytes, err = os.ReadFile(listPath)
60+
fmt.Println("List file:", string(jsonBytes), err)
5261
if err == nil {
53-
sort.Slice(servers.Arizona, func(a, b int) bool {
54-
return servers.Arizona[a].Number < servers.Arizona[b].Number
55-
})
62+
listFileReaded = true
63+
fmt.Println("Reading servers list from file")
5664
}
5765
}
5866
}
67+
if !listFileReaded {
68+
response, err := http.Get(ArizonaServersListURL)
69+
if err != nil {
70+
return servers, err
71+
}
72+
jsonBytes, err = io.ReadAll(response.Body)
73+
if err != nil {
74+
return servers, err
75+
}
76+
}
77+
// fmt.Println(string(jsonBytes))
78+
if err == nil {
79+
err = json.Unmarshal(jsonBytes, &servers)
80+
if err == nil {
81+
sort.Slice(servers.Arizona, func(a, b int) bool {
82+
return servers.Arizona[a].Number < servers.Arizona[b].Number
83+
})
84+
}
85+
}
86+
5987
return servers, err
6088
}

0 commit comments

Comments
 (0)