package com.kolakcc.loljclient;
import java.io.File;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;
import com.gvaneyck.rtmp.LoLRTMPSClient;
import com.kolakcc.loljclient.controller.AboutController;
import com.kolakcc.loljclient.controller.ChampionDetailedController;
import com.kolakcc.loljclient.controller.ChampionsController;
import com.kolakcc.loljclient.controller.DebugController;
import com.kolakcc.loljclient.controller.CustomGameListController;
import com.kolakcc.loljclient.controller.CustomGameLobbyController;
import com.kolakcc.loljclient.controller.FriendsListController;
import com.kolakcc.loljclient.controller.LoginController;
import com.kolakcc.loljclient.controller.MainController;
import com.kolakcc.loljclient.controller.ProfileController;
import com.kolakcc.loljclient.controller.ReceivePacketController;
import com.kolakcc.loljclient.controller.StoreController;
import com.kolakcc.loljclient.model.Champion;
import com.kolakcc.loljclient.model.CustomGameListItem;
import com.kolakcc.loljclient.model.LoLNewsItem;
import com.kolakcc.loljclient.util.Configuration;
import com.kolakcc.loljclient.util.FileSystem;
import com.kolakcc.loljclient.view.SettingsView;
import com.kolakcc.loljclient.view.WebView;
import com.kolakcc.swf.SWFExtractor;
public class StartupClass {
public static LoLRTMPSClient Client;
static LoginController loginController;
static MainController mainController;
static CustomGameListController customGameListController;
static FriendsListController friendsListController;
static ChampionsController championsController;
static AboutController aboutController;
static StoreController storeController;
static DebugController consoleController;
public static CustomGameLobbyController customGameLobbyController;
public static void LoggedIn() {
loginController.dispose();
mainController = new MainController();
Client.setReceiveHandler(new ReceivePacketController());
}
public static void main(String[] args) {
String lafConfiguration = Configuration.getDefaultLAF();
if (lafConfiguration.equals("")) Configuration.setDefaultLAF(UIManager.getSystemLookAndFeelClassName());
try {
UIManager.setLookAndFeel(lafConfiguration);
} catch (Exception e) {
e.printStackTrace();
System.err.printf("L&F by the name of %s could not found %n", lafConfiguration);
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (Exception e1) {
e1.printStackTrace();
System.err.println("No System Look and Feel found, continuing with default...");
}
}
SwingUtilities.invokeLater(new Runnable() {
public void run() {
//Do some basic checks first - can League be found? are the SWF files extracted?
consoleController = new DebugController();
if (!Configuration.checkLeagueDirectory()) {
JFrame dummy = new JFrame();
JOptionPane.showMessageDialog(dummy, "Your League of Legends directory could not be found.", "Error", JOptionPane.ERROR_MESSAGE);
JFileChooser leagueFileChooser = new JFileChooser();
leagueFileChooser.setDialogTitle("Select your League of Legends Directory.");
leagueFileChooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
leagueFileChooser.showOpenDialog(dummy);
File selectedLeagueDirectory = leagueFileChooser.getSelectedFile();
boolean found = false;
for (File checkFile : selectedLeagueDirectory.listFiles()) {
if (checkFile.getName().equals("lol.launcher.exe")) {
System.out.println("Found lol.launcher.exe.");
found = true;
break;
}
if (checkFile.getName().equals("Play League Of Legends.app")) {
System.out.println("Found Play League Of Legends.app.");
found = true;
break;
}
}
if (found) {
System.out.println("This seems to be a valid league directory.");
Configuration.setLeagueDirectory(selectedLeagueDirectory);
loginController = new LoginController();
} else {
JOptionPane.showMessageDialog(dummy, "This directory doesn't seem to be a valid League of Legends Directory. Does it have lol.launcher.exe in it?.", "Error", JOptionPane.ERROR_MESSAGE);
System.exit(0);
}
}
File itemsFolder = FileSystem.getFile("app://img/items/");
if (itemsFolder.list().length < 10) {
new SWFExtractor();
}
loginController = new LoginController();
}
});
}
public static void openAbout() {
aboutController = new AboutController();
}
public static void openChampionDetails(Champion c) {
new ChampionDetailedController(c);
}
public static void openChampions() {
new ChampionsController();
}
public static void openCustomGameLobbyController(CustomGameListItem game) {
customGameLobbyController = new CustomGameLobbyController(game);
}
public static void openCustomGames() {
customGameListController = new CustomGameListController();
}
public static void openFriends(String username, String password) {
friendsListController = new FriendsListController(username, password);
}
public static void openNewsItem(LoLNewsItem item) {
new WebView(item);
}
public static void openProfile() {
new ProfileController();
}
public static void openSettings() {
new SettingsView();
}
public static void openStore() {
storeController = new StoreController();
}
}