From dcf19c69e14a741d757d1eb89f724c200709e809 Mon Sep 17 00:00:00 2001 From: 8bitprodigy Date: Sun, 1 Dec 2013 19:25:01 -0500 Subject: [PATCH] Added code files for initial commit. HASHTAG YOLO SWAG --- README.md | 47 ++++++- imgs.qrc | 7 + iol.png | Bin 0 -> 6778 bytes iolICO.png | Bin 0 -> 1390 bytes ioq3.png | Bin 0 -> 5567 bytes ioq3ICO.png | Bin 0 -> 1211 bytes ioquaktree.png | Bin 0 -> 4053 bytes main.cpp | 11 ++ mainwindow.cpp | 218 +++++++++++++++++++++++++++++ mainwindow.h | 59 ++++++++ mainwindow.ui | 373 +++++++++++++++++++++++++++++++++++++++++++++++++ 11 files changed, 712 insertions(+), 3 deletions(-) create mode 100644 imgs.qrc create mode 100644 iol.png create mode 100644 iolICO.png create mode 100644 ioq3.png create mode 100644 ioq3ICO.png create mode 100644 ioquaktree.png create mode 100644 main.cpp create mode 100644 mainwindow.cpp create mode 100644 mainwindow.h create mode 100644 mainwindow.ui diff --git a/README.md b/README.md index 7475685..20174d4 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,45 @@ -launch -====== +THE AS OF YET NOT OFFICIALLY NAMED LAUNCHER FOR IOQ3 +==================================================== -The launcher for ioquake3. +The launcher for ioquake3. Built with QT, written in C++ + +ROADMAP +======= + +Required features to reach: +--------------------------- + +Version 1.0(alpha) + +launch the ioquake3 program - DONE +launch quake3 at different resolutions - DONE +download/install patches for quake3 - not yet implemented +display EULA before downloading q3 patches - not yet implemented + + +2.0(beta) + +be able to download/install ioquake3 +be able to copy quake3 data from retail CD +be able to update ioquake3 +be able to update self +initial support for other operating systems - STARTED(Linux) + +3.0(Gold) + +config launch options +config player options +WYSIWYG name config +work with steam installation of quake3 +backup/save/swap configs +support for Linux, Windows, and OSX + +4.0(PLATINUM) + +support for other games (Tremulous/SmokinGuns/TurtleArena/etc.) +automated mod switcher +builtin server browser +integrated newsfeed +LAN support +preload mods/maps/content via internet protocols +uri integration (q3://, trem://, ioq3://, etc.) diff --git a/imgs.qrc b/imgs.qrc new file mode 100644 index 0000000..8b1d029 --- /dev/null +++ b/imgs.qrc @@ -0,0 +1,7 @@ + + + ioquaktree.png + iol.png + iolICO.png + + diff --git a/iol.png b/iol.png new file mode 100644 index 0000000000000000000000000000000000000000..a202e17aa59812c24c72164ce24ed4f6e6d9dd08 GIT binary patch literal 6778 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 B#Vh~- literal 0 HcmV?d00001 diff --git a/iolICO.png b/iolICO.png new file mode 100644 index 0000000000000000000000000000000000000000..d82e18bdf0c2f05c8e8b7cabf13f741246e6b6ad GIT binary patch literal 1390 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 literal 0 HcmV?d00001 diff --git a/ioquaktree.png b/ioquaktree.png new file mode 100644 index 0000000000000000000000000000000000000000..794e3157f64893f6072ed66272e8b4a8aa3121d8 GIT binary patch literal 4053 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 literal 0 HcmV?d00001 diff --git a/main.cpp b/main.cpp new file mode 100644 index 0000000..be7af75 --- /dev/null +++ b/main.cpp @@ -0,0 +1,11 @@ +#include +#include "mainwindow.h" + +int main(int argc, char *argv[]) +{ + QApplication a(argc, argv); + ioLaunch w; + w.show(); + + return a.exec(); +} diff --git a/mainwindow.cpp b/mainwindow.cpp new file mode 100644 index 0000000..100154c --- /dev/null +++ b/mainwindow.cpp @@ -0,0 +1,218 @@ +#include "mainwindow.h" +#include "ui_mainwindow.h" + +ioLaunch::ioLaunch(QWidget *parent) : + QMainWindow(parent), + ui(new Ui::ioLaunch) +{ + ui->setupUi(this); + resOption = ""; + screenOption = ""; + +} + +ioLaunch::~ioLaunch() +{ + delete ui; +} + +void ioLaunch::on_btnLaunch_clicked() +{ +#ifdef Q_OS_WIN32 + if(ioq3 == NULL) + { + msg.setText("Please select your Quake3 directory"); + msg.exec(); + QString path = QFileDialog::getExistingDirectory (this, tr("Directory"), directory.path()); + path.replace(" ", "\" \""); + ioq3 = path + "\\ioquake3.x86.exe +set r_mode -1"; + } + +#elif Q_OS_X11 + ioq3 = "ioquake3 +set r_mode -1"; +#elif Q_OS_MAC + ioq3 = "open -a ioquake3 +set r_mode -1"; +#endif + + + if(ioWedited == true && ioHedited == true) + { + + resOption = " +set r_customwidth " + QString::number(ioWidth) + " +set r_customheight " + QString::number(ioHeight); + + } + if(resOption == NULL) + { + resOption = ""; + } + if(screenOption == NULL) + { + screenOption = ""; + } + + myProcess.start(ioq3+resOption+screenOption); + if(!myProcess.waitForStarted()) + { + ioq3Failed.setText("ioquake3 failed to start!\nIs it installed?\n"); + ioq3Failed.exec(); + } +} + +void ioLaunch::on_cbResolution_highlighted(int index) +{ + ioWedited = false; + ioHedited = false; +} + +void ioLaunch::on_cbResolution_currentIndexChanged(int index) +{ + ioWedited = false; + ioHedited = false; + switch(index) + { + case 0: + { + resOption = ""; + break; + } + case 1: + { + ioWidth = QApplication::desktop()->screenGeometry().width(); + ioHeight = QApplication::desktop()->screenGeometry().height(); + + resOption = " +set r_customwidth " + QString::number(ioWidth) + " +set r_customheight " + QString::number(ioHeight); + break; + } + case 2: + { + resOption = " +set r_customwidth 320 +set r_customheight 240"; + break; + } + case 3: + { + resOption = " +set r_customwidth 400 +set r_customheight 300"; + break; + } + case 4: + { + resOption = " +set r_customwidth 512 +set r_customheight 384"; + break; + } + case 5: + { + resOption = " +set r_customwidth 640 +set r_customheight 480"; + break; + } + case 6: + { + resOption = " +set r_customwidth 800 +set r_customheight 600"; + break; + } + case 7: + { + resOption = " +set r_customwidth 960 +set r_customheight 720"; + break; + } + case 8: + { + resOption = " +set r_customwidth 1024 +set r_customheight 3768"; + break; + } + case 9: + { + resOption = " +set r_customwidth 1152 +set r_customheight 864"; + break; + } + case 10: + { + resOption = " +set r_customwidth 1280 +set r_customheight 1024"; + break; + } + case 11: + { + resOption = " +set r_customwidth 1600 +set r_customheight 1200"; + break; + } + case 12: + { + resOption = " +set r_customwidth 2048 +set r_customheight 1536"; + break; + } + case 13: + { + resOption = " +set r_customwidth 856 +set r_customheight 480"; + break; + } + case 14: + { + resOption = " +set r_customwidth 1280 +set r_customheight 720"; + break; + } + case 15: + { + resOption = " +set r_customwidth 1920 +set r_customheight 1080"; + break; + } + case 16: + { + resOption = " +set r_customwidth 1280 +set r_customheight 800"; + break; + } + default: + { + resOption = ""; + break; + } + } +} + +void ioLaunch::on_rbFull_toggled(bool checked) +{ + if(checked) + { + screenOption = " +set r_fullscreen 1"; + } +} + +void ioLaunch::on_rbWin_toggled(bool checked) +{ + if(checked) + { + screenOption = " +set r_fullscreen 0"; + } +} + +void ioLaunch::on_rbDefault_toggled(bool checked) +{ + if(checked) + { + screenOption = ""; + } +} + + +void ioLaunch::on_sbWidth_valueChanged(int arg1) +{ + ioWidth = 0; + if(arg1 >= 0) + { + ioWidth = arg1; + ioWedited = true; + } + else{ + ioWedited = false; + } +} + +void ioLaunch::on_sbHeight_valueChanged(int arg1) +{ + ioHeight = 0; + if(arg1 >= 0) + { + ioHeight = arg1; + ioHedited = true; + } + else{ + ioHedited = false; + } +} diff --git a/mainwindow.h b/mainwindow.h new file mode 100644 index 0000000..6f550f0 --- /dev/null +++ b/mainwindow.h @@ -0,0 +1,59 @@ +#ifndef MAINWINDOW_H +#define MAINWINDOW_H + +#include +#include +#include +#include +#include +#include +#include +#include + +namespace Ui { +class ioLaunch; +} + +class ioLaunch : public QMainWindow +{ + Q_OBJECT + +public: + explicit ioLaunch(QWidget *parent = 0); + ~ioLaunch(); + +private slots: + void on_btnLaunch_clicked(); + + + void on_cbResolution_highlighted(int index); + + void on_cbResolution_currentIndexChanged(int index); + + void on_rbFull_toggled(bool checked); + + void on_rbWin_toggled(bool checked); + + void on_rbDefault_toggled(bool checked); + + void on_sbWidth_valueChanged(int arg1); + + void on_sbHeight_valueChanged(int arg1); + +private: + Ui::ioLaunch *ui; + QProcess myProcess; + QString ioq3; + QString resOption; + QString screenOption; + QMessageBox msg; + QMessageBox ioq3Failed; + QDir directory; + int ioWidth; + int ioHeight; + bool ioWedited; + bool ioHedited; + +}; + +#endif // MAINWINDOW_H diff --git a/mainwindow.ui b/mainwindow.ui new file mode 100644 index 0000000..a6ca48c --- /dev/null +++ b/mainwindow.ui @@ -0,0 +1,373 @@ + + + ioLaunch + + + true + + + + 0 + 0 + 450 + 360 + + + + + 4 + 2 + + + + + 450 + 360 + + + + + 450 + 360 + + + + + 1 + 1 + + + + + 450 + 360 + + + + + Courier New + + + + ioLaunch 0.2 + + + + :/imgs/iolICO.png:/imgs/iolICO.png + + + + + + + + 0 + 0 + + + + + 1 + 1 + + + + + + 0 + 279 + 451 + 61 + + + + font: 24pt "Arial Black"; +color: #7fa0d3; + + + Launch + + + + + + -10 + 0 + 471 + 281 + + + + + 451 + 0 + + + + #tabMain{ + background-image: url(:/imgs/iol.png); + background-repeat: no-repeat; + background-position:center center; +} +QTabBar::tab{ + width: 150px; +} +QTabWidget::tab-bar{ + alignment: center; +} + + + 0 + + + + + 445 + 0 + + + + Qt::LeftToRight + + + Launch + + + + + Settings + + + + + 110 + 40 + 91 + 21 + + + + Default + + + true + + + + + + 90 + 10 + 141 + 24 + + + + + Default + + + + + Native + + + + + 320x240 + + + + + 400x300 + + + + + 512x384 + + + + + 640x480 + + + + + 800x600 + + + + + 960x720 + + + + + 1024x768 + + + + + 1152x864 + + + + + 1280x1024 + + + + + 1600x1200 + + + + + 2048x1536 + + + + + 856x480(16:9) + + + + + 1280x720(16:9) + + + + + 1920x1080(16:9) + + + + + 1280x800(16:10) + + + + + + + 350 + 10 + 61 + 25 + + + + 100000 + + + + + + 310 + 40 + 121 + 21 + + + + Windowed + + + + + + 260 + 10 + 61 + 25 + + + + 100000 + + + + + + 10 + 10 + 81 + 21 + + + + Resolution + + + + + + 10 + 34 + 111 + 31 + + + + Screen Mode + + + + + + 240 + 10 + 16 + 31 + + + + W + + + + + + 200 + 40 + 111 + 21 + + + + FullScreen + + + false + + + + + + 330 + 10 + 16 + 31 + + + + H + + + + + + Rend2 + + + + + + + + + + + +