123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288 |
- #include "EditorClient.h"
- #include <Klient.h>
- #include "Keys.h"
- #include <Datei.h>
- #include <Zeit.h>
- #include <Bild.h>
- #include <Fortschritt.h>
- #include <Model2D.h>
- #include <GSLDateiV.h>
- using namespace KSGClient;
- class DownloadSound : public GSL::GSLSoundV
- {
- private:
- bool istM;
- int sample;
- __int64 län;
- Network::Klient *k;
- FBalken *f;
- int ref;
- public:
- // Konstruktor
- DownloadSound( Network::Klient *zK, FBalken *zF )
- {
- k = zK;
- f = zF;
- ref = 1;
- }
- // nicht constant
- // GSL
- void playSound() override
- {}
- void setPause( bool p ) override
- {}
- void stopSound() override
- {}
- void warteAufSound( int zeit ) override
- {}
- // Lautstärke: 0 - 0xFFFF
- void setVolume( unsigned int links, unsigned int rechts ) override
- {}
- // zum Speichern
- void open() override
- {
- char m = 0;
- k->getNachrichtEncrypted( &m, 1 );
- istM = ( m == 1 );
- sample = 0;
- k->getNachrichtEncrypted( (char*)&sample, 4 );
- län = 0;
- k->getNachrichtEncrypted( (char*)&län, 8 );
- f->setAktionAnzahl( län );
- }
- int getDaten( char *buffer, int län ) override
- {
- int l = län < this->län ? län : (int)this->län;
- if( !l )
- return -1;
- k->getNachricht( buffer, l );
- this->län -= l;
- f->aktionPlus( l );
- return l;
- }
- void close() override
- {}
- bool istMono() const override
- {
- return istM;
- }
- int getSampleRate() const override
- {
- return sample;
- }
- __int64 getDatLength() const override
- {
- return län;
- }
- // Reference Counting
- GSL::GSLSoundV *getThis() override
- {
- ref++;
- return this;
- }
- GSL::GSLSoundV *release() override
- {
- ref--;
- if( !ref )
- delete this;
- return 0;
- }
- };
- // Inhalt der KSGClient Klasse
- // Konstruktor
- EditorClient::EditorClient( int kId, unsigned short port, char *ip, char *key, unsigned char keyLen )
- {
- ref = 1;
- this->ip = ip;
- this->port = port;
- cId = kId;
- k = 0;
- this->key = new char[ keyLen ];
- memcpy( this->key, key, keyLen );
- this->keyLen = keyLen;
- }
- // Destruktor
- EditorClient::~EditorClient()
- {
- trenne( 1 );
- delete[] key;
- }
- // verbindet sich mit dem zugewiesenen Editor Server
- // Gibt 1 zurück, falls der Vorgang erfolgreich ist, 0 sonnst
- bool EditorClient::verbinde()
- {
- cs.lock();
- if( k )
- {
- cs.unlock();
- return 1;
- }
- k = new Network::Klient();
- int l = 0;
- char *key;
- Keys::getServerKey( &key, l, Keys::EDITOR, Keys::SENDEN );
- k->setSendeKey( key, l );
- delete[] key;
- Keys::getServerKey( &key, l, Keys::EDITOR, Keys::EMPFANGEN );
- k->setEmpfangKey( key, l );
- delete[] key;
- if( k->verbinde( port, ip ) )
- {
- if( k->sendeEncrypted( "\1", 1 ) )
- {
- k->sendeEncrypted( (char*)&cId, 4 );
- char serverReturn = 0;
- k->getNachrichtEncrypted( &serverReturn, 1 );
- if( serverReturn == 3 )
- {
- char byte = 0;
- k->getNachrichtEncrypted( &byte, 1 );
- char *f = new char[ byte + 1 ];
- f[ byte ] = 0;
- k->getNachrichtEncrypted( f, byte );
- err = "error while identifying client Editor Server returned: ";
- err += f;
- delete[]f;
- trenne( 0 );
- cs.unlock();
- return 0;
- }
- k->setSendeKey( this->key, this->keyLen );
- k->setEmpfangKey( this->key, this->keyLen );
- }
- else
- {
- err = "network error while sending to Editor Server";
- k = k->release();
- cs.unlock();
- return 0;
- }
- }
- else
- {
- err = "network error while connecting to Editor Server";
- k = k->release();
- cs.unlock();
- return 0;
- }
- cs.unlock();
- return 1;
- }
- // Erstellt eine neue Karte
- // name: Der Name der Karte
- // spielArt: Die Id des Spiels
- // Gibt 1 zurück, falls der Vorgang erfolgreich ist, 0 sonnst
- bool EditorClient::karteErstellen( char *name, int spielArt )
- {
- cs.lock();
- if( !k )
- {
- err = "Der Client ist nicht verbunden.";
- cs.unlock();
- return 0;
- }
- k->sendeEncrypted( "\xA", 1 );
- char ret = 0;
- k->getNachrichtEncrypted( &ret, 1 );
- if( ret == 1 )
- {
- char l = (char)textLength( name );
- k->sendeEncrypted( &l, 1 );
- k->sendeEncrypted( name, l );
- k->sendeEncrypted( (char*)&spielArt, 4 );
- k->getNachrichtEncrypted( &ret, 1 );
- }
- if( ret == 3 )
- {
- char byte = 0;
- k->getNachrichtEncrypted( &byte, 1 );
- char *f = new char[ byte + 1 ];
- f[ byte ] = 0;
- k->getNachrichtEncrypted( f, byte );
- err = f;
- delete[] f;
- cs.unlock();
- return 0;
- }
- err = "Unbekannter Fehler";
- cs.unlock();
- return 0;
- }
- // lädt eine bestimmte Karte
- // id: Die Id der Karte
- // Gibt 1 zurück, falls der Vorgang erfolgreich ist, 0 sonnst
- bool EditorClient::ladeKarte( int id )
- {
- cs.lock();
- if( !k )
- {
- err = "Der Client ist nicht verbunden.";
- cs.unlock();
- return 0;
- }
- k->sendeEncrypted( "\x6", 1 );
- char ret = 0;
- k->getNachrichtEncrypted( &ret, 1 );
- if( ret == 1 )
- {
- k->sendeEncrypted( (char*)&id, 4 );
- k->getNachrichtEncrypted( &ret, 1 );
- }
- if( ret == 3 )
- {
- char byte = 0;
- k->getNachrichtEncrypted( &byte, 1 );
- char *f = new char[ byte + 1 ];
- f[ byte ] = 0;
- k->getNachrichtEncrypted( f, byte );
- err = f;
- delete[] f;
- cs.unlock();
- return 0;
- }
- cs.unlock();
- return 1;
- }
- // gibt eine Liste mit Abbildern der geladenen Karte zurück
- // name: Enthält nach erfolgreichem Aufruf eine Liste mit Namen der Abbilder
- // datum: Enthält nach erfolgreichem Aufruf eine Liste mit dem Datum der Erstellung für jedes Abbild
- // Gibt die Anzahl der Abbilder zurück
- int EditorClient::getAbbildListe( Framework::RCArray< Framework::Text > *name, Framework::RCArray< Framework::Zeit > *datum )
- {
- cs.lock();
- if( !k )
- {
- err = "Der Client ist nicht verbunden.";
- cs.unlock();
- return 0;
- }
- k->sendeEncrypted( "\x7", 1 );
- char ret = 0;
- k->getNachrichtEncrypted( &ret, 1 );
- if( ret == 1 )
- {
- k->sendeEncrypted( "\x5", 1 );
- k->getNachrichtEncrypted( &ret, 1 );
- if( ret == 1 )
- {
- int anz = 0;
- k->getNachrichtEncrypted( (char*)&anz, 4 );
- for( int i = 0; i < anz; i++ )
- {
- char l = 0;
- k->getNachrichtEncrypted( &l, 1 );
- char *n = new char[ l + 1 ];
- n[ l ] = 0;
- k->getNachrichtEncrypted( n, l );
- name->set( new Text( n ), i );
- delete[] n;
- Zeit *dat = new Zeit();
- int d = 0;
- k->getNachrichtEncrypted( (char*)&d, 4 );
- dat->setJahr( d );
- k->getNachrichtEncrypted( (char*)&d, 4 );
- dat->setMonat( d );
- k->getNachrichtEncrypted( (char*)&d, 4 );
- dat->setTag( d );
- k->getNachrichtEncrypted( (char*)&d, 4 );
- dat->setStunde( d );
- k->getNachrichtEncrypted( (char*)&d, 4 );
- dat->setMinute( d );
- k->getNachrichtEncrypted( (char*)&d, 4 );
- dat->setSekunde( d );
- datum->set( dat, i );
- }
- cs.unlock();
- return anz;
- }
- }
- if( ret == 3 )
- {
- char byte = 0;
- k->getNachrichtEncrypted( &byte, 1 );
- char *f = new char[ byte + 1 ];
- f[ byte ] = 0;
- k->getNachrichtEncrypted( f, byte );
- err = f;
- delete[] f;
- cs.unlock();
- return 0;
- }
- err = "Unbekannter Fehler";
- cs.unlock();
- return 0;
- }
- // Erstellt ein neues Abbild der geladenen Karte
- // name: Der Name des Abbildes
- // Gibt 1 zurück, falls der Vorgang erfolgreich ist, 0 sonnst
- bool EditorClient::abbildErstellen( char *name )
- {
- cs.lock();
- if( !k )
- {
- err = "Der Client ist nicht verbunden.";
- cs.unlock();
- return 0;
- }
- k->sendeEncrypted( "\x7", 1 );
- char ret = 0;
- k->getNachrichtEncrypted( &ret, 1 );
- if( ret == 1 )
- {
- k->sendeEncrypted( "\x1", 1 );
- k->getNachrichtEncrypted( &ret, 1 );
- if( ret == 1 )
- {
- char l = (char)textLength( name );
- k->sendeEncrypted( &l, 1 );
- if( l )
- k->sendeEncrypted( name, l );
- k->getNachrichtEncrypted( &ret, 1 );
- }
- }
- if( ret == 3 )
- {
- char byte = 0;
- k->getNachrichtEncrypted( &byte, 1 );
- char *f = new char[ byte + 1 ];
- f[ byte ] = 0;
- k->getNachrichtEncrypted( f, byte );
- err = f;
- delete[] f;
- cs.unlock();
- return 0;
- }
- cs.unlock();
- return 1;
- }
- // Löscht ein altes Abbild der geladenen Karte
- // name: Der Name des Abbildes
- // Gibt 1 zurück, falls der Vorgang erfolgreich ist, 0 sonnst
- bool EditorClient::abbildLöschen( char *name )
- {
- cs.lock();
- if( !k )
- {
- err = "Der Client ist nicht verbunden.";
- cs.unlock();
- return 0;
- }
- k->sendeEncrypted( "\x7", 1 );
- char ret = 0;
- k->getNachrichtEncrypted( &ret, 1 );
- if( ret == 1 )
- {
- k->sendeEncrypted( "\x2", 1 );
- k->getNachrichtEncrypted( &ret, 1 );
- if( ret == 1 )
- {
- char l = (char)textLength( name );
- k->sendeEncrypted( &l, 1 );
- if( l )
- k->sendeEncrypted( name, l );
- k->getNachrichtEncrypted( &ret, 1 );
- }
- }
- if( ret == 3 )
- {
- char byte = 0;
- k->getNachrichtEncrypted( &byte, 1 );
- char *f = new char[ byte + 1 ];
- f[ byte ] = 0;
- k->getNachrichtEncrypted( f, byte );
- err = f;
- delete[] f;
- cs.unlock();
- return 0;
- }
- cs.unlock();
- return 1;
- }
- // Stellt ein altes Abbild der geladenen Karte wieder her
- // name: Der Name des Abbildes
- // Gibt 1 zurück, falls der Vorgang erfolgreich ist, 0 sonnst
- bool EditorClient::abbildHerstellen( char *name )
- {
- cs.lock();
- if( !k )
- {
- err = "Der Client ist nicht verbunden.";
- cs.unlock();
- return 0;
- }
- k->sendeEncrypted( "\x7", 1 );
- char ret = 0;
- k->getNachrichtEncrypted( &ret, 1 );
- if( ret == 1 )
- {
- k->sendeEncrypted( "\x3", 1 );
- k->getNachrichtEncrypted( &ret, 1 );
- if( ret == 1 )
- {
- char l = (char)textLength( name );
- k->sendeEncrypted( &l, 1 );
- if( l )
- k->sendeEncrypted( name, l );
- k->getNachrichtEncrypted( &ret, 1 );
- }
- }
- if( ret == 3 )
- {
- char byte = 0;
- k->getNachrichtEncrypted( &byte, 1 );
- char *f = new char[ byte + 1 ];
- f[ byte ] = 0;
- k->getNachrichtEncrypted( f, byte );
- err = f;
- delete[] f;
- cs.unlock();
- return 0;
- }
- cs.unlock();
- return 1;
- }
- // Verüffentlich eine neue Version der geladenen Karte
- // Gibt 1 zurück, falls der Vorgang erfolgreich ist, 0 sonnst
- bool EditorClient::veröffentlichen()
- {
- cs.lock();
- if( !k )
- {
- err = "Der Client ist nicht verbunden.";
- cs.unlock();
- return 0;
- }
- k->sendeEncrypted( "\x7", 1 );
- char ret = 0;
- k->getNachrichtEncrypted( &ret, 1 );
- if( ret == 1 )
- {
- k->sendeEncrypted( "\x4", 1 );
- k->getNachrichtEncrypted( &ret, 1 );
- if( ret == 1 )
- k->getNachrichtEncrypted( &ret, 1 );
- }
- if( ret == 3 )
- {
- char byte = 0;
- k->getNachrichtEncrypted( &byte, 1 );
- char *f = new char[ byte + 1 ];
- f[ byte ] = 0;
- k->getNachrichtEncrypted( f, byte );
- err = f;
- delete[] f;
- cs.unlock();
- return 0;
- }
- if( ret != 1 )
- err = "Unbekannter Fehler";
- cs.unlock();
- return ret == 1;
- }
- // Veröffentlich eine neue Version der Shop Seite der geladenen Karte
- // Gibt 1 zurück, falls der Vorgang erfolgreich ist, 0 sonnst
- bool EditorClient::shopSeiteVeröffentlichen()
- {
- cs.lock();
- if( !k )
- {
- err = "Der Client ist nicht verbunden.";
- cs.unlock();
- return 0;
- }
- k->sendeEncrypted( "\x7", 1 );
- char ret = 0;
- k->getNachrichtEncrypted( &ret, 1 );
- if( ret == 1 )
- {
- k->sendeEncrypted( "\x6", 1 );
- k->getNachrichtEncrypted( &ret, 1 );
- if( ret == 1 )
- k->getNachrichtEncrypted( &ret, 1 );
- }
- if( ret == 3 )
- {
- char byte = 0;
- k->getNachrichtEncrypted( &byte, 1 );
- char *f = new char[ byte + 1 ];
- f[ byte ] = 0;
- k->getNachrichtEncrypted( f, byte );
- err = f;
- delete[] f;
- cs.unlock();
- return 0;
- }
- if( ret != 1 )
- err = "Unbekannter Fehler";
- cs.unlock();
- return ret == 1;
- }
- // Läht die Vorschau der Shop Seite der geladenen Karte herrunter und speichert sie unter data/tmp/ke/ssv
- // Gibt 1 zurück, falls der Vorgang erfolgreich ist, 0 sonnst
- bool EditorClient::ladeShopSeiteVorschau()
- {
- cs.lock();
- if( !k )
- {
- err = "Der Client ist nicht verbunden.";
- cs.unlock();
- return 0;
- }
- k->sendeEncrypted( "\x7", 1 );
- char ret = 0;
- k->getNachrichtEncrypted( &ret, 1 );
- if( ret == 1 )
- {
- k->sendeEncrypted( "\x8", 1 );
- k->getNachrichtEncrypted( &ret, 1 );
- if( ret == 1 )
- {
- int anz = 0;
- k->getNachrichtEncrypted( (char*)&anz, 4 );
- Text pf = "data/tmp/ke/ssv";
- for( int i = 0; i < anz; i++ )
- {
- char l = 0;
- k->getNachrichtEncrypted( &l, 1 );
- char *pfad = new char[ l + 1 ];
- pfad[ l ] = 0;
- k->getNachrichtEncrypted( pfad, l );
- Text p = pf.getText();
- p += pfad;
- delete[] pfad;
- Datei d;
- d.setDatei( p );
- d.erstellen();
- d.open( Datei::Style::schreiben );
- __int64 größe = 0;
- k->getNachrichtEncrypted( (char*)&größe, 8 );
- char *buffer = new char[ 2048 ];
- while( größe > 0 )
- {
- int l = größe > 2048 ? 2048 : (int)größe;
- k->getNachricht( buffer, l );
- d.schreibe( buffer, l );
- größe -= l;
- }
- delete[] buffer;
- d.close();
- }
- }
- }
- if( ret == 3 )
- {
- char byte = 0;
- k->getNachrichtEncrypted( &byte, 1 );
- char *f = new char[ byte + 1 ];
- f[ byte ] = 0;
- k->getNachrichtEncrypted( f, byte );
- err = f;
- delete[] f;
- cs.unlock();
- return 0;
- }
- if( ret != 1 )
- err = "Unbekannter Fehler";
- cs.unlock();
- return ret == 1;
- }
- // Erstellt eine neue Shop Seiten Datei
- // name: Der Name der Datei
- // typ: 0=Ordner, 1=Bild, 2=Text
- // Gibt 1 zurück, falls der Vorgang erfolgreich ist, 0 sonnst
- bool EditorClient::ssDateiErstellen( char *name, int typ )
- {
- cs.lock();
- if( !k )
- {
- err = "Der Client ist nicht verbunden.";
- cs.unlock();
- return 0;
- }
- k->sendeEncrypted( "\x7", 1 );
- char ret = 0;
- k->getNachrichtEncrypted( &ret, 1 );
- if( ret == 1 )
- {
- k->sendeEncrypted( "\x7", 1 );
- k->getNachrichtEncrypted( &ret, 1 );
- if( ret == 1 )
- {
- k->sendeEncrypted( "\x1", 1 );
- k->getNachrichtEncrypted( &ret, 1 );
- if( ret == 1 )
- {
- char t = typ;
- k->sendeEncrypted( &t, 1 );
- char l = (char)textLength( name );
- k->sendeEncrypted( &l, 1 );
- if( l )
- k->sendeEncrypted( name, l );
- k->getNachrichtEncrypted( &ret, 1 );
- }
- }
- }
- if( ret == 3 )
- {
- char byte = 0;
- k->getNachrichtEncrypted( &byte, 1 );
- char *f = new char[ byte + 1 ];
- f[ byte ] = 0;
- k->getNachrichtEncrypted( f, byte );
- err = f;
- delete[] f;
- cs.unlock();
- return 0;
- }
- if( ret != 1 )
- err = "Unbekannter Fehler";
- cs.unlock();
- return ret == 1;
- }
- // Öffnet einen Ordner der Shop Seite
- // name: Der Name des Ordners
- // Gibt 1 zurück, falls der Vorgang erfolgreich ist, 0 sonnst
- bool EditorClient::ssOrdnerÖffnen( char *name )
- {
- cs.lock();
- if( !k )
- {
- err = "Der Client ist nicht verbunden.";
- cs.unlock();
- return 0;
- }
- k->sendeEncrypted( "\x7", 1 );
- char ret = 0;
- k->getNachrichtEncrypted( &ret, 1 );
- if( ret == 1 )
- {
- k->sendeEncrypted( "\x7", 1 );
- k->getNachrichtEncrypted( &ret, 1 );
- if( ret == 1 )
- {
- k->sendeEncrypted( "\x2", 1 );
- k->getNachrichtEncrypted( &ret, 1 );
- if( ret == 1 )
- {
- char l = (char)textLength( name );
- k->sendeEncrypted( &l, 1 );
- if( l )
- k->sendeEncrypted( name, l );
- k->getNachrichtEncrypted( &ret, 1 );
- }
- }
- }
- if( ret == 3 )
- {
- char byte = 0;
- k->getNachrichtEncrypted( &byte, 1 );
- char *f = new char[ byte + 1 ];
- f[ byte ] = 0;
- k->getNachrichtEncrypted( f, byte );
- err = f;
- delete[] f;
- cs.unlock();
- return 0;
- }
- if( ret != 1 )
- err = "Unbekannter Fehler";
- cs.unlock();
- return ret == 1;
- }
- // Lädt das ein Bild der Shop Seite und gibt es zurück
- // datei: Der Name der Bilddatei
- // bild: Der Name des Bildes
- // Gibt bei misserfolg 0 zurück
- Framework::Bild *EditorClient::ssBildLaden( char *datei, char *bild )
- {
- cs.lock();
- if( !k )
- {
- err = "Der Client ist nicht verbunden.";
- cs.unlock();
- return 0;
- }
- k->sendeEncrypted( "\x7", 1 );
- char ret = 0;
- k->getNachrichtEncrypted( &ret, 1 );
- if( ret == 1 )
- {
- k->sendeEncrypted( "\x7", 1 );
- k->getNachrichtEncrypted( &ret, 1 );
- if( ret == 1 )
- {
- k->sendeEncrypted( "\x3", 1 );
- k->getNachrichtEncrypted( &ret, 1 );
- if( ret == 1 )
- {
- char l = (char)textLength( datei );
- k->sendeEncrypted( &l, 1 );
- if( l )
- k->sendeEncrypted( datei, l );
- l = (char)textLength( bild );
- k->sendeEncrypted( &l, 1 );
- if( l )
- k->sendeEncrypted( bild, l );
- k->getNachrichtEncrypted( &ret, 1 );
- if( ret == 1 )
- {
- Bild *ret = new Bild();
- int br = 0;
- int hö = 0;
- k->getNachrichtEncrypted( (char*)&br, 4 );
- k->getNachrichtEncrypted( (char*)&hö, 4 );
- ret->neuBild( br, hö, 0 );
- char *buffer = (char*)ret->getBuffer();
- __int64 län = br * hö * 4;
- for( int i = 0, l = län > 2048 ? 2048 : (int)län; län > 0; l = län > 2048 ? 2048 : (int)län )
- {
- k->getNachricht( &( buffer[ i ] ), l );
- i += l;
- län -= l;
- }
- cs.unlock();
- return ret;
- }
- }
- }
- }
- if( ret == 3 )
- {
- char byte = 0;
- k->getNachrichtEncrypted( &byte, 1 );
- char *f = new char[ byte + 1 ];
- f[ byte ] = 0;
- k->getNachrichtEncrypted( f, byte );
- err = f;
- delete[] f;
- cs.unlock();
- return 0;
- }
- if( ret != 1 )
- err = "Unbekannter Fehler";
- cs.unlock();
- return 0;
- }
- // Löscht eine Datei der Shop Seite
- // name: Der Name der Datei
- // Gibt 1 zurück, falls der Vorgang erfolgreich ist, 0 sonnst
- bool EditorClient::ssDateiLöschen( char *name )
- {
- cs.lock();
- if( !k )
- {
- err = "Der Client ist nicht verbunden.";
- cs.unlock();
- return 0;
- }
- k->sendeEncrypted( "\x7", 1 );
- char ret = 0;
- k->getNachrichtEncrypted( &ret, 1 );
- if( ret == 1 )
- {
- k->sendeEncrypted( "\x7", 1 );
- k->getNachrichtEncrypted( &ret, 1 );
- if( ret == 1 )
- {
- k->sendeEncrypted( "\x4", 1 );
- k->getNachrichtEncrypted( &ret, 1 );
- if( ret == 1 )
- {
- char l = (char)textLength( name );
- k->sendeEncrypted( &l, 1 );
- if( l )
- k->sendeEncrypted( name, l );
- k->getNachrichtEncrypted( &ret, 1 );
- }
- }
- }
- if( ret == 3 )
- {
- char byte = 0;
- k->getNachrichtEncrypted( &byte, 1 );
- char *f = new char[ byte + 1 ];
- f[ byte ] = 0;
- k->getNachrichtEncrypted( f, byte );
- err = f;
- delete[] f;
- cs.unlock();
- return 0;
- }
- if( ret != 1 )
- err = "Unbekannter Fehler";
- cs.unlock();
- return ret == 1;
- }
- // Läd eine KSGS Datei der Shop Seite und gibt den Quellcode zurück
- // datei: Der Name der Datei
- // Gibt bei misserfolg 0 zurück
- Framework::Text *EditorClient::ssTextLaden( char *datei )
- {
- cs.lock();
- if( !k )
- {
- err = "Der Client ist nicht verbunden.";
- cs.unlock();
- return 0;
- }
- k->sendeEncrypted( "\x7", 1 );
- char ret = 0;
- k->getNachrichtEncrypted( &ret, 1 );
- if( ret == 1 )
- {
- k->sendeEncrypted( "\x7", 1 );
- k->getNachrichtEncrypted( &ret, 1 );
- if( ret == 1 )
- {
- k->sendeEncrypted( "\xA", 1 );
- k->getNachrichtEncrypted( &ret, 1 );
- if( ret == 1 )
- {
- char l = (char)textLength( datei );
- k->sendeEncrypted( &l, 1 );
- if( l )
- k->sendeEncrypted( datei, l );
- k->getNachrichtEncrypted( &ret, 1 );
- if( ret == 1 )
- {
- int län = 0;
- k->getNachrichtEncrypted( (char*)&län, 4 );
- char *txt = new char[ län + 1 ];
- txt[ län ] = 0;
- for( int i = 0, l = län > 2048 ? 2048 : län; län > 0; i += l, län -= l, l = län > 2048 ? 2048 : län )
- k->getNachricht( &( txt[ i ] ), l );
- k->getNachrichtEncrypted( &ret, 1 );
- if( ret == 1 )
- {
- Text *t = new Text( txt );
- delete[] txt;
- cs.unlock();
- return t;
- }
- delete[] txt;
- }
- }
- }
- }
- if( ret == 3 )
- {
- char byte = 0;
- k->getNachrichtEncrypted( &byte, 1 );
- char *f = new char[ byte + 1 ];
- f[ byte ] = 0;
- k->getNachrichtEncrypted( f, byte );
- err = f;
- delete[] f;
- cs.unlock();
- return 0;
- }
- err = "Unbekannter Fehler";
- cs.unlock();
- return 0;
- }
- // Spechert eine KSGS Datei der Shop Seite
- // datei: Der Name der Datei
- // zText: Ein Zeiger auf den neuen Quellcode (ohne erhöhten Reference Counter)
- // Gibt 1 zurück, falls der Vorgang erfolgreich ist, 0 sonnst
- bool EditorClient::ssTextSpeichern( char *datei, Framework::Text *zText )
- {
- cs.lock();
- if( !k )
- {
- err = "Der Client ist nicht verbunden.";
- cs.unlock();
- return 0;
- }
- k->sendeEncrypted( "\x7", 1 );
- char ret = 0;
- k->getNachrichtEncrypted( &ret, 1 );
- if( ret == 1 )
- {
- k->sendeEncrypted( "\x7", 1 );
- k->getNachrichtEncrypted( &ret, 1 );
- if( ret == 1 )
- {
- k->sendeEncrypted( "\x5", 1 );
- k->getNachrichtEncrypted( &ret, 1 );
- if( ret == 1 )
- {
- char l = (char)textLength( datei );
- k->sendeEncrypted( &l, 1 );
- if( l )
- k->sendeEncrypted( datei, l );
- k->getNachrichtEncrypted( &ret, 1 );
- if( ret == 1 )
- {
- int län = zText->getLength();
- k->sendeEncrypted( (char*)&län, 4 );
- for( int i = 0, l = län > 2048 ? 2048 : län; län > 0; i += l, län -= l, l = län > 2048 ? 2048 : län )
- k->sende( &( zText->getText()[ i ] ), l );
- k->getNachrichtEncrypted( &ret, 1 );
- }
- }
- }
- }
- if( ret == 3 )
- {
- char byte = 0;
- k->getNachrichtEncrypted( &byte, 1 );
- char *f = new char[ byte + 1 ];
- f[ byte ] = 0;
- k->getNachrichtEncrypted( f, byte );
- err = f;
- delete[] f;
- cs.unlock();
- return 0;
- }
- if( ret != 1 )
- err = "Unbekannter Fehler";
- cs.unlock();
- return ret == 1;
- }
- // Löscht ein Bild der Shop Seite
- // datei: Der Name der Bilddatei
- // bild: Der Name des Bildes
- // Gibt 1 zurück, falls der Vorgang erfolgreich ist, 0 sonnst
- bool EditorClient::ssBildLöschen( char *datei, char *bild )
- {
- cs.lock();
- if( !k )
- {
- err = "Der Client ist nicht verbunden.";
- cs.unlock();
- return 0;
- }
- k->sendeEncrypted( "\x7", 1 );
- char ret = 0;
- k->getNachrichtEncrypted( &ret, 1 );
- if( ret == 1 )
- {
- k->sendeEncrypted( "\x7", 1 );
- k->getNachrichtEncrypted( &ret, 1 );
- if( ret == 1 )
- {
- k->sendeEncrypted( "\x6", 1 );
- k->getNachrichtEncrypted( &ret, 1 );
- if( ret == 1 )
- {
- char l = (char)textLength( datei );
- k->sendeEncrypted( &l, 1 );
- if( l )
- k->sendeEncrypted( datei, l );
- l = (char)textLength( bild );
- k->sendeEncrypted( &l, 1 );
- if( l )
- k->sendeEncrypted( bild, l );
- k->getNachrichtEncrypted( &ret, 1 );
- }
- }
- }
- if( ret == 3 )
- {
- char byte = 0;
- k->getNachrichtEncrypted( &byte, 1 );
- char *f = new char[ byte + 1 ];
- f[ byte ] = 0;
- k->getNachrichtEncrypted( f, byte );
- err = f;
- delete[] f;
- cs.unlock();
- return 0;
- }
- if( ret != 1 )
- err = "Unbekannter Fehler";
- cs.unlock();
- return ret == 1;
- }
- // Speichert ein Bild einer ShopSeite
- // datei: Der name der Bilddatei
- // name: Der Name des Bildes
- // zBild: Ein Zeiger auf das Bild (ohne erhöhten Reference Counter)
- // Gibt 1 zurück, falls der Vorgang erfolgreich ist, 0 sonnst
- bool EditorClient::ssBildSpeichern( char *datei, char *name, Framework::Bild *zBild )
- {
- cs.lock();
- if( !k )
- {
- err = "Der Client ist nicht verbunden.";
- cs.unlock();
- return 0;
- }
- k->sendeEncrypted( "\x7", 1 );
- char ret = 0;
- k->getNachrichtEncrypted( &ret, 1 );
- if( ret == 1 )
- {
- k->sendeEncrypted( "\x7", 1 );
- k->getNachrichtEncrypted( &ret, 1 );
- if( ret == 1 )
- {
- k->sendeEncrypted( "\x7", 1 );
- k->getNachrichtEncrypted( &ret, 1 );
- if( ret == 1 )
- {
- char l = (char)textLength( datei );
- k->sendeEncrypted( &l, 1 );
- if( l )
- k->sendeEncrypted( datei, l );
- l = (char)textLength( name );
- k->sendeEncrypted( &l, 1 );
- if( l )
- k->sendeEncrypted( name, l );
- k->getNachrichtEncrypted( &ret, 1 );
- if( ret == 1 )
- {
- int br = zBild->getBreite();
- int hö = zBild->getHeight();
- k->sendeEncrypted( (char*)&br, 4 );
- k->sendeEncrypted( (char*)&hö, 4 );
- __int64 län = br * hö * 4;
- char *buffer = (char*)zBild->getBuffer();
- for( int i = 0, l = län > 2048 ? 2048 : (int)län; län > 0; i += l, län -= l, l = län > 2048 ? 2048 : (int)län )
- k->sende( &( buffer[ i ] ), l );
- k->getNachrichtEncrypted( &ret, 1 );
- }
- }
- }
- }
- if( ret == 3 )
- {
- char byte = 0;
- k->getNachrichtEncrypted( &byte, 1 );
- char *f = new char[ byte + 1 ];
- f[ byte ] = 0;
- k->getNachrichtEncrypted( f, byte );
- err = f;
- delete[] f;
- cs.unlock();
- return 0;
- }
- if( ret != 1 )
- err = "Unbekannter Fehler";
- cs.unlock();
- return ret == 1;
- }
- // Lädt eine Liste mit Dateien von der Shop Seite
- // zList: Enthält nach erfolgreichem Aufruf die Liste mit Dateinamen
- // Gibt 1 zurück, falls der Vorgang erfolgreich ist, 0 sonnst
- int EditorClient::ssGetDateiListe( Framework::RCArray< Framework::Text > *zList )
- {
- cs.lock();
- if( !k )
- {
- err = "Der Client ist nicht verbunden.";
- cs.unlock();
- return 0;
- }
- k->sendeEncrypted( "\x7", 1 );
- char ret = 0;
- k->getNachrichtEncrypted( &ret, 1 );
- if( ret == 1 )
- {
- k->sendeEncrypted( "\x7", 1 );
- k->getNachrichtEncrypted( &ret, 1 );
- if( ret == 1 )
- {
- k->sendeEncrypted( "\x8", 1 );
- k->getNachrichtEncrypted( &ret, 1 );
- if( ret == 1 )
- {
- int anz = 0;
- k->getNachrichtEncrypted( (char*)&anz, 4 );
- for( int i = 0; i < anz; i++ )
- {
- char l = 0;
- k->getNachrichtEncrypted( &l, 1 );
- char *n = new char[ l + 1 ];
- n[ l ] = 0;
- k->getNachrichtEncrypted( n, l );
- zList->add( new Text( n ) );
- delete[] n;
- }
- cs.unlock();
- return anz;
- }
- }
- }
- if( ret == 3 )
- {
- char byte = 0;
- k->getNachrichtEncrypted( &byte, 1 );
- char *f = new char[ byte + 1 ];
- f[ byte ] = 0;
- k->getNachrichtEncrypted( f, byte );
- err = f;
- delete[] f;
- cs.unlock();
- return -1;
- }
- err = "Unbekannter Fehler";
- cs.unlock();
- return 0;
- }
- // Lädt die Bild Liste einer Bild Datei der Shop Seite
- // name: Der Name der Bilddatei
- // zList: Enthält nach erfolgreichem Aufruf eine Liste mit Bildnamen
- // Gibt 1 zurück, falls der Vorgang erfolgreich ist, 0 sonnst
- int EditorClient::ssGetBildListe( char *name, Framework::RCArray< Framework::Text > *zList )
- {
- cs.lock();
- if( !k )
- {
- err = "Der Client ist nicht verbunden.";
- cs.unlock();
- return 0;
- }
- k->sendeEncrypted( "\x7", 1 );
- char ret = 0;
- k->getNachrichtEncrypted( &ret, 1 );
- if( ret == 1 )
- {
- k->sendeEncrypted( "\x7", 1 );
- k->getNachrichtEncrypted( &ret, 1 );
- if( ret == 1 )
- {
- k->sendeEncrypted( "\x9", 1 );
- k->getNachrichtEncrypted( &ret, 1 );
- if( ret == 1 )
- {
- char l = (char)textLength( name );
- k->sendeEncrypted( &l, 1 );
- if( l )
- k->sendeEncrypted( name, l );
- k->getNachrichtEncrypted( &ret, 1 );
- if( ret == 1 )
- {
- int anz = 0;
- k->getNachrichtEncrypted( (char*)&anz, 4 );
- for( int i = 0; i < anz; i++ )
- {
- l = 0;
- k->getNachrichtEncrypted( &l, 1 );
- char *n = new char[ l + 1 ];
- n[ l ] = 0;
- k->getNachrichtEncrypted( n, l );
- zList->add( new Text( n ) );
- delete[] n;
- }
- cs.unlock();
- return anz;
- }
- }
- }
- }
- if( ret == 3 )
- {
- char byte = 0;
- k->getNachrichtEncrypted( &byte, 1 );
- char *f = new char[ byte + 1 ];
- f[ byte ] = 0;
- k->getNachrichtEncrypted( f, byte );
- err = f;
- delete[] f;
- cs.unlock();
- return -1;
- }
- err = "Unbekannter Fehler";
- cs.unlock();
- return 0;
- }
- // Lädt die Shop Daten
- // es: Enthält nach erfolgreichem aufruf den Erwerbbarkeits Status (0 = nichts, 1 = nur Testversion, 2 = nur Vollversion, 3 = beides)
- // tp: Enthält nach erfolgreichem Aufruf den Preis der Testversion in Kupfer
- // vp: Enthält nach erfolgreichem Aufruf den Preis der Vollversion in Kupfer
- // Gibt 1 zurück, falls der Vorgang erfolgreich ist, 0 sonnst
- bool EditorClient::getShopDaten( int &es, int &tp, int &vp )
- {
- cs.lock();
- if( !k )
- {
- err = "Der Client ist nicht verbunden.";
- cs.unlock();
- return 0;
- }
- k->sendeEncrypted( "\x7", 1 );
- char ret = 0;
- k->getNachrichtEncrypted( &ret, 1 );
- if( ret == 1 )
- {
- k->sendeEncrypted( "\x9", 1 );
- k->getNachrichtEncrypted( &ret, 1 );
- if( ret == 1 )
- {
- k->getNachrichtEncrypted( (char*)&es, 4 );
- k->getNachrichtEncrypted( (char*)&tp, 4 );
- k->getNachrichtEncrypted( (char*)&vp, 4 );
- cs.unlock();
- return 1;
- }
- }
- if( ret == 3 )
- {
- char byte = 0;
- k->getNachrichtEncrypted( &byte, 1 );
- char *f = new char[ byte + 1 ];
- f[ byte ] = 0;
- k->getNachrichtEncrypted( f, byte );
- err = f;
- delete[] f;
- cs.unlock();
- return 0;
- }
- err = "Unbekannter Fehler";
- cs.unlock();
- return 0;
- }
- // Setzt die Shop Daten
- // es: der Erwerbbarkeits Status (0 = nichts, 1 = nur Testversion, 2 = nur Vollversion, 3 = beides)
- // tp: der Preis der Testversion in Kupfer
- // vp: der Preis der Vollversion in Kupfer
- // Gibt 1 zurück, falls der Vorgang erfolgreich ist, 0 sonnst
- bool EditorClient::setShopDaten( int es, int tp, int vp )
- {
- cs.lock();
- if( !k )
- {
- err = "Der Client ist nicht verbunden.";
- cs.unlock();
- return 0;
- }
- k->sendeEncrypted( "\x7", 1 );
- char ret = 0;
- k->getNachrichtEncrypted( &ret, 1 );
- if( ret == 1 )
- {
- k->sendeEncrypted( "\xA", 1 );
- k->getNachrichtEncrypted( &ret, 1 );
- if( ret == 1 )
- {
- k->sendeEncrypted( (char*)&es, 4 );
- k->sendeEncrypted( (char*)&tp, 4 );
- k->sendeEncrypted( (char*)&vp, 4 );
- k->getNachrichtEncrypted( &ret, 1 );
- if( ret == 1 )
- {
- cs.unlock();
- return 1;
- }
- }
- }
- if( ret == 3 )
- {
- char byte = 0;
- k->getNachrichtEncrypted( &byte, 1 );
- char *f = new char[ byte + 1 ];
- f[ byte ] = 0;
- k->getNachrichtEncrypted( f, byte );
- err = f;
- delete[] f;
- cs.unlock();
- return 0;
- }
- err = "Unbekannter Fehler";
- cs.unlock();
- return 0;
- }
- // gibt die Kartenbeschreibung als KSGScript Quellcode zurück
- // Gibt bei misserfolg 0 zurück
- Framework::Text *EditorClient::beschreibungLaden()
- {
- cs.lock();
- if( !k )
- {
- err = "Der Client ist nicht verbunden.";
- cs.unlock();
- return 0;
- }
- k->sendeEncrypted( "\x7", 1 );
- char ret = 0;
- k->getNachrichtEncrypted( &ret, 1 );
- if( ret == 1 )
- {
- k->sendeEncrypted( "\xB", 1 );
- k->getNachrichtEncrypted( &ret, 1 );
- if( ret == 1 )
- {
- k->sendeEncrypted( "\x1", 1 );
- k->getNachrichtEncrypted( &ret, 1 );
- if( ret == 1 )
- {
- int län = 0;
- k->getNachrichtEncrypted( (char*)&län, 4 );
- char *txt = new char[ län + 1 ];
- txt[ län ] = 0;
- for( int i = 0, l = län > 2048 ? 2048 : län; län > 0; i += l, län -= l, l = län > 2048 ? 2048 : län )
- k->getNachricht( &( txt[ i ] ), l );
- k->getNachrichtEncrypted( &ret, 1 );
- if( ret == 1 )
- {
- Text *t = new Text( txt );
- delete[] txt;
- cs.unlock();
- return t;
- }
- delete[] txt;
- }
- }
- }
- if( ret == 3 )
- {
- char byte = 0;
- k->getNachrichtEncrypted( &byte, 1 );
- char *f = new char[ byte + 1 ];
- f[ byte ] = 0;
- k->getNachrichtEncrypted( f, byte );
- err = f;
- delete[] f;
- cs.unlock();
- return 0;
- }
- err = "Unbekannter Fehler";
- cs.unlock();
- return 0;
- }
- // gibt das Titelbild der Karte zurück
- // Gibt bei misserfolg 0 zurück
- Framework::Bild *EditorClient::titelbildLaden()
- {
- cs.lock();
- if( !k )
- {
- err = "Der Client ist nicht verbunden.";
- cs.unlock();
- return 0;
- }
- k->sendeEncrypted( "\x7", 1 );
- char ret = 0;
- k->getNachrichtEncrypted( &ret, 1 );
- if( ret == 1 )
- {
- k->sendeEncrypted( "\xB", 1 );
- k->getNachrichtEncrypted( &ret, 1 );
- if( ret == 1 )
- {
- k->sendeEncrypted( "\x2", 1 );
- k->getNachrichtEncrypted( &ret, 1 );
- if( ret == 1 )
- {
- Bild *ret = new Bild();
- int br = 0;
- int hö = 0;
- k->getNachrichtEncrypted( (char*)&br, 4 );
- k->getNachrichtEncrypted( (char*)&hö, 4 );
- ret->neuBild( br, hö, 0 );
- char *buffer = (char*)ret->getBuffer();
- __int64 län = br * hö * 4;
- for( int i = 0, l = län > 2048 ? 2048 : (int)län; län > 0; l = län > 2048 ? 2048 : (int)län )
- {
- k->getNachricht( &( buffer[ i ] ), l );
- i += l;
- län -= l;
- }
- cs.unlock();
- return ret;
- }
- }
- }
- if( ret == 3 )
- {
- char byte = 0;
- k->getNachrichtEncrypted( &byte, 1 );
- char *f = new char[ byte + 1 ];
- f[ byte ] = 0;
- k->getNachrichtEncrypted( f, byte );
- err = f;
- delete[] f;
- cs.unlock();
- return 0;
- }
- err = "Unbekannter Fehler";
- cs.unlock();
- return 0;
- }
- // gibt das Minimap Bild der Karte zurück
- // Gibt bei misserfolg 0 zurück
- Framework::Bild *EditorClient::minimapLaden()
- {
- cs.lock();
- if( !k )
- {
- err = "Der Client ist nicht verbunden.";
- cs.unlock();
- return 0;
- }
- k->sendeEncrypted( "\x7", 1 );
- char ret = 0;
- k->getNachrichtEncrypted( &ret, 1 );
- if( ret == 1 )
- {
- k->sendeEncrypted( "\xB", 1 );
- k->getNachrichtEncrypted( &ret, 1 );
- if( ret == 1 )
- {
- k->sendeEncrypted( "\x3", 1 );
- k->getNachrichtEncrypted( &ret, 1 );
- if( ret == 1 )
- {
- Bild *ret = new Bild();
- int br = 0;
- int hö = 0;
- k->getNachrichtEncrypted( (char*)&br, 4 );
- k->getNachrichtEncrypted( (char*)&hö, 4 );
- ret->neuBild( br, hö, 0 );
- char *buffer = (char*)ret->getBuffer();
- __int64 län = br * hö * 4;
- for( int i = 0, l = län > 2048 ? 2048 : (int)län; län > 0; l = län > 2048 ? 2048 : (int)län )
- {
- k->getNachricht( &( buffer[ i ] ), l );
- i += l;
- län -= l;
- }
- cs.unlock();
- return ret;
- }
- }
- }
- if( ret == 3 )
- {
- char byte = 0;
- k->getNachrichtEncrypted( &byte, 1 );
- char *f = new char[ byte + 1 ];
- f[ byte ] = 0;
- k->getNachrichtEncrypted( f, byte );
- err = f;
- delete[] f;
- cs.unlock();
- return 0;
- }
- err = "Unbekannter Fehler";
- cs.unlock();
- return 0;
- }
- // gibt das Ladebild der Karte zurück
- // Gibt bei misserfolg 0 zurück
- Framework::Bild *EditorClient::ladebildLaden()
- {
- cs.lock();
- if( !k )
- {
- err = "Der Client ist nicht verbunden.";
- cs.unlock();
- return 0;
- }
- k->sendeEncrypted( "\x7", 1 );
- char ret = 0;
- k->getNachrichtEncrypted( &ret, 1 );
- if( ret == 1 )
- {
- k->sendeEncrypted( "\xB", 1 );
- k->getNachrichtEncrypted( &ret, 1 );
- if( ret == 1 )
- {
- k->sendeEncrypted( "\x4", 1 );
- k->getNachrichtEncrypted( &ret, 1 );
- if( ret == 1 )
- {
- Bild *ret = new Bild();
- int br = 0;
- int hö = 0;
- k->getNachrichtEncrypted( (char*)&br, 4 );
- k->getNachrichtEncrypted( (char*)&hö, 4 );
- ret->neuBild( br, hö, 0 );
- char *buffer = (char*)ret->getBuffer();
- __int64 län = br * hö * 4;
- for( int i = 0, l = län > 2048 ? 2048 : (int)län; län > 0; l = län > 2048 ? 2048 : (int)län )
- {
- k->getNachricht( &( buffer[ i ] ), l );
- i += l;
- län -= l;
- }
- cs.unlock();
- return ret;
- }
- }
- }
- if( ret == 3 )
- {
- char byte = 0;
- k->getNachrichtEncrypted( &byte, 1 );
- char *f = new char[ byte + 1 ];
- f[ byte ] = 0;
- k->getNachrichtEncrypted( f, byte );
- err = f;
- delete[] f;
- cs.unlock();
- return 0;
- }
- err = "Unbekannter Fehler";
- cs.unlock();
- return 0;
- }
- // speichert den KSGScript Quellcode der Kartenbeschreibung
- // zText: Der KSGScript Quellcode (ohne erhöhten reference Counter)
- // Gibt 1 zurück, falls der Vorgang erfolgreich ist, 0 sonnst
- bool EditorClient::beschreibungSpeichern( Framework::Text *zText )
- {
- cs.lock();
- if( !k )
- {
- err = "Der Client ist nicht verbunden.";
- cs.unlock();
- return 0;
- }
- k->sendeEncrypted( "\x7", 1 );
- char ret = 0;
- k->getNachrichtEncrypted( &ret, 1 );
- if( ret == 1 )
- {
- k->sendeEncrypted( "\xB", 1 );
- k->getNachrichtEncrypted( &ret, 1 );
- if( ret == 1 )
- {
- k->sendeEncrypted( "\x5", 1 );
- k->getNachrichtEncrypted( &ret, 1 );
- if( ret == 1 )
- {
- int län = zText->getLength();
- k->sendeEncrypted( (char*)&län, 4 );
- for( int i = 0, l = län > 2048 ? 2048 : län; län > 0; i += l, län -= l, l = län > 2048 ? 2048 : län )
- k->sende( &( zText->getText()[ i ] ), l );
- k->getNachrichtEncrypted( &ret, 1 );
- }
- }
- }
- if( ret == 3 )
- {
- char byte = 0;
- k->getNachrichtEncrypted( &byte, 1 );
- char *f = new char[ byte + 1 ];
- f[ byte ] = 0;
- k->getNachrichtEncrypted( f, byte );
- err = f;
- delete[] f;
- cs.unlock();
- return 0;
- }
- if( ret != 1 )
- err = "Unbekannter Fehler";
- cs.unlock();
- return ret == 1;
- }
- // speichert das Titelbild der Karte
- // zBild: das neue Titelbild
- // Gibt 1 zurück, falls der Vorgang erfolgreich ist, 0 sonnst
- bool EditorClient::titelbildSpeichern( Framework::Bild *zBild )
- {
- cs.lock();
- if( !k )
- {
- err = "Der Client ist nicht verbunden.";
- cs.unlock();
- return 0;
- }
- k->sendeEncrypted( "\x7", 1 );
- char ret = 0;
- k->getNachrichtEncrypted( &ret, 1 );
- if( ret == 1 )
- {
- k->sendeEncrypted( "\xB", 1 );
- k->getNachrichtEncrypted( &ret, 1 );
- if( ret == 1 )
- {
- k->sendeEncrypted( "\x6", 1 );
- k->getNachrichtEncrypted( &ret, 1 );
- if( ret == 1 )
- {
- int br = zBild->getBreite();
- int hö = zBild->getHeight();
- k->sendeEncrypted( (char*)&br, 4 );
- k->sendeEncrypted( (char*)&hö, 4 );
- __int64 län = br * hö * 4;
- char *buffer = (char*)zBild->getBuffer();
- for( int i = 0, l = län > 2048 ? 2048 : (int)län; län > 0; i += l, län -= l, l = län > 2048 ? 2048 : (int)län )
- k->sende( &( buffer[ i ] ), l );
- k->getNachrichtEncrypted( &ret, 1 );
- }
- }
- }
- if( ret == 3 )
- {
- char byte = 0;
- k->getNachrichtEncrypted( &byte, 1 );
- char *f = new char[ byte + 1 ];
- f[ byte ] = 0;
- k->getNachrichtEncrypted( f, byte );
- err = f;
- delete[] f;
- cs.unlock();
- return 0;
- }
- if( ret != 1 )
- err = "Unbekannter Fehler";
- cs.unlock();
- return ret == 1;
- }
- // speichert das Minimapbild der Karte
- // zBild: das neue Minimapbild
- // Gibt 1 zurück, falls der Vorgang erfolgreich ist, 0 sonnst
- bool EditorClient::minimapSpeichern( Framework::Bild *zBild )
- {
- cs.lock();
- if( !k )
- {
- err = "Der Client ist nicht verbunden.";
- cs.unlock();
- return 0;
- }
- k->sendeEncrypted( "\x7", 1 );
- char ret = 0;
- k->getNachrichtEncrypted( &ret, 1 );
- if( ret == 1 )
- {
- k->sendeEncrypted( "\xB", 1 );
- k->getNachrichtEncrypted( &ret, 1 );
- if( ret == 1 )
- {
- k->sendeEncrypted( "\x7", 1 );
- k->getNachrichtEncrypted( &ret, 1 );
- if( ret == 1 )
- {
- int br = zBild->getBreite();
- int hö = zBild->getHeight();
- k->sendeEncrypted( (char*)&br, 4 );
- k->sendeEncrypted( (char*)&hö, 4 );
- __int64 län = br * hö * 4;
- char *buffer = (char*)zBild->getBuffer();
- for( int i = 0, l = län > 2048 ? 2048 : (int)län; län > 0; i += l, län -= l, l = län > 2048 ? 2048 : (int)län )
- k->sende( &( buffer[ i ] ), l );
- k->getNachrichtEncrypted( &ret, 1 );
- }
- }
- }
- if( ret == 3 )
- {
- char byte = 0;
- k->getNachrichtEncrypted( &byte, 1 );
- char *f = new char[ byte + 1 ];
- f[ byte ] = 0;
- k->getNachrichtEncrypted( f, byte );
- err = f;
- delete[] f;
- cs.unlock();
- return 0;
- }
- if( ret != 1 )
- err = "Unbekannter Fehler";
- cs.unlock();
- return ret == 1;
- }
- // speichert das Ladebild der Karte
- // zBild: das neue Ladebild
- // Gibt 1 zurück, falls der Vorgang erfolgreich ist, 0 sonnst
- bool EditorClient::ladebildSpeichern( Framework::Bild *zBild )
- {
- cs.lock();
- if( !k )
- {
- err = "Der Client ist nicht verbunden.";
- cs.unlock();
- return 0;
- }
- k->sendeEncrypted( "\x7", 1 );
- char ret = 0;
- k->getNachrichtEncrypted( &ret, 1 );
- if( ret == 1 )
- {
- k->sendeEncrypted( "\xB", 1 );
- k->getNachrichtEncrypted( &ret, 1 );
- if( ret == 1 )
- {
- k->sendeEncrypted( "\x8", 1 );
- k->getNachrichtEncrypted( &ret, 1 );
- if( ret == 1 )
- {
- int br = zBild->getBreite();
- int hö = zBild->getHeight();
- k->sendeEncrypted( (char*)&br, 4 );
- k->sendeEncrypted( (char*)&hö, 4 );
- __int64 län = br * hö * 4;
- char *buffer = (char*)zBild->getBuffer();
- for( int i = 0, l = län > 2048 ? 2048 : (int)län; län > 0; i += l, län -= l, l = län > 2048 ? 2048 : (int)län )
- k->sende( &( buffer[ i ] ), l );
- k->getNachrichtEncrypted( &ret, 1 );
- }
- }
- }
- if( ret == 3 )
- {
- char byte = 0;
- k->getNachrichtEncrypted( &byte, 1 );
- char *f = new char[ byte + 1 ];
- f[ byte ] = 0;
- k->getNachrichtEncrypted( f, byte );
- err = f;
- delete[] f;
- cs.unlock();
- return 0;
- }
- if( ret != 1 )
- err = "Unbekannter Fehler";
- cs.unlock();
- return ret == 1;
- }
- // lädt die Spieler Team Daten der Karte
- // sts: Enthält nach erfolgreichem Aufruf die Spieler Team Daten
- // Gibt 1 zurück, falls der Vorgang erfolgreich ist, 0 sonnst
- bool EditorClient::ladeTeamDaten( SpielerTeamStrukturV *sts )
- {
- cs.lock();
- if( !k )
- {
- err = "Der Client ist nicht verbunden.";
- cs.unlock();
- return 0;
- }
- k->sendeEncrypted( "\x7", 1 );
- char ret = 0;
- k->getNachrichtEncrypted( &ret, 1 );
- if( ret == 1 )
- {
- k->sendeEncrypted( "\xC", 1 );
- k->getNachrichtEncrypted( &ret, 1 );
- if( ret == 1 )
- {
- k->sendeEncrypted( "\x1", 1 );
- k->getNachrichtEncrypted( &ret, 1 );
- if( ret == 1 )
- {
- k->getNachrichtEncrypted( (char*)&sts->spielerAnzahl, 4 );
- k->getNachrichtEncrypted( (char*)&sts->teamAnzahl, 4 );
- for( int i = 0; i < sts->spielerAnzahl; i++ )
- {
- int f = 0;
- k->getNachrichtEncrypted( (char*)&f, 4 );
- sts->spielerFarbe->set( f, i );
- }
- for( int i = 0; i < sts->teamAnzahl; i++ )
- {
- int f = 0;
- k->getNachrichtEncrypted( (char*)&f, 4 );
- sts->teamFarbe->set( f, i );
- }
- for( int i = 0; i < sts->teamAnzahl; i++ )
- {
- char l = 0;
- k->getNachrichtEncrypted( &l, 1 );
- char *n = new char[ l + 1 ];
- n[ l ] = 0;
- k->getNachrichtEncrypted( n, l );
- sts->teamName->set( new Text( n ), i );
- delete[] n;
- }
- for( int i = 0; i < sts->teamAnzahl; i++ )
- {
- int g = 0;
- k->getNachrichtEncrypted( (char*)&g, 4 );
- sts->teamSize->set( g, i );
- }
- cs.unlock();
- return 1;
- }
- }
- }
- if( ret == 3 )
- {
- char byte = 0;
- k->getNachrichtEncrypted( &byte, 1 );
- char *f = new char[ byte + 1 ];
- f[ byte ] = 0;
- k->getNachrichtEncrypted( f, byte );
- err = f;
- delete[] f;
- cs.unlock();
- return 0;
- }
- err = "Unbekannter Fehler";
- cs.unlock();
- return 0;
- }
- // speichert die Team Daten
- // sts: die neuen Spieler Team Daten
- // Gibt 1 zurück, falls der Vorgang erfolgreich ist, 0 sonnst
- bool EditorClient::speicherTeamDaten( SpielerTeamStrukturV *sts )
- {
- cs.lock();
- if( !k )
- {
- err = "Der Client ist nicht verbunden.";
- cs.unlock();
- return 0;
- }
- k->sendeEncrypted( "\x7", 1 );
- char ret = 0;
- k->getNachrichtEncrypted( &ret, 1 );
- if( ret == 1 )
- {
- k->sendeEncrypted( "\xC", 1 );
- k->getNachrichtEncrypted( &ret, 1 );
- if( ret == 1 )
- {
- k->sendeEncrypted( "\x2", 1 );
- k->getNachrichtEncrypted( &ret, 1 );
- if( ret == 1 )
- {
- k->sendeEncrypted( (char*)&sts->spielerAnzahl, 4 );
- k->sendeEncrypted( (char*)&sts->teamAnzahl, 4 );
- for( int i = 0; i < sts->spielerAnzahl; i++ )
- {
- int f = sts->spielerFarbe->get( i );
- k->sendeEncrypted( (char*)&f, 4 );
- }
- for( int i = 0; i < sts->teamAnzahl; i++ )
- {
- int f = sts->teamFarbe->get( i );
- k->sendeEncrypted( (char*)&f, 4 );
- }
- for( int i = 0; i < sts->teamAnzahl; i++ )
- {
- char l = (char)sts->teamName->z( i )->getLength();
- k->sendeEncrypted( &l, 1 );
- k->sendeEncrypted( sts->teamName->z( i )->getText(), l );
- }
- for( int i = 0; i < sts->teamAnzahl; i++ )
- {
- int g = sts->teamSize->get( i );
- k->sendeEncrypted( (char*)&g, 4 );
- }
- cs.unlock();
- return 1;
- }
- }
- }
- if( ret == 3 )
- {
- char byte = 0;
- k->getNachrichtEncrypted( &byte, 1 );
- char *f = new char[ byte + 1 ];
- f[ byte ] = 0;
- k->getNachrichtEncrypted( f, byte );
- err = f;
- delete[] f;
- cs.unlock();
- return 0;
- }
- err = "Unbekannter Fehler";
- cs.unlock();
- return 0;
- }
- // Erstellt neue Datei im Datei Editor
- // typ: 0=ordner 1=bild 2=modell2d 3=sound
- // Gibt 1 zurück, falls der Vorgang erfolgreich ist, 0 sonnst
- bool EditorClient::deNeueDatei( char typ, Framework::Text *zName )
- {
- cs.lock();
- if( !k )
- {
- err = "Der Client ist nicht verbunden.";
- cs.unlock();
- return 0;
- }
- k->sendeEncrypted( "\x7", 1 );
- char ret = 0;
- k->getNachrichtEncrypted( &ret, 1 );
- if( ret == 1 )
- {
- k->sendeEncrypted( "\xD", 1 );
- k->getNachrichtEncrypted( &ret, 1 );
- if( ret == 1 )
- {
- k->sendeEncrypted( "\x1", 1 );
- k->getNachrichtEncrypted( &ret, 1 );
- if( ret == 1 )
- {
- k->sendeEncrypted( &typ, 1 );
- char l = (char)zName->getLength();
- k->sendeEncrypted( &l, 1 );
- if( l )
- k->sendeEncrypted( zName->getText(), l );
- k->getNachrichtEncrypted( &ret, 1 );
- }
- }
- }
- if( ret == 3 )
- {
- char byte = 0;
- k->getNachrichtEncrypted( &byte, 1 );
- char *f = new char[ byte + 1 ];
- f[ byte ] = 0;
- k->getNachrichtEncrypted( f, byte );
- err = f;
- delete[] f;
- cs.unlock();
- return 0;
- }
- if( ret != 1 )
- err = "Unbekannter Fehler";
- cs.unlock();
- return ret == 1;
- }
- // Öffnet Ordner im Datei Editor
- // zName: Der Name des Ordners
- // Gibt 1 zurück, falls der Vorgang erfolgreich ist, 0 sonnst
- bool EditorClient::deOrdnerÖffnen( Framework::Text *zName )
- {
- cs.lock();
- if( !k )
- {
- err = "Der Client ist nicht verbunden.";
- cs.unlock();
- return 0;
- }
- k->sendeEncrypted( "\x7", 1 );
- char ret = 0;
- k->getNachrichtEncrypted( &ret, 1 );
- if( ret == 1 )
- {
- k->sendeEncrypted( "\xD", 1 );
- k->getNachrichtEncrypted( &ret, 1 );
- if( ret == 1 )
- {
- k->sendeEncrypted( "\x2", 1 );
- k->getNachrichtEncrypted( &ret, 1 );
- if( ret == 1 )
- {
- char län = (char)zName->getLength();
- k->sendeEncrypted( &län, 1 );
- if( län )
- k->sendeEncrypted( zName->getText(), län );
- k->getNachrichtEncrypted( &ret, 1 );
- }
- }
- }
- if( ret == 3 )
- {
- char byte = 0;
- k->getNachrichtEncrypted( &byte, 1 );
- char *f = new char[ byte + 1 ];
- f[ byte ] = 0;
- k->getNachrichtEncrypted( f, byte );
- err = f;
- delete[] f;
- cs.unlock();
- return 0;
- }
- if( ret != 1 )
- err = "Unbekannter Fehler";
- cs.unlock();
- return ret == 1;
- }
- // Gibt ein Bild aus dem Datei Editor zurück
- // zDatei: Der Name der Datei (ohne erhöhten Reference Counter)
- // zBild: Der Name des Bildes (ohne erhöhten Reference Counter)
- // zF: Ein Fortschrittsbalken, der automatisch aktualisiert wird (ohne erhöhten Reference Counter)
- // Gibt bei misserfolg 0 zurück
- Framework::Bild *EditorClient::deBildLaden( Framework::Text *zDatei, Framework::Text *zBild, Framework::FBalken *zF )
- {
- cs.lock();
- if( !k )
- {
- err = "Der Client ist nicht verbunden.";
- cs.unlock();
- return 0;
- }
- Bild *retB = 0;
- k->sendeEncrypted( "\x7", 1 );
- char ret = 0;
- k->getNachrichtEncrypted( &ret, 1 );
- if( ret == 1 )
- {
- k->sendeEncrypted( "\xD", 1 );
- k->getNachrichtEncrypted( &ret, 1 );
- if( ret == 1 )
- {
- k->sendeEncrypted( "\x3", 1 );
- k->getNachrichtEncrypted( &ret, 1 );
- if( ret == 1 )
- {
- char län = (char)zDatei->getLength();
- k->sendeEncrypted( &län, 1 );
- if( län )
- k->sendeEncrypted( zDatei->getText(), län );
- län = (char)zBild->getLength();
- k->sendeEncrypted( &län, 1 );
- if( län )
- k->sendeEncrypted( zBild->getText(), län );
- k->getNachrichtEncrypted( &ret, 1 );
- if( ret == 1 )
- {
- int br = 0;
- int hö = 0;
- k->getNachrichtEncrypted( (char*)&br, 4 );
- k->getNachrichtEncrypted( (char*)&hö, 4 );
- retB = new Bild();
- retB->neuBild( br, hö, 0 );
- char *buffer = (char*)retB->getBuffer();
- __int64 län = br * hö * 4;
- zF->setAktionAnzahl( län );
- for( int i = 0, l = län > 2048 ? 2048 : (int)län; län > 0; l = län > 2048 ? 2048 : (int)län )
- {
- k->getNachricht( &( buffer[ i ] ), l );
- i += l;
- län -= l;
- zF->aktionPlus( l );
- }
- }
- }
- }
- }
- if( ret == 3 )
- {
- char byte = 0;
- k->getNachrichtEncrypted( &byte, 1 );
- char *f = new char[ byte + 1 ];
- f[ byte ] = 0;
- k->getNachrichtEncrypted( f, byte );
- err = f;
- delete[] f;
- cs.unlock();
- return 0;
- }
- cs.unlock();
- if( !ret && retB )
- retB = retB->release();
- if( !retB )
- err = "Unbekannter Fehler";
- return retB;
- }
- // Löscht eine Datei aus dem Datei Editor
- // zName: Der Name der Datei
- // Gibt 1 zurück, falls der Vorgang erfolgreich ist, 0 sonnst
- bool EditorClient::deDateiLöschen( Framework::Text *zName )
- {
- cs.lock();
- if( !k )
- {
- err = "Der Client ist nicht verbunden.";
- cs.unlock();
- return 0;
- }
- k->sendeEncrypted( "\x7", 1 );
- char ret = 0;
- k->getNachrichtEncrypted( &ret, 1 );
- if( ret == 1 )
- {
- k->sendeEncrypted( "\xD", 1 );
- k->getNachrichtEncrypted( &ret, 1 );
- if( ret == 1 )
- {
- k->sendeEncrypted( "\x4", 1 );
- k->getNachrichtEncrypted( &ret, 1 );
- if( ret == 1 )
- {
- char län = (char)zName->getLength();
- k->sendeEncrypted( &län, 1 );
- if( län )
- k->sendeEncrypted( zName->getText(), län );
- k->getNachrichtEncrypted( &ret, 1 );
- }
- }
- }
- if( ret == 3 )
- {
- char byte = 0;
- k->getNachrichtEncrypted( &byte, 1 );
- char *f = new char[ byte + 1 ];
- f[ byte ] = 0;
- k->getNachrichtEncrypted( f, byte );
- err = f;
- delete[] f;
- cs.unlock();
- return 0;
- }
- if( ret != 1 )
- err = "Unbekannter Fehler";
- cs.unlock();
- return ret == 1;
- }
- // Löscht Bild aus Datei im Datei Editor
- // zDatei: Der Name der Bilddatei (ohne erhöhten Reference Counter)
- // zBild: Der Name des Bildes (ohne erhöhten Reference Counter)
- // Gibt 1 zurück, falls der Vorgang erfolgreich ist, 0 sonnst
- bool EditorClient::deBildLöschen( Framework::Text *zDatei, Framework::Text *zBild )
- {
- cs.lock();
- if( !k )
- {
- err = "Der Client ist nicht verbunden.";
- cs.unlock();
- return 0;
- }
- k->sendeEncrypted( "\x7", 1 );
- char ret = 0;
- k->getNachrichtEncrypted( &ret, 1 );
- if( ret == 1 )
- {
- k->sendeEncrypted( "\xD", 1 );
- k->getNachrichtEncrypted( &ret, 1 );
- if( ret == 1 )
- {
- k->sendeEncrypted( "\x5", 1 );
- k->getNachrichtEncrypted( &ret, 1 );
- if( ret == 1 )
- {
- char l = (char)zDatei->getLength();
- k->sendeEncrypted( &l, 1 );
- if( l )
- k->sendeEncrypted( zDatei->getText(), l );
- l = (char)zBild->getLength();
- k->sendeEncrypted( &l, 1 );
- if( l )
- k->sendeEncrypted( zBild->getText(), l );
- k->getNachrichtEncrypted( &ret, 1 );
- }
- }
- }
- if( ret == 3 )
- {
- char byte = 0;
- k->getNachrichtEncrypted( &byte, 1 );
- char *f = new char[ byte + 1 ];
- f[ byte ] = 0;
- k->getNachrichtEncrypted( f, byte );
- err = f;
- delete[] f;
- cs.unlock();
- return 0;
- }
- if( ret != 1 )
- err = "Unbekannter Fehler";
- cs.unlock();
- return ret == 1;
- }
- // Speichert Bild in Datei im Datei Editor
- // zDatei: Der Name der Bilddatei (ohne erhöhten Reference Counter)
- // zName: Der Name des Bildes (ohne erhöhten Reference Counter)
- // zBild: Das neue Bild (ohne erhöhten Reference Counter)
- // zF: Ein Fortschrittsbalken, der automatisch aktualisiert wird (ohne erhöhten Reference Counter)
- // Gibt 1 zurück, falls der Vorgang erfolgreich ist, 0 sonnst
- bool EditorClient::deBildSpeichern( Framework::Text *zDatei, Framework::Text *zName, Framework::Bild *zBild, Framework::FBalken *zF )
- {
- cs.lock();
- if( !k )
- {
- err = "Der Client ist nicht verbunden.";
- cs.unlock();
- return 0;
- }
- k->sendeEncrypted( "\x7", 1 );
- char ret = 0;
- k->getNachrichtEncrypted( &ret, 1 );
- if( ret == 1 )
- {
- k->sendeEncrypted( "\xD", 1 );
- k->getNachrichtEncrypted( &ret, 1 );
- if( ret == 1 )
- {
- k->sendeEncrypted( "\x6", 1 );
- k->getNachrichtEncrypted( &ret, 1 );
- if( ret == 1 )
- {
- char län = (char)zDatei->getLength();
- k->sendeEncrypted( &län, 1 );
- if( län )
- k->sendeEncrypted( zDatei->getText(), län );
- län = (char)zName->getLength();
- k->sendeEncrypted( &län, 1 );
- if( län )
- k->sendeEncrypted( zName->getText(), län );
- k->getNachrichtEncrypted( &ret, 1 );
- if( ret == 1 )
- {
- int br = zBild->getBreite();
- int hö = zBild->getHeight();
- k->sendeEncrypted( (char*)&br, 4 );
- k->sendeEncrypted( (char*)&hö, 4 );
- char *buffer = (char*)zBild->getBuffer();
- __int64 gr = br * hö * 4;
- zF->setAktionAnzahl( gr );
- for( int i = 0, l = gr > 2048 ? 2048 : (int)gr; gr > 0; i += l, gr -= l, l = gr > 2048 ? 2048 : (int)gr )
- {
- k->sende( &( buffer[ i ] ), l );
- zF->aktionPlus( l );
- }
- k->getNachrichtEncrypted( &ret, 1 );
- }
- }
- }
- }
- if( ret == 3 )
- {
- char byte = 0;
- k->getNachrichtEncrypted( &byte, 1 );
- char *f = new char[ byte + 1 ];
- f[ byte ] = 0;
- k->getNachrichtEncrypted( f, byte );
- err = f;
- delete[] f;
- cs.unlock();
- return 0;
- }
- if( ret != 1 )
- err = "Unbekannter Fehler";
- cs.unlock();
- return ret == 1;
- }
- // Lädt eine Liste mit Dateien im aktuellen Ordner des Datei Editors
- // zNamen: Enthält nach erfolgreichem Aufruf eine Liste mit Dateinamen (ohne erhöhten Reference Counter)
- // Gibt die Anzahl der Dateien zurück
- int EditorClient::deGetDateiListe( Framework::RCArray< Framework::Text > *zNamen )
- {
- cs.lock();
- if( !k )
- {
- err = "Der Client ist nicht verbunden.";
- cs.unlock();
- return 0;
- }
- k->sendeEncrypted( "\x7", 1 );
- char ret = 0;
- k->getNachrichtEncrypted( &ret, 1 );
- if( ret == 1 )
- {
- k->sendeEncrypted( "\xD", 1 );
- k->getNachrichtEncrypted( &ret, 1 );
- if( ret == 1 )
- {
- k->sendeEncrypted( "\x7", 1 );
- k->getNachrichtEncrypted( &ret, 1 );
- if( ret == 1 )
- {
- int anz = 0;
- k->getNachrichtEncrypted( (char*)&anz, 4 );
- for( int i = 0; i < anz; i++ )
- {
- char l = 0;
- k->getNachrichtEncrypted( &l, 1 );
- char *n = new char[ l + 1 ];
- n[ l ] = 0;
- if( l )
- k->getNachrichtEncrypted( n, l );
- zNamen->add( new Text( n ) );
- delete[] n;
- }
- cs.unlock();
- return anz;
- }
- }
- }
- if( ret == 3 )
- {
- char byte = 0;
- k->getNachrichtEncrypted( &byte, 1 );
- char *f = new char[ byte + 1 ];
- f[ byte ] = 0;
- k->getNachrichtEncrypted( f, byte );
- err = f;
- delete[] f;
- cs.unlock();
- return -1;
- }
- if( ret != 1 )
- err = "Unbekannter Fehler";
- cs.unlock();
- return ret == 1;
- }
- // Lädt eine Liste mit Bildern aus einer Bilddatei des Datei Editors
- // zNamen: Enthält nach erfolgreichem Aufruf eine Liste mit den Bildnamen (ohne erhöhten Reference Counter)
- // Gibt die Anzahl der Bilder zurück
- int EditorClient::deGetBildListe( Framework::Text *zDatei, Framework::RCArray< Framework::Text > *zNamen )
- {
- cs.lock();
- if( !k )
- {
- err = "Der Client ist nicht verbunden.";
- cs.unlock();
- return 0;
- }
- k->sendeEncrypted( "\x7", 1 );
- char ret = 0;
- k->getNachrichtEncrypted( &ret, 1 );
- if( ret == 1 )
- {
- k->sendeEncrypted( "\xD", 1 );
- k->getNachrichtEncrypted( &ret, 1 );
- if( ret == 1 )
- {
- k->sendeEncrypted( "\x8", 1 );
- k->getNachrichtEncrypted( &ret, 1 );
- if( ret == 1 )
- {
- char l = (char)zDatei->getLength();
- k->sendeEncrypted( &l, 1 );
- k->sendeEncrypted( zDatei->getText(), l );
- k->getNachrichtEncrypted( &ret, 1 );
- if( ret == 1 )
- {
- int anz = 0;
- k->getNachrichtEncrypted( (char*)&anz, 4 );
- for( int i = 0; i < anz; i++ )
- {
- k->getNachrichtEncrypted( &l, 1 );
- char *n = new char[ l + 1 ];
- n[ l ] = 0;
- if( l )
- k->getNachrichtEncrypted( n, l );
- zNamen->add( new Text( n ) );
- delete[] n;
- }
- cs.unlock();
- return anz;
- }
- }
- }
- }
- if( ret == 3 )
- {
- char byte = 0;
- k->getNachrichtEncrypted( &byte, 1 );
- char *f = new char[ byte + 1 ];
- f[ byte ] = 0;
- k->getNachrichtEncrypted( f, byte );
- err = f;
- delete[] f;
- cs.unlock();
- return 0;
- }
- if( ret != 1 )
- err = "Unbekannter Fehler";
- cs.unlock();
- return ret == 1;
- }
- // Lädt eine Liste mit 2D Modellen aus einer Modeldatei im Datei Editor
- // zDatei: Der Name der Modeldatei (ohne erhöhten Reference Counter)
- // zNamen: Enthält nach erfolgreichem Aufruf eine Liste mit den Modelnamen (ohne erhöhten Reference Counter)
- // Gibt die Anzahl der Modelle zurück
- int EditorClient::deGetModelListe( Framework::Text *zDatei, Framework::RCArray< Framework::Text > *zNamen )
- {
- cs.lock();
- if( !k )
- {
- err = "Der Client ist nicht verbunden.";
- cs.unlock();
- return 0;
- }
- k->sendeEncrypted( "\x7", 1 );
- char ret = 0;
- k->getNachrichtEncrypted( &ret, 1 );
- if( ret == 1 )
- {
- k->sendeEncrypted( "\xD", 1 );
- k->getNachrichtEncrypted( &ret, 1 );
- if( ret == 1 )
- {
- k->sendeEncrypted( "\x9", 1 );
- k->getNachrichtEncrypted( &ret, 1 );
- if( ret == 1 )
- {
- char l = (char)zDatei->getLength();
- k->sendeEncrypted( &l, 1 );
- k->sendeEncrypted( zDatei->getText(), l );
- k->getNachrichtEncrypted( &ret, 1 );
- if( ret == 1 )
- {
- int anz = 0;
- k->getNachrichtEncrypted( (char*)&anz, 4 );
- for( int i = 0; i < anz; i++ )
- {
- k->getNachrichtEncrypted( &l, 1 );
- char *n = new char[ l + 1 ];
- n[ l ] = 0;
- if( l )
- k->getNachrichtEncrypted( n, l );
- zNamen->add( new Text( n ) );
- delete[] n;
- }
- cs.unlock();
- return anz;
- }
- }
- }
- }
- if( ret == 3 )
- {
- char byte = 0;
- k->getNachrichtEncrypted( &byte, 1 );
- char *f = new char[ byte + 1 ];
- f[ byte ] = 0;
- k->getNachrichtEncrypted( f, byte );
- err = f;
- delete[] f;
- cs.unlock();
- return 0;
- }
- if( ret != 1 )
- err = "Unbekannter Fehler";
- cs.unlock();
- return ret == 1;
- }
- // Lädt eine Liste mit Sounds aus einer Sounddatei im Datei Editor
- // zDatei: Der Name der Sounddatei (ohne erhöhten Reference Counter)
- // zNamen: Enthält nach erfolgreichem Aufruf eine Liste mit den Soundnamen (ohne erhöhten Reference Counter)
- // Gibt die Anzahl der Sounds zurück
- int EditorClient::deGetSoundListe( Framework::Text *zDatei, Framework::RCArray< Framework::Text > *zNamen )
- {
- cs.lock();
- if( !k )
- {
- err = "Der Client ist nicht verbunden.";
- cs.unlock();
- return 0;
- }
- k->sendeEncrypted( "\x7", 1 );
- char ret = 0;
- k->getNachrichtEncrypted( &ret, 1 );
- if( ret == 1 )
- {
- k->sendeEncrypted( "\xD", 1 );
- k->getNachrichtEncrypted( &ret, 1 );
- if( ret == 1 )
- {
- k->sendeEncrypted( "\xA", 1 );
- k->getNachrichtEncrypted( &ret, 1 );
- if( ret == 1 )
- {
- char l = (char)zDatei->getLength();
- k->sendeEncrypted( &l, 1 );
- k->sendeEncrypted( zDatei->getText(), l );
- k->getNachrichtEncrypted( &ret, 1 );
- if( ret == 1 )
- {
- int anz = 0;
- k->getNachrichtEncrypted( (char*)&anz, 4 );
- for( int i = 0; i < anz; i++ )
- {
- k->getNachrichtEncrypted( &l, 1 );
- char *n = new char[ l + 1 ];
- n[ l ] = 0;
- if( l )
- k->getNachrichtEncrypted( n, l );
- zNamen->add( new Text( n ) );
- delete[] n;
- }
- cs.unlock();
- return anz;
- }
- }
- }
- }
- if( ret == 3 )
- {
- char byte = 0;
- k->getNachrichtEncrypted( &byte, 1 );
- char *f = new char[ byte + 1 ];
- f[ byte ] = 0;
- k->getNachrichtEncrypted( f, byte );
- err = f;
- delete[] f;
- cs.unlock();
- return 0;
- }
- if( ret != 1 )
- err = "Unbekannter Fehler";
- cs.unlock();
- return ret == 1;
- }
- // Löscht ein Model aus einer Modeldatei des Datei Editors
- // zDatei: Der Name der Modeldatei (ohne erhöhten Reference Counter)
- // zModel: Der Name des Models (ohne erhöhten Reference Counter)
- // Gibt 1 zurück, falls der Vorgang erfolgreich ist, 0 sonnst
- bool EditorClient::deModelLöschen( Framework::Text *zDatei, Framework::Text *zModel )
- {
- cs.lock();
- if( !k )
- {
- err = "Der Client ist nicht verbunden.";
- cs.unlock();
- return 0;
- }
- k->sendeEncrypted( "\x7", 1 );
- char ret = 0;
- k->getNachrichtEncrypted( &ret, 1 );
- if( ret == 1 )
- {
- k->sendeEncrypted( "\xD", 1 );
- k->getNachrichtEncrypted( &ret, 1 );
- if( ret == 1 )
- {
- k->sendeEncrypted( "\xB", 1 );
- k->getNachrichtEncrypted( &ret, 1 );
- if( ret == 1 )
- {
- char l = (char)zDatei->getLength();
- k->sendeEncrypted( &l, 1 );
- k->sendeEncrypted( zDatei->getText(), l );
- k->getNachrichtEncrypted( &ret, 1 );
- if( ret == 1 )
- {
- l = (char)zModel->getLength();
- k->sendeEncrypted( &l, 1 );
- k->sendeEncrypted( zModel->getText(), l );
- k->getNachrichtEncrypted( &ret, 1 );
- }
- }
- }
- }
- if( ret == 3 )
- {
- char byte = 0;
- k->getNachrichtEncrypted( &byte, 1 );
- char *f = new char[ byte + 1 ];
- f[ byte ] = 0;
- k->getNachrichtEncrypted( f, byte );
- err = f;
- delete[] f;
- cs.unlock();
- return 0;
- }
- if( ret != 1 )
- err = "Unbekannter Fehler";
- cs.unlock();
- return ret == 1;
- }
- // Löscht einen Sound aus einer Sounddatei des Datei Editors
- // zDatei: Der Name der Sounddatei (ohne erhöhten Reference Counter)
- // zSound: Der Name des Sounds (ohne erhöhten Reference Counter)
- // Gibt 1 zurück, falls der Vorgang erfolgreich ist, 0 sonnst
- bool EditorClient::deSoundLöschen( Framework::Text *zDatei, Framework::Text *zSound )
- {
- cs.lock();
- if( !k )
- {
- err = "Der Client ist nicht verbunden.";
- cs.unlock();
- return 0;
- }
- k->sendeEncrypted( "\x7", 1 );
- char ret = 0;
- k->getNachrichtEncrypted( &ret, 1 );
- if( ret == 1 )
- {
- k->sendeEncrypted( "\xD", 1 );
- k->getNachrichtEncrypted( &ret, 1 );
- if( ret == 1 )
- {
- k->sendeEncrypted( "\xC", 1 );
- k->getNachrichtEncrypted( &ret, 1 );
- if( ret == 1 )
- {
- char l = (char)zDatei->getLength();
- k->sendeEncrypted( &l, 1 );
- k->sendeEncrypted( zDatei->getText(), l );
- k->getNachrichtEncrypted( &ret, 1 );
- if( ret == 1 )
- {
- l = (char)zSound->getLength();
- k->sendeEncrypted( &l, 1 );
- k->sendeEncrypted( zSound->getText(), l );
- k->getNachrichtEncrypted( &ret, 1 );
- }
- }
- }
- }
- if( ret == 3 )
- {
- char byte = 0;
- k->getNachrichtEncrypted( &byte, 1 );
- char *f = new char[ byte + 1 ];
- f[ byte ] = 0;
- k->getNachrichtEncrypted( f, byte );
- err = f;
- delete[] f;
- cs.unlock();
- return 0;
- }
- if( ret != 1 )
- err = "Unbekannter Fehler";
- cs.unlock();
- return ret == 1;
- }
- // Setzt das arbeitsverzeichnis auf den obersten ordner
- bool EditorClient::deResetPath()
- {
- cs.lock();
- if( !k )
- {
- err = "Der Client ist nicht verbunden.";
- cs.unlock();
- return 0;
- }
- k->sendeEncrypted( "\x7", 1 );
- char ret = 0;
- k->getNachrichtEncrypted( &ret, 1 );
- if( ret == 1 )
- {
- k->sendeEncrypted( "\xD", 1 );
- k->getNachrichtEncrypted( &ret, 1 );
- if( ret == 1 )
- {
- k->sendeEncrypted( "\x11", 1 );
- k->getNachrichtEncrypted( &ret, 1 );
- }
- }
- if( ret == 3 )
- {
- char byte = 0;
- k->getNachrichtEncrypted( &byte, 1 );
- char *f = new char[ byte + 1 ];
- f[ byte ] = 0;
- k->getNachrichtEncrypted( f, byte );
- err = f;
- delete[] f;
- cs.unlock();
- return 0;
- }
- if( ret != 1 )
- err = "Unbekannter Fehler";
- cs.unlock();
- return ret == 1;
- }
- // Lädt ein Model aus einer Modeldatei des Datei Editors
- // zDatei: Der Name der Modeldatei (ohne erhöhten Reference Counter)
- // zModel: Enthält nach erfolgreichem Aufruf das Model (ohne erhöhten Reference Counter)
- // zF: Ein Fortschrittsbalken, der automatisch aktualisiert wird (ohne erhöhten Reference Counter)
- // Gibt 1 zurück, falls der Vorgang erfolgreich ist, 0 sonnst
- Framework::Model2DData *EditorClient::deModelLaden( Framework::Text *zDatei, Framework::Text *zModel, Framework::FBalken *zF )
- {
- cs.lock();
- if( !k )
- {
- err = "Der Client ist nicht verbunden.";
- cs.unlock();
- return 0;
- }
- k->sendeEncrypted( "\x7", 1 );
- char ret = 0;
- k->getNachrichtEncrypted( &ret, 1 );
- if( ret == 1 )
- {
- k->sendeEncrypted( "\xD", 1 );
- k->getNachrichtEncrypted( &ret, 1 );
- if( ret == 1 )
- {
- k->sendeEncrypted( "\xD", 1 );
- k->getNachrichtEncrypted( &ret, 1 );
- if( ret == 1 )
- {
- char l = (char)zDatei->getLength();
- k->sendeEncrypted( &l, 1 );
- k->sendeEncrypted( zDatei->getText(), l );
- k->getNachrichtEncrypted( &ret, 1 );
- if( ret == 1 )
- {
- l = (char)zModel->getLength();
- k->sendeEncrypted( &l, 1 );
- k->sendeEncrypted( zModel->getText(), l );
- k->getNachrichtEncrypted( &ret, 1 );
- if( ret == 1 )
- {
- int anz = 0;
- k->getNachrichtEncrypted( (char*)&anz, 4 );
- zF->setAktionAnzahl( anz );
- Array< Polygon2D > *pol = new Array< Polygon2D >();
- for( int i = 0; i < anz; i++ )
- {
- Polygon2D p;
- p.schwerpunkt = new Vertex( 0, 0 );
- p.vertex = new Array< Vertex >();
- p.tKordinaten = new Array< Vertex >();
- k->getNachrichtEncrypted( (char*)&p.transparent, 1 );
- char nLän = 0;
- k->getNachrichtEncrypted( &nLän, 1 );
- char *txt = new char[ nLän + 1 ];
- if( nLän )
- k->getNachrichtEncrypted( txt, nLän );
- txt[ nLän ] = 0;
- p.name = new Text( txt );
- delete[] txt;
- int anz2 = 0;
- k->getNachrichtEncrypted( (char*)&anz2, 4 );
- for( int j = 0; j < anz2; j++ )
- {
- Vertex v;
- k->getNachrichtEncrypted( (char*)&v.x, 4 );
- k->getNachrichtEncrypted( (char*)&v.y, 4 );
- *p.schwerpunkt += v * (float)( 1.0 / anz2 );
- Vertex t;
- k->getNachrichtEncrypted( (char*)&t.x, 4 );
- k->getNachrichtEncrypted( (char*)&t.y, 4 );
- p.vertex->add( v );
- p.tKordinaten->add( t );
- }
- pol->add( p );
- zF->aktionPlus();
- }
- Model2DData *data = new Model2DData();
- data->erstelleModell( pol );
- cs.unlock();
- return data;
- }
- }
- }
- }
- }
- if( ret == 3 )
- {
- char byte = 0;
- k->getNachrichtEncrypted( &byte, 1 );
- char *f = new char[ byte + 1 ];
- f[ byte ] = 0;
- k->getNachrichtEncrypted( f, byte );
- err = f;
- delete[] f;
- cs.unlock();
- return 0;
- }
- err = "Unbekannter Fehler";
- cs.unlock();
- return 0;
- }
- // Lädt einen Sound herunter und gibt ihn zurück
- // file: Ein Zeiger auf die GSLDatei, in der der Sound gespeichert werden soll
- // zDatei: Der Name der Sounddatei (ohne erhöhten Reference Counter)
- // zSound: Der Name des Sounds (ohne erhöhten Reference Counter)
- // zF: Ein Fortschrittsbalken, der automatisch aktualisiert wird (ohne erhöhten Reference Counter)
- // Gibt bei misserfolg 0 zurück
- GSL::GSLSoundV *EditorClient::deSoundLaden( GSL::GSLDateiV *file, Framework::Text *zDatei, Framework::Text *zSound, Framework::FBalken *zF )
- {
- file->setDatei( (char*)"data/tmp/editor/dateien/sounds/tmp.gsl" );
- cs.lock();
- if( !k )
- {
- err = "Der Client ist nicht verbunden.";
- cs.unlock();
- file->release();
- return 0;
- }
- k->sendeEncrypted( "\x7", 1 );
- char ret = 0;
- k->getNachrichtEncrypted( &ret, 1 );
- if( ret == 1 )
- {
- k->sendeEncrypted( "\xD", 1 );
- k->getNachrichtEncrypted( &ret, 1 );
- if( ret == 1 )
- {
- k->sendeEncrypted( "\xE", 1 );
- k->getNachrichtEncrypted( &ret, 1 );
- if( ret == 1 )
- {
- char l = (char)zDatei->getLength();
- k->sendeEncrypted( &l, 1 );
- k->sendeEncrypted( zDatei->getText(), l );
- k->getNachrichtEncrypted( &ret, 1 );
- if( ret == 1 )
- {
- l = (char)zSound->getLength();
- k->sendeEncrypted( &l, 1 );
- k->sendeEncrypted( zSound->getText(), l );
- k->getNachrichtEncrypted( &ret, 1 );
- if( ret == 1 )
- {
- DownloadSound dws( k, zF );
- file->speicherSound( &dws, zSound->getText() );
- GSL::GSLSoundV *s = file->getSound( zSound->getText() );
- file->release();
- cs.unlock();
- return s;
- }
- }
- }
- }
- }
- file->release();
- if( ret == 3 )
- {
- char byte = 0;
- k->getNachrichtEncrypted( &byte, 1 );
- char *f = new char[ byte + 1 ];
- f[ byte ] = 0;
- k->getNachrichtEncrypted( f, byte );
- err = f;
- delete[] f;
- cs.unlock();
- return 0;
- }
- err = "Unbekannter Fehler";
- cs.unlock();
- return 0;
- }
- // Speichert ein Model in eine Modeldatei des Datei Editors
- // zDatei: Der Name der Modeldatei (ohne erhöhten Reference Counter)
- // zModel: Der Name des Models (ohne erhöhten Reference Counter)
- // zData: Die Daten des Models (ohne erhöhten Reference Counter)
- // zF: Ein Fortschrittsbalken, der automatisch aktualisiert wird (ohne erhöhten Reference Counter)
- // Gibt 1 zurück, falls der Vorgang erfolgreich ist, 0 sonnst
- bool EditorClient::deModelSpeichern( Framework::Text *zDatei, Framework::Text *zModel, Framework::Model2DData *zData, Framework::FBalken *zF )
- {
- cs.lock();
- if( !k )
- {
- err = "Der Client ist nicht verbunden.";
- cs.unlock();
- return 0;
- }
- k->sendeEncrypted( "\x7", 1 );
- char ret = 0;
- k->getNachrichtEncrypted( &ret, 1 );
- if( ret == 1 )
- {
- k->sendeEncrypted( "\xD", 1 );
- k->getNachrichtEncrypted( &ret, 1 );
- if( ret == 1 )
- {
- k->sendeEncrypted( "\xF", 1 );
- k->getNachrichtEncrypted( &ret, 1 );
- if( ret == 1 )
- {
- char l = (char)zDatei->getLength();
- k->sendeEncrypted( &l, 1 );
- k->sendeEncrypted( zDatei->getText(), l );
- k->getNachrichtEncrypted( &ret, 1 );
- if( ret == 1 )
- {
- l = (char)zModel->getLength();
- k->sendeEncrypted( &l, 1 );
- k->sendeEncrypted( zModel->getText(), l );
- k->getNachrichtEncrypted( &ret, 1 );
- if( ret == 1 )
- {
- int anz = zData->polygons ? zData->polygons->getEintragAnzahl() : 0;
- zF->setAktionAnzahl( anz );
- k->sendeEncrypted( (char*)&anz, 4 );
- for( int i = 0; i < anz; i++ )
- {
- Polygon2D pol = zData->polygons->get( i );
- k->sendeEncrypted( (char*)&pol.transparent, 1 );
- char nLän = pol.name->getLength();
- k->sendeEncrypted( &nLän, 1 );
- if( nLän )
- k->sendeEncrypted( pol.name->getText(), nLän );
- int anz2 = pol.vertex->getEintragAnzahl();
- k->sendeEncrypted( (char*)&anz2, 4 );
- for( int j = 0; j < anz2; j++ )
- {
- Vertex v = pol.vertex->get( j );
- Vertex p;
- if( pol.tKordinaten )
- p = pol.tKordinaten->hat( j ) ? pol.tKordinaten->get( j ) : Vertex( 0, 0 );
- k->sendeEncrypted( (char*)&v.x, 4 );
- k->sendeEncrypted( (char*)&v.y, 4 );
- k->sendeEncrypted( (char*)&p.x, 4 );
- k->sendeEncrypted( (char*)&p.y, 4 );
- }
- zF->aktionPlus();
- }
- k->getNachrichtEncrypted( &ret, 1 );
- }
- }
- }
- }
- }
- if( ret == 3 )
- {
- char byte = 0;
- k->getNachrichtEncrypted( &byte, 1 );
- char *f = new char[ byte + 1 ];
- f[ byte ] = 0;
- k->getNachrichtEncrypted( f, byte );
- err = f;
- delete[] f;
- cs.unlock();
- return 0;
- }
- if( ret != 1 )
- err = "Unbekannter Fehler";
- cs.unlock();
- return ret == 1;
- }
- // Speichert einen Sound in einer Sounddatei des Datei Editors
- // zDatei: Der Name der Modeldatei (ohne erhöhten Reference Counter)
- // zSound: Der Name des Sounds (ohne erhöhten Reference Counter)
- // zData: Die Daten des Sounts (ohne erhöhten Reference Counter)
- // zF: Ein Fortschrittsbalken, der automatisch aktualisiert wird (ohne erhöhten Reference Counter)
- // Gibt 1 zurück, falls der Vorgang erfolgreich ist, 0 sonnst
- bool EditorClient::deSoundSpeichern( Framework::Text *zDatei, Framework::Text *zSound, GSL::GSLSoundV *zData, Framework::FBalken *zF )
- {
- cs.lock();
- if( !k )
- {
- err = "Der Client ist nicht verbunden.";
- cs.unlock();
- return 0;
- }
- k->sendeEncrypted( "\x7", 1 );
- char ret = 0;
- k->getNachrichtEncrypted( &ret, 1 );
- if( ret == 1 )
- {
- k->sendeEncrypted( "\xD", 1 );
- k->getNachrichtEncrypted( &ret, 1 );
- if( ret == 1 )
- {
- k->sendeEncrypted( "\x10", 1 );
- k->getNachrichtEncrypted( &ret, 1 );
- if( ret == 1 )
- {
- char l = (char)zDatei->getLength();
- k->sendeEncrypted( &l, 1 );
- k->sendeEncrypted( zDatei->getText(), l );
- k->getNachrichtEncrypted( &ret, 1 );
- if( ret == 1 )
- {
- l = (char)zSound->getLength();
- k->sendeEncrypted( &l, 1 );
- k->sendeEncrypted( zSound->getText(), l );
- k->getNachrichtEncrypted( &ret, 1 );
- if( ret == 1 )
- {
- char channels = zData->istMono() ? 1 : 2;
- k->sendeEncrypted( &channels, 1 );
- int sample = zData->getSampleRate();
- k->sendeEncrypted( (char*)&sample, 4 );
- __int64 slän = zData->getDatLength();
- k->sendeEncrypted( (char*)&slän, 8 );
- zF->setAktionAnzahl( slän );
- zData->open();
- char *buffer = new char[ 2048 ];
- while( slän > 0 )
- {
- int l = slän > 2048 ? 2048 : (int)slän;
- zData->getDaten( buffer, l );
- k->sende( buffer, l );
- slän -= l;
- zF->aktionPlus( l );
- }
- delete[] buffer;
- zData->close();
- }
- }
- }
- }
- }
- if( ret == 3 )
- {
- char byte = 0;
- k->getNachrichtEncrypted( &byte, 1 );
- char *f = new char[ byte + 1 ];
- f[ byte ] = 0;
- k->getNachrichtEncrypted( f, byte );
- err = f;
- delete[] f;
- cs.unlock();
- return 0;
- }
- if( ret != 1 )
- err = "Unbekannter Fehler";
- cs.unlock();
- return ret == 1;
- }
- // Lädt die Kauf Statistik der geladenen Karte
- // verkauft: Enthält nach erfolgreichem Aurfuf eine Liste mit den Anzahlen der Käufe der Karte der letzten 30 Tage
- // einkommen: Enthält nach erfolgreichem Aurfuf eine Liste mit den Anzahlen der verdinten Kupfer in den letzten 30 Tagen
- // gespielt: Enthält nach erfolgreichem Aurfuf eine Liste mit den Anzahlen der Spielen der letzten 30 Tage
- // Gibt 1 zurück, falls der Vorgang erfolgreich ist, 0 sonnst
- int EditorClient::getVerkaufStatistik( Framework::Array< int > *verkauft, Framework::Array< int > *einkommen, Framework::Array< int > *gespielt )
- {
- cs.lock();
- if( !k )
- {
- err = "Der Client ist nicht verbunden.";
- cs.unlock();
- return 0;
- }
- k->sendeEncrypted( "\x7", 1 );
- char ret = 0;
- k->getNachrichtEncrypted( &ret, 1 );
- if( ret == 1 )
- {
- k->sendeEncrypted( "\x10", 1 );
- k->getNachrichtEncrypted( &ret, 1 );
- if( ret == 1 )
- {
- int kaufAnz = 0;
- k->getNachrichtEncrypted( (char*)&kaufAnz, 4 );
- char anz = 0;
- k->getNachrichtEncrypted( &anz, 1 );
- for( int i = 0; i < anz; i++ )
- {
- int kupfer = 0;
- int kauf = 0;
- int games = 0;
- k->getNachrichtEncrypted( (char*)&kupfer, 4 );
- k->getNachrichtEncrypted( (char*)&kauf, 4 );
- k->getNachrichtEncrypted( (char*)&games, 4 );
- einkommen->add( kupfer );
- verkauft->add( kauf );
- gespielt->add( games );
- }
- cs.unlock();
- return kaufAnz;
- }
- }
- if( ret == 3 )
- {
- char byte = 0;
- k->getNachrichtEncrypted( &byte, 1 );
- char *f = new char[ byte + 1 ];
- f[ byte ] = 0;
- k->getNachrichtEncrypted( f, byte );
- err = f;
- delete[] f;
- cs.unlock();
- return 0;
- }
- err = "Unbekannter Fehler";
- cs.unlock();
- return 0;
- }
- // Startet den Editor Modus, welcher für jedes Spiel unterschiedlich funktioniert
- // Gibt 1 zurück, falls der Vorgang erfolgreich ist, 0 sonnst
- bool EditorClient::initEditor()
- {
- cs.lock();
- if( !k )
- {
- err = "Der Client ist nicht verbunden.";
- cs.unlock();
- return 0;
- }
- k->sendeEncrypted( "\x7", 1 );
- char ret = 0;
- k->getNachrichtEncrypted( &ret, 1 );
- if( ret == 1 )
- {
- k->sendeEncrypted( "\xE", 1 );
- k->getNachrichtEncrypted( &ret, 1 );
- }
- if( ret == 3 )
- {
- char byte = 0;
- k->getNachrichtEncrypted( &byte, 1 );
- char *f = new char[ byte + 1 ];
- f[ byte ] = 0;
- k->getNachrichtEncrypted( f, byte );
- err = f;
- delete[] f;
- cs.unlock();
- return 0;
- }
- if( ret != 1 )
- err = "Unbekannter Fehler";
- cs.unlock();
- return ret == 1;
- }
- // Erhält die Verbindung aufrecht
- // Gibt 1 zurück, falls der Vorgang erfolgreich ist, 0 sonnst
- // Sollte während einer bestehenden Verbindung etwa einmal alle 60 Sekunden aufgerufen werden, da sonst der Router die Verbindung automatisch trennt
- bool EditorClient::keepAlive()
- {
- if( !cs.tryLock() )
- return 1;
- if( !k )
- {
- err = "Der Client ist nicht verbunden.";
- cs.unlock();
- return 0;
- }
- char res = 0;
- bool ok = k->sendeEncrypted( "\x5", 1 );
- ok &= k->getNachrichtEncrypted( &res, 1 );
- cs.unlock();
- if( res != 1 || !ok )
- trenne( 0 );
- if( res != 1 )
- err = "Unbekannter Fehler";
- return res == 1;
- }
- // Trennt die Verbindung zum Server
- // Gibt 1 zurück, falls der Vorgang erfolgreich ist, 0 sonnst
- // Sollte erst nach einem erfolgreichen Aufruf von verbinde aufgerufen werden
- bool EditorClient::trenne( bool abmelden )
- {
- cs.lock();
- verbinde();
- if( !k )
- {
- cs.unlock();
- return 1;
- }
- if( abmelden )
- {
- k->sendeEncrypted( "\4", 1 );
- char ret = 0;
- k->getNachrichtEncrypted( &ret, 1 );
- if( ret == 3 )
- { // error
- k->getNachrichtEncrypted( &ret, 1 );
- char *msg = new char[ ret + 1 ];
- msg[ ret ] = 0;
- if( ret )
- k->getNachrichtEncrypted( msg, ret );
- err = "error while unregister Client Editor Server returned: ";
- err += msg;
- delete[] msg;
- }
- }
- k->sendeEncrypted( "\3", 1 );
- char ret = 0;
- k->getNachrichtEncrypted( &ret, 1 );
- if( ret == 3 )
- { // error
- k->getNachrichtEncrypted( &ret, 1 );
- char *msg = new char[ ret + 1 ];
- msg[ ret ] = 0;
- if( ret )
- k->getNachrichtEncrypted( msg, ret );
- err = "error while trenne Editor Server returned: ";
- err += msg;
- delete[] msg;
- }
- k->trenne();
- k = k->release();
- cs.unlock();
- return 1;
- }
- // Beginnt eine individuelle Editor Nachricht
- // Gibt den Klient zurück, über den mit dem Server kommuniziert werden kann. Im Fehlerfall wird 0 zurückgegeben
- // Der Thread, der diese Methode aufgerufen hat, sollte nach dem Erfolgreichen Aufruf am Ende der Kommunikation mit dem Server endEditorMessage aufrufen
- Network::Klient *EditorClient::beginEditorMessage()
- {
- cs.lock();
- if( !k )
- {
- err = "Der Client ist nicht verbunden.";
- cs.unlock();
- return 0;
- }
- k->sendeEncrypted( "\7", 1 );
- char ret = 0;
- k->getNachrichtEncrypted( &ret, 1 );
- if( ret == 1 )
- {
- k->sendeEncrypted( "\xF", 1 );
- k->getNachrichtEncrypted( &ret, 1 );
- if( ret == 1 )
- return k;
- }
- if( ret == 3 )
- {
- k->getNachrichtEncrypted( &ret, 1 );
- char *msg = new char[ ret + 1 ];
- msg[ ret ] = 0;
- if( ret )
- k->getNachrichtEncrypted( msg, ret );
- err = "error while beginning Editor Message Server returned: ";
- err += msg;
- delete[] msg;
- }
- err = "Unbekannter Fehler";
- cs.unlock();
- return 0;
- }
- // Beendet eine Editor Nachricht
- // sollte nur nach dem erfolgreichem Aufrufen von beginEditorMessage aufgerufen werden (vom selben Thread)
- void EditorClient::endEditorMessage()
- {
- cs.unlock();
- }
- // Gibt 1 zurück, falls der Client verbunden ist, 0 sonst
- bool EditorClient::istVerbunden() const
- {
- return k != 0;
- }
- // gibt den Letzten Fehlertext zuück
- // sollte erst aufgerufen werden, nachdem eine andere aufgerufene Methode fehlgeschlagen ist
- char *EditorClient::getLetzterFehler() const
- {
- return err;
- }
- // Erhöht den Reference Counter um 1 un gibt this zurück
- EditorServerClient *EditorClient::getThis()
- {
- ref++;
- return this;
- }
- // Verringert den Reference Counter um 1 und gibt 0 zurück.
- // Falls der Reference Counter nach dem Aufruf auf 0 ist löscht sich das Objekt selbst
- EditorServerClient *EditorClient::release()
- {
- if( !--ref )
- delete this;
- return 0;
- }
|