ViewVC Help
View File | Revision Log | View Changeset | Root Listing
root/Oni2/AE/Installer/trunk/source/subs.cpp
Revision: 290
Committed: Sat Apr 4 04:13:36 2009 UTC (16 years, 6 months ago) by gumby
Content type: text/x-c++src
File size: 2959 byte(s)
Log Message:

File Contents

# Content
1 /*
2 AE\Mod Installer.
3
4 Needs getPackages() now!
5 */
6
7 #include <string>
8 #include <iostream>
9 #include "methods.h"
10 #include <vector>
11
12 #include <errno.h>
13 #include "Include\dirent.h"
14 #include <stdio.h>
15 #include <stdlib.h>
16
17
18 using namespace std;
19 bool FALSE = 0;
20 bool TRUE = 0;
21
22
23 int main(void)
24 {
25
26 // SetConsoleTitle("AE Installer"); windows junk, convert to SDL
27 // system("color 0A");
28
29 cout << "\nWelcome to the AE installer!\n";
30
31 cout << "\nWhat would you like to do?\n";
32
33 return mainMenu();
34 }
35
36 vector<ModPackage> getPackages(void) {
37 vector<ModPackage> packages;
38 packages.reserve(256); //thats 63 or 64 pointers to packages...i think. :P Reserving this improves performance when we add new pointers
39
40 #ifdef WIN32
41 string path = "K:\\Oni\\edition\\install\\packages"; //only for my build. :P
42 #else
43 string path = "K:\\Oni\\edition\\install\\packages"; //change this, 'scen.
44 #endif
45
46 string filename = "\0";
47 string MODINFO_CFG = "\\Mod_Info.cfg";
48 DIR *pdir;
49 struct dirent *pent;
50
51 pdir = opendir( path.c_str() ); //"." refers to the current dir
52 if (!pdir){
53 printf ("opendir() failure; terminating");
54 exit(1);
55 }
56 errno=0;
57 while ((pent=readdir(pdir))){
58
59
60 filename = path + '\\' + pent->d_name + MODINFO_CFG;
61
62 //cout << filename << "\n";
63
64 if (FILE * file = fopen( filename.c_str(), "r"))
65 {
66 //do stuff like adding to vector :P
67
68 cout << pent->d_name << "\n";
69
70 //would prefer to push a pointer to a package, but this will do for now
71 //packages.push_back(modelfileToModPackage(file *))
72 fclose(file);
73 }
74
75 }
76
77
78 if (errno){
79 printf ("readdir() failure; terminating");
80 exit(1);
81 }
82 closedir(pdir);
83
84
85 return packages;
86 }
87
88 int mainMenu(void) {
89 int choice = '0';
90 bool ok = FALSE;
91 cout << "1. Install new packages\n";
92 cout << "2. Uninstall packages\n";
93 cout << "3. See what is installed\n";
94 cout << "4. About AE\n";
95 cout << "5. Quit\n\n";
96
97 do {
98 ok = TRUE;
99 choice = cin.get();
100 cin.ignore(1);
101 switch(choice) {
102 case '1':
103 installPackages();
104 break;
105 case '2':
106 uninstallPackages();
107 break;
108 case '3':
109 //listInstalledPackages();
110 break;
111 case '5':
112 return 0;
113 default:
114 ok = FALSE;
115 }
116 } while(ok == FALSE);
117 return 0;
118 }
119
120
121 void installPackages() {
122 ModPackage package;
123 vector<string> installed_packages;
124 vector<ModPackage> packages; // = getPackages()
125 vector<ModPackage>::iterator iter;
126 iter = packages.begin();
127
128 getPackages();
129
130 if (packages.empty()) {
131 cout << "Error: You have no packages!\n";
132 return;
133 }
134
135 cout << "Detecting installed packages...\n";
136
137 for(int i = 0; i < packages.size();) {
138 package = *iter;
139 if(!package.isInstalled){
140 packages.erase(iter);
141 }
142 else {
143 i++;
144 iter++;
145 }
146
147 }
148
149 if (packages.empty()) {
150 cout << "Error: You have no installed packages!\n";
151 return;
152 }
153
154 //listInstalledPackages(packages);
155
156 }
157 void uninstallPackages() {
158 ;
159 }
160
161 void getInstalledPackages() {
162 ;
163 }

Properties

Name Value
svn:mergeinfo