15.06.2002 Atklājās, ka Hexen-ā monstri neredz spēlētāju. Dīvaini, jo man šķita, ke es to jau izlaboju. 17.06.2002 Heretic objektu pārkārtošana. Ieviestas pamatklases, viss sašķirots. Tika floatizēts PainChance. 18.06.2002 Pārnesu SlideMove un BounceWall uz endžini. 19.06.2002 Hexen objektu pārkārtošana. Ieviestas bāzes klases, šķirošana. 20.06.2002 Pievienoju funkciju FindClass. Pabeidzu šķirot Hexen klases. Baigā noņemšanās. Sāku atšķirot Strife paceļmos priekšmetus. 21.06.2002 Izrādās ka sarunu skriptos priekšmeti tiek doti izmantojot indeksu tabulā. Visi Strife pickup-i ir atsevišķi. 22.06.2002 Strife atslēgas, munīciju un ieročus jau var paņemt. Gandrīz visi ieroči ir strādējoši. 25.06.2002 Visur pārgāju uz peldošā komata PainChance. Darbojos ar Strife dekorācijām. 26.06.2002 Salaboju Doom statiskās gaismas. Pabeidzu ar Strife dekorācijām. 27.06.2002 Ieviesu kopējo fragu skaitītāju. 01.07.2002 Strādāju pie strife. Darbojos ar monstru šāviņiem un citiem efektiem. Visas funkcijas ir apvienotas, daļa jau sadalītas pa attiecīgajām klasēm. 02.07.2002 Pilnībā pabeidzu Strife datu apvienošanu, sakārtošana. Segmentu dati tiek interpretēti kā bez zīmes, kas atrisinās problēmu ar ļoti lieliem līmeņiem. 03.07.2002 Pāris globālo funkciju pārnestas uz Entity klasi. Neliels uzlabojums līmeņa ielādē kas atļauj ielādēt problemātiskus līmeņus. Salaboju tīkla paketes izmēra haku vienspēlētāja režīmā. makeinfo izmetu ārā Heretic, Hexen un Strife datus, pārgrupēju Doom datus. Iespējams es to pārdēvēšu par deh2vc. 06.07.2002 Heretic un Hexen pievienoti jauni modeļi. 08.07.2002 Turpinu modeļu pievienošanu un uzlabošanu. 12.07.2002 Rendēšanas draiveri tagad pieder VObject objektu kokam. Visi draiveri zīmē līmeni vienā virzienā. 13.07.2002 Srife izmetu ārā visus shareware versijas datus. Neliela kļūdiņa asemblera failā. 15.07.2002 Srife izveidoju ievada sekvenci. 16.07.2002 Kompilātorā aizvietoju stāvokLu tabulas ar dinamiskajiem masīviem. Sāku darbu pie skaņas draiveru objektiem. 17.07.2002 Daļa skaņas draivera funkciju ir klases funkcijas. 18.07.2002 Salaboju pieslēgšanos tīkla spēlei no menu, kā arī vienu problēmu Heretic, kas uzkāra tīkla spēli. Pabeidzu ar skaņas draivera objektu, sāku ieviest OpenAL draiveri. Ja nav skaņas datu, vairs netiks pārtraukta spēle. 19.07.2002 Atrisināju problēmu ar giard makrosiem. 20.07.2002 Aizvietoju pāris takšu skaitītājus ar peldošā komata laiku. Pilnībā implementēju OpenAL draiveri. 22.07.2002 Oficiāli pārgāju uz peldošā komata laiku. Izlaidu beta versiju. 23.07.2002 Pilnībā atbrīvojos no iostream. 26.07.2002 Sāku ieviest Strife sarunas. 29.07.2002 Strife sarunas jau strādā. Konsolē skrollings pa 5 līnijām, ar SHIFT pa vienai. 30.07.2002 Pāris dienas atpakaļ pateicu glBSP autoram par izmaiņām. Viņam pašam bija vēl pāris izmaiņas, kuras tika atjauninātas. 01.08.2002 Atjaunoju glBSP ar pašu jaunāko versiju, kuru Endrjū ir aploudojis CVS. Atjaunoju vlaunch ar pāris jaunām lietām. 03.08.2002 Pievienoju Heretic Gold Wand modeli. 05.08.2002 Piestrādāju pie modeļiem. Slaņu sekvences tiek pārsūtītas ar drošo protokolu. 06.08.2002 Pāris sīki labojumi. Sakārtoju DDF un DeHackEd atbalstu. Pielaboju OpenAL draiveri Linux vajadzībām. Linux versijā šis tas trūkst. Poliobjektu grūzšanas kodā netika pareizi nodoti peldošā komata skaitļi, kas iespējams radīja FPU kļūdas. Endrjū radās ideja kā glBSP atrisināt problēmu, kad tiek sadalīts sektors ar poliobjektu pa virsotnēm. Strādā labi. ****************************************************************************** VERSIJA 1.14 ****************************************************************************** 12.08.2002 Izmēģināju MP3 ar fmod, strādā normāli. 13.08.2002 DDF atbalstā nomainīju ObjInitState uz stāvokļa vārdu. ddf2vc portēju uz Windows, ar Borland strādA normāli, problēmas ar MSVC. Vēl netiek eksportēti stāvokļi objektiem bez tiem. 14.08.2002 Sāku strādāt pie 2 piegājienu kompilatora. 16.08.2002 Nopietns progress 2 piegājienu kompilēšanā. 17.08.2002 2 piegājienu kompilēšana ir strādAjoša. 19.08.2002 Atrisināju problēmu ar BLOCKMAP lielāku par 64k. Salaboju skrīnšotus. 20.08.2002 Implementēju slīpo virsmu definēšanu izmantojot virsotņu augstumus. 23.08.2002 Utilītos atbrīvojos no iostream. 26.08.2002 Slīpo virsmu definēšana izmantojot ZDoom līniju speciālu. Padarīju VEntity publisku. 27.08.2002 Ieviesu atbalstu krāsainam sektoru apgaismojumam. Apvienoju Entity un MapObject klases. 28.08.2002 Hexen atbrīvojos no tilta orbītu tabulām. Konfigurējams entīšu limits. Ieviesu atbalstu vecajām ekrāna proporcijām. 29.08.2002 Sāku ieviest līmeņa klasi. 30.08.2002 Visi līmeņa dati ir pārnesti uz līmeņa klasi. Apgreidoju tekstūru utilītu. Var konvertēt Strife tekstūras. 31.08.2002 Turpinu darbu pie līmeņa klases, pārnestas veirākas funkcijas. Var eksportēt Strife tekstūras atpakaļ wad failā. Skriptā bool var izmantot funkciju argumentos un kā atgriežamo tipu. 02.09.2002 Skriptā atbrīvojos no PointInSubsector, visur īstenībā ir vajadzīgs sektors. Piešķiršanā netika pārbaudīta tipu savietojamība. 05.09.2002 Pārnesu P_ChangeSector uz dzini. 07.09.2002 Aizvietoju boolean ar bool. Pārnesu RoughMonsterSearch uz dzini. 14.09.2002 Sāku pārveidot klases jaunā stilā. 21.09.2002 Turpinu sadali. Šodien kārta Hexen. Ak, vai! 28.09.2002 Turpinu. Kārta vēl vienai kaudzei klašu. 05.10.2002 Sodien kārta Strife klasēm. 12.10.2002 Dienas kārtībā menu. 19.10.2002 Kārta menu objektiem. 26.10.2002 Beidzot arī servera pamatklases. Tas viss tika apdeitots iekš CVS, bet tā laikA uzkārās kompis un radāk konflikti. Nebija laika čakarēties. Bet pats galvenais ir tas, ka visas klases ir jaunajā stilā. 02.11.2002 Tiku galā ar CVS konfliktu. Visādi citād izjaukta diena. 09.11.2002 Atradu kāpēc ACS kārās - aizmirsu iekļaut skripta failu. 16.11.2002 Pāris uzlabojumi softa draiverī. Pāris citi sīki labojumi. 02.01.2003 Pāris pārkārtojumi menu, konkrēti ievada līnija. Kompilātorā ir tikai 2 piegājienu versija, atbrīvojos no this pointera. 15.02.2003 Ievada līniju integrācija. Korekts Destroy. 08.03.2003 Uzlaboju tīkla spēli, cerams ka nebūs aizturu. ****************************************************************************** VERSIJA 1.15 ****************************************************************************** 03.07.2003 Taka darbs pie Vavoom ir loti ierobezots, trukst daudz log informacijas. Man ir izdevies izveidot nelielu sistemu ka apdeitot un ir neliels progress. Isuma statuss uz so dienu, salidzinajuma ar relizi. Kustigas 3D gridas, tas bija diezgan vienkarsi. Speletaju masivs tagad satur pointerus uz strukturam, driz bus klases. Testa implementacija ZDoom kameram. TArray templeits papildinats ar atminas tagu. Apdeitoju DDF konverteri lai tas generetu klasu failus. 05.09.2003 Nolemu apdeitot logus. Stavoklis uz sodienu. Kautkas prieks Boom atbalsta, neka daudz. Joka pec speletaja ieroca nomesana. Darbs pie Strife liniju specialiem, daudzi jaunie jau strada. 22.09.2003 Salaboju RoughMonsterSearch. 23.09.2003 Ir bijusas paris izmainas Strife, tadas ka sarunas laika nospiezot ESC tiek aizsutits impuls, kludas labojums menu slaideros un enumos, statusbara tagad ir veselibas skaits (vel nav indikators), implementeju stavesanas funkciju, ir klusie ieroci. Palielinaju maksimalo izskirtspeju. glbsp konsoles komanda parsingo visus parametrus. 25.09.2003 vlumpy prot veidot Doom standarta patcus. Teksta drukasana ar vardu vrapingu Strife sarunam. Gadijuma sarunas. 26.09.2003 Atradu ko nozime visi Strife sarunu atbilzu lauki, tagad speletajam tiek doti prieksmeti un ir ne atbilde ja kautka nav. Inventara sistema. 29.09.2003 Atradu ko nozime visi parametri Strife sarunas. Tagad viss strada ka vajag, tai skaita visi nomestie prieksmeti. Ir ari kvestu biti. Nokopeju no Unreal-a guard makrosu kontekstu Linux versijai, signali tagad izmanto longjmp lai izietu ara un atjaunotu registrus lai varetu mierigi izmest exception-u. Tagad signali normali iziet no programas. 02.10.2003 Strife statusbara ierocu popupa ir visi elementi. Implementeti specialie sarunu prieksmeti kuri atver durvis. Tiek dota precizitate un izturiba. 03.10.2003 Palielinaju speletaja sakuma punktu skaitu. Strife izsitot logu tas vairs nebloke, var nonemt force field. 15.10.2003 Izlaboju kludu Heretic kad inventars pec attieciga laika neaizveras. OpenGL un Direct3D draiveros ja nav brivu cache bloku tiek atbrivoti visi vecie cache bloki. Seivgeimos tagad tiek saglabata slepta limena informacija. Tagad ieladejot seivu un izejot limeni pareizi atgriezas uz vajadzigo limeni. 21.10.2003 Speletaja ierocu spraiti tiek zimeti dazados atalumos lai nebutu problemu ar to parklasanos. 05.11.2003 Speletaja struktura parveidota par klasi. 22.12.2003 Ieviesu risinajumu "feet in ground" problemai. ****************************************************************************** VERSIJA 1.15.1 ****************************************************************************** 09.01.2004 Apdeitoju uz jaunako glbsp versiju. Izlaboju atkartojosos balsu kludu. Implementeju comm unita un teksturu skrollinga liniju specialus. Saku parnest no ZDoom Strife stavoklu funkcijas. 13.01.2004 Parnesu praktiski visas pieejamas Strife stavoklu funkcijas. Alternativie ieroci. 23.01.2004 Parnesu daudzas Strife stavoklu funkcijas pec to piederibas. 27.01.2004 Izlaboju kludu limena ielade. Labaks minzone izmers. 11.02.2004 Salaboju botu tikla mesidzus. Implementeju Strife ammo satchel. Sarunu uzsaksanai augstuma parbaude. 12.02.2004 Salaboju atkartotu menu izsauksanu. 27.02.2004 Speletaja starta punktu augstums. 24.03.2004 Speciala darbiba nogalinot monstru. Salaboju augstumu floutojosajiem itemiem. Salaboju TGA failu paletes ieladi. ****************************************************************************** VERSIJA 1.15.2 ****************************************************************************** 07.04.2004 Loga rezims visiem Windows renderiem. 15.04.2004 Campers ieteica paris labojumus un atbalstu peles rullitim. !!! Trukst datu. 29.07.2004 DirectSound draiveri atrisinaju problemu ar strukturu izmeriem. 18.08.2004 Atbalsts lielakiem virtuala ekrana izmeriem. 21.08.2004 Partaisiju VClass par patstavigu klasi. Partaisiju rendera un skanas draiveru registraciju. 22.08.2004 Parnesu kaudzi funkciju uz speletaja klasi. 23.08.2004 Parnesu ari ierocu utilitus uz speletaja klasi. 26.08.2004 Pievienoju jaunus 3D modelus Hexen-am. 27.08.2004 Saku parnest visparigas klienta funkcijas uz speletaja klasi. 28.08.2004 Pabeidzu ar visparigajam klienta funkcijam. 04.10.2004 I've got my own computer at home and I'm back to Vavoom development. I also decided to write further logs in English, partly because most user's don't speek Latvian (now they will understand this) and because in Linux typing logs in Latvian might have compatibility problems. But don't expect me to translate all old logs. 05.10.2004 Added behavior lump size check. Levels with BEHAVIOR lump of 0 bytes will load fine now. 06.10.2004 Working on better rendering of old skies, almost done. 07.10.2004 Finished improved old sky rendering. 08.10.2004 Added SDL patches (with some modifications). Probably I have a very old version of SDL since I had to comment out some lines that most likely do work with newer versions. Updated to latest glBSP version. 10.10.2004 Added support for version 3.0 GL-Nodes in engine and glVIS. Fixed flying blood n Hexen. In Doom and Strife added definitions for texture and flat animations for all frames. Added toggle always run to controls menu. In Linux end text replace characters below 32 with dot. For Strife added helper ACS scripts lump. Coorect locks by quests. 11.10.2004 Joystick yaw speed default value fixed. Added acc and compiling of helper ACS to build process. In Strife stamina affects maximal health. 12.10.2004 Working on Strife. By looking at SvDoom source found out that items and blowable objects have give quest flag with quest number in speed. It made a lots of quest triggers work fine. Also implemented animated door. Now it's playable till killing of Programmer. 13.10.2004 More work on Strife. Fully implemented alarm indicators, turrets, stalkers and Programmer. Killing Programmer informs helper ACS about death so that map traversals to new and abandoned front base work fine. 15.10.2004 Upgraded to latest SDL. Anyways there's some delay till sound is played. 17.10.2004 Working on Strife monsters. Implemented templar, inquisitor, Bishop, Macil, Oracle, Loremaster, specters, Entity. Also implemented sigil. ****************************************************************************** VERSION 1.15.3 ****************************************************************************** 26.10.2004 In ACS interpreter replaced function table with big switch statement. This is much faster since compiler can optimize it better (like in progs VM). It will also allow multiple other optimizations that I've done in progs VM. 29.10.2004 Finally added TID handling to all games. 31.10.2004 Implementing missing Hexen line specials in all games. The only missing is use puzzle item. 11.11.2004 Several changes in Allegro+GLX driver to match latest Allegro version. 14.11.2004 Fixed sky height, always checking for valid sprite number and frame. 20.11.2004 Began working on implementing all sector specials in all games. 21.11.2004 All of the normal sector specials and extended damage specials are properly implemented. This also fixed several bugs where sector special number wasn't addjusted to translated special number. Also fixed time when damage specials are applied. 22.11.2004 Implemented wad file lump namespaces. In ACS interpreter manually inlined stack functions. Execution local state variables that were global now are local. 23.11.2004 Added support for loading PNG files. As a test tried to load a hi-res PNG texture replacement textures and it worked fine, meaning that hi-res texture support is almost done. In ACS interpreter optimized work with stack. 24.11.2004 Added all extended acs opcodes. Most of them currently are not implemented, they only take parameters and pushes result to stack. 25.11.2004 Added support for loading enhanced ACS script lumps. 28.11.2004 Implemented ACS functions. Created scripts object class for libraries. 29.11.2004 Fully implemented support for high-resolution textures. Some more work on ACS objects. 30.11.2004 Implemented ACS variable arrays and libraries. 04.12.2004 Increased ACS variable amounts. Updated to acc 1.31. 05.12.2004 Removed limit on ACS scritp variable count. Execution of ACS scritps with result. 06.12.2004 In progs increased maximal function arg count to 16, StartACS uses this. Implemented some ACS opcodes. Updated acc to version 1.32. Started to implement many Strife line specials with helper ACS using new ACS possibilities. 07.12.2004 In Strife changed lock numbers for "Doean't work" to match ZDoom's. Strife's new line specials with temporary numbers changed to have proper numbers. 08.12.2004 In Strife fixed z velocity for flamethrower and grenades. Fixed mauler's second attack throwing out of the level. Proper Sigil sprite depending on number of Sigil pieces. Fixed floor Sigil attack. 09.12.2004 Implemened Strife's friendly enemy AI. 10.12.2004 Implemented Strife's key display. Fixed activation of several line types. 11.12.2004 Implemented some Strife's unknown action functions. 12.12.2004 Added more line flags. Implemented railings. Strife conversations now display prices. Fixed manual doors to use passed special arguments. In utils directory created directory for editing stuff - ACS includes and config files for WadAuthor and DoomBuilder. 13.12.2004 In Strife implemented armor display, fixed breakable glass. 14.12.2004 Implemented throwing an item in Strife. 17.12.2004 Manual door fix in all games. 19.12.2004 Fixed Strife boss deaths. 20.12.2004 Updated to acc 1.33. 21.12.2004 Implemented Strife finales, slideshows, various death types. 22.12.2004 Several fixes to compile under Windows. Updated glVIS to release a new version. 23.12.2004 Moved cheat and savegame functions to player class. Player class functions are called directly by engine. Added newely added ACS pcodes. 24.12.2004 Properly implemented SetThingSpecial, SetFloorTrigger, setCeilingTrigger, ThingProjectile2, GetLevelInfo and ChangeSky pcodes. 25.12.2004 Implemented temporary hack to save lines seen on automap. 26.12.2004 Properly implemented music change ACS commands. Option to split long frames into smaller ones when running thinkers so that physics work more accurate. ****************************************************************************** VERSION 1.16 ****************************************************************************** 15.01.2005 Fixed bug with incrementing/decrementing ACS map variables. Level time saved in savegame. Created common ACS scripts. 16.01.2005 Created enum for line specials and started to add all common specials. 17.01.2005 All common line specials are added to the enum. Created initialisation routine in door class. 18.01.2005 In all games door specials now use the same constants. Moved special utilities to common, started to update them to correctly work with slopes. 19.01.2005 Finished updating action special utilities, added some more utilities that will be needed for Boom support. Fixed bug that caused infinite spawning of phased light specials. Fixed wrong Heretic episode 5 finale. 20.01.2005 Updated door specials to use new utilities and added support for gradual lighting effects. 21.01.2005 Additional fixes for changing moving door's direction, updated door closing in 30 seconds. 23.01.2005 In OpenGL properly using clamp to edge extension for skyboxes. 26.01.2005 In ceiling mover class added function to initialise, stop crusher and resume ceiling in stasis. 27.01.2005 Updated ceiling specials to use new utilities, made all types available in all games and added many new ones. Decided to release version 1.16.1 with several bugs fixed, but without the new stuff. 28.01.2005 Added generic door and ceiling specials. 29-01-2005 In SectorMover added function Finished that properly destroys it. Added Init function to floor movers. 30.01.2005 To floor movers also added functions to initialise stair and donut movers and to stop crushing floor. Added init, stop and activate in stasis function to moving platorm specials. 31.01.2005 Made all floor specials available in all games. For doors moved code of initialisation of open in 30 secs and reusing of a door to functions in door class. 01.02.2005 Made all platform specials available in all games. Updated floor movers and platforms to use new special utilities. 02.02.2005 Firebrand created icons for fullscreen mode. Must tweek them a bit. Worked on Hexen's stair building specials. Old stair step queue replaced with linked list of stair stem movers. All stair processing code moved to stair step mover class. 03.02.2005 Updated stair step movers to new special utilities, some more tweeking. 04-02-2005 Some more improvements in initialisation of stair step movers. 05.02.2005 In sectors changed special data to 3 separate specials for ceiling, floor and light, like in Boom. 27.02.2005 My new PC is ready for development. :) Added windowed mode to Allegro drivers. There have been some changes in Allegro since now mouse doesn't work properly with OpenGL driver where I'm recreating the window - a BIG hack. 02.03.2005 Exit specials now take posittion argument. Added new ACS specials to all games. Started working on lighting specials. 03.03.2005 Added base class for lighting effects so they can be stopped. Created separate lighting line special functions that doesn't spawn thinker. 05.03.2005 Made teleport line specials accept sector tag. 06.03.2005 Added support for more teleportation line specials. 08.03.2005 Added new TID argument to thing spawn line specials. In UDP driver added check on retrieval of local host name. 10.03.2005 Worked on floor waggle and pillars. Added ceiling waggle. Added thing spawn IDs to vdefs acs file. 13.03.2005 Added floor transfer numeric and trigger line specials. Added Boom linedef types to conversion table as well as handling of generic types. 14.03.2005 In all games now using texture scrolling specials, added scrolling by offsets. 15.03.2005 Added elevator line specials. 16.03.2005 Added Doom style and generic stair line specials to all games. Added OpenGL driver for AllegroGL library. No more problems with mouse. 17.03.2005 Added more scrolling specials. 21.03.2005 Implemented transfer floor and ceiling light line specials. 22.03.2005 Temporary fix for crash in ACS thinker. Rearanged Doom fulscreen stats. 23.03.2005 Started testing with BOOM's demo level. Fully implemented UseThrough and PTouch line activation types. Fixed texture model scrolling. 24.03.2005 Added builtin MSG_CheckSpace to avoid overflows. Fixed accelerated scrolling. Manual activation of ceilngs, floors, plats and stairs. Added door's light effect. Fixed teleporting with sector tag. Split loading sidedefs in 2 parts so that depending on line special can have special meanings of texture names. Now BOOM demo level loads without errors. 25.03.2005 Implemented custom sector damage and friction specials. Better implementation of Strife's animated door. Strifes' NoiseAlert, ForceField and ClearForceField available in all games. Implemented saving a network game. I can't test it but I hope it works. Changed location of 2D graphics hi-res texture directory to /textures/pics. 26.03.2005 Added Strife qiut game screen. Fixed finding of model sector returning passed-in sector. Fixed several bugs in Strife. Spectral creatures now take damage only from Sigil. Health upgrade also gives full health. Implemented "Patch me up" and "I'm out of bullets". Added bInCombat flag, you can't talk with persons that are fighting. Implemented waving burning hands. Loremaster's chain now pulls player up. Implemented teleporter beacon. 27.03.2005 In all games correctly activating push wall and impact specials. Correct action when destroying power coupling. Also giving prison pass opens the door. Made breaking of glass work properly. 29.03.2005 Stats upgrade when killed Loremaster also gives health. 31.03.2005 In Strife fixed wrong voices when killed boses. 01.04.2005 A fix when loading a savegame having palette effect. When loading savegame server info is sent after loading level data from file so clients have loaded data. ****************************************************************************** VERSION 1.17 ****************************************************************************** 04.04.2005 Fixed DeHackEd support. Fixed reseting of velocity after teleport in Hexen. 19.04.2005 Fixed crash with stairs. Fixed removal of wings in Heretic. Fixed some Strife cheats. Several fixes by someone - fixes freeze in OpenAL driver on Linux, better support for UTF-8 console for end text. 25.04.2005 Started work on autoconf generated configure script. 26.04.2005 I installed gcc 4.0.0 and it now warns about classes having virtual functions but no virtual destructor. Already usable configure script with system detection. Temporary fix in vcc when compiled with optimisations, fixed warnings. 27.04.2005 Fixed most of the compiler warnings. All configurable stuff is now in configure. Added CD driver detection. 28.04.2005 Added automatic detection of Allegro or SDL. Started work on updating MD2 models. Created Makefile for fixmd2 and added it to build process. Had to increase maximal vertex count, mostly because mm3d doesn't merge ST vertexes. 29.04.2005 Continued to update MD2 models. 30.04.2005 Continued to update MD2 models. Lost soul's animated fire animation was real pain. I need a better way to do this. 01.05.2005 Continued to update MD2 models. Added support for specifying a skin index. This allowed me to make a very easy torch fire animation. Must update lost soul, burning barrel and maybe other models to take advantage of this. This will also make very easy to add support for damaged skins. 02.05.2005 Updated animdefs script to support range animations and to recognise other ZDooom specific keywords. Added support for BOOM's animated lump. Moved switch list to r_tex, since they will be defined by animdefs. 03.05.2005 Started a work on texture classes. For each texture format there will be a class that supports it. This will make drivers completely independent from formats. I started by creating a texture list. Texture class currently has type and index of corresponding type texture. Wall and flat textures now use index in new texture list, drivers doesn't have arrays for flat data anymore. To names list added adding of names, that should be lowercased and no longer than 8 characters. This will be used by texture list and wad files. 04.05.2005 Some fixed by Firebrand. Added to texture list sprites and skybox textures. In OpenGL and Direct3D drivers removed inversed width and height arrays. Fixed possible bug with sky box textures. 05.05.2005 Made cnter messages to be drawn much lower and to drawn with wrapping in a case of a long messages. Added skins and 2D images to texture list. Since these are added dynamicly, I had to add a function to drivers that updates driver's texture data lists. Lists of all registered skins now is in r_tex. And both of them doesn't have limitations anymore. 06.05.2005 Removed SetFlat from all drivers since SetTexture can detect if it's a flat. Removed textureheight array since it can be easely calculated. Changed texture animation to one common array. 07.05.2005 Added width, height and offset texture properties. Also added wall patches to the texture list. Created classes for different texture formats. Changed OpenGL and Direct3D drivers to load textures as 8 bit and convert when uploading. 08.05.2005 To all texture classes added function Getpixels that loads the texture. After this all drivers became independent from texture formats. Some functions that generates texture can be merged into one. All of the properties of different texture types now are in texture classes, old lists were removed, with this the TypeIndex property. Also added function GetHighResPixels that, depending on usage type loads high-resolution version. For front sky layers of double-skies now there's a flag intexture. 10.05.2005 Added DriverData to textures where drivers can keep driver specific data. Added texture data format attribute, which can be 8-bit, 8-bit with custom palette or true-color. Loading of skins and sky box texture use texture API. Textures now have a GetPalette function that returns the palette of texture. Moved texture animation to texture class. Finally installed TiMidity patched for SDL_mixer. And it turned out that conversion of MUS to MIDI didn't produce a valid MIDI file. After replacing it with original qmus2mid I got working MIDI music. 11.05.2005 Added function GetPixels8 to texture class that converts texture to 8-bit if texture is in another format. It's primarily for software renderer, but there may be other uses if it. Moved PalNum from texture base class to subclasses that needs it. Some oteher fixes if texture loading. 14.05.2005 Changed multiple palettes array to a single main palette. Removed support for custom palette from patch texture since it's needed only by Heretic episode 2 fnale pic which is a raw image. Added support for overloaded textures. 15.05.2005 In OpenGL and Direct3D all textures now have mipmaps. Added remapping of color 0 for file textures. 17.05.2005 Created texture manager class. Added a function for simpler iteration of a wad file lumps in fixed namespace, used to init sprites and flats. All texture functions moved to texture manager class. 18.05.2005 Moved texture list to texture manager class. Added function to read a part of a wad file lump, will be used by texture type detection code. 29.05.2005 Fixed bug with moving 3D floors. 30.05.2005 Added support for IMGZ and PNG lump textures. 02.06.2005 Added push specials. 03.06.2005 Split spawning of height sectors in a separate function. 05.06.2005 Updating models. 06.06.2005 More models updated. 08.06.2005 Models update. Fixed automap background. 11.06.2005 Multiple new Hertic models added. 16.06.2005 Fixed Doom fullscreen statusbar positions. 28.06.2005 Initial implementation of rendering of fake floors. Doesn't work properly. 29.06.2005 Redesigned rendering of fake floors by having a fake floors and ceilngs for rendering. 30.06.2005 Fully implemented rendering of fake flats. 03.07.2005 Added parsing of simple switch definition on animdefs script. All switch definitions moved to animdefs. Old switches script support has been removed. Added support for Boom style switches lump. Fixed animdefs scripts not being parsed at all. 05.07.2005 Windows compilation fixes. 07.07.2005 Fixed polyobj door movement distance in last tic. Added Firebrand's fixes for Heretic volcanos. 08.07.2005 Rounding of polyobj positions when sending over network. 09.07.2005 Implemented Boom style scrollers carrying things. 15.07.2005 Added printing of more info in which model a frame is missing. 16.07.2005 In Hexen increased jump speed. Fix for fake ceiling changing from and to sky texture. 29.07.2005 Added support for quoted strings in response files. 10.08.2005 Added some new models to Heretic and Hexen. 13.08.2005 Fixed freeing of translated sprite. More models added. 14.08.2005 Some Hexen model fixes. Added Strife's inventory drop to controls menu. 27.08.2005 Started adding support for network packet compression. 29.08.2005 Implemented network packet compression using zlib. Some fixes in SDL sound code. Added Strife models. ****************************************************************************** VERSION 1.18 ****************************************************************************** 04.09.2005 Fixed check for any texture. Started to create a MIDI driver class, similar to sound driver class. 06.09.2005 In texture manager made case in-sensitive comparision of extensions of file textures. The source had 5 copies of the qmus2mid converter (including modified one in Allegro driver and non-working version in SDL driver) which is a bad thing. So I started to merge them all. 07.09.2005 Finished merging of qmus2mid. 10.09.2005 Finished implementing MIDI driver interface. Comsole command 'Music' moved to common sound module. 11.09.2005 Little fix for network packet compression. Changed sound and music volume cvars to be floats. Changed MIDI driver initialisation if OpenAL is used. Moved music lump loading and MUS to MIDI conversion to main sound module. 12.09.2005 Created CD audio driver class, all drivers converted. Console commans 'CD' moved to common sound module. 13.09.2005 Started to implement streaming support in sound drivers. Implemented in Allegro and OpenAL drivers. Simple playback of a wav file. 16.09.2005 Implemented streaming support in DirectSound deriver. Started work on replacement for DirectMusic driver. 18.09.2005 Replaced DirectMusic driver with new driver that uses MMSystem. It's based on sample code from M$, and is prety messy. 19.09.2005 Implemented streaming in SDL driver. 29.09.2005 Temporary fix for using a puzzle line. 02.10.2005 Big cleanup and beautification of the new MMSystem MIDI driver. 06.10.2005 Some more cleanup in MMSystem MIDI driver. 10.10.2005 Created base class for a streamable audio codec. 12.10.2005 Implemented Vorbis audio codec. The playback is a little bit too fast, but I'll deal with that later. 13.10.2005 Implemented general API for registering an audio codec. 18.10.2005 Created streamed music player class and made general music code to use it. Audio codecs moved to their own files. Ogg support works as expected. Added Firebrand's fixes for lightning in level with skybox and movement of Hexen's ceiling lightning. 19.10.2005 Removed archive path handling from SNDINFO. Started implementing MP3 codec. 20.10.2005 Got a working MP3 codec. 22.10.2005 Some MP3 code cleanup. Fixes to stream player for looping and stopping. 28.10.2005 Sprite offset fix on by default. Added Timidity driver. It uses Timidity version from SDL_mixer with some more fixes. 29.10.2005 Added MikMod codec. 02.11.2005 Fixed armor percent sign in Doom status bar. Implemented health bar and ammo icon in Strife status bar. Added FLACC audio codec. Fixed Vorbis codec. 03.11.2005 Implemented support for any bitrate music streams. Proper WAV codec implementation. 05.11.2005 Strife voices are added to sounds as normal sounds. They have prefix svox/. Closing coversation dialog stops playing voice. Shareware voices are put in voices namespace. 06.11.2005 Fixed initial Strife objectives. Fixed Strife hazard palette flash. Added support for 16 bit sounds. Implemented support for different sample loaders and added loaders for WAV and FLACC format samples. 08.11.2005 Removed playing soun till done. Parsing of all MAPINFO, SNDINFO and SNDSEQ scripts. Started to move common parts from sound drivers to main sound module. 09.11.2005 Most of the common parts from sound drivers are moved. 10.11.2005 Separated playback of 3D sound. In SDL driver moved chunks from channel structure to sound chunks array. 11.11.2005 InMikMod codec fixed conflict with SDL mixer. Put Timidity library in namespace to avoid conflicts. 12.11.2005 Checksum fix in datagram driver. In progs Added swaping of bitmask for MacOS X. Added support for looped sounds. 13.11.2005 Some final cleanup of sound drivers. In Doom restored old puffs and blood. Upgraded to glBSP 2.20, added support for version 5 GL nodes. Added console variables to disable static lights and particles. Fixed line endings of WadAuthor config files. 14.11.2005 Implemented support for GL nodes for levels with names onger that 6 chars by searching for corresponding GL_LEVEL lump. 15.11.2005 Some additional fixes for MacOS X. Started to add support for SNDINFO extensions. Got rid of SFXINFO. 16.11.2005 Have support for all SNDINFO extensions. 17.11.2005 Renamed Doom sounds to ZDoom names. 18.11.2005 Renames Heretic sounds. Added Firebrand's fix for Strife title sequence. 19.11.2005 Renamed Strife and Hexen sounds. Added Firebrand's fix for Strife status bar ammo icons and glBSP. 20.11.2005 Implemented support for SNDSEQ extensions. Changed Doom, Heretic and Strife action specials to use sequences. Fixed MD2 skin index check. 21.11.2005 Removed unused fields from VObject. Renamed progs opcodes to much nicer names, put progs into it's own wad namespace. In ACS added extra byte swapping. 22.11.2005 Some cleanup in names. In compiler removed building of the expression tree, that never was used as initially planed. It also now compiles much faster. 23.11.2005 In vcc moved function properties from type class to function class, in the end got rid of function type. Some more improvements in expressions parsing. 24.11.2005 In vcc created class class (I like how it sounds). Some cleanup. 25.11.2005 In vcc fields of the class are moved from type class to class class. 26.11.2005 Moved rest of the class specific fields to class class. Created struct class. Got rid of the class type. 27.11.2005 In compiler removed operator class. Moved struct secific fields from type class to struct class. 29.11.2005 Removed compiler namespaces. 30.11.2005 Got rid of using classes in case statement. 07.12.2005 In progs moved virtual tables, property info, states, mobjinfo, sprite and model tables into their own chunks. 11.12.2005 Made path traversal callbacks class members. 12.12.2005 Implemented support for defining enums and structs inside a class. State names belong to the class. Removed compiler limitations. 19.12.2005 Changed progs version number, added extra licence notice in ACS code. 24.12.2005 In Doom fixed status bar face. Fixed Strife ammo icons and amounts. 25.12.2005 Moved title screen drawing to a class. Created LevelInfo class, every thinker has a reference to it. Fixed Srife crusaders. 26.12.2005 Moved execution of action specials to the LevelInfo class. 27.12.2005 Some more engine callbacks moved to LevelInfo class. 28.12.2005 Added fix for too small flats. Fixed some other compiler problems. ****************************************************************************** VERSION 1.19 ****************************************************************************** 03.01.2006 Fixed BFG, some missing sound renaming. Fixed anisotropic texture filtering in OpenGL. Fixed MAPINFO redefining previous maps. 08.01.2006 Fixed several bugs in Strife. Added wrapping for long notify messages. 10.01.2006 Fixed vcc not properly checking if state belongs to a class. 18.01.2006 Implemented previous / next weapon commands. Added Firebrand's fix for Hexen's mage lightning on 3D floors. Fixed doublesky. 22.01.2006 In Strife continue conversation if failed to give the item, slideshow music change. 31.01.2006 In UNIX systems savegames, config files and some gwa files are stored in home directory. 04.02.2006 Lately I was playing with VMware, got Vavoom working on FreeBSD, Solaris 10 and BeOS. 05.02.2006 Moved most of the common utilities to the level info class, some to other classes, others made to be builtin functions. 06.02.2006 Created intermission screen classes and moved all intermission code. 07.02.2006 Moved finale screens and status bars to classes, created client game class for global data and methods. 08.02.2006 In client progs moved all global functions to classes. 09.02.2006 Moved global client progs variables to classes, client progs have no more global functions and variables. 10.02.2006 Some platform fixes, got it working on Darwin. 12.02.2006 Created GameInfo class. Started to move server progs functions to classes. 13.02.2006 Moved all server progs functions to classes, started to move varaibles. 14.02.2006 Continued with variables. 15.02.2006 Finished with progs global variables. 16.02.2006 Changed builtins to be static methods of Object class, moved other common enums, structs and defines to Object class. Game specific common enums moved to corresponding class. Removed support for global variables from compiler. 17.02.2006 In compiler started to make types to be single class that contains all info and the rest of compiler to use types as objects instead of the pointers. 18.02.2006 Finished changing compiler type handling. We don't have support for multi dimensional arrays, but that's a small price to pay. 19.02.2006 Made true and false keywords. Implemented delegates. As a test made main Doom menu use them. Moved some special enums to classes. 20.02.2006 Change client state struct to be a class. Removed player stats limit. Created modifiers class that handles all modifiers. 21.02.2006 Fixed Doom ammo pickups. Wrote from scratch a dyamic string class. 22.02.2006 Wrote a stream class. This replaces FArchive and uses similar interface. Progs now exports all fields, structs and constants. Classes, functions and states now include full info. 23.02.2006 Started to change saving of the game using type info. 24.02.2006 Working saving using type info, removed old property infos. 26.02.2006 Finished implementation of proper serialisation of the objects. Added native property to the fields with native serialisation. 27.02.2006 Rewrote names class. Put thinkers back in a linked list. Added macros for implementing builtins and events. Added stream class to compiler. 28.02.2006 Implemented support for VavoomC constants. This will get rid of most of the macros in progs code. 01.03.2006 In common started to change Player and Actor reference types to BasePlayer and Entity, to avoid using game specific lasses in common. In engine made Thinker class global. 02.03.2006 Finished type replacements. Wad lump names are now stored as names. Added name constants for all names used by engine. 03.03.2006 Started to change files API to use dynamic strings. 04.03.2006 Finished changing files API. Functions dealing with file names made members of the string class. Added check macros. 05.03.2006 Made Entity, ViewEntity, Player, LevelInfo and GameInfo classes shared by client and server. On client side replaced client mobj struct with Entity. Moved thinker add/remove to Level class. 06.03.2006 Implemented cleaning references to destroyed objects. Initial attempt with a stream was very slow. After some optimisations it's very fast now. Created base class for all type info objects. Started to use streaming for reading and writing progs. 07.03.2006 Most of the type objects use serialisation. 08.03.2006 All type objects data is serialised. 09.03.2006 More generalisation of the progs serialisation. Other progs data is now read using stream. 10.03.2006 All of the progs is now read and written using sream. 11.03.2006 In engine replaced usage of bitfields with flags to avoid problems on big endian systems where bits are packed other way. 12.03.2006 Changed states from index in the table to pointers, created state VavoomC type. 13.03.2006 Implemented support for private, read-only and transient fields. Removed asm version of progs interpreter. It wasn't used in last release and since there's gonna be many changes there, it would be very big hastle to do all of the changes there. Also using gcc's jump table feature C++ code should be fast enough. In VavoomC local variables are now initialised to 0. 15.03.2006 Optimised savegame size by saving only used names and non-empty entries in server baseline. Also ACS data is saved more efficient. 18.03.2006 Renamed type info class names. Loading of progs doesn't need individual arrays, other serialisation improvements. Added Offset progs opcode. In compiler keyword checks done in per-character basis. 19.03.2006 In progs added explicit type casts. For all members added outer object. In vcc implemented code location object, more abstract way of serialisation. 20.03.2006 Fixed two network vulnerabilities - added missing compressed data length check and correct handling of zero length packets. 21.03.2006 Firebrand fixed physics of flying ojects and some Strife bugs. I fixed bug with objects with no states and level info object pointer in level info itself. 23.03.2006 In VavoomC added support for final methods, compiler improvements. 24.03.2006 Moved loading of the progs to members base class, added post load method that sets up things after everything has been loaded. 25.03.2006 Implemented support for progs to import another progs file, in other words I have basic support for modular progs. In basev directory created new diretory common for shared progs, common config files moved there. 26.03.2006 Fully implemented modular progs, split progs into modules. Firebrand did some more Strife fixes. 28.03.2006 In progs file write only used imports and names. 29.03.2006 Made console variables and console command buffer and some console command functions to use dynamic strings. In MikMod driver added checks to avoid setting source stream to error. 30.03.2006 Merged size buffer and message class. 01.04.2006 Made console command arguments to be array of strings. Moved all console command execution in static class methods. 02.04.2006 Renamed several classes. Moved console autocompletition to command class. Created class for command line arguments. 03.04.2006 Fixed some Strife bugs. 04.04.2006 SourceForge had problem with CVS server for last few days and it made me consider switching to Subversion. Probably I will do this after release. 05.04.2006 More bug fixes, mostly in Strife. 06.04.2006 For several builtins changed string arguments to names. In Strife added some lighting effects. 08.04.2006 Fixed lighting specials not removing reference to thinker from sector. In Doom allow switching to fists while having chainsaw. In Strife fixed extrema damage kickback from poison arrows, for flamethrower projectiles added fake gravity to simulate original behavior. Fixed a typo in args class, fixed crash with bad format sounds. 09.04.2006 In physics code properly initialise blocking mobj pointer. Added more lighting effects to Strife, some other fixes. Fixed sound playback check builtin. 10.04.2006 In Strife added feet clipping for objects in water, added cheat that gives a quest item. 11.04.2006 Removed Strife's helper and conversation script commands from mapinfo, they are now handled by game info class. 14.04.2006 Implemented Strife-like definition of static lights in other games. Added fixes for compiling on other platforms. ****************************************************************************** VERSION 1.20 ****************************************************************************** 18.04.2006 Switched from CVS to Subversion. 28.04.2006 Fixed installation on Unix. Firebrand added lighting effects to teleport fogs, in Strife added default names of actors in conversations, added fullscreen status bar, automatic use of health and armor, other fixes. 29.04.2006 Removed different version of Z_Malloc. In glVIS fixed location of the temporary file. 30.04.2006 Some more Strife and status bar fixes by Firebrand. Removed minizone, added debug versions of memory allocation functions. 01.05.2006 Changed loading of all texture types to use streams, some reorganisation. 02.05.2006 Moved loading of file textures to corresponding classes. Changed high-resolution version of a texture to be a texture object. Moved loading of end-game text lump to host.cpp. Fixed joystick button names and number of joystick buttons in SDL driver. 03.05.2006 Moved loading of palettes to main render module, drivers now simply use it. Removed support for purgable memory blocks. Added operator new and delete overloads. 04.05.2006 Added debug version of operator NEW. Removed overloaded new and delete operators from some of the classes. Doing proper freeing of allocated memory in some places. 05.05.2006 More memory freed on exit. 06.05.2006 Started work on freeing level memory without using Z_FreeTag. 07.05.2006 Firebrand implemented code for monsters to avoid dropoffs. Some more memory properly freed. 08.05.2006 Started to rewrite loading of the level using streams. 10.05.2006 For effects added checks if there's enough space in message. Some more fixes from Firebrand. Finished level loading using streams. 11.05.2006 Rewrote dynamic array template from scratch. Added support for TGA high-resolution textures. 13.05.2006 Properly freeing level data, got rid of Z_FreeTag. Changed usage of the zone memory tags to PU_STATIC, removed others. 14.05.2006 Firebrand added check for pain elementals to not spawn lost sould through impossible lines. Got rid of zone memory tags. 16.05.2006 Got rid of Z_Resize. Implemented special allocation of small memory blocks. 17.05.2006 Removed old zone memory manager, now uses libc memory allocation. Fixed sound of exit switch. Created input manager and input driver classes. 18.05.2006 Removed unused DOS serial driver. Started to create LAN network driver classes. 19.05.2006 Fixed a bug with drawing Strife conversation dialog. Mostly finished with LAN network drivers. 20.05.2006 Moved network driver list to main network module. 21.05.2006 Final touches on LAN network drivers. Started work on main network driver classes. 22.05.2006 Changed installation procedure on Unix systems. Firebrand implemented monsters trying to walk away from forced dropoff. Implemented support for specification of additional directories where to look for IWAD files. Finished work on network driver classes. 23.05.2006 Moved player-related natives to player class, implemented Object's static natives using standard interface with macros. 25.05.2006 Moved building of progs class virtual function table to engine. Moved prog function code to method classes, compiler now exports instructions in intermediate format and final compilation is done in engine for current platform. Preparing to rewrite progs virtual machine to support 64-bit systems. 27.05.2006 Rewrote most of the progs virtual machine. 28.05.2006 Finished with rewriting virtual machine. 29.05.2006 In progs removed addfields. When compiled with gcc, progs virtual machine uses a computed goto. Field offsets are now calculated by engine, since on 64-bit they will differ. 31.05.2006 Rewrote all calls to progs and all natives to use new macros. Did some test with progs stack to make sure it will work properly on 64-bit, had to add some extra opcodes. Got rid of all TProgs::Exec methods. Fixed delay when exiting the game. 01.06.2006 Got rid of having a field object for every class method. 04.06.2006 Fixed usage of sound sequences in all games. Started to add progs opcode versions with short and byte argments. 05.06.2006 Finished with specialised opcodes. In software and OpenGL divers changed classes to be base classes and having the actual driver class in system specific module. 06.06.2006 Added sector sound sequence thing types to editor config files. 07.06.2006 Changed socket structure into a class, some network methods moved to this class. Created networking class. 08.06.2006 Finished work on networking class. Changed list of search paths and wad files to be dynamic arrays. Removed limit of open wad files. 11.06.2006 Added DESTDIR to Makefile. Fixed miscompilation of message.cpp with latest versions of gcc. Changed several fields in level structure to names, removed unused argument from register picture methods. Made file search path directory and wad file to have a common base class, merged lists of search paths and wad files into one. Started work on implementing support for dynamic strings in VavoomC. Firebrand did some improvements to automap. 12.06.2006 Finished implemnting dynamic strings in VavoomC. Removed TProgs class, most of it is merged into VObject. 14.06.2006 Changed default virtual screen resolution to 640x480 (so in next version there's visually something new :-). Updated corresponding drawing methods. 15.06.2006 Finished adjusting drawing methods to new resolution. 17.06.2006 Started to rewrite ACS virtual machine in a way similar to progs virtual machine. 18.06.2006 Finished most of the work on ACS virtual machine rewrite. 19.06.2006 Firebrand implemented support for customiseable gravity. Some more work on ACS. 21.06.2006 Changed the way poly-wait and tag-wait ACS commands work and basicly finshed with ACS VM at the moment. Properly clear references to thinkers in sectors and polyobjs. 22.06.2006 Installed MinGW, compiles fine with it, just had to fix the Makefile. 23.06.2006 Added template Spawn for simpler object creation. Some fixes for software renderer. Added to class info reference to the default properties method, did some more fixes to be able to have class with no VavoomC code, made ACS class like this. 24.06.2006 Moved calculation of translucency tables to engine, changed the way RGB table is handled. Fixed check for available screenshot file name. 25.06.2006 Fixed crashes with network games, some improvements. Changed remaining wad lump caching usages to use streams to load data. Got rid of lump caching. Implemented sound manager class, basicly everything in s_data. Also decided to move parsing and list of sound sequences to this class. 26.06.2006 Converted source files to UTF-8, updated copyright year and deleted old logs (once I'm changing all of the files). 28.06.2006 Properly free default value string of console variables that were created by progs. Fixed loading of Strife conversation scripts. Created class for MUS to MIDI converter, removed track size limit. 29.06.2006 Fixed Allegro OpenGL driver. Use Timidity on Unix systems by default. 30.06.2006 Fixed class and struct size and offset calculations on 64-bit platforms with proper alignments. Fixed crashes in shutdown functions in a case there was an error during startup. 04.07.2006 Removed usage of old dword type. 05.07.2006 Created an audio class, all sound effect and music playback moved to this class. Also changed sound sequence node to be a class. 06.07.2006 Got a chance to test it on a 64 bit system. After some bug fixes it runs. Also moved sound sequence functions to audio class. In utilities got rid of usage of the old types byte, word and dword. 08.07.2006 Started to improve configure script and build system, to properly check for all libraries and to be able to build outside source directory. 09.07.2006 Finished with build system, some small fixes before release. ****************************************************************************** VERSION 1.21 ****************************************************************************** 16.07.2006 Fixed crash in glVIS. 17.07.2006 Fixed crash when traveling to already visited map. ****************************************************************************** VERSION 1.21.1 ****************************************************************************** 28.07.2006 Added fix for latest version of OpenAL. Fixed crash when building on 64-bit systems. 29.07.2006 Created abstract interfaces for network and audio systems. 30.07.2006 Final changes to audio driver, split stream music player into separate file, merged sound sequences in main file. Created abstract interface for input driver. Fixed problem with latest version of glBSP. In string class added static methods that are wrappers of standard C string functions. Changed code to use them. 31.07.2006 Finished with string functions. Created string methods for dealing with UTF-8 format strings. Split main file into several makefiles. 01.08.2006 Started to switch to automake. Switched makefiles in root, basev, progs and utils. The main benefits are smaller initial makefiles, automatic dependency tracking and automatic source distribution creation. 02.08.2006 Fixed UTF-8 functions. Switched to automake all makefiles in utilities. 03.08.2006 Switched to automake the rest of the makefiles. Main makefile is not yet a proper one. 05.08.2006 Firebrand fixed empty spaces in status bar and adjusted drawing of glbsp and glvis plugin interfaces. 06.08.2006 Fixed problem with DoomBuilder config file for Heretic. 08.08.2006 Changed utilities to be back in bin directory. Fixed DeHackEd support. Started to create script parser class. 09.08.2006 Fully implemented script parser class, added some more helper methods to make parsing simpler. 10.08.2006 Fixed DOS and Windows executables having double .exe extension. Firebrand did some improvements to Strife conversation dialog. Fixed compilation on 64-bit systems with gcc4. Fixed Windows MIDI driver to use MIDI device selected in control panel and to properly set music volume. 12.08.2006 Properly free all strings on exit and before doing memsets. Simplified command checks in music and CD console commands. ****************************************************************************** VERSION 1.21.2 ****************************************************************************** 13.08.2006 Some version number fixes. 14.08.2006 Started to implement support for ZIP (or PK3) files. 15.08.2006 Split ZIP file handling into a separate file, merged with the unzip library. Changed the way wad files are added to the list. Strife shareware voices are fixed only for the IWAD file. Started to convert expression parsing to build an expression tree and emit actual code after parsing. 16.08.2006 Finished first step in converting expression handling, got rid of old TTree class. 17.08.2006 Started to change doing resolving of the expressions to be done after it has been parsed. 19.08.2006 Finished moving resolving of expressions after parsing. Renamed expression handling file. Moved expression parsing code to parse.cpp, changed pass 1 to use it and just ignore result. Started to do similar work on changing the statements to classes and emit code after parsing. 20.08.2006 Finished most of the initial work on statement classes, split them into a separate file. Made pass 1 to use it. Changed calculation of some constants to use expression tree. Some more improvements to expressions. 22.08.2006 Changed variable and parameter types to be resolved using expressions. 24.08.2006 Changed parsing of the methods and states to use expression classes and do resolving and emiting after parsing. This allowed me to get rid of the 2 pass compiling. 26.08.2006 Added fixed array type expression. Do declaring of the struct and class fields after parsing. 27.08.2006 Changed the rest of the member classes to use type expressions. Got rid of the evaluation of the constant expressions. After that there's no more need to predefine struct and class types. Started to merge keyword and punctuation enums into a token enum. Changed WAD file manager to use stream to read the file. 28.08.2006 Firebrand fixed drawing of the weapon sprites with status bar on. Added some more utility methods to the string class. Finished merging of the keyword and punctuation enums into token type enum. Changed expression classes to use their own enums. Created a lexer class. 29.08.2006 Created a parser class. Removed limit on the number of local variables. 30.08.2006 Created an emit context class that is passes to all resolving and emiting methods. Most of the code generation moved to this class. 31.08.2006 Even more of the global vcc variables and methods moved to classes. 01.09.2006 Created a label class to simplify emiting of the jump statements. 02.09.2006 Do evaluation of operations with constants as part of the resolving of the expression. Did some loop and branching optimisations. 03.09.2006 Added specialised opcodes for virtual method and delegate calls. This allowed to get rid of the argument swapping. Optimised branching of logical operators. Implemented support for ZDoom style of handling of the PK3 files as an alternative to the WAD files. Also add all of the WAD files in the root of a ZIP file. Changed directory for high-resolution textures to hirestex. 05.09.2006 Properly use ZIP specific WAD namespaces. Added support for generating ZIP files with vlumpy. 06.09.2006 Started to merge client and server versions of the polyobject code. 08.09.2006 Finished merging polyobject code. In Heretic and Hexen added support for new polyobject thing types. Implemented support for levelnum mapinfo command, this one replaces mapalias command which has been removed. Firebrand added optional dynamic light clipping. 09.09.2006 Added support for specifying special boss death actions in mapinfo. Also added support for defaultmap. Removed map count limit. 10.09.2006 Implemented support for nointermission flag and started to implement support for cluster definitions. 11.09.2006 Added support for cluster enter and exit text definition. 12.09.2006 Simplified serialisation of object references in C++ code. 13.09.2006 Started to do some changes in network protocol. Server now sends a list of all classes to client. Client now spawn an object of the actual class. 17.09.2006 Made sure that progs don't need to modify state variables in entity class. Fixed crash with missing sound lump. 18.09.2006 Server now sends the state index instead of sprite/frame/model indexes. Removed state data copy variables from entity class. 19.09.2006 Added extra parameter to map traversal callbacks. Got rid of the global variables that were used by callbacks. Moved some of the map handling methods to level class. 20.09.2006 Moved more of the map handling methods to level class. 21.09.2006 Implemented BeginPlay entity event. Currently assume that client and server have identical progs. Fixed some bugs in Korax Arena. 22.09.2006 Added support for accessing a struct of another class. Don't allow global structs anymore. 23.09.2006 Implemented proper handling of string stats in player class. Fixed printing of development messages to the console. Fixed freeing of the sector regions. 24.09.2006 Correctly recognise files with .zip extension when specified with the -file option. 25.09.2006 Firebrand fixed a typo in ZIP file namespace detection. Added optimised opcodes for accessing local variables and member fields. 26.09.2006 Fixed spelling of many variables. 27.09.2006 Implemented support for optional and out method parameters. 28.09.2006 Changed client side to use actual Player class instead of ClientState class. 29.09.2006 Implemented sound sequence support for random and relative volume and restart of the sequence. 30.09.2006 Implemented support for random and selection sound sequences. 01.10.2006 Implemented playback of sound sequence by actor. Implemented placeable sound sequence objects. Replaced Heretic's ambient sound with sound sequences. Implemented ambient sound objects. 02.10.2006 Implemented sound attenuation. 03.10.2006 Renamed 'common' progs package to 'engine', moved the rest of native classes to this package. Added C-mode to the scripts parser. Started to implement parsing of language scripts. 05.10.2006 Finished implementing language script parser. Made map names and cluster messages localisable. I found out that mapinfo command 'secret' should be 'secretnext'. 06.10.2006 Updated MAPINFO scripts to use localised map names and cluster messages. 07.10.2006 Crated 'linespec' package, started to move line specials code there. Moved door and ceiling specials. 08.10.2006 Moved floor, stair, platform, pillar and elevator specials to 'linespec'. 09.10.2006 Moved polyobj lighting and scrolling specials to 'linespec'. 10.10.2006 Implemented parsing of animated door defintions in ANIMDEFS, made texture change door to use it. Moved plane watcher, texture change door, exit, ACS some sector specials to 'linespec'. 13.10.2006 Moved puller, pusher and thing specials to 'linespec'. Added special texture usage type for automap background. Implemented support for special end game map names in MAPINFO. 14.10.2006 Changed client to use end game type for finale. Fixed Strife to use correct sounds for doors. Improved texture type recognition. Added support for PCX and TGA textures in WAD files. 15.10.2006 Unified content types. Started to replace usage of multiple palettes with colour shifts. Some more improvements in texture manager. 16.10.2006 Finished replacing palette effects with colour shifts. Changed buttons to be thinkers, implemented support for animated switches. 20.10.2006 Firebrand did some improvements for avoiding a dropoff. 21.10.2006 Implemented support for warping textures. Skip camera texture definitions. 22.10.2006 Implemented support for oscillate range animations. In MAPINFO added definitions for par and suck times and level title image. 23.10.2006 Added MAPINFO flags for monster telefrags, no sound clipping, no alies and death slide show. Some MAPINFO script fixes. 25.10.2006 Implemented support for maps in PK3 file. 26.10.2006 Implemented Strife inventory limits. Fixed loading a saved game on startup. 28.10.2006 Some Strife fixes. 29.10.2006 Updated version number, fixed distfiles. ****************************************************************************** VERSION 1.22 ****************************************************************************** 01.11.2006 Implemented switching to windowed mode on run-time, added it to the menu. Added console variables to disable hi-res textures, external sounds and music. 02.11.2006 Implemented simple XML parser. 03.11.2006 Added all new ACS p-codes, implemented many of them, added stubs to report unimplemented ones. Some Timidity fixes from latest version of SDL_mixer. 04.11.2006 When sorting PK3 files, ignore extension. A little fix for PCX files. Fixed scripts parser incorrectly checking for floating point constants. Properly implemented all ACS set line blocking flags. Fixed network update incorrectly updating all objects causing network packet overflows. Updated ACC to the latest version. Updated ACS include files. Firebrand did some fixes for Strife. 06.11.2006 Moved output device interface implementation to a common location. 18.11.2006 Started to implement a simple angle based view clipping. 21.11.2006 Stop processing BSP tree if view clip nodes are full. 23.11.2006 Use view clipping to clip BSP bounding boxes. 30.11.2006 Fixed usage of -iwad option. Fixed view clipping with 3D floors. Changed old aspect ratio to be on by default. Avoid adding duplicate textures. Implemented proper support for enhanced music. 02.12.2006 Implemented support for custom episode definitions in MAPINFO. Implemented forcenoskystretch MAPINFO command. 03.12.2006 Don't crash game with too many static lights. Firebrand add more options to the video options menu. Split different texture format types into separate files. Copy dimensions of the first texture to the dummy texture so that floor raise by texture work correctly. Added support for HI_START/HI_END high resolution textures. 04.12.2006 Simplified loading of textures lumps. Implemented support for HIERSTEX scripts. 05.12.2006 Got rid of old boolean type, renamed integer limit macros. Implemented support for JPEG textures. 06.12.2006 Fixed compilation with Allegro library. Fixed wrong bounding box check in view clipping. Now parse all TEXTURE1/TEXTURE2 lumps that have a corresponding PNAMES lump. 07.12.2006 Initialise view clipping to the frustrum range, added clipping check for each subsector. 09.12.2006 In OpenGL and Direct3D fixed areas behind the sky being visible. Tried to do the same thing for software driver, but so far no success. Got rid of some of the global variables that were shared by renderer and driver. 10.12.2006 Fixed puffs and blood being in wrong place. Added some pointer checks on shutdown. Implemented simpler support for skybox replacements of the normal sky. 11.12.2006 Firebrand fixed skyllfly objects not advancing state if being shot while they are flying. 13.12.2006 Split WAD file and directory search path classes into separate files. 14.12.2006 Implemented lump index check for a file name. Changed textures to use it. 16.12.2006 Changed the way extrernal sound, music and high-resolution texture files are loaded. ****************************************************************************** VERSION 1.22.1 ****************************************************************************** 19.12.2006 Fixed duplicate loading of last TEXTURE2 lump. 24.12.2006 Fixed rendering of third person player weapon models. Fixed wrong wad markers for high-resolution textures. Implemented switching of the game language. 25.12.2006 Moved methods that advance actor states to engine, removed NextState field from Entity class. In linespec package added a common game info class, moved most of the wold spawning methods to this class, they are now called also when loading level on the client side. This means that there's no need to send commands to spawn them over the network that added some limitations to them. Fixed rendering of translucent mid-textures in OpenGL and Direct3D. Fixed memory leak in XML parser. 26.12.2006 Changed player's current view states to be an array of structures in player class. View entities array changed to be a single reference to weapon. Also changed setting SX and SY values to be misc variables in state, added compiler support for this. 28.12.2006 In compiler implemented support for restricted class types. Keyword classid changed to be just class. Removed all DDF related code and files. Fixed compiling progs generaed from dehacked patch. 29.12.2006 Send fractional state time to client so that I can implement interpolation of model frames. Removed old Borland specific assembly language files. Started to implement model script files. Added support for intermediate state frames to be able to change actor's states to be like in original version. 30.12 2006 Created model scripts for a lot of models. 31.12.2006 Created model scripts for the rest of the models. Implemented sending of fractional state time for player's view states. 01.01.2007 In model scripts added support for animated skins, gradual translucency and rotation to remove some model specific code from progs. Also added offset and scaling, but currently it's not used. 02.01.2007 Some dehacked fixes. Implemented support for specifying model replacements completely in model script. Removed most of the model definitions from progs. 03.01.2007 Removed remaining models definitions from progs. Support for this has been removed from the compiler. Moved repositioning of player's third person weapon model to model script. 04.01.2007 Implemented support for different model versions. This is now used to handle player's third person weapon models. 06.01.2007 Changed usage of translucency percentage to alpha value. Changed the way object's default properties methods are called. 07.01.2007 For each class I now create a default object. When a new object is spawned, field values are copied from the default object. In compiler I implemented support for accessing default values of an object or class. 08.01.2007 I moved player's network related variables into an internal structure so that in progs I don't have to have these fields. I cleaned up network protocol commands from unused commands. In compiler I implemented support for specifying state methods to be called directly and also to have no method at all. I changed most of the Doom states to use this. 09.01.2007 I added direct state method calls in Heretic and Strife. In software renderer I changed pointers to the fade tables and RGB colour lookup to be static arrays so that I don't have to do code patching anymore. This should enable usage of assembly language files on BeOS. 10.01.2007 I added direct state method calls in Hexen. I changed assembly language files to be conditionally included depending on target platform. I also renamed software renderer's assembly language files. 11.01.2007 On the client side I implemented automatic localisation of notify and centre messages that start with a dollar sign. I moved pickup strings and locked door messages to the language script. 12.01.2007 In VavoomC I implemented support for C# style properties. They are basicly wrappers around set and get methods. 13.01.2007 In view entity class I changed reference to the player object to be reference to the entity. Today I started to work on adding dehacked support to the engine. As a first step I moved all actor state methods to the Actor class. After that I merged remaining stuff from HackedActor class to actor class that allowed me to get rid of HackedActor class. Similarly moved weapon state methods to Weapon class and got rid of HackedWeapon class. 14.01.2007 In progs I added a string replace method. I changed view entity to be a Thinker and then an Entity. After that I moved Owner field to Entity class and I could get rid of ViewEntity class. Then I changed Weapon classes to be inherited from Actor class. After that I could move weapon state action methods to Actor class. With this dehacked progs have just a single copy of states. I also implemented a more generalised way of making Doom demons faster in nightmare mode. Then I added dehacked parser to the engine. Currently it just parses patches and does nothing else. I also fixed angle based clipping to add polyobject segs of a subsector. 15.01.2007 I implemented dehacked string replacements in engine. 16.01.2007 In Doom progs I removed some of the abstract Actor classes. To simplify implementation of dehacked parser in engine I need to make progs to be similar to the dehacked progs. This means that I had to move all states to Actor class. After that I could implement handling of dehacked changes of states in engine. 17.01.2007 Today I finished implementing dehacked changes of states, implemented changes of ammo counts, weapons, misceleanous values and started on things. 18.01.2007 Today I finished implementing dehacked parser in engine. I removed makeinfo utility. 21.01.2007 I started moving of info tables that dehacked parser uses to a dehinfo.txt script file. 22.01.2007 I started moving states of Doom actors back to their classes. This required some changes in order to make it work over the network. 23.01.2007 I finished moving states of Doom actors back to their classes. In dehinfo script I added original thing heights that are set when using a dehacked patch. I also fixed missing cleaning of active sequences list. 25.01.2007 I implemented support for Dehacked patch support extensions for specifying flags with names and for strings block. 26.01.2007 I changed sprite names internally to be in lower case. Then I implemented support for Dehacked patch extensions for code pointer and par time blocks. I also fixed rendering of mid-textures with an offset. 28.01.2007 I moved Doom state action methods back to their classes. I removed limit on static lights. I created render data class. I moved most of the surface and sky rendering methods to this class. 29.01.2007 I added pointer to the render data class to the level class. I moved light rendering methods to render data class. 01.02.2007 I moved line tracing method from level info class to the engine. I created a method to serialise global ACS data, made global ACS data static. 03.02.2007 I merged line tracing methods into a one that's in the level class. 04.02.2007 I did some tests with rendering server and previous client level. 05.02.2007 I fixed a crash in line tracing method. 07.02.2007 In model definition files I added support for defining model skins. Firebrand added fixes from Boom to keep monsters stuck in the doors. I changed Actor classes in all games to have the same default values. 09.02.2007 I created a class with ACS per-level data. 10.02.1007 In level class I added pointer to the per-level ACS data class. I implemented support for suspending and terminating scripts in other maps. 11.02.2007 I moved ACS native methods to the Level class. 13.02.2007 I implemented propper support for execute always ACS scripts. I created a class for global ACS data. I started to implement support for terrain script. 15.02.2007 I finished implementing support for tarrain script. 16.02.2007 I did some cleanup after implementing terrain script. 18.02.2007 I created a WorldInfo class that exists during the whole game session. I added pointer to the global ACS data class to this class. 19.02.2007 I moved serialisation of ACS state to Level and WorldInfo classes. 22.02.2007 I added references to LevelInfo and WorldInfo to Level class. I implemented support for LOADACS script. 26.02.2007 I created an EntityChannel class. Currently it doesn't do anything yet. 27.02.2007 I started to implement updates of some of the Entity fields using the EntityChannel class. In compiler I added a keyword that allows me to specify which fields to update. 28.02.2007 In compiler I changed the way net fields are specified making it to be more like UnrealScript. I moved some methods that are used for network replication to Field class. In Entity class I added network role fields. 01.03.2007 I created a PlayerChannel class that does updates of player fields similar to the way entity fields are updated. All player stats are now updated using PlayerChannel. I moved channels to the PlayerNetInfo class. 02.03.2007 I changed some of the fields in BasePlayer class to be updated using channel. 03.03.2007 I implemented support for conditional field replication. 04.03.2007 I moved handling of dynamic lights and particles to LevelRenderData class. 05.03.2007 I finished moving dynamic lights to LevelRenderData class. 06.03.2007 I created a ViewClipper class and moved methods for angle based view clipping to this class. 07.03.2007 I decided to move level rendering methods to LevelRenderData class and to make it more clear I renamed it to RenderLevel. RenderLevel class pointer is now passed to Drawer class to avoid usage of global variables. I also split all definitions of texture loader classes into a separate header file. 08.03.2007 I added a Destroy method to the Thinker class that replaces old style method RemoveSpecialThinker and Entity's Remove method. I also merged create Thinker and Entity methods. 09.03.2007 I changed the way LevelInfo class is created by specifying the class instead of actually creating it. I added some extra arguments to NewSpecialThinker method that allowed me to make Spawn a wrapper around it and move it to Thinker class. In compiler I added a spawner method attribute that automaticly casts return value. I changed spawning of all thinkers to use Spawn. 10.03.2007 I made Thinker's Spawn native and added an optional angles argument. I also simplified spawning of thnkers in engine. I created a template class for mapping of keys to values and changed language strings class to use it. 11.03.2007 I changed RGB table to be calculated in engine. I fixed a bug in model rendering in software renderer in 8-bit mode. 12.03.2007 I split Message class into incoming and outgoing message classes and changed them to be derived from Stream. 13.03.2007 I changed some of the Message class fields and method arguments to be in bits. I merged network field serialisation methods by taking Stream as argument. 14.03.2007 In Stream class I added SerialiseBits method and implemented serialisation of some bits of data in message classes. 15.03.2007 I moved serialisation of bit data from message classes to general purpose bit stream classes. 17.03.2007 I got rid of global incoming message class. In bit stream classes I added methods for reading and writing a bit and made use of it in some places. In datagram driver I removed splitting bigger packets into smaller ones. I split signon message into multiple ones and added message queue for a player. This allowed me to change maximal message size to be 1024 bytes. 18.03.2007 I changed sector updates to use read/write bit methods. 19.03.2007 In PlayerNetInfo class I added all of the methods of Socket class making it a wrapper around it. I created client and server versions of it and moved parsing of packets to them. 20.03.2007 In bit stream classes I added methods for reading/writing of integers with known maximal value in more compact form. 21.03.2007 I changed network driver API not to take message classes as arguments. The outgoing packets now have a trailing bit that allows me to find out the size of the packet in bits. I did some tests with datagram driver and found out that with current protocol packet compression mostly doesn't give anything so I decided to remove it. The length of packet is always known and is not needed in header so I removed it. Also the UDP protocol already has a checksum so I removed it. I also changed ACK packets to have ACK packet ID in data. 22.03.2007 I moved ACK packet identifier to the data that allowed me to move ACK handling out of datagram driver to PlayerNetInfo class. I also changed reliable message sequence ID to be in data and have it's identifier in data that allowed me to move handling of ACK sending to PlayerNetInfo class. Now all game packets look as unreliable messages. I removed from network API separate methods for sending unreliable messages since they are the same as normal messages. 23.03.2007 I changed PlayerNetInfo to be created when connected and have the same life time as underlying network socket. I moved unreliable packet ID to data and moved sequencing handling out of the datagram driver to the PlayerNetInfo class. Packet resending also has been moved to it. In Direct3D driver I added additional port to DirectX 9. 24.03.2007 I moved datagram packet flags to the data. In datagram driver game packets are now sent and received without any additional logic. 25.03.2007 I changed the way messages are sent to be able to save resend message as a message and not as outgoing packet data. I also added a method that does adding of trailing bit and sending final packet. 26.03.2007 I implemented support for having multiple messages and ACKs in a single packet. 27.03.2007 I added network connection state to the PlayerNetInfo class to simplify error handling. I implemented support for sending and receiving multiple reliable messages. Received out of order messages are kept in a queue untill missing messages are received. On client side entities are now created and destroyed as needed. 28.03.2007 I added a destroy Entity network command that allowed me to get rid of InUse counter. I also added a flag to identify local player removeing the need to use first entity IDs for players. 29.03.2007 On client side I got rid of the cl_mobjs array. I created a thinker iterator template class to simplify this task. I changed entity channels to be created and destroyed as needed. I renamed PlayerNetInfo to NetConnection since it does all connection handling now. 30.03.2007 I stared to prepare for multi-channel communication by creating a client and server general channel classes and moving message queues and message parsing to this class. This channel will be used for old-style protocol. 31.03.2007 I changed remaining entity fields that used old style update to be updated using channel. This way I got rid of entity baseline. On server side entity channels now will allocate first available slot. 01.04.2007 In network connection class I started to implement support for generic multi channel communication. I changed general and player channels to use it. 02.04.2007 I made network.h not to be part of gamedefs.h to have less dependencies on it. I also changed entity channels to use new channel system. To do this I had to implement support for opening a remote channel. 03.04.2007 I created separate connection classes for demo playback and recording. I created a network conext class, currently to handle client and server specific access to the level and creation of general channel. I changed entity channel to be a thinker channel since I'm planing to use it for non-entity thinkers such as level info. I implemented proper support for closing a channel. I also fixed handling of messages that need to be resent and added an AutoACK flag for demo playback and bots where there's no other end to ACK the packets. 04.04.2007 I split implementation of network connection and channels into separate source files. 08.04.2007 I finished playing Soldier Of Fortune 2, back to work now :-). I moved message sequence counters to the connection class to avoid possibility of accepting a wrong message after a channel slot has been closed and reopened. I made network socket classes to be driver specific, each driver now has it's own implementation of a socket. 09.04.2007 In thinker and player channels I implemented special handling for arrays to update array elements that have been changed. 10.04.2007 I created a level channel that does handling of changes of sectors, sides and polyobjs, currently only sidedefs and sectors are handled. I removed multiple Set* methods that are not needed anymore. 11.04.2007 I did some more changes needed for sector updates and implemented updates of polyobjs. 12.04.2007 I finished implementing sector updates. 13.04.2007 I implemented what's necesary to make LevelInfo to be replicated. 15.04.2007 I moved most of the fields from level_t structure to LevelInfo class and most of them are replicated. I also moved flags that are set from MAPINFO from Level to LevelInfo. Time fields have been moved to Level class allowing me to get rid of level_t structure. 16.04.2007 In Doom Firebrand added proper support for foot clipping on liquid terrains and did some more improvements to splashes. In Hexen I fixed cleric's third weapon and slow running speed. 17.04.2007 In BasePlayer class I added bIsClient flag so that replication conditions can check if it's on client or server side. I implemented support for remote procedure calls. Currently both thinker and player channels accept them but only player class supports them. 18.04.2007 I changed sound net protocol commands to use remote procedure calls. Then I moved parsing of custom network protocol commands to the player class. After that I changed them to be done using remote procedure calls. 19.04.2007 I changed more network protocol commands to RPCs. I made methods for adding static lights native that allowed me to remove all message related natives and protocol command definitions from progs. Then I created PlayerReplicationInfo class that contains info about a player that is replicated to all clients. This replaces scores structure used for intermission and makes more player replated data available on client during the game that makes it easy to show deathmatch scores during the game. 20.04.2007 Static lights are now storeed in a list on the server and are sent to clients using level channel. This allowed me to get rid of server's signon messages. 21.04.2007 I fixed PlayerReplicationInfo missing replication conditions for player name and user info. I fixed wrong map names being displayed in new net game menu. Setting a weapon state didn't properly handle case when state time is 0 and there's no next state. 22.04.2007 I changed player structure on client to be recreated for every time when connecting to the server. I changed ClearPlayer method to reset fields to their default values instead of using memset that must not be done is dynamic strings are being used. 23.04.2007 I changed custom player model and skin names to be stored in player class as strings to be able to get rid of model and skin tables on the server. I moved some of the methods from Object class to appropiate classes. 24.04.2007 In player class view states and location are now sent using net replication. I also changed sending of movement commands to be done using relpicated fields. I moved network role fields to the Thinker class since it needs them too. I moved some more methods from Object class to it's proper location. I added a time field to the texture manager class so that warp textures don't have to reference client side specific global variables and to make it more abstract. 25.04.2007 I changed keepalive packets to be simply empty packets and disconnect to be done by closing the general channel. 26.04.2007 I moved sending of the level info to the level channel. I fixed Hexen's world timer, changed it to be float. I changed sending of client and server infos to use RPCs. 27.04.2007 I got rid of multiple client signon stages. I added proper rounding of some of the values being sent over the network. The time used in intermission is now a field in LevelInfo set on the server. View origin is now set using a RPC to avoid jerkiness because of the rounded vector values. Demo messages now also record the current time. After this there's no need to send server's time to the client in every frame. After that general channel is only used for string commands so I could get rid of the command itself. In datagram driver I changed the use of message classes to use bit stream classes instead. I cleaned up message classes from now unused methods and fields. 28.04.2007 I got rid of the sv_player global variable. I changed menus and console to be drawn while not yet fully connected to the server. I moved client side update of entities to the actor class and made it for all types of thinkers. I also moved update of particles to LevelInfo class. I changed current time on client to use time fields in Level class. Aparently latest version of FLAC library crashes if non-FLAC data is passed to it so I added a check for FLAC header before doing it. I fixed some crashes when changing levels while playing with bots. I updated Doom weapon models to Alex Bomberman's ones. I fixed drawing of models with custom scale and offset properties. 29.04.2007 I added name constants for all engine events and added or improved usage of names to have less name lookups during the game. I had to add a separate set of macros for executing an event using vertual function index since compiler tries to use name constant as virtual function index. Now that both general channels are used only for text, I could merge them and rename it to control channel. I changed creation of channels so that I don't have to abort game if there's no free channel slot is available. I fixed user info not being sent to the server. I made closing of open channels when a thinker has been destroyed not to depend on client and server specific global variables. 30.04.2007 I changed drawing of text to use dynamic strings. I fixed a crash when destroying a thinker that doesn't belong to a level. I fixed a typo in maximal number of channels. I updated version number in preparation for a release. 01.05.2007 I fixed bad behaviour when server decides to modify player's movement values. Some makefiles needed some attention. ****************************************************************************** VERSION 1.23 ****************************************************************************** 05.05.2007 I implemented test version of standalone mode for single-player. With new net code it was very easy to do. I decided by default to disable GL point parameters extension. I fixed missing initialisation of paused state of stream music player. 07.05.2007 It turns out that in subclasses of a class with virtual methods GCC starts to add fields on unaligned parent size offset, that caused class-size error on 64 bit systems. I added a proper check for this. 10.05.2007 I created s separate source file for BasePlayer class, I moved most of it's methods there. 18.05.2007 I fixed some remaining cases when memory wasn't freed on exit. 19.05.2007 In Entity class hidden flag wasn't replicated to clients, I fixed that. In render drivers I implemented support for having different fog setting for each polygon. I implemented a general method for pasing colour values with possibility to use colour names that are looked up in a table from X.Org. 20.05.2007 I implemented support for custom fog MAPINFO commands and line special for setting fog parameter to a sector. 21.05.2007 In Doom I implemented support for Heretic finale types specially for Heresy project. I moved PVS checks in network update to connection class. 22.05.2007 I hunted down a memory corruption bug I introduced some days ago. 23.05.2007 I added proper configure check for OpenGL libraries. I fixed force field damage amount and force. I fixed crash when destroying a Heresiarch with Thing_remove. I fixed MUS to MIDI converter that forced all tracks to start at 0 tick. 24.05.2007 I tried to play a ZDoom level from last /newstuff chronicles and found some bugs, such as wrong slope calculation with Plane_Align special and wrong translation of Boom's generic line specials. This level didn't have the REJECT data, so I added a proper check for this. I moved Entity's world related methods to a separate source file and others to Entity's main source file. The rest of sv_ent moved to sv_main. I also split handling of terrain types to it's own source file and renamed sv_swtch to p_switch. ****************************************************************************** VERSION 1.23.1 ****************************************************************************** 25.05.2007 I fixed Doom 2 boss spawning monsters with pitch angle making models to appear tilted. 26.05.2007 I changed handling of gravity back to the original. I added Gravity field to Entity to be to set different gravity for a thing that can be used to simulate low gravity flag in Heretic and Hexen. In Doom I renamed Actor's Enemy and Instigator fields back to theur original names. 27.05.2007 I renamed Actor's Enemy and Instigator fields in other games. 28.05.2007 I implemented support for byte type in VavoomC and changed some fields in engine classes to bytes. I also implemented support for dynamic arrays. I removed video modes lower than 640x480 from the menu. 29.05.2007 I removed automatic stripping of executables in default build. I fixed problem with colourmaps in 8-bit mode in software renderer. In VavoomC I added methods to insert and remove data in dynamic arrays and changed assignment to an element out of bounds of an dynamic array to grow it to the needed size. 30.05.2007 After thinking for a while I found a very simple way how to implement iterator methods. The method returns an instance of an iterator class which is pushed to a stack of current iterators. As a test I implemented iterator of thinkers. 31.05.2007 I got rid of the remaining macros in common package. After that I could start implementing my own preprocessor. I already implemented handling of ifdef-s. 01.06.2007 In vcc I implemented handling of include directives and comments that allowed me to get rid of the old preprocessor library. 02.06.2007 I fixed crash when changing a level in standalone mode, cleaned up level render tests. For network updates I implemented setting up a visibility table using angle based clipper. I also increased number of network channels since 256 seams not to be enough. 03.06.2007 I converted block lines/things iterators and path traverse to the iterator classes so that in progs I can use foreach operator with them and get rid of callback methods. 04.06.2007 In progs I changed path traverse to iterator. The block things iterator is always used to iterate blocks in a given radius, so I started to implement a method that wraps around block things iterator and common code around it. I fixed compiling progs on Windows. 05.06.2007 In progs I added a method that disconnects a bot. I finished work on radius things iterator that I started yesterday and made it to be an iterator method. After this progs don't touch blockmap fields in level class anymore. I simplified calculation of replication condition of a method in RPC. 06.06.2007 I removed support for nosoundclipping mapinfo command since sounds at maximum hearing distance are almost inaudiable, so it basicly does nothing. I changed bots not to have a network connection at all. I made standalone mode to be used in single player by default. 07.06.2007 In progs I implemented support for non-native static methods. 08.06.2007 I implemented support for EDGE's sprites with 16 rotations. I added a size check for reject lump. I also check if it's filled with all zeroes in which case it can be discarded. I implemented a blockmap builder that rebuilds it's missing or bigger than 64k and most likely corrupt. Internally it's now stored using integers that removes some of it's limitations. I moved array of active sound sequences to the Level class. 09.06.2007 I fixed support for Boom's height sectors. I implemented support for ZDoom's compressed GL nodes. I added support for texture offsets in PNG textures. 10.06.2007 I added iterators of classes, all objects and active players, they could get usefull sometimes. Some splash chunks didn't have no-splash flag set that caused almost endless splashing. I added stubs for all unimplemented MAPINFO commands, many ZDoom levels can now be loaded unmodified, including KDIZD. I added support for ZDoom's sloping thing types. 11.06.2007 I started to rename class to the names used by ZDoom since these are the names that are used in some extended ACS commands and in some scripts. 12.06.2007 I continued renaming. 13.06.2007 I finished renaming. 14.06.2007 I changed the way Heretic's key gizmos are handled. Today is Vavoom's birthday, time for a release. ****************************************************************************** VERSION 1.24 ****************************************************************************** 15.06.2007 I'm gonna start common code from Actor classes to the EntityEx class. This way it will be easier to maintain it. I moved common Actor fields to EntityEx class. 16.06.2007 I created PlayerEx class that will have common Player class code. 17.06.2007 I merged Actor's main physics methods. 18.06.2007 I merged other Actor's core physics methods. 19.06.2007 I merged methods for bouncing, splashes and friction. 20.06.2007 I merged falling damage types and made them MAPINFO configurable, merged radius damage. 21.06.2007 I merged aiming and shooting methods. 22.06.2007 I cleaned up aiming and shooting and created aiming method to handle aiming used by Hexen's close range weapons. 25.06.2007 I changed AimEx to return line target as a result and direction in an out parameter. 26.06.2007 I got rid of per-object line target field, merged teleport move and added a damage type parameter to the Damage method. 27.06.2007 I fixed Doom 2 finale cast. I merged teleport, various movement related methods, melee and missile range checks, looking for a player or monster. 28.06.2007 I merged basic monster AI utilities, spawning of missiles. 29.06.2007 I merged spawning of payer's missiles. 30.06.2007 I fixed wrong prototype for StrReplace method, got rid of pickup message arrays in Heretic and Hexen. 01.07.2007 I started to merge Damage methods. 02.07.2007 I merged damage methods, replaced damage flags with damage type field, got rid of LavaInflictor class. 03.07.2007 I merged death methods. 04.07.2007 I merged nightmare respawn, touch and line hit event methods. 05.07.2007 I split makefile in basev directory into sub Makefiles. I moved some common methods to LineSpecialLevelInfo. I implemented net replication of references to thinker objects that have an open channel. 07.07.2007 I moved 2 missile spawn methods from Hexen to EntityEx. Somehow I managed to miss them. I moved OnMapSpawn, SeekerMissile, DropItems and some other small methods to EntityEx. I created a ScriptedEntity class for state action methods and moved basic AI state actions to it. In Doom as a test I merged Weapon and WeaponPickup classes. I moved net serialisation of classes, states and names to objects map. 08.07.2007 I moved spawning of things on a map to LineSpecialLevelinfo. In Doom I created a separate class that holds the Boss brain global state. In Heretic I moved mace handling code to mace spot class, removed global array of D'Sparil teleport spots. 09.07.2007 I fixed Dehacked support. I moved Tick, SectorChanged and ClientTick to EntityEx. I started work on inventory system by creating and Inventory class. I changed game specific pickup base classes to inherit from it. In Heretic every pickup type had complete handling code in it, so I started to generalise it. 10.07.2007 Hexen had the same pickup handling as Heretic, so I changed that one too. I started to implement basic inventory system by starting to convert Doom player ammo array to references to ammo objects. I added basic add, remove and find methods. I also made items in actor's inventory to be replicated to the corresponding player. 11.07.2007 I changed handling of pickups when using a Dehacked patch to use pickup handling methods of items to avoid duplicate code. This will come very handy when new inventory system will be in place. In Doom I manged to get rid of ammo array in Player class. I also rearanged other Doom pickups by moving some common code to Pickup class. In Heretic and Hexen I merged hiding of pickups. 12.07.2007 I moved all of the general pickup handling code to Inventory class and did some rearangements. 13.07.2007 I fixed a crash that was caused by zero length damage hit vector and crash in Strife when destroying the power coupling. In Heretic I got rid of Pickup class. 14.07.2007 I moved Dehacked pickup handling and some Strife state action methods to EntityEx and ScriptedEntity to be able to get rid of Pickup classes in all games. Then I started to work on replacing ammo count array with classes in all other games. A common ammo base class has been created. 15.07.2007 I finished all of the work needed to get rid of the ammo count arrays in all games. I moved all of the ammo pickip code to Ammo class that allowed me to get rid of the game specific ammo pickup classes. I also got rid of the ammo type enums. 16.07.2007 I sorted out ammo pickup handling code to the general layout how it should be in the end. I created a common base class for backpack type items and moved all code to it. In Ammo class I added additonal fields that control backpack behavior. I merged weapon pickup classes with the actual weapon classes. 17.07.2007 I changed WeaponOwned array, ReadyWeapon and PendingWeapon to be references to the weapon objects. I created a common base class for weapons. I also updated glbsp to the latest SVN code. 18.07.2007 I moved CheckAmmo methods to corresponding weapon classes and made them to be useable without automatic weapon change. I added common methods that are used in weapon change methods. I moved common weapon fields to Weapon class. Firebrand fixed crashes caused by the fact that pickups are not subclasses of the Actor class. 19.07.2007 I added some more common fields to the Weapon class and implemented them in games that didn't have them. I did a lots of other work to removed use of the WeaponOwned arrays. I also changed how Hexen's fighter's axe handles case when more mana is picked up. 20.07.2007 I got rid of WeaponOwned arrays in all games. 21.07.2007 I implemented initial inventory of a player pawn class in all games. I also got rid of weapon classes arrays. I got rid of the weapon type enum in Doom. 22.07.2007 I made Heretic's powered up weapons to be separate weapon classes. I got rid of weapon type enum in all games, added some fields needed for the bot AI and other flags. 23.07.2007 I made give ammo/mana methods in all games to be the same. 24.07.2007 I moved ReadyWeapon and pendingWeapon fields to PlayerEx class, moved common weapon methods to the Weapon class. 25.07.2007 I implemented a better way of detecting wether player is playing a firing animaton or not. 28.07.2007 Firebrand implemented a more dynamic way of defining dynamic light of an actor. I moved some remaining common fields to Weapon class, renamed game specific weapon classes. 29.07.2007 In Weapon class I added common DepleeAmmo method, added no alert flag, did some cleanup. I added a special class that holds Hexen's fourth weapon piece info. In Heretic I changed player's inventory to be an array of Artifact objects. 30.07.2007 In Hexen and Strife I changed Inventory arrays on Player class to be arrays of Artifact / InventoryItem classes. 31.07.2007 I added utility methods for inventory traversal, changed current inventory pointers to be references to Invemtory objects, cleaned up some unnecesary fields. 01.08.2007 I created initial version of the launcher using wxWidgets. I moved status bar icon names to the corresponding classes, got rid of Inventory arrays in Player classes. 02.08.2007 In Inventory class I added bIgnoreSkill flag to prevent giving too much initial ammo, added generic methods for dropping inventory items. I moved use methods of inventory items to the corresponding classes and got rid of inventory type enums and Artifact and InventoryItem classes. 03.08.2007 I moved PuzzleItem to linespec package and moved UsePuzzleItem line special to LineSpecialLevelInfo making it available in all games. 04.08.2007 I created a base class for key inventory items, removed Keys field from Player classes. 05.08.2007 I implemented support for LOCKDEFS script. In Strife I removed Communicator flag from Plyaer class, now give the item instead. 06.08.2007 I created a base class for powerups, changed array of powers to be array of Powerup objects, started to implement invulnerability power class. 07.08.2007 I split the main interface of the launcher into multiple tabs, adjusted to make it loog correct on Linux. I mostly finished implementing invulnerability power, added methods that will be used by other powerup classes. 08.08.2007 I finished invulnerability powerup, implemented strength and started to implement invisibility powerup classes. 09.08.2007 I updated glBSP to the latest version. In launcher I added icon, Direct3D option is now shown only on Windows. I finished invisibility and implemented iron feet, light amp, torch, flight and weapon level 2 powerups. 10.08.2007 I implemented speed and minotaur powerups. All powerups are now implemented. 11.08.2007 I updated DeHackEd info file. I added sound definitions for ammo, health and armor pickups. I made floating items not to use Health for it's current state. I implemented base classes for health pickups and basic armor class that handles armor in all games except Hexen. 12.08.2007 I implemented an armor class that handles Hexen style armor. I implemented proper handling of revealed maps, added a base class for map revealer items and implemented Strife's scanner item. 13.08.2007 I implemented Strife's quest items as inventory items and moved sigil pieces count to Sigil class. 14.08.2007 I moved many methods from Player classes to PlayerEx. 15.08.2007 I implemented support for actor class game filter flags. I moved spawn puff and blood methods, methods for spawning particles and dynamic light effects, moved map spot and teleport destination classes to linespec. I implemented more dynamic handling of explosions, moved A_Explode and A_BossDeath and some other state action methods to ScriptedEntity. In Strife I moved boss death methods to the corresponding classes. 17.08.2007 I implemented support for state labels and DECORATE style state definitions and started to convert many classes to use it. 18.08.2007 I changed weapons to fully use state labels, converted many more classes to the new style. 19.08.2007 I converted many more classes to use new style state definitions. 21.08.2007 I converted many Hexen monsters to use new style state defs. 22.08.2007 Many more monsters converted. 23.08.2007 I finished converting monster classes. 24.08.2007 More of the remaining classes converted. 25.08.2007 I removed most of the state fields from EntityEx class, converted more classes. 26.08.2007 I converted most of the remaining state definitions. 27.08.2007 I added support for code blocks in new style state definitiions, converted the remaining state definitions and removed support for old style state definitions. I moved ACS inventory and Strife conversation related methods to EntityEx, moved some simple state ection methods to ScriptedEntity, moved some methods from Actor class to some other classes. 29.08.2007 I fixed possibility of having unkillable lost souls. In Strife I fixed strafing while on low health. I fixed some security vulnerabilities that were reported. 31.08.2007 I fixed other security vulnerabilities that were reported. 01.09.2007 I fixed a spelling mistake in the menus. I merged language definition scripts. 03.09.2007 I started to change displaying of deathmatch statistics to show player names with total number of frags and deaths. 04.09.2007 I changed deathmatch intermission screen in Heretic, some other fixes. 07.09.2007 I finished changing deathmatch intermission screens, removed FragStats field from player class. Firebrand fixed several bugs. 09.09.2007 I added PVS check when rendering things inorder not to draw things that are not visible. 26.09.2007 I fixed bug with hidden objects emiting dynamic lights, gimme cheat, Hexen's thrust spike and model skin animations. I also removed underscores from GL filter menu options. ****************************************************************************** VERSION 1.25 ******************************************************************************