Skip to content

Commit

Permalink
Release v1 [Merge pull request #75]
Browse files Browse the repository at this point in the history
Version 1.0.0 Release
  • Loading branch information
RVRX authored Jul 11, 2021
2 parents c55c1fc + d40a941 commit 7fd2e30
Show file tree
Hide file tree
Showing 53 changed files with 686 additions and 537 deletions.
2 changes: 1 addition & 1 deletion CURRENTVERSION
Original file line number Diff line number Diff line change
@@ -1 +1 @@
0.5.1
1.0.0
2 changes: 1 addition & 1 deletion GoICC Installation Media Creation Script.iss
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!

#define MyAppName "Guns of Icarus Caster Companion"
#define MyAppVersion "0.5.1"
#define MyAppVersion "1.0.0"
#define MyAppPublisher "Cole Manning, RVRX"
#define MyAppURL "https://goicc.skyborne.net/"
#define MyAppExeName "GoICasterCompanion.exe"
Expand Down
4 changes: 2 additions & 2 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ plugins {
id 'edu.sc.seis.launch4j' version '2.5.0'
}
mainClassName = 'goistreamtoolredux.Main'
project.version = '0.5.1'
project.version = '1.0.0'

repositories {
mavenCentral()
Expand Down Expand Up @@ -34,7 +34,7 @@ macAppBundle {
icon = "app-icon.png"
appName = "GoICasterCompanion"
volumeName = "GoICC Install"
dmgName = "GoICC v0.5.1"
dmgName = "GoICC v1.0.0"
bundleJRE = false
// backgroundImage = "doc/macbackground.png"
}
Expand Down
Binary file added docs/img/map_page.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/img/settings_page.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/img/team_page.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/img/team_page_empty.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/img/timer_page.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/img/tournament_page.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
93 changes: 63 additions & 30 deletions docs/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -138,50 +138,51 @@
<div class="row" id="main-row">
<div class="col">
<h1 id="application-overview" class="mt-3 pt-5">Application Overview</h1>
<p>Guns of Icarus Caster Companion (GoICC, GoICasterCompanion) - formerly GoIStreamToolRedux - is a cross-platform application designed to assist <a href="https://gunsoficarus.com/" target="_blank">Guns of Icarus</a> tournament broadcasters with their interfaces and overlays. It includes UI management for teams, maps, timers, and tournament info that all ties into an output folder, providing OBS (or other casting tool) with static file paths to read from. The GoICC project started as an adaptation of the original closed-course Windows application <a href="https://urzlab.com/goistreamtool/" target="_blank">GoiStreamTool</a> by GoIO player and caster Urz.</p>
<p>Guns of Icarus Caster Companion - formerly GoIStreamToolRedux - is a cross-platform application designed to assist <a href="https://gunsoficarus.com/" target="_blank">Guns of Icarus</a> tournament broadcasters with their interfaces and overlays. It includes UI management for teams, maps, timers, and tournament info that all ties into an output folder, providing OBS (or other casting tool) with static file paths to read from. The GoICC project started as an adaptation of the original closed-course Windows application <a href="https://urzlab.com/goistreamtool/" target="_blank">GoiStreamTool</a> by GoI player and caster Urz.</p>
<p>GoICC is a free and open-source software. As such, community contributions to the application source and its supporting material is welcome, and feedback is appreciated to help grow the application. See <a href="#contributing">contributing</a> for more info.</p>
<p class="text-warning">The software is still in development and testing phases. No future download is guaranteed to be more stable than past downloads, until release <em>v1.0</em>. Backing up input and output folders is recommended.</p>

<h1 id="features" class="pt-5">Features</h1>

<h3 id="team-management">Team Management</h3>
<p>Select up to four currently playing teams, each with thier own name, logo, and abbreviation.</p>
<img class="img-fluid" width="812" alt="image" src="https://user-images.githubusercontent.com/45409688/123657395-be577600-d7fe-11eb-95a4-39777cbddb40.png">
<p>Select up to four currently playing teams, each with their own name, logo, and abbreviation.</p>
<img class="img-fluid" width="812" alt="image" src="img/team_page.png">

<h3 id="timers">Lobby Timer & Custom Timer</h3>
<p>Control both a lobby timer, and a (<em>coming soon</em>) fully custom timer.</p>
<img class="img-fluid" width="812" alt="image" src="https://user-images.githubusercontent.com/45409688/123658148-7553f180-d7ff-11eb-921b-7f8feea7432d.png">
<p>Control a fully-featured timer, with quick switching between two timer lengths</p>
<img class="img-fluid" width="812" alt="image" src="img/timer_page.png">

<h3 id="map-management">Map Management</h3>
<p>Select between any of the Guns of Icarus maps. <em>Additional map meta-data (size, gamemode) coming in future release.</em></p>
<img class="img-fluid" width="812" alt="image" src="https://user-images.githubusercontent.com/45409688/123658468-bf3cd780-d7ff-11eb-874f-103d35e600bd.png">
<p>Select between any of the Guns of Icarus maps, along with their spawns (see input folder for pre-built maps). <em>Additional map meta-data (size, gamemode) coming in future release.</em></p>
<img class="img-fluid" width="812" alt="image" src="img/map_page.png">

<h3 id="tournament-info">Tournament Info</h3>
<p>Set the current tournament number. <em>More tournament features are planned for future.</em></p>
<img class="img-fluid" width="812" alt="image" src="https://user-images.githubusercontent.com/45409688/123658789-09be5400-d800-11eb-9591-3e6c2b1f5b0d.png">
<img class="img-fluid" width="812" alt="image" src="img/tournament_page.png">
<div id="downloads" class="mb-5"></div>


<h1 class="pt-5">Downloads</h1>
<div class="row">
<div class="col">
<h4 class="display-4">Release v0.5.1</h4>
<h4 class="display-4">Release v1.0.0</h4>
<p class="lead">Solely the native installer - no input folder included</p>
<ul class="list-group list-group-flush">
<li class="list-group-item">Mac: <a href="https://github.com/RVRX/GoICasterCompanion/releases/download/0.5.1/GoICC.v0.5.1.dmg">GoICC.v0.5.1.dmg</a></li>
<li class="list-group-item">Windows: <a href="https://github.com/RVRX/GoICasterCompanion/releases/download/0.5.1/GoICC_Setup_v0.5.1.exe">GoICC_Setup_v0.5.1.exe</a></li>
<li class="list-group-item">Packaged Jar: <a href="https://github.com/RVRX/GoICasterCompanion/releases/download/0.5.1/GoICC-0.5.1.jar">GoICC-0.5.1.jar</a></li>
<li class="list-group-item">Mac: <a href="https://github.com/RVRX/GoICasterCompanion/releases/download/1.0.0/GoICC.v1.0.0.dmg">GoICC.v1.0.0.dmg</a></li>
<li class="list-group-item">Windows: <a href="https://github.com/RVRX/GoICasterCompanion/releases/download/1.0.0./GoICC_Setup_v1.0.0.exe">GoICC_Setup_v1.0.0.exe</a></li>
<li class="list-group-item">Packaged Jar: <a href="https://github.com/RVRX/GoICasterCompanion/releases/download/1.0.0/GoICC-1.0.0.jar">GoICC-1.0.0.jar</a></li>
</ul>
</div>
<div class="col">
<h4 class="display-4">Map & Team Bundle</h4>
<p class="lead">Pre-built input folder</p>
<p class="lead">Pre-built input folder containing <em>high</em> quality map and spawn map images. Recommended for all new users</p>
<ul class="list-group list-group-flush">
<li class="list-group-item">Input Folder: <a href="http://skyborne.net/input.zip" target="_blank">input.zip</a></li>
<li class="list-group-item"><h6 class="mt-4 text-primary"><a href="https://github.com/RVRX/GoICasterCompanion/releases">For the <em>latest</em> releases (and for patch notes), please check the GitHub</a>.</h6>
</li>
<li class="list-group-item"><em>Thanks to DKR for help procuring updated maps, and creating spawn location images for each.</em></li>
</ul>
</div>
<div class="text-center">
<h6 class="mt-4 text-primary"><a href="https://github.com/RVRX/GoICasterCompanion/releases">For the <em>latest</em> releases (and for patch notes), please check the GitHub</a>.</h6>
</div>
</div>


Expand All @@ -193,7 +194,7 @@ <h2 id="usage-overview">Overview</h2>
This is to allow casters to queue up content before saving it.
</p>
<p>
The following sections will detail the contents of the <code>input</code> and <code>output</code> folders, and provide suggestions for their use.
The following sections will detail the contents of the <code>input</code> and <code>output</code> folders, and provide documentation for their use.
</p>

<h2 id="input">Input</h2>
Expand All @@ -203,16 +204,16 @@ <h2 id="input">Input</h2>
After initial setup, the only file an average user will modify would be the <code>teams.txt</code> and corresponding file in <code>team_logos</code>.
<u>Any files marked with an (<span class="text-secondary">*</span>), are recommended to be left alone</u>.
</p>
<h4>map_images directory<span class="text-secondary">*</span></h4>
<h4><code>map_images/</code><span class="text-secondary">*</span></h4>
<p>
The map images folder contains an <b>image of each map</b>, along with an <b>image of each spawn (optional)</b>. Each file is named specifically with the same name as found in the maps.txt, along with the file's extension. Spawn images are names the same but with "<code> Spawn</code>" appended before the file extension.
Any inconsistencies between the map image name and the name as found in <code>maps.txt</code> will result in undefined behaviour.
</p>
<h4>maps.txt<span class="text-secondary">*</span></h4>
<h4><code>maps.txt</code><span class="text-secondary">*</span></h4>
<p>The maps text file <b>contains the exact name of each map</b>. See <code>map_images</code> for more details.</p>
<h4>team_logos directory</h4>
<h4><code>team_logos/</code></h4>
<p>The team logos folder contains an <b>image for each team</b>, preferably in PNG format, but the application can handle some conversions. Each file is <em>named specifically with the same name as found in the teams.txt</em> (the section before the "|" on each line). Any inconsistencies between a team's logo name and the name as found in teams.txt will result in no image being displayed for that team.</p>
<h4>teams.txt</h4>
<h4><code>teams.txt</code></h4>
<p>
<b>Contains the name an abbreviation of each team</b>. formatted as:
<pre>teamName1|ABBREVIATION1<br>teamName2|ABBREVIATION2</pre>
Expand All @@ -221,27 +222,59 @@ <h4>teams.txt</h4>

<h2 id="output">Output</h2>
<p>The <code>output</code> folder is <b>where the application does its changes, and where the end-user points their streaming tool for source files</b>.</p>
<h4>Map.png</h4>
<h4><code>Map.png</code></h4>
<p>Image of the current map.</p>
<h4>Map.txt</h4>
<h4><code>Map.txt</code></h4>
<p>Name of the current map.</p>
<h4>Team<var>X</var>.png</h4>
<h4><code>Team<var>X</var>.png</code></h4>
<p>Logo for team <var>X</var>.</p>
<h4>Team<var>X</var>.txt</h4>
<h4><code>Team<var>X</var>.txt</code></h4>
<p>Name of team <var>X</var>.</p>
<h4>TeamShort<var>X</var>.txt</h4>
<h4><code>TeamShort<var>X</var>.txt</code></h4>
<p>Abbreviated name of team <var>X</var>. <em>Often overlain on the top right team color ribbons to show which team is which.</em></p>
<h4>Timer.txt</h4>
<h4><code>Timer.txt</code></h4>
<p>Current timer value in <code>MM:SS</code> format.</p>
<h4>TournamentNumber.txt</h4>
<p>The current tournament number. <em>e.g., to be appended to the end of "SCS: #", to get "SCS: #336".</em></p>
<h4><code>TournamentName.txt</code></h4>
<p>The current tournament name. e.g., "SCS" or "Sunday Community Skirmish."</p>
<h4><code>TournamentNumber.txt</code></h4>
<p>The current tournament number. <em>e.g., to be appended to the end of "SCS: #", to get "SCS: #336."</em></p>

<h2 id="application-usage" class="pt-4">Application Usage</h2>
<h3 id="teams">Teams</h3>
<p>
The Teams page contains dropdowns for four different teams. Upon choosing a team a preview will be given of their logo and short name.
The selected teams will not be saved to disk until the “Save” button is clicked or <kbd>&#8984; + S</kbd> or <kbd>Ctrl + S</kbd> is pressed. Not all dropdowns have to have a selection, some can be left blank.
</p>
<h3 id="map">Map</h3>
<p>
The Map page contains a singular dropdown listing all of the maps in the input folder.
Ticking the show spawn checkbox will swap over to the spawn version of the map.
In order for a map to show up in the dropdown it must be in both the Map.txt file, and have a PNG in the <code>map_images</code> folder.
</p>
<h3 id="timer">Timer</h3>
<p>
The main controls for the timer at at the top of the page. To customize the length of the timer, edit either of the integer spinners at the bottom.
Make sure to save your changes with the “save” button or <kbd>&#8984; + S</kbd> or <kbd>Ctrl + S</kbd>. Once you have the changes saved, set the switch to the timer length you would like to use.
An example usage for this dual-timer system would be having a lobby timer and a game timer that can be set beforehand, and quickly swapped between. Note that only one timer may be running at a time and their states are not saved between runs. If you switch timers you must either ‘stop’ then ‘start’ or just ‘restart’ the timer before the new timer starts. The timer will continue running in the background as long as the application is not closed - so feel free to change tabs and edit other aspects while the timer is counting down.
</p>
<h3 id="tournament">Tournament (Tourney)</h3>
<p>
Simple enough, the two editable fields here change the <code>output/TournamentName.txt</code> and <code>output/TournamentNumber.txt</code> files.
</p>
<h3 id="settings">Settings</h3>
<p>
The settings page shows some basic information about the setup of the app and the machine it is running on. If you ever want to see the version of the app you are running, you can see that here.
The numerous buttons on the page allow you to open, set, and reset, the input and output folders separately. It is one-hundred percent valid to have completely different paths for your input and output folder. Just remember that changing your I/O folders does not carry the data to the new location – that must be done manually by you. If the new location does not contain the right files, the app will create an empty file in its place.
<img class="img-fluid" width="512" src="https://user-images.githubusercontent.com/45409688/125149291-2e6ed180-e106-11eb-920b-6f915a57a8ee.png"><br>
The theme switcher allows you to easily change between different looks for the app. The “Skyborne Light” theme is the default and most actively updated theme, followed by “Skyborne Dark,” and the original app theme, “Monochrome Ocean.”
</p>

<br>
<h1 id="contributing" class="pt-5">Contributing</h1>
<h3>Giving Feedback</h3>
<p>Reporting bugs, requesting features, and suggesting changes, can all be done through the <a href="https://github.com/RVRX/GoICasterCompanion/issues">GitHub Issues page</a> by creating a <a href="https://github.com/RVRX/GoICasterCompanion/issues/new">new issue</a> <em>(a GitHub account is required).</em></p>
<h3>Contributing to source</h3>
<p>PRs are encouraged.</p>
<p>Contributions from anyone with experience in Java (esp. File IO), JavaFX, FXML/XML, CSS, or generating/compiling native executables. Pull Requests are encouraged.</p>
</div>
</div>
</div>
Expand Down
1 change: 0 additions & 1 deletion docs/input/TimerLength.txt

This file was deleted.

Binary file modified docs/input/map_images/Alleron Affray Spawn.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified docs/input/map_images/Ashen Scuffle Spawn.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified docs/input/map_images/Assault on Kinforth Spawn.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified docs/input/map_images/Battle on the Dunes Spawn.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file removed docs/input/map_images/Canyon Ambush Spawn copy.png
Binary file not shown.
Binary file modified docs/input/map_images/Canyon Ambush Spawn.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified docs/input/map_images/Clash at Blackcliff Spawn.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified docs/input/map_images/Crown Gambit Spawn.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified docs/input/map_images/Crown Gambit.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified docs/input/map_images/Derelict Deception Spawn.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified docs/input/map_images/Duel at Dawn Spawn.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified docs/input/map_images/Fight over Firnfeld.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file removed docs/input/map_images/Firnfeld Spawn.png
Binary file not shown.
Binary file modified docs/input/map_images/Graveyard Rumble Spawn.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified docs/input/map_images/Misty Mutiny Spawn.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified docs/input/map_images/Northern Fjords Spawn.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified docs/input/map_images/Oblivion South Spawn.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified docs/input/map_images/Paritan Rumble Spawn.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified docs/input/map_images/Thornhold Throwdown Spawn.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified docs/input/map_images/Water Hazard Spawn.png
49 changes: 46 additions & 3 deletions src/main/java/goistreamtoolredux/App.java
Original file line number Diff line number Diff line change
Expand Up @@ -12,16 +12,22 @@
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.scene.control.Alert;
import javafx.scene.control.Label;
import javafx.scene.control.TextArea;
import javafx.scene.image.Image;
import javafx.scene.layout.GridPane;
import javafx.scene.layout.Priority;
import javafx.stage.Stage;

import java.io.IOException;
import java.io.PrintWriter;
import java.io.StringWriter;

public class App extends Application {

//current application version. User for update checking
//todo, update this every release
public static final String version = "0.5.1";
public static final String version = "1.0.0";

/**The JavaFX application's primary stage. All Scenes are built upon this stage*/
private static Stage primaryStage;
Expand Down Expand Up @@ -63,6 +69,8 @@ public void start(Stage primaryStage) throws IOException {
System.out.println("Icons Added");

primaryStage.setScene(new Scene(root, 700, 400)); // 600 (page) + 100 (sidebar) by 400
primaryStage.setOpacity(0);
primaryStage.show();

//manual application delay for setup (allow user to disable), and preloader calls
Task<Void> sleeper = new Task<Void>() {
Expand All @@ -81,7 +89,7 @@ public void handle(WorkerStateEvent event) {
//notify preloader, so that it may close
notifyPreloader(new Preloader.ProgressNotification(1));
//show application stage
primaryStage.show();
primaryStage.setOpacity(1);
}
});
new Thread(sleeper).start();
Expand All @@ -95,5 +103,40 @@ public void stop() {
LobbyTimer.getInstance().getCurrentTimer().cancel();
}
}

public static void showExceptionDialog(Exception exception, String headerText, String contentText) {
Alert alert = new Alert(Alert.AlertType.ERROR);
alert.setTitle("Exception Dialog");
alert.setHeaderText(headerText);
alert.setContentText(contentText);

// Create expandable Exception.
StringWriter sw = new StringWriter();
PrintWriter pw = new PrintWriter(sw);
exception.printStackTrace(pw);
String exceptionText = sw.toString();

Label label = new Label("The exception stacktrace was:");

TextArea textArea = new TextArea(exceptionText);
textArea.setEditable(false);
textArea.setWrapText(true);

textArea.setMaxWidth(Double.MAX_VALUE);
textArea.setMaxHeight(Double.MAX_VALUE);
GridPane.setVgrow(textArea, Priority.ALWAYS);
GridPane.setHgrow(textArea, Priority.ALWAYS);

GridPane expContent = new GridPane();
expContent.setMaxWidth(Double.MAX_VALUE);
expContent.add(label, 0, 0);
expContent.add(textArea, 0, 1);

// Set expandable Exception into the dialog pane.
alert.getDialogPane().setExpandableContent(expContent);

System.out.println("posting");
alert.showAndWait();
}
}

Loading

0 comments on commit 7fd2e30

Please sign in to comment.