source: AE/Installer/trunk/source/subs.cpp @ 292

Last change on this file since 292 was 292, checked in by gumby, 15 years ago

Updatezors

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