Skip to content

Commit d86d1e8

Browse files
author
Joe Thaler
committed
- version 20220404.1
- version number now shown in title of Basic Core window - added Basic Core version check with an update button - added README.md
1 parent 72ed9d6 commit d86d1e8

4 files changed

Lines changed: 193 additions & 4 deletions

File tree

BasicCore.Uplink.iss

Lines changed: 83 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,17 @@
22

33
objectdef basicCore
44
{
5+
variable taskmanager TaskManager=${LMAC.NewTaskManager["basicCore"]}
6+
57
variable basicCore_settings Settings
68
variable basicCore_launcher Launcher
79

810
variable weakref SelectedLaunchProfile
911

1012
variable weakref EditingWindowLayout
1113

14+
variable jsonvalueref LatestVersion
15+
1216
method Initialize()
1317
{
1418
LGUI2:LoadPackageFile[BasicCore.Uplink.lgui2Package.json]
@@ -27,16 +31,22 @@ objectdef basicCore
2731

2832
if ${Settings.Launcher.Has[lastSelectedProfile]}
2933
This:SetSelectedLaunchProfile["${Settings.Launcher.Get[lastSelectedProfile]~}",0]
34+
35+
This:AddAgentProvider
36+
This:VersionCheck
3037
}
3138

3239
method Shutdown()
3340
{
41+
TaskManager:Destroy
42+
43+
This:RemoveAgentProvider
3444
LGUI2:UnloadPackageFile[BasicCore.Uplink.lgui2Package.json]
3545
}
3646

3747
method SetEditingWindowLayout(string name)
3848
{
39-
echo SetEditingWindowLayout ${name~}
49+
; echo SetEditingWindowLayout ${name~}
4050
variable uint id
4151
id:Set[${Settings.FindWindowLayout["${name~}"]}]
4252
if !${id}
@@ -57,7 +67,7 @@ objectdef basicCore
5767

5868
method SetSelectedLaunchProfile(string name, bool storeSettings=TRUE)
5969
{
60-
echo SetSelectedLaunchProfile ${name~}
70+
; echo SetSelectedLaunchProfile ${name~}
6171
variable uint id
6272
id:Set[${Settings.FindLaunchProfile["${name~}"]}]
6373
if !${id}
@@ -280,6 +290,77 @@ objectdef basicCore
280290
; echo ${LGUI2.Element[basicCore.windowLayoutRegionsList].SelectedItem.Index}
281291
}
282292

293+
method OnInstallLatestButton()
294+
{
295+
variable string command1="timed 1 "relay all -noredirect \"JMB.Agent[Basic Core]:Stop:Reload:Start\"""
296+
variable string command2="timed 1 \"JMB.Agent[Basic Core]:Stop:Reload:Start\""
297+
298+
variable jsonvalue joTask
299+
joTask:SetValue["$$>
300+
{
301+
"type":"chain",
302+
"tasks":[
303+
{
304+
"type":"agent.install",
305+
"provider":"BasicCore",
306+
"listing":"BasicCore",
307+
"download":true
308+
},
309+
{
310+
"type":"ls1.code",
311+
"instant":true,
312+
"start":${command1.AsJSON~},
313+
"stop":${command2.AsJSON~}
314+
}
315+
]
316+
}
317+
<$$"]
318+
319+
TaskManager:BeginTask["${joTask.AsJSON~}"]
320+
}
321+
322+
method AddAgentProvider()
323+
{
324+
JMB:AddAgentProvider["","${LGUI2.Template[basicCore.agentProvider]~}"]
325+
}
326+
327+
method RemoveAgentProvider()
328+
{
329+
JMB.AgentProvider[BasicCore]:Remove
330+
}
331+
332+
method VersionCheck()
333+
{
334+
;
335+
; LatestVersion
336+
variable jsonvalue joTask
337+
joTask:SetValue["$$>
338+
{
339+
"type":"webrequest",
340+
"as":"json",
341+
"object":"BasicCore",
342+
"method":"OnVersionCheckComplete",
343+
"url":"https://raw.githubusercontent.com/LavishSoftware/JMB-Basic-Core/master/agent.json"
344+
}
345+
<$$"]
346+
347+
; echo "starting task ${joTask.AsJSON~}"
348+
TaskManager:BeginTask["${joTask.AsJSON~}"]
349+
}
350+
351+
method OnVersionCheckComplete()
352+
{
353+
echo OnVersionCheckComplete ${Context(type)} state=${Context.State} result=${Context.Result}
354+
355+
LatestVersion:SetReference["Context.Result.Get[jsonResult]"]
356+
357+
if ${LatestVersion.Get[version].NotEqual["${JMB.Agent[Basic Core].Version~}"]}
358+
{
359+
LGUI2.Element[basicCore.versionCheckPanel]:SetVisibility[Visible]
360+
}
361+
362+
LGUI2.Element[basicCore.events]:FireEventHandler[onLatestVersionUpdated]
363+
}
283364
}
284365

285366
objectdef basicCore_launcher

BasicCore.Uplink.lgui2Package.json

Lines changed: 63 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,16 @@
11
{
22
"$schema": "http://www.lavishsoft.com/schema/lgui2Package.json",
33
"templates":{
4+
"basicCore.agentProvider":{
5+
"name": "BasicCore",
6+
"platform": "joemultiboxer",
7+
"listings": {
8+
"BasicCore": {
9+
"name": "Basic Core",
10+
"url":"https://github.com/LavishSoftware/JMB-Basic-Core/archive/refs/heads/master.zip"
11+
}
12+
}
13+
},
414
"basicCore.defaultSettings":{
515
"launcher":{
616
},
@@ -222,7 +232,7 @@
222232
{
223233
"type":"window",
224234
"name":"basicCore.mainWindow",
225-
"title":"Joe Multiboxer: Basic Core",
235+
"title":"Joe Multiboxer: Basic Core ${JMB.Agent[Basic Core].Version}",
226236
"hideOnClose": true,
227237
"horizontalAlignment": "center",
228238
"verticalAlignment": "center",
@@ -272,6 +282,58 @@
272282
}
273283
]
274284
},
285+
{
286+
"_dock":"top",
287+
"type":"dockpanel",
288+
"visibility":"collapsed",
289+
"name":"basicCore.versionCheckPanel",
290+
"horizontalAlignment":"center",
291+
"padding":8,
292+
"children":[
293+
{
294+
"type":"stackpanel",
295+
"_dock":"top",
296+
"orientation":"horizontal",
297+
"children":[
298+
{
299+
"type":"textblock",
300+
"text":"Latest Version: "
301+
},
302+
{
303+
"type":"textblock",
304+
"textBinding":{
305+
"pullFormat":"${BasicCore.LatestVersion.Get[version]}",
306+
"pullReplaceNull":"checking..."
307+
}
308+
},
309+
{
310+
"type":"textblock",
311+
"text":" Minimum JMB build required: "
312+
},
313+
{
314+
"type":"textblock",
315+
"textBinding":{
316+
"pullFormat":"${BasicCore.LatestVersion.Get[minimumBuild]}",
317+
"pullReplaceNull":"checking..."
318+
}
319+
}
320+
]
321+
},
322+
{
323+
"type":"button",
324+
"_dock":"top",
325+
"horizontalAlignment":"center",
326+
"content":"Install Latest Basic Core!",
327+
"eventHandlers":{
328+
"onPress":{
329+
"type":"method",
330+
"object":"BasicCore",
331+
"method":"OnInstallLatestButton"
332+
}
333+
}
334+
}
335+
]
336+
},
275337
{
276338
"_dock":"top",
277339
"type":"tabcontrol",

README.md

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
# JMB-Basic-Core
2+
3+
**Basic Core** is an Agent for [Lavish Software](https://www.lavishsoft.com)'s [Joe Multiboxer](https://joemultiboxer.com). Previously a collection of Agents, this new version has been recreated into a cohesive standard, with a new configuration window.
4+
5+
# Features
6+
7+
**Basic Core** provides a simple, standard feature set for multiboxing with Joe Multiboxer, including...
8+
* **Launch Profiles** that identify a game to launch, and Virtual Files for the game, and **a simple Launch button**
9+
* **Performance** and FPS settings to optimize performance across your game windows
10+
* **Highlighting** options help identify game windows, including highlighting the active window when swapping is disabled
11+
* **Window Layouts** either dynamically place your windows in a standard lineup, or use your own custom layout
12+
* **Window Switching Hotkeys** to easily rotate between windows, or pull up specific windows
13+
14+
# Installing Basic Core
15+
16+
The simplest way to install and get started with Basic Core is via Joe Multiboxer's Agent Suggestions window, which pops up when you launch Joe Multiboxer, if no Agents are installed.
17+
18+
The Basic Core version number will be shown in the title of the Basic Core window, found in the main JMB window. If a newer version of Basic Core is ready for download, an `Install Latest Basic Core!` button will be shown at the top of the window.
19+
20+
# Your first time launching
21+
22+
Basic Core is simple to configure, and includes default settings. The easiest way to get started is simply to **use `Add Game` from Joe Multiboxer's right-click menu**, which adds your game to JMB, and will then automatically show up as a `Launch Profile` in Basic Core.
23+
24+
From there, the `Launcher` tab in the Basic Core window (found in the main JMB window) can be used to **select a Launch Profile, and click the `Launch!` button**.
25+
26+
## Launching Game Clients
27+
28+
When launching game clients, Joe Multiboxer supports rapid launching. The `Launch!` button may be clicked many times in rapid succession to simultaneously launch multiple game clients. This is in contrast to [ISBoxer](https://isboxer.com), which requires a slower paced launch.
29+
30+
## Launching Game Launchers
31+
32+
When launching a game *launcher*, as opposed to launching a game client directly, you will want to use the launcher to launch the game, and then exit the launcher. You may click `Launch!` again once the previous game launcher has exited, to launch the next JMB window.
33+
34+
* **Tip:** Each process launched by the `Launch!` button is placed in **its own partially sandboxed `Slot` along with any processes it, in turn, launches**. This means that an instance of a Game Launcher launched by JMB should not be used to launch more than one character.
35+
36+
* **Note:** Some games require the launcher to stay open (such as many Steam games); in these cases, the game launcher itself must allow multiple instances. Otherwise, additional work will be needed to sandbox the launcher for the Slot.
37+
38+
# Your first gameplay
39+
40+
With the default settings, your first gameplay with more than one window will use a horizontal Window Layout style, with swapping occurring when clicking or activating a window via hotkey. Rotate forward through game windows with `Ctrl+Alt+X` or backward with `Ctrl+Alt+Z`. Each window can be called up individually by `Ctrl+Alt+1` or `Ctrl+Alt+2` and so on, depending on the window number.
41+
42+
# There's more?
43+
44+
Questions? Requests? More information needed? See what everyone else said before? Just want to say hi?
45+
46+
**Come see us on [ISBoxer Discord](https://discord.gg/ESxEzhs) in the Joe Multiboxing section! We're in `#jmb_help` ready to go!**

agent.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"$schema": "http://www.lavishsoft.com/schema/agent.json",
33
"name": "Basic Core",
4-
"version": "20220403.1",
4+
"version": "20220404.1",
55
"minimumBuild": 6920,
66
"platforms": {
77
"joe multiboxer uplink": {

0 commit comments

Comments
 (0)