├── .gitattributes ├── .gitignore ├── README.txt ├── build_linux.sh ├── compiler ├── COPYING ├── Makefile ├── VisualStudio │ ├── .gitignore │ ├── .vs │ │ └── ngpc │ │ │ ├── v15 │ │ │ └── Browse.VC.db │ │ │ └── v17 │ │ │ └── Browse.VC.db │ ├── dirent │ │ ├── dirent.c │ │ └── dirent.h │ ├── ngpc.exe.recipe │ ├── ngpc.sln │ ├── ngpc.vcproj │ ├── ngpc.vcxproj │ └── ngpc.vcxproj.filters ├── cfgvars.c ├── cfgvars.h ├── cjs.c ├── comun.h ├── condacto.c ├── condacto.h ├── config.h ├── errores.c ├── errores.h ├── generar.c ├── generar.h ├── lexico.c ├── lexico.h ├── objetos.c ├── objetos.h ├── procesos.c ├── procesos.h ├── salidas.c ├── salidas.h ├── sintacti.c ├── sintacti.h ├── textos.c ├── textos.h ├── vocabula.c └── vocabula.h ├── example-code ├── Readme.md └── codi-d'exemple.txp ├── extra_langs ├── ca │ └── lang_CA.jsp └── gl │ └── lang_GL.jsp ├── inno_installer ├── InstallerEnglish.iss └── InstallerSpanish.iss ├── installation_aux_files ├── CodeHighLight.ini ├── DataHighLight.ini ├── LICENSE.txt ├── VocHighLight.ini ├── buzz.js ├── css.css ├── database.start.catala ├── database.start.english ├── database.start.spanish ├── index.html ├── jquery.js ├── languages │ ├── ngpaws.ca.po │ ├── ngpaws.en.po │ ├── ngpaws.es.po │ ├── ngpaws.po │ └── ngpaws.pot ├── msys-2.0.dll ├── nonIDE │ ├── compile.sh │ ├── leeme.txt │ └── readme.txt ├── sample_plugins │ ├── sample_codehook.jsp │ ├── sample_condact.jsp │ ├── sample_hook_replacement_library.jsp │ ├── sample_library.jsp │ └── sample_new_sequence_tag_hook_lib.jsp ├── themes │ ├── classic │ │ └── css.css │ ├── classic_sample.png │ ├── papyre │ │ ├── css.css │ │ └── theme │ │ │ └── parchmentbg.png │ ├── papyre_sample.png │ ├── papyre_slim │ │ ├── css.css │ │ └── theme │ │ │ └── parchmentbg.png │ ├── papyre_slim_sample.png │ ├── whitepaper │ │ └── css.css │ ├── whitepaper_sample.png │ ├── whitepaper_slim │ │ └── css.css │ └── whitepaper_slim_sample.png └── whatsnew.txt ├── jsl ├── LICENSE ├── ask.jsp ├── atge.jsp ├── atle.jsp ├── bclear.jsp ├── block.jsp ├── bneg.jsp ├── bnotzero.jsp ├── break.jsp ├── bset.jsp ├── bzero.jsp ├── clearexit.jsp ├── command.jsp ├── condacts.js ├── div.jsp ├── exits.jsp ├── fadein.jsp ├── fadeout.jsp ├── ge.jsp ├── getexit.jsp ├── help.jsp ├── hook.jsp ├── hooks.js ├── isdoall.jsp ├── isdone.jsp ├── ismov.jsp ├── ismusic.jsp ├── isnotdoall.jsp ├── isnotdone.jsp ├── isnotmov.jsp ├── isnotmusic.jsp ├── isnotresp.jsp ├── isnotsound.jsp ├── isresp.jsp ├── issound.jsp ├── isvideo.jsp ├── le.jsp ├── listcontents.jsp ├── log.jsp ├── mod.jsp ├── mul.jsp ├── noresp.jsp ├── npcat.jsp ├── objat.jsp ├── objfound.jsp ├── objnotfound.jsp ├── oneg.jsp ├── pausevideo.jsp ├── pictureat.jsp ├── playvideo.jsp ├── randomx.jsp ├── resp.jsp ├── resumevideo.jsp ├── rndwrite.jsp ├── rndwriteln.jsp ├── runtime.js ├── setexit.jsp ├── setweight.jsp ├── silence.jsp ├── softblock.jsp ├── space.jsp ├── synonym.jsp ├── textpic.jsp ├── title.jsp ├── variables.js ├── volume.jsp ├── volumevideo.jsp ├── warnings.jsp ├── whatox.jsp ├── whatox2.jsp ├── youtube.jsp └── zone.jsp ├── newIDE ├── COPYING ├── backup │ ├── ngpaws.lpi │ ├── ngpaws.lps │ ├── umain.lfm │ └── umain.pas ├── images │ ├── buttons │ │ ├── compile.bmp │ │ ├── copy.bmp │ │ ├── cut.bmp │ │ ├── help.bmp │ │ ├── new.bmp │ │ ├── open.bmp │ │ ├── paste.bmp │ │ ├── redo.bmp │ │ ├── replace.bmp │ │ ├── run.bmp │ │ ├── save.bmp │ │ ├── search.bmp │ │ ├── settings.bmp │ │ └── undo.bmp │ ├── icon │ │ ├── DEF.png │ │ ├── OBJ.png │ │ ├── OTX.png │ │ ├── STX.png │ │ ├── compile64.png │ │ ├── connect.png │ │ ├── copy64.png │ │ ├── cut64.png │ │ ├── help64.png │ │ ├── load64.png │ │ ├── ltx.png │ │ ├── mtx.png │ │ ├── new64.png │ │ ├── paste64.png │ │ ├── pro.png │ │ ├── puzzle-128.png │ │ ├── puzzle-64.png │ │ ├── redo64.png │ │ ├── replace64.png │ │ ├── resp.png │ │ ├── run64.png │ │ ├── save64.png │ │ ├── search64.png │ │ ├── tools64.png │ │ ├── undo64.png │ │ └── voc.png │ ├── ngpaws.bmp │ ├── ngpaws.svg │ ├── ngpaws_blur.JPG │ └── ngpaws_blur.bmp ├── languages │ └── ngpaws.po ├── ngpaws.ico ├── ngpaws.lpi ├── ngpaws.lpr ├── ngpaws.lps ├── ngpaws.res ├── ngpaws_linux.lpi ├── ngpaws_osx.ico ├── ngpaws_osx.lpi ├── ngpaws_osx.lpr ├── uabout.lfm ├── uabout.lrj ├── uabout.lrt ├── uabout.pas ├── uconfig.pas ├── uglobals.pas ├── uglobals.rsj ├── umain.lfm ├── umain.lrj ├── umain.lrt ├── umain.pas ├── uoptions.lfm ├── uoptions.lrj ├── uoptions.lrt ├── uoptions.pas ├── upuzzlewizard.lfm ├── upuzzlewizard.lrj ├── upuzzlewizard.lrt ├── upuzzlewizard.pas ├── urunshell.pas ├── usearchreplace.lfm ├── usearchreplace.lrj ├── usearchreplace.lrt ├── usearchreplace.pas └── utxp.pas └── plugins ├── CA └── inventory_worn_by_gender_lib │ ├── ACCinven_lib.jsp │ ├── Llegeix-me.txt │ └── Readme.txt ├── ES └── inventory_worn_by_gender_lib │ ├── ACCinven_lib.jsp │ ├── Leeme.txt │ └── Readme.txt ├── condact_sequence_lib ├── condact_sequence_lib.jsp ├── leeme.txt └── readme.txt ├── draw_picture_svg_lib ├── draw_picture_svg.jsp ├── leeme.md └── readme.md ├── extraAttr_lib ├── LEEME.txt ├── README.txt ├── attrget.jsp ├── attrlet.jsp └── attrlib.jsp ├── listSavedGames_lib (import-export) ├── Changes.txt ├── Leeme.txt ├── Readme.txt └── listsavedgames.jsp ├── listSavedGames_lib ├── Changes.txt ├── Leeme.txt ├── Readme.txt └── listsavedgames.jsp ├── loc_attributes_lib ├── lclear.jsp ├── leeme.txt ├── linit.jsp ├── lneg.jsp ├── lnotzero.jsp ├── loc_attributes.jsp ├── lset.jsp ├── lzero.jsp └── readme.txt ├── longdescription_lib ├── longdescription_lib.jsp └── readme.txt ├── sets_lib ├── in.jsp ├── notin.jsp ├── readme.txt ├── sets_lib.jsp ├── spop.jsp └── spush.jsp └── stack_queue_lib ├── pop.jsp ├── push.jsp ├── qpop.jsp ├── qpush.jsp ├── readme.txt └── stack_queue_lib.jsp /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto 3 | 4 | # Custom for Visual Studio 5 | *.cs diff=csharp 6 | *.sln merge=union 7 | *.csproj merge=union 8 | *.vbproj merge=union 9 | *.fsproj merge=union 10 | *.dbproj merge=union 11 | 12 | # Standard to msysgit 13 | *.doc diff=astextplain 14 | *.DOC diff=astextplain 15 | *.docx diff=astextplain 16 | *.DOCX diff=astextplain 17 | *.dot diff=astextplain 18 | *.DOT diff=astextplain 19 | *.pdf diff=astextplain 20 | *.PDF diff=astextplain 21 | *.rtf diff=astextplain 22 | *.RTF diff=astextplain 23 | 24 | *.jsp linguist-language=javascript 25 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | ################# 2 | ## Eclipse 3 | ################# 4 | 5 | Release-linux-es/ 6 | Release-linux-en/ 7 | build/ 8 | txtpaws/ 9 | Release/ 10 | backup/ 11 | lib/ 12 | core.compiler/ 13 | ide/ 14 | ide_d2l/ 15 | RAD/ 16 | jsl/plugin.js 17 | newIDE/ngpaws.lps 18 | newIDE/ngpaws.res 19 | *.pydevproject 20 | .project 21 | .metadata 22 | tmp/ 23 | *.tmp 24 | *.bak 25 | *.swp 26 | *.log 27 | *.tlog 28 | *.obj 29 | *.ppu 30 | *.o 31 | *~.nib 32 | local.properties 33 | .classpath 34 | .settings/ 35 | .loadpath 36 | 37 | # External tool builders 38 | .externalToolBuilders/ 39 | 40 | # Locally stored "Eclipse launch configurations" 41 | *.launch 42 | 43 | # CDT-specific 44 | .cproject 45 | 46 | # PDT-specific 47 | .buildpath 48 | 49 | 50 | ################# 51 | ## Visual Studio 52 | ################# 53 | 54 | ## Ignore Visual Studio temporary files, build results, and 55 | ## files generated by popular Visual Studio add-ons. 56 | 57 | # User-specific files 58 | *.suo 59 | *.user 60 | *.sln.docstates 61 | 62 | # Build results 63 | 64 | [Dd]ebug/ 65 | [Rr]elease/ 66 | x64/ 67 | build/ 68 | [Bb]in/ 69 | [Oo]bj/ 70 | 71 | # MSTest test Results 72 | [Tt]est[Rr]esult*/ 73 | [Bb]uild[Ll]og.* 74 | 75 | *_i.c 76 | *_p.c 77 | *.ilk 78 | *.meta 79 | *.obj 80 | *.pch 81 | *.pdb 82 | *.pgc 83 | *.pgd 84 | *.rsp 85 | *.sbr 86 | *.tlb 87 | *.tli 88 | *.tlh 89 | *.tmp 90 | *.tmp_proj 91 | *.log 92 | *.vspscc 93 | *.vssscc 94 | .builds 95 | *.pidb 96 | *.log 97 | *.scc 98 | 99 | # Visual C++ cache files 100 | ipch/ 101 | *.aps 102 | *.ncb 103 | *.opensdf 104 | *.sdf 105 | *.cachefile 106 | 107 | # Visual Studio profiler 108 | *.psess 109 | *.vsp 110 | *.vspx 111 | 112 | # Guidance Automation Toolkit 113 | *.gpState 114 | 115 | # ReSharper is a .NET coding add-in 116 | _ReSharper*/ 117 | *.[Rr]e[Ss]harper 118 | 119 | # TeamCity is a build add-in 120 | _TeamCity* 121 | 122 | # DotCover is a Code Coverage Tool 123 | *.dotCover 124 | 125 | # NCrunch 126 | *.ncrunch* 127 | .*crunch*.local.xml 128 | 129 | # Installshield output folder 130 | [Ee]xpress/ 131 | 132 | # DocProject is a documentation generator add-in 133 | DocProject/buildhelp/ 134 | DocProject/Help/*.HxT 135 | DocProject/Help/*.HxC 136 | DocProject/Help/*.hhc 137 | DocProject/Help/*.hhk 138 | DocProject/Help/*.hhp 139 | DocProject/Help/Html2 140 | DocProject/Help/html 141 | 142 | # Click-Once directory 143 | publish/ 144 | 145 | # Publish Web Output 146 | *.Publish.xml 147 | *.pubxml 148 | 149 | # NuGet Packages Directory 150 | ## TODO: If you have NuGet Package Restore enabled, uncomment the next line 151 | #packages/ 152 | 153 | # Windows Azure Build Output 154 | csx 155 | *.build.csdef 156 | 157 | # Windows Store app package directory 158 | AppPackages/ 159 | 160 | # Others 161 | sql/ 162 | *.Cache 163 | ClientBin/ 164 | [Ss]tyle[Cc]op.* 165 | ~$* 166 | *~ 167 | *.dbmdl 168 | *.[Pp]ublish.xml 169 | *.pfx 170 | *.publishsettings 171 | 172 | # RIA/Silverlight projects 173 | Generated_Code/ 174 | 175 | # Backup & report files from converting an old project file to a newer 176 | # Visual Studio version. Backup files are not needed, because we have git ;-) 177 | _UpgradeReport_Files/ 178 | Backup*/ 179 | UpgradeLog*.XML 180 | UpgradeLog*.htm 181 | 182 | # SQL Server files 183 | App_Data/*.mdf 184 | App_Data/*.ldf 185 | 186 | ############# 187 | ## Windows detritus 188 | ############# 189 | 190 | # Windows image file caches 191 | Thumbs.db 192 | ehthumbs.db 193 | 194 | # Folder config file 195 | Desktop.ini 196 | 197 | # Recycle Bin used on file shares 198 | $RECYCLE.BIN/ 199 | 200 | # Mac crap 201 | .DS_Store 202 | 203 | 204 | ############# 205 | ## Python 206 | ############# 207 | 208 | *.py[co] 209 | 210 | # Packages 211 | *.egg 212 | *.egg-info 213 | dist/ 214 | build/ 215 | eggs/ 216 | parts/ 217 | var/ 218 | sdist/ 219 | develop-eggs/ 220 | .installed.cfg 221 | 222 | # Installer logs 223 | pip-log.txt 224 | 225 | # Unit test / coverage reports 226 | .coverage 227 | .tox 228 | 229 | #Translations 230 | *.mo 231 | 232 | #Mr Developer 233 | .mr.developer.cfg 234 | 235 | 236 | ############# 237 | ## Binaries 238 | ############# 239 | /compiler/ngpc 240 | -------------------------------------------------------------------------------- /README.txt: -------------------------------------------------------------------------------- 1 | ngPAWS authoring system 2 | ======================= 3 | 4 | ngPAWS (pronunced n-g-paws) is an authoring system based on the Professional Adventure Writing System, thus the name ngPAWS stands for "next generation PAWS". 5 | 6 | PAWS was an authoring system widely used in UK and Spain in the later 80s and early 90s, being the version for Sinclair ZX Spectrum the most well known, though there have been version for CP/M (Amstrad CPC, PCW) and IBM PC. Also, there are several clones of PAW 7 | made in the 90s, 2000, and 2010s. 8 | 9 | What makes ngPAWS different? 10 | ---------------------------- 11 | What makes ngPAWS different is it does not generate an executable file, but a website that can be run in any modern browser. So text adventures (aka interactive fiction) made with ngPAWS can be run in any web server, or locally. 12 | 13 | Demo 14 | ---- 15 | 16 | Please check a full though short story in the following URL: 17 | 18 | http://www.ngpaws.com/demos/mcarras/ 19 | 20 | Documentation 21 | ------------- 22 | 23 | For detailed documentation please check github wiki: 24 | 25 | https://github.com/Utodev/ngPAWS/wiki 26 | 27 | 28 | Builds 29 | ------ 30 | 31 | For precompiled builds for Windows, Linux (x86 and arm) and OSX, go to our downloads page: 32 | 33 | http://www.ngpaws.com#Downloads 34 | 35 | Please notice the precompiled packages include also txtpaws by Baltasarq (https://github.com/Baltasarq/txtpaws), a very useful tool for ngPAWS programmers/authors. 36 | 37 | 38 | Reporting bugs 39 | -------------- 40 | 41 | If you found any bugs please report it using Github issue manager: 42 | 43 | https://github.com/Utodev/ngPAWS/issues 44 | 45 | 46 | License 47 | ------- 48 | The compiler was developed first by Yokiyoki for his PAW clone "Paguaglús", it has been modified during the years by me (Carlos Sanchez) for the Superglus project and now I have adapted it to generate javascript instead of glulx assembler. It's (C) Yokiyoki and Carlos Sanchez and it's released under the the GPL v2 or later license. 49 | 50 | 51 | The IDE is developed by Carlos Sánchez, and it's released under the GPL v2 or later license. 52 | 53 | The jsl libraries all can be used in your games, so they all use the more flexible MIT license. All of them are (C) Carlos Sánchez. 54 | 55 | -------------------------------------------------------------------------------- /build_linux.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | COLOR='\033[0;36m' 4 | NOCOLOR='\033[0m' 5 | 6 | printf "\n\n${COLOR}--------------------\nngPAWS linux builder\n--------------------${NOCOLOR}\n\n"; 7 | printf "${COLOR}*${NOCOLOR} You need Lazarus, git, and gcc installed on your system\n\n"; 8 | if [ $(which lazbuild) = "" ]; then 9 | printf "lazbuild coudn't be found. Please install Lazarus" 10 | else 11 | #Start the build 12 | 13 | #build ngPAWS 14 | if [ -d "build" ]; then 15 | printf "${COLOR}*${NOCOLOR} Deleting build directory\n" 16 | rm -Rf build 17 | fi 18 | 19 | if [ -d "Release-linux-en" ]; then 20 | printf "${COLOR}*${NOCOLOR} Deleting Release-linux-en directory\n" 21 | rm -Rf Release-linux-en 22 | fi 23 | if [ -d "Release-linux-es" ]; then 24 | printf "${COLOR}*${NOCOLOR} Deleting Release-linux-es directory\n" 25 | rm -Rf Release-linux-es 26 | fi 27 | 28 | if [ -d "Release-linux-es" ]; then 29 | printf "${COLOR}*${NOCOLOR} Deleting Release-linux-es directory\n" 30 | rm -Rf Release-linux-es 31 | fi 32 | 33 | 34 | printf "${COLOR}*${NOCOLOR} Building IDE (may take a while)\n" 35 | mkdir build 36 | cp -R newIDE build/newIDE 37 | lazbuild build/newIDE/ngpaws_linux.lpi 38 | rc=$?; if [[ $rc != 0 ]]; then exit $rc; fi 39 | 40 | 41 | printf "\n${COLOR}*${NOCOLOR} Building npgc compiler\n" 42 | cp -R compiler build/compiler/ 43 | make -C build/compiler/ 44 | rc=$?; if [[ $rc != 0 ]]; then exit $rc; fi 45 | 46 | 47 | #build txtpaws 48 | if [ -d "txtpaws" ]; then 49 | printf "\n${COLOR}*${NOCOLOR} txtpaws project directory exists\n" 50 | else 51 | printf "\n${COLOR}*${NOCOLOR} Cloning txtpaws\n" 52 | git clone https://github.com/Baltasarq/txtpaws/ 53 | fi 54 | 55 | make -C txtpaws/src/ clean 56 | rc=$?; if [[ $rc != 0 ]]; then exit $rc; fi 57 | make -C txtpaws/src/ txtpaws 58 | rc=$?; if [[ $rc != 0 ]]; then exit $rc; fi 59 | 60 | #prepare the Release files 61 | if [ -d "Release-linux" ]; then 62 | printf "\n${COLOR}*${NOCOLOR} Deleting Release directory\n" 63 | rm -Rf Release-linux 64 | fi 65 | if [ -d "Release-linux-en" ]; then 66 | printf "${COLOR}*${NOCOLOR} Deleting Release-linux-en directory\n" 67 | rm -Rf Release-linux-en 68 | fi 69 | if [ -d "Release-linux-es" ]; then 70 | printf "${COLOR}*${NOCOLOR} Deleting Release-linux-es directory\n" 71 | rm -Rf Release-linux-es 72 | fi 73 | 74 | printf "${COLOR}*${NOCOLOR} Prepare files for Release\n" 75 | mkdir Release-linux 76 | 77 | mv build/newIDE/ngpaws Release-linux/ngpaws 78 | mv $(find -iname ngpc -type d -printf "%T@ %p\n" | sort -nr | head -1 | cut -d' ' -f 2) Release-linux/ngpc 79 | cp txtpaws/src/txtpaws Release-linux/txtpaws 80 | cp -R jsl example-code extra_langs installation_aux_files/* plugins Release-linux/ 81 | 82 | cp -R Release-linux Release-linux-es 83 | mv Release-linux Release-linux-en 84 | 85 | printf "${COLOR}*${NOCOLOR} Setting Spanish database as default for Release-linux-es" 86 | mv Release-linux-es/database.start.spanish Release-linux-es/database.start 87 | 88 | printf "${COLOR}*${NOCOLOR} Setting English database as default for Release-linux-en" 89 | mv Release-linux-en/database.start.english Release-linux-en/database.start 90 | 91 | printf "${COLOR}*${NOCOLOR} Cleaning build folders\n\n" 92 | if [ -d "txtpaws" ]; then 93 | rm -Rf txtpaws 94 | fi 95 | 96 | if [ -d "build" ]; then 97 | rm -Rf build 98 | fi 99 | 100 | printf "${COLOR}* English release is in Release-linux-en folder\n" 101 | printf "${COLOR}* Spanish release is in Release-linux-es folder\n" 102 | 103 | printf "\n${COLOR}--------------------\nDone\n--------------------${NOCOLOR}\n\n"; 104 | fi -------------------------------------------------------------------------------- /compiler/Makefile: -------------------------------------------------------------------------------- 1 | OS := $(shell uname) 2 | CC = gcc 3 | ifeq ($(OS),Darwin) 4 | OPTIONS = -I/usr/include/malloc/ 5 | else 6 | OPTIONS = 7 | endif 8 | LIBS = 9 | OBJS = condacto.o errores.o generar.o lexico.o objetos.o procesos.o salidas.o sintacti.o cjs.o textos.o vocabula.o cfgvars.o 10 | 11 | all: ngpc 12 | 13 | ngpc: $(OBJS) config.h 14 | $(CC) $(OPTIONS) -o ngpc $(OBJS) $(LIBS) 15 | 16 | config.h: 17 | touch config.h 18 | 19 | clean: 20 | rm -f *~ *.o ngpc.exe ngpc 21 | 22 | .c.o: 23 | $(CC) $(OPTIONS) -c $? 24 | 25 | win32: ngpc 26 | $(CC) -o ngpc $(OBJS) $(LIBS) 27 | -------------------------------------------------------------------------------- /compiler/VisualStudio/.gitignore: -------------------------------------------------------------------------------- 1 | ## Ignore Visual Studio temporary files, build results, and 2 | ## files generated by popular Visual Studio add-ons. 3 | 4 | # User-specific files 5 | *.suo 6 | *.user 7 | *.userosscache 8 | *.sln.docstates 9 | 10 | # Build results 11 | [Dd]ebug/ 12 | [Dd]ebugPublic/ 13 | [Rr]elease/ 14 | [Rr]eleases/ 15 | x64/ 16 | x86/ 17 | build/ 18 | bld/ 19 | [Bb]in/ 20 | [Oo]bj/ 21 | *.lastbuildstate 22 | *.manifest 23 | *.tlog 24 | *.1.tlog 25 | *.write.1.tlog 26 | 27 | # Roslyn cache directories 28 | *.ide/ 29 | 30 | # MSTest test Results 31 | [Tt]est[Rr]esult*/ 32 | [Bb]uild[Ll]og.* 33 | 34 | #NUNIT 35 | *.VisualState.xml 36 | TestResult.xml 37 | 38 | # Build Results of an ATL Project 39 | [Dd]ebugPS/ 40 | [Rr]eleasePS/ 41 | dlldata.c 42 | 43 | *_i.c 44 | *_p.c 45 | *_i.h 46 | *.ilk 47 | *.meta 48 | *.obj 49 | *.pch 50 | *.pdb 51 | *.pgc 52 | *.pgd 53 | *.rsp 54 | *.sbr 55 | *.tlb 56 | *.tli 57 | *.tlh 58 | *.tmp 59 | *.tmp_proj 60 | *.log 61 | *.vspscc 62 | *.vssscc 63 | .builds 64 | *.pidb 65 | *.svclog 66 | *.scc 67 | 68 | # Chutzpah Test files 69 | _Chutzpah* 70 | 71 | # Visual C++ cache files 72 | ipch/ 73 | *.aps 74 | *.ncb 75 | *.opensdf 76 | *.sdf 77 | *.cachefile 78 | 79 | # Visual Studio profiler 80 | *.psess 81 | *.vsp 82 | *.vspx 83 | 84 | # TFS 2012 Local Workspace 85 | $tf/ 86 | 87 | # Guidance Automation Toolkit 88 | *.gpState 89 | 90 | # ReSharper is a .NET coding add-in 91 | _ReSharper*/ 92 | *.[Rr]e[Ss]harper 93 | *.DotSettings.user 94 | 95 | # JustCode is a .NET coding addin-in 96 | .JustCode 97 | 98 | # TeamCity is a build add-in 99 | _TeamCity* 100 | 101 | # DotCover is a Code Coverage Tool 102 | *.dotCover 103 | 104 | # NCrunch 105 | _NCrunch_* 106 | .*crunch*.local.xml 107 | 108 | # MightyMoose 109 | *.mm.* 110 | AutoTest.Net/ 111 | 112 | # Web workbench (sass) 113 | .sass-cache/ 114 | 115 | # Installshield output folder 116 | [Ee]xpress/ 117 | 118 | # DocProject is a documentation generator add-in 119 | DocProject/buildhelp/ 120 | DocProject/Help/*.HxT 121 | DocProject/Help/*.HxC 122 | DocProject/Help/*.hhc 123 | DocProject/Help/*.hhk 124 | DocProject/Help/*.hhp 125 | DocProject/Help/Html2 126 | DocProject/Help/html 127 | 128 | # Click-Once directory 129 | publish/ 130 | 131 | # Publish Web Output 132 | *.[Pp]ublish.xml 133 | *.azurePubxml 134 | # TODO: Comment the next line if you want to checkin your web deploy settings 135 | # but database connection strings (with potential passwords) will be unencrypted 136 | *.pubxml 137 | *.publishproj 138 | 139 | # NuGet Packages 140 | *.nupkg 141 | # The packages folder can be ignored because of Package Restore 142 | **/packages/* 143 | # except build/, which is used as an MSBuild target. 144 | !**/packages/build/ 145 | # If using the old MSBuild-Integrated Package Restore, uncomment this: 146 | #!**/packages/repositories.config 147 | 148 | # Windows Azure Build Output 149 | csx/ 150 | *.build.csdef 151 | 152 | # Windows Store app package directory 153 | AppPackages/ 154 | 155 | # Others 156 | sql/ 157 | *.Cache 158 | ClientBin/ 159 | [Ss]tyle[Cc]op.* 160 | ~$* 161 | *~ 162 | *.dbmdl 163 | *.dbproj.schemaview 164 | *.pfx 165 | *.publishsettings 166 | node_modules/ 167 | 168 | # RIA/Silverlight projects 169 | Generated_Code/ 170 | 171 | # Backup & report files from converting an old project file 172 | # to a newer Visual Studio version. Backup files are not needed, 173 | # because we have git ;-) 174 | _UpgradeReport_Files/ 175 | Backup*/ 176 | UpgradeLog*.XML 177 | UpgradeLog*.htm 178 | 179 | # SQL Server files 180 | *.mdf 181 | *.ldf 182 | 183 | # Business Intelligence projects 184 | *.rdl.data 185 | *.bim.layout 186 | *.bim_*.settings 187 | 188 | # Microsoft Fakes 189 | FakesAssemblies/ 190 | -------------------------------------------------------------------------------- /compiler/VisualStudio/.vs/ngpc/v15/Browse.VC.db: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Utodev/ngPAWS/ab874b5ab49e2ec520b27bf97823ccfa9c907359/compiler/VisualStudio/.vs/ngpc/v15/Browse.VC.db -------------------------------------------------------------------------------- /compiler/VisualStudio/.vs/ngpc/v17/Browse.VC.db: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Utodev/ngPAWS/ab874b5ab49e2ec520b27bf97823ccfa9c907359/compiler/VisualStudio/.vs/ngpc/v17/Browse.VC.db -------------------------------------------------------------------------------- /compiler/VisualStudio/dirent/dirent.h: -------------------------------------------------------------------------------- 1 | /* 2 | * DIRENT.H (formerly DIRLIB.H) 3 | * 4 | * by M. J. Weinstein Released to public domain 1-Jan-89 5 | * 6 | * Because I have heard that this feature (opendir, readdir, closedir) 7 | * it so useful for programmers coming from UNIX or attempting to port 8 | * UNIX code, and because it is reasonably light weight, I have included 9 | * it in the Mingw32 package. I have also added an implementation of 10 | * rewinddir, seekdir and telldir. 11 | * - Colin Peters 12 | * 13 | * This code is distributed in the hope that is will be useful but 14 | * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY 15 | * DISCLAIMED. This includeds but is not limited to warranties of 16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 17 | * 18 | * $Revision: 1.1 $ 19 | * $Author: gbazin $ 20 | * $Date: 2002/05/18 14:03:13 $ 21 | * 22 | */ 23 | 24 | #ifndef __STRICT_ANSI__ 25 | 26 | #ifndef _DIRENT_H_ 27 | #define _DIRENT_H_ 28 | 29 | #include 30 | 31 | #ifndef RC_INVOKED 32 | 33 | #ifdef __cplusplus 34 | extern "C" { 35 | #endif 36 | 37 | struct dirent 38 | { 39 | long d_ino; /* Always zero. */ 40 | unsigned short d_reclen; /* Always zero. */ 41 | unsigned short d_namlen; /* Length of name in d_name. */ 42 | char* d_name; /* File name. */ 43 | /* NOTE: The name in the dirent structure points to the name in the 44 | * finddata_t structure in the DIR. */ 45 | }; 46 | 47 | /* 48 | * This is an internal data structure. Good programmers will not use it 49 | * except as an argument to one of the functions below. 50 | */ 51 | typedef struct 52 | { 53 | /* disk transfer area for this dir */ 54 | struct _finddata_t dd_dta; 55 | 56 | /* dirent struct to return from dir (NOTE: this makes this thread 57 | * safe as long as only one thread uses a particular DIR struct at 58 | * a time) */ 59 | struct dirent dd_dir; 60 | 61 | /* _findnext handle */ 62 | long dd_handle; 63 | 64 | /* 65 | * Status of search: 66 | * 0 = not started yet (next entry to read is first entry) 67 | * -1 = off the end 68 | * positive = 0 based index of next entry 69 | */ 70 | short dd_stat; 71 | 72 | /* given path for dir with search pattern (struct is extended) */ 73 | char dd_name[1]; 74 | } DIR; 75 | 76 | 77 | 78 | DIR* opendir (const char*); 79 | struct dirent* readdir (DIR*); 80 | int closedir (DIR*); 81 | void rewinddir (DIR*); 82 | long telldir (DIR*); 83 | void seekdir (DIR*, long); 84 | 85 | 86 | /* wide char versions */ 87 | 88 | struct _wdirent 89 | { 90 | long d_ino; /* Always zero. */ 91 | unsigned short d_reclen; /* Always zero. */ 92 | unsigned short d_namlen; /* Length of name in d_name. */ 93 | wchar_t* d_name; /* File name. */ 94 | /* NOTE: The name in the dirent structure points to the name in the 95 | * wfinddata_t structure in the _WDIR. */ 96 | }; 97 | 98 | /* 99 | * This is an internal data structure. Good programmers will not use it 100 | * except as an argument to one of the functions below. 101 | */ 102 | typedef struct 103 | { 104 | /* disk transfer area for this dir */ 105 | struct _wfinddata_t dd_dta; 106 | 107 | /* dirent struct to return from dir (NOTE: this makes this thread 108 | * safe as long as only one thread uses a particular DIR struct at 109 | * a time) */ 110 | struct _wdirent dd_dir; 111 | 112 | /* _findnext handle */ 113 | long dd_handle; 114 | 115 | /* 116 | * Status of search: 117 | * 0 = not started yet (next entry to read is first entry) 118 | * -1 = off the end 119 | * positive = 0 based index of next entry 120 | */ 121 | short dd_stat; 122 | 123 | /* given path for dir with search pattern (struct is extended) */ 124 | wchar_t dd_name[1]; 125 | } _WDIR; 126 | 127 | 128 | 129 | _WDIR* _wopendir (const wchar_t*); 130 | struct _wdirent* _wreaddir (_WDIR*); 131 | int _wclosedir (_WDIR*); 132 | void _wrewinddir (_WDIR*); 133 | long _wtelldir (_WDIR*); 134 | void _wseekdir (_WDIR*, long); 135 | 136 | 137 | #ifdef __cplusplus 138 | } 139 | #endif 140 | 141 | #endif /* Not RC_INVOKED */ 142 | 143 | #endif /* Not _DIRENT_H_ */ 144 | 145 | #endif /* Not __STRICT_ANSI__ */ 146 | 147 | 148 | -------------------------------------------------------------------------------- /compiler/VisualStudio/ngpc.exe.recipe: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | C:\Users\csanc\PersonalDrive\Github\Release\ngpc.exe 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /compiler/VisualStudio/ngpc.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 11.00 3 | # Visual Studio 2010 4 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ngpc", "ngpc.vcxproj", "{BC7872D1-2E87-4964-9A02-F5F725E7101A}" 5 | EndProject 6 | Global 7 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 8 | Debug|Win32 = Debug|Win32 9 | Release|Win32 = Release|Win32 10 | EndGlobalSection 11 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 12 | {BC7872D1-2E87-4964-9A02-F5F725E7101A}.Debug|Win32.ActiveCfg = Release|Win32 13 | {BC7872D1-2E87-4964-9A02-F5F725E7101A}.Debug|Win32.Build.0 = Release|Win32 14 | {BC7872D1-2E87-4964-9A02-F5F725E7101A}.Release|Win32.ActiveCfg = Release|Win32 15 | {BC7872D1-2E87-4964-9A02-F5F725E7101A}.Release|Win32.Build.0 = Release|Win32 16 | EndGlobalSection 17 | GlobalSection(SolutionProperties) = preSolution 18 | HideSolutionNode = FALSE 19 | EndGlobalSection 20 | EndGlobal 21 | -------------------------------------------------------------------------------- /compiler/VisualStudio/ngpc.vcxproj.filters: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | {37097cfc-0c8e-4d20-8721-810c3033d5dc} 6 | cpp;c;cxx;rc;def;r;odl;idl;hpj;bat 7 | 8 | 9 | {242f1bab-d300-4c70-8fbd-b07bc47b6daa} 10 | h;hpp;hxx;hm;inl 11 | 12 | 13 | {dad5dffd-207f-41cb-9014-717592304fbb} 14 | ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe 15 | 16 | 17 | 18 | 19 | Source Files 20 | 21 | 22 | Source Files 23 | 24 | 25 | Source Files 26 | 27 | 28 | Source Files 29 | 30 | 31 | Source Files 32 | 33 | 34 | Source Files 35 | 36 | 37 | Source Files 38 | 39 | 40 | Source Files 41 | 42 | 43 | Source Files 44 | 45 | 46 | Source Files 47 | 48 | 49 | Source Files 50 | 51 | 52 | Source Files 53 | 54 | 55 | Source Files 56 | 57 | 58 | 59 | 60 | Header Files 61 | 62 | 63 | Header Files 64 | 65 | 66 | Header Files 67 | 68 | 69 | Header Files 70 | 71 | 72 | Header Files 73 | 74 | 75 | Header Files 76 | 77 | 78 | Header Files 79 | 80 | 81 | Header Files 82 | 83 | 84 | Header Files 85 | 86 | 87 | Header Files 88 | 89 | 90 | Header Files 91 | 92 | 93 | Header Files 94 | 95 | 96 | Header Files 97 | 98 | 99 | Header Files 100 | 101 | 102 | -------------------------------------------------------------------------------- /compiler/cfgvars.c: -------------------------------------------------------------------------------- 1 | 2 | #include "cfgvars.h" 3 | 4 | #include "config.h" 5 | #include 6 | #include 7 | 8 | #define MAXCFGVARS 200 9 | 10 | /* On WIN32 and DOS compilers strcasecmp does not exist, stricmp is used instead */ 11 | #if (defined(__MSDOS__))||(defined(WIN32)) 12 | #define strcasecmp stricmp 13 | #endif 14 | 15 | char * cfgvars[MAXCFGVARS]; 16 | char * cfgvarvalues[MAXCFGVARS]; 17 | int ncfgvars = 0; 18 | 19 | #define nvalidvars 67 20 | 21 | char * validvars[nvalidvars] = { 22 | 23 | "MUSICSTOP", 24 | 25 | "WINDOWBORDERS", 26 | "WINDOWFRAME", 27 | "WINDOWWIDTH", 28 | "WINDOWHEIGHT", 29 | "WINDOWMASK", 30 | "PROPORTIONALFACE", 31 | "PROPORTIONALSIZE", 32 | "TYPEWRITERFACE", 33 | "TYPEWRITERSIZE", 34 | 35 | "TYPEWRITER_0", 36 | "BOLD_0", 37 | "ITALIC_0", 38 | "FOREGROUND_0", 39 | "BACKGROUND_0", 40 | 41 | "TYPEWRITER_1", 42 | "BOLD_1", 43 | "ITALIC_1", 44 | "FOREGROUND_1", 45 | "BACKGROUND_1", 46 | 47 | "TYPEWRITER_2", 48 | "BOLD_2", 49 | "ITALIC_2", 50 | "FOREGROUND_2", 51 | "BACKGROUND_2", 52 | 53 | "TYPEWRITER_3", 54 | "BOLD_3", 55 | "ITALIC_3", 56 | "FOREGROUND_3", 57 | "BACKGROUND_3", 58 | 59 | "TYPEWRITER_4", 60 | "BOLD_4", 61 | "ITALIC_4", 62 | "FOREGROUND_4", 63 | "BACKGROUND_4", 64 | 65 | "TYPEWRITER_5", 66 | "BOLD_5", 67 | "ITALIC_5", 68 | "FOREGROUND_5", 69 | "BACKGROUND_5", 70 | 71 | "TYPEWRITER_6", 72 | "BOLD_6", 73 | "ITALIC_6", 74 | "FOREGROUND_6", 75 | "BACKGROUND_6", 76 | 77 | "TYPEWRITER_7", 78 | "BOLD_7", 79 | "ITALIC_7", 80 | "FOREGROUND_7", 81 | "BACKGROUND_7", 82 | 83 | "TYPEWRITER_8", 84 | "BOLD_8", 85 | "ITALIC_8", 86 | "FOREGROUND_8", 87 | "BACKGROUND_8", 88 | 89 | "TYPEWRITER_9", 90 | "BOLD_9", 91 | "ITALIC_9", 92 | "FOREGROUND_9", 93 | "BACKGROUND_9", 94 | 95 | "TYPEWRITER_10", 96 | "BOLD_10", 97 | "ITALIC_10", 98 | "FOREGROUND_10", 99 | "BACKGROUND_10", 100 | 101 | "GRAPHIC_PERCENT", 102 | "GRAPHIC_POSITION" 103 | }; 104 | 105 | void 106 | addcfgvar(const char * , const char * ); 107 | 108 | void 109 | initcfgvars() 110 | { 111 | int i; 112 | 113 | ncfgvars = 0; 114 | for(i=0;i 4 | #include 5 | #include 6 | 7 | #include "condacto.h" 8 | #include "lexico.h" 9 | #include "sintacti.h" 10 | #include "errores.h" 11 | #include "textos.h" 12 | #include "vocabula.h" 13 | #include "objetos.h" 14 | #include "generar.h" 15 | 16 | #if (defined(__MSDOS__))||(defined(WIN32)) 17 | #define PATH_SEPARATOR '\\' 18 | #define uSOFT 1 19 | #else 20 | #define PATH_SEPARATOR '/' 21 | #endif 22 | 23 | char wd[2024]; 24 | char * nombre_archivo; 25 | char * path_archivo; 26 | int ver_hi=0; 27 | int ver_lo=1; 28 | int ver_verylo = 3; 29 | 30 | 31 | 32 | int main (int argc, char *argv[]) 33 | { 34 | char *buscar; 35 | char *pgldir; 36 | char *gamedir; 37 | 38 | printf("=== ngpaws compiler v%i.%i.%i ===\n\n",ver_hi,ver_lo, ver_verylo); 39 | 40 | 41 | if (argc < 2) 42 | { 43 | error (errGeneral, 0); 44 | return -1; 45 | }; 46 | 47 | 48 | // Find the folder with the JSL library 49 | pgldir = getenv("NGPAWS_LIBPATH"); 50 | if (pgldir==NULL) 51 | { 52 | #ifdef WIN32 53 | strcpy(wd,argv[0]); 54 | #else 55 | strcpy (wd, getenv ("_")); 56 | #endif 57 | buscar = strrchr (wd, PATH_SEPARATOR); 58 | if (!buscar) buscar = strrchr (wd, PATH_SEPARATOR); 59 | if (buscar) *buscar = 0; else strcpy (wd, "."); 60 | } 61 | else 62 | { 63 | strcpy(wd, pgldir); 64 | } 65 | 66 | nombre_archivo = strdup(argv[1]); 67 | 68 | 69 | // find the path of the file to be compiled 70 | gamedir = strdup(argv[1]); 71 | buscar = strrchr(gamedir, PATH_SEPARATOR); 72 | if (!buscar) path_archivo = strdup("."); 73 | else { 74 | int l = strlen(gamedir); 75 | while (gamedir[l-1] != PATH_SEPARATOR) l--; 76 | gamedir[l-1] = 0; 77 | path_archivo = strdup(gamedir); 78 | }; 79 | 80 | printf("ngPAWS directory found at %s\n",wd); 81 | printf("Game directory found at %s\n",path_archivo); 82 | InitializeCondacts(); 83 | prepLexico (argv[1]); 84 | analizar(); 85 | printf ("Completed.\n"); 86 | termLexico (); 87 | GenerarEnsamblador (argv[1]); 88 | FinalizarVocabulario (); 89 | return 0; 90 | } 91 | 92 | -------------------------------------------------------------------------------- /compiler/comun.h: -------------------------------------------------------------------------------- 1 | 2 | #include "config.h" 3 | 4 | 5 | #ifndef TRUE 6 | #define TRUE (1==1) 7 | #define FALSE (!(TRUE)) 8 | #endif 9 | 10 | #ifdef WIN32 11 | 12 | #define strcasecmp stricmp 13 | 14 | #endif 15 | 16 | extern char wd[80]; 17 | -------------------------------------------------------------------------------- /compiler/condacto.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Utodev/ngPAWS/ab874b5ab49e2ec520b27bf97823ccfa9c907359/compiler/condacto.c -------------------------------------------------------------------------------- /compiler/condacto.h: -------------------------------------------------------------------------------- 1 | 2 | #include "config.h" 3 | 4 | #define NUMCONDACTS 127 5 | #define USERCONDACTS 256 6 | 7 | 8 | 9 | typedef enum 10 | { nada, flagno, value, percent, objno, mesno, smesno, prono, locno, locno_, adjective, 11 | adverb, preposition, noun, string, verb } tipoArg; 12 | 13 | typedef enum { aNada, aDescribir, aEnd, aFinDeTabla, aCondicional, aHook} tipoLimpieza; 14 | 15 | typedef enum { condicion, accion, mixto, dot, colon, blockStart, blockEnd, waitkey } tipoCondacto; 16 | 17 | typedef struct 18 | { 19 | char *nombre; 20 | tipoCondacto tipo; 21 | tipoArg tipoArg1, tipoArg2, tipoArg3; 22 | tipoLimpieza limpieza; 23 | } TipoCondacto; 24 | 25 | extern TipoCondacto condactos[NUMCONDACTS + USERCONDACTS]; 26 | extern char *path_archivo; 27 | 28 | int BuscarCondacto (const char *nombre, TipoCondacto * condacto, int forceCondition); 29 | 30 | void InitializeCondacts (); 31 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /compiler/config.h: -------------------------------------------------------------------------------- 1 | /* config.h.in. Generated from configure.in by autoheader. */ 2 | 3 | /* Define to 1 if you have the header file. */ 4 | #undef HAVE_INTTYPES_H 5 | 6 | /* Define to 1 if your system has a GNU libc compatible `malloc' function, and 7 | to 0 otherwise. */ 8 | #undef HAVE_MALLOC 9 | 10 | /* Define to 1 if you have the header file. */ 11 | #undef HAVE_MALLOC_H 12 | 13 | /* Define to 1 if you have the header file. */ 14 | #undef HAVE_MEMORY_H 15 | 16 | /* Define to 1 if you have the `memset' function. */ 17 | #undef HAVE_MEMSET 18 | 19 | /* Define to 1 if `stat' has the bug that it succeeds when given the 20 | zero-length file name argument. */ 21 | #undef HAVE_STAT_EMPTY_STRING_BUG 22 | 23 | /* Define to 1 if you have the header file. */ 24 | #undef HAVE_STDINT_H 25 | 26 | /* Define to 1 if you have the header file. */ 27 | #undef HAVE_STDLIB_H 28 | 29 | /* Define to 1 if you have the `strcasecmp' function. */ 30 | #undef HAVE_STRCASECMP 31 | 32 | /* Define to 1 if you have the `strchr' function. */ 33 | #undef HAVE_STRCHR 34 | 35 | /* Define to 1 if you have the `strcspn' function. */ 36 | #undef HAVE_STRCSPN 37 | 38 | /* Define to 1 if you have the `strdup' function. */ 39 | #undef HAVE_STRDUP 40 | 41 | /* Define to 1 if you have the header file. */ 42 | #undef HAVE_STRINGS_H 43 | 44 | /* Define to 1 if you have the header file. */ 45 | #undef HAVE_STRING_H 46 | 47 | /* Define to 1 if you have the `strpbrk' function. */ 48 | #undef HAVE_STRPBRK 49 | 50 | /* Define to 1 if you have the `strrchr' function. */ 51 | #undef HAVE_STRRCHR 52 | 53 | /* Define to 1 if you have the `strstr' function. */ 54 | #undef HAVE_STRSTR 55 | 56 | /* Define to 1 if you have the header file. */ 57 | #undef HAVE_SYS_STAT_H 58 | 59 | /* Define to 1 if you have the header file. */ 60 | #undef HAVE_SYS_TYPES_H 61 | 62 | /* Define to 1 if you have the header file. */ 63 | #undef HAVE_UNISTD_H 64 | 65 | /* Define to 1 if `lstat' dereferences a symlink specified with a trailing 66 | slash. */ 67 | #undef LSTAT_FOLLOWS_SLASHED_SYMLINK 68 | 69 | /* Name of package */ 70 | #undef PACKAGE 71 | 72 | /* Define to the address where bug reports for this package should be sent. */ 73 | #undef PACKAGE_BUGREPORT 74 | 75 | /* Define to the full name of this package. */ 76 | #undef PACKAGE_NAME 77 | 78 | /* Define to the full name and version of this package. */ 79 | #undef PACKAGE_STRING 80 | 81 | /* Define to the one symbol short name of this package. */ 82 | #undef PACKAGE_TARNAME 83 | 84 | /* Define to the version of this package. */ 85 | #undef PACKAGE_VERSION 86 | 87 | /* Define to 1 if you have the ANSI C header files. */ 88 | #undef STDC_HEADERS 89 | 90 | /* Version number of package */ 91 | #undef VERSION 92 | 93 | /* Define to empty if `const' does not conform to ANSI C. */ 94 | #undef const 95 | 96 | /* Define to rpl_malloc if the replacement function should be used. */ 97 | #undef malloc 98 | -------------------------------------------------------------------------------- /compiler/errores.h: -------------------------------------------------------------------------------- 1 | 2 | /* errores.h */ 3 | 4 | #include "config.h" 5 | 6 | typedef enum 7 | { sinError, errGeneral, errLexSint, errSem, errVocab } 8 | tipoError; 9 | 10 | void error (tipoError, int); 11 | void blockError(int nError, int line); 12 | 13 | -------------------------------------------------------------------------------- /compiler/generar.h: -------------------------------------------------------------------------------- 1 | 2 | #include "config.h" 3 | 4 | void GenerarEnsamblador (char *nombreFuente); 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /compiler/lexico.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Utodev/ngPAWS/ab874b5ab49e2ec520b27bf97823ccfa9c907359/compiler/lexico.c -------------------------------------------------------------------------------- /compiler/lexico.h: -------------------------------------------------------------------------------- 1 | /* lexico.h */ 2 | 3 | /* Declaraciones para el analizador lexico */ 4 | 5 | /* Tipos globales */ 6 | 7 | #include "config.h" 8 | 9 | typedef enum 10 | { pError, pcCtl, pcVoc, pcOtx, pcLtx, pcCon, pcStx, 11 | pcMtx, pcObj, pcPro, pSubrayado, pPalabra, pNumero, 12 | pIdNumerico, pFinal, pIndirect, pString, pDirectivaConfiguracion 13 | } 14 | Simbolo; 15 | 16 | /* Global vars */ 17 | 18 | extern char lexema[2048]; 19 | extern char *nombre_archivo; 20 | extern Simbolo simbolo; 21 | extern int lineaLeida; 22 | extern int BOL; 23 | 24 | /* Global functions*/ 25 | 26 | void prepLexico (char *); 27 | void casarLex (Simbolo); 28 | void casarLexSinLeer (Simbolo); 29 | char *extraerTexto (void); 30 | void termLexico (void); 31 | char *aMinusculas (char *); 32 | char *aMayusculas (char *); 33 | -------------------------------------------------------------------------------- /compiler/objetos.c: -------------------------------------------------------------------------------- 1 | 2 | #include "config.h" 3 | 4 | #include "objetos.h" 5 | #include 6 | 7 | TipoObjeto objetos[256]; 8 | 9 | void 10 | PonerObjeto (int num, TipoObjeto obj) 11 | { 12 | objetos[num] = obj; 13 | }; 14 | 15 | -------------------------------------------------------------------------------- /compiler/objetos.h: -------------------------------------------------------------------------------- 1 | 2 | #include "config.h" 3 | 4 | typedef struct 5 | { 6 | int lugar, peso, lo_flags, hi_flags, nombre, adjetivo; 7 | } 8 | TipoObjeto; 9 | 10 | extern TipoObjeto objetos[256]; 11 | 12 | void PonerObjeto (int, TipoObjeto); 13 | 14 | 15 | -------------------------------------------------------------------------------- /compiler/procesos.c: -------------------------------------------------------------------------------- 1 | 2 | #include "config.h" 3 | 4 | #include "procesos.h" 5 | #include 6 | #include 7 | #include 8 | 9 | TipoEntrada *procesos[256]; 10 | 11 | int ultProceso = 2; 12 | int interrupt_proc = -1; 13 | 14 | void 15 | NuevoProceso (int numPro) 16 | { 17 | procesos[numPro] = NULL; 18 | }; 19 | 20 | void 21 | agregarEntrada (int numPro, TipoEntrada * entrada) 22 | { 23 | TipoEntrada *e; 24 | if (procesos[numPro] == NULL) 25 | procesos[numPro] = entrada; 26 | else 27 | { 28 | for (e = procesos[numPro]; e->sig != NULL; e = e->sig); 29 | entrada->sig = NULL; 30 | entrada->condactos[0] = 0; 31 | e->sig = entrada; 32 | } 33 | } 34 | 35 | void 36 | agregarCondacto (int numPro, int cond, int arg1, int arg2, int arg3) 37 | { 38 | TipoEntrada *e; 39 | for (e = procesos[numPro]; e->sig != NULL; e = e->sig); 40 | e->condactos[e->posicion] = cond; 41 | (e->posicion)++; 42 | e->condactos[e->posicion] = arg1; 43 | (e->posicion)++; 44 | e->condactos[e->posicion] = arg2; 45 | (e->posicion)++; 46 | e->condactos[e->posicion] = arg3; 47 | (e->posicion)++; 48 | }; 49 | 50 | void 51 | FinalizarProcesos (void) 52 | { 53 | TipoEntrada *e, *a; 54 | int i; 55 | for (i = 0; i < 256; i++) 56 | if (procesos[i] != NULL) 57 | { 58 | a = e = procesos[i]; 59 | while (a != NULL) 60 | { 61 | a = e->sig; 62 | free (e); 63 | e = a; 64 | } 65 | } 66 | }; 67 | 68 | TipoEntrada * 69 | SiguienteEntrada (int numProceso, TipoEntrada * anterior) 70 | { 71 | TipoEntrada *actual; 72 | actual = procesos[numProceso]; 73 | 74 | if (anterior == NULL) /* piden la primera */ 75 | return actual; 76 | 77 | while ((actual != NULL) && (actual != anterior)) 78 | actual = actual->sig; 79 | if (actual == NULL) 80 | return NULL; 81 | else 82 | return actual->sig; 83 | } 84 | -------------------------------------------------------------------------------- /compiler/procesos.h: -------------------------------------------------------------------------------- 1 | 2 | #include "config.h" 3 | 4 | typedef struct _tipoEntrada 5 | { 6 | int verbo, nombre; 7 | int posicion; 8 | struct _tipoEntrada *sig; 9 | int condactos[512]; 10 | } 11 | TipoEntrada; 12 | 13 | /*extern char *procesos[256];*/ 14 | extern TipoEntrada *procesos[256]; 15 | extern int ultProceso; 16 | extern int interrupt_proc; 17 | 18 | void NuevoProceso (int); 19 | void agregarEntrada (int, TipoEntrada *); 20 | void agregarCondacto (int, int, int, int, int); 21 | void FinalizarProcesos (void); 22 | TipoEntrada *SiguienteEntrada (int numProceso, TipoEntrada * anterior); 23 | -------------------------------------------------------------------------------- /compiler/salidas.c: -------------------------------------------------------------------------------- 1 | 2 | #include "config.h" 3 | 4 | #include "salidas.h" 5 | 6 | int salidas[256][32]; 7 | int ultConexion = -1; 8 | 9 | void 10 | PrepararSalidas (void) 11 | { 12 | int i, j; 13 | for (i = 0; i < 256; i++) 14 | for (j = 0; j < 16; j++) 15 | { 16 | salidas[i][j*2] = 0; 17 | salidas[i][j*2+1] = -1; /* Destino -1 = No hay destino */ 18 | } 19 | 20 | } 21 | 22 | void 23 | PonerSalida (int origen, int direccion, int destino) 24 | { 25 | salidas[origen][direccion * 2] = direccion; 26 | salidas[origen][direccion * 2 + 1] = destino; 27 | } 28 | 29 | int 30 | Salida (int origen, int direccion) 31 | { 32 | return salidas[origen][direccion * 2 + 1]; 33 | } 34 | 35 | void 36 | dumpSalidas (void) 37 | { 38 | 39 | }; 40 | -------------------------------------------------------------------------------- /compiler/salidas.h: -------------------------------------------------------------------------------- 1 | 2 | #include "config.h" 3 | 4 | extern int salidas[256][32]; 5 | extern int ultConexion; 6 | 7 | void PrepararSalidas (void); 8 | void PonerSalida (int, int, int); 9 | int Salida (int, int); 10 | void dumpSalidas (void); 11 | -------------------------------------------------------------------------------- /compiler/sintacti.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Utodev/ngPAWS/ab874b5ab49e2ec520b27bf97823ccfa9c907359/compiler/sintacti.c -------------------------------------------------------------------------------- /compiler/sintacti.h: -------------------------------------------------------------------------------- 1 | 2 | /* sintacti.h */ 3 | 4 | /* cabeceras de funciones */ 5 | 6 | #include "config.h" 7 | 8 | void analizar (void); 9 | -------------------------------------------------------------------------------- /compiler/textos.c: -------------------------------------------------------------------------------- 1 | /* 2 | * textos.c 3 | * 4 | * Este archivo se encarga de almacenar los 5 | * diferentes textos de los mensajes. 6 | * 7 | */ 8 | 9 | #include "config.h" 10 | 11 | #include 12 | #include 13 | #include 14 | #include 15 | #include "textos.h" 16 | 17 | #define TAM_INICIAL_TABLA 256 18 | #define DELTA_TABLA 16 19 | 20 | tabla_mensajes systxt = {0,0,NULL}; 21 | tabla_mensajes mestxt = {0,0,NULL}; 22 | tabla_mensajes objtxt = {0,0,NULL}; 23 | tabla_mensajes loctxt = {0,0,NULL}; 24 | tabla_mensajes writetxt = {0,0,NULL}; 25 | 26 | tabla_mensajes *txtSistema = &systxt; 27 | tabla_mensajes *txtMensajes = &mestxt; 28 | tabla_mensajes *txtObjetos = &objtxt; 29 | tabla_mensajes *txtLugares = &loctxt; 30 | tabla_mensajes *txtWrite = &writetxt; 31 | 32 | int ultTextoSistema = -1; 33 | int ultTextoMensaje = -1; 34 | int ultTextoLugar = -1; 35 | int ultTextoObjeto = -1; 36 | int ultTextoWrite = -1; 37 | 38 | void 39 | inicializarTabla (tabla_mensajes *tabla) { 40 | if(tabla->mensajes == NULL) { 41 | tabla->capacidad = TAM_INICIAL_TABLA; 42 | tabla->mensajes = (tipo_mensaje *)malloc(tabla->capacidad * sizeof(tipo_mensaje)); 43 | } 44 | } 45 | 46 | void 47 | agrandarTabla (tabla_mensajes *tabla) { 48 | tabla->capacidad += DELTA_TABLA; 49 | tabla->mensajes = (tipo_mensaje *)realloc(tabla->mensajes, tabla->capacidad * sizeof(tipo_mensaje)); 50 | } 51 | 52 | void 53 | agregarTexto (tabla_mensajes *tabla, int numero, char *texto) 54 | { 55 | int i; 56 | for (i=0;imensajes == NULL) { 58 | inicializarTabla(tabla); 59 | } 60 | if(tabla->capacidad == tabla->ocupado) { 61 | agrandarTabla(tabla); 62 | } 63 | tabla->ocupado++; 64 | tabla->mensajes[tabla->ocupado-1].num_mensaje = numero; 65 | tabla->mensajes[tabla->ocupado-1].mensaje = texto; 66 | } 67 | 68 | 69 | 70 | -------------------------------------------------------------------------------- /compiler/textos.h: -------------------------------------------------------------------------------- 1 | 2 | 3 | #include "config.h" 4 | 5 | typedef struct { 6 | int num_mensaje; 7 | char * mensaje; 8 | } tipo_mensaje; 9 | 10 | typedef struct { 11 | int ocupado; 12 | int capacidad; 13 | tipo_mensaje * mensajes; 14 | } tabla_mensajes; 15 | 16 | extern tabla_mensajes *txtSistema; 17 | extern tabla_mensajes *txtMensajes; 18 | extern tabla_mensajes *txtObjetos; 19 | extern tabla_mensajes *txtLugares; 20 | extern tabla_mensajes *txtWrite; 21 | 22 | 23 | extern int ultTextoSistema; 24 | extern int ultTextoMensaje; 25 | extern int ultTextoLugar; 26 | extern int ultTextoObjeto; 27 | extern int ultTextoWrite; 28 | 29 | void agregarTexto (tabla_mensajes *, int, char *); 30 | 31 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /compiler/vocabula.c: -------------------------------------------------------------------------------- 1 | 2 | /* vocabula.c */ 3 | 4 | #include "config.h" 5 | 6 | #include 7 | #include 8 | #include 9 | #include 10 | #include "vocabula.h" 11 | #include "errores.h" 12 | #include "comun.h" 13 | 14 | char wordFound[256]; 15 | 16 | typedef struct _NODO 17 | { 18 | TipoPalabra palabra; 19 | struct _NODO *sig; 20 | } 21 | TipoNodo; 22 | 23 | typedef TipoNodo *PNodo; 24 | 25 | typedef struct _LIST 26 | { 27 | unsigned int nElem; 28 | PNodo rootNode; 29 | } TipoLista; 30 | 31 | TipoLista lista; 32 | 33 | void 34 | InicializarVocabulario (void) 35 | { 36 | lista.rootNode = NULL; 37 | lista.nElem = 0; 38 | } 39 | 40 | 41 | void 42 | NuevaPalabra (char *palabra, TiposDePalabra tipo, unsigned int numero) 43 | { 44 | PNodo nueva, actual, anterior; 45 | 46 | // CheckWord(char *palabra); 47 | 48 | nueva = (PNodo) malloc (sizeof (TipoNodo)); 49 | nueva->palabra.pal = (char *) malloc (11); 50 | strncpy (nueva->palabra.pal, palabra, 10); 51 | nueva->palabra.pal[10] = 0; 52 | if (strlen (palabra) > 10) 53 | nueva->palabra.pal[10] = 0; 54 | else 55 | nueva->palabra.pal[strlen (palabra)] = 0; 56 | nueva->palabra.tipo = tipo; 57 | nueva->palabra.num = numero; 58 | nueva->sig = NULL; 59 | 60 | if (lista.rootNode == NULL) 61 | { 62 | lista.rootNode = nueva; 63 | lista.nElem = 1; 64 | } 65 | else 66 | { 67 | actual = lista.rootNode; 68 | anterior = actual; 69 | /* is not last one *//* new word should be after the current one */ 70 | while ((actual->sig != NULL) 71 | && (strcmp (nueva->palabra.pal, actual->palabra.pal) > 0)) 72 | { 73 | anterior = actual; 74 | actual = actual->sig; 75 | } 76 | /* new word should be previous to new one*/ 77 | if (strcmp (nueva->palabra.pal, actual->palabra.pal) < 0) 78 | { 79 | if (actual == lista.rootNode) 80 | { 81 | nueva->sig = lista.rootNode; 82 | lista.rootNode = nueva; 83 | } 84 | else 85 | { 86 | anterior->sig = nueva; 87 | nueva->sig = actual; 88 | } 89 | } 90 | else if (strcmp (nueva->palabra.pal, actual->palabra.pal) > 0) 91 | { 92 | actual->sig = nueva; 93 | } 94 | else 95 | error (errVocab, 0); 96 | lista.nElem++; 97 | } 98 | } 99 | 100 | void FinalizarVocabulario(void) 101 | { 102 | PNodo actual, borrable; 103 | 104 | borrable = lista.rootNode; 105 | 106 | while (borrable != NULL) 107 | { 108 | actual = borrable->sig; 109 | free (borrable); 110 | borrable = actual; 111 | } 112 | } 113 | 114 | int BuscarPalabra (char *txt, TipoPalabra * pal) 115 | { 116 | PNodo dev; 117 | char texto[11]; 118 | strncpy (texto, txt, 10); 119 | texto[10] = 0; 120 | for (dev = lista.rootNode; dev != NULL; dev = dev->sig) 121 | { 122 | if (!strcmp (dev->palabra.pal, texto)) 123 | break; 124 | }; 125 | if (dev == NULL) return FALSE; 126 | pal->pal = strdup (dev->palabra.pal); 127 | pal->tipo = dev->palabra.tipo; 128 | pal->num = dev->palabra.num; 129 | return TRUE; 130 | } 131 | 132 | void dumpPalabras (void) 133 | { 134 | PNodo dev; 135 | for (dev = lista.rootNode; dev != NULL; dev = dev->sig) 136 | printf ("%s %d %d\n", dev->palabra.pal, dev->palabra.tipo, dev->palabra.num); 137 | }; 138 | 139 | 140 | PPalabra SiguientePalabra (PPalabra anterior) 141 | { 142 | PNodo actual; 143 | actual = lista.rootNode; 144 | 145 | if (anterior == NULL) /* first one requested */ 146 | { 147 | if (actual == NULL) return NULL; 148 | else return &(actual->palabra); 149 | } 150 | 151 | while ((actual != NULL) && (&(actual->palabra) != anterior)) 152 | actual = actual->sig; 153 | 154 | if (actual == NULL) return NULL; 155 | else if (actual->sig == NULL) return NULL; 156 | else return &(actual->sig->palabra); 157 | } 158 | 159 | char * BuscarPalabraPorNumero (int nPalABuscar, TiposDePalabra tipo) 160 | { 161 | PNodo dev; 162 | strcpy (wordFound, ""); 163 | if (nPalABuscar == -1) 164 | { 165 | strcpy (wordFound, "_"); 166 | return wordFound; 167 | } 168 | 169 | for (dev = lista.rootNode; dev != NULL; dev = dev->sig) 170 | { 171 | if ((dev->palabra.num == nPalABuscar) && (dev->palabra.tipo == tipo)) 172 | break; 173 | }; 174 | 175 | if (dev != NULL) strcpy (wordFound, dev->palabra.pal); 176 | return wordFound; 177 | } 178 | 179 | -------------------------------------------------------------------------------- /compiler/vocabula.h: -------------------------------------------------------------------------------- 1 | 2 | #include "config.h" 3 | 4 | typedef enum 5 | { 6 | verbo, 7 | nombre, 8 | adjetivo, 9 | adverbio, 10 | pronombre, 11 | conjuncion, 12 | preposicion 13 | } 14 | TiposDePalabra; 15 | 16 | typedef struct 17 | { 18 | char *pal; 19 | TiposDePalabra tipo; 20 | unsigned int num; 21 | } 22 | TipoPalabra; 23 | 24 | typedef TipoPalabra *PPalabra; 25 | 26 | void InicializarVocabulario (void); 27 | void NuevaPalabra (char *palabra, TiposDePalabra tipo, unsigned int numero); 28 | void FinalizarVocabulario(void); 29 | int BuscarPalabra (char *, TipoPalabra *); 30 | char *BuscarPalabraPorNumero (int numPal, TiposDePalabra tipo); 31 | 32 | void dumpPalabras (void); 33 | 34 | PPalabra SiguientePalabra (PPalabra anterior); 35 | 36 | 37 | -------------------------------------------------------------------------------- /example-code/Readme.md: -------------------------------------------------------------------------------- 1 | Copy ../extra_langs/ca/lang_CA.jsp to ./jsl/lang_CA.jsp 2 | 3 | Then compile `codi-d'exemple.txp` with `txtpaws` and `ngpc` 4 | -------------------------------------------------------------------------------- /extra_langs/gl/lang_GL.jsp: -------------------------------------------------------------------------------- 1 | //LIB lang_GL 2 | 3 | //----------------------------------------------------------- 4 | // Esta funcion personaliza las secuencias de escape {OREF} y 5 | // {OBJECT} para su uso con el idioma gallego. 6 | //---------------------------------------------------------- 7 | 8 | // Aux functions 9 | function getObjectFixArticles_lang_GL(objno) 10 | { 11 | var object_text = getObjectText(objno); 12 | var object_words = object_text.split(' '); 13 | if (object_words.length == 1) return object_text; 14 | var candidate = object_words[0]; 15 | object_words.splice(0, 1); 16 | if ( (candidate!='un') && (candidate!='unha') && (candidate!='unhos') && (candidate!='unhas') && (candidate!='algunha') && (candidate!='algunhos') && (candidate!='algunhas') && (candidate!='algun')) return object_text; 17 | var gender = getAdvancedGender(objno); 18 | if (gender == 'F') return 'a ' + object_words.join(' '); 19 | if (gender == 'M') return 'o ' + object_words.join(' '); 20 | if (gender == 'N') return 'o ' + object_words.join(' '); 21 | if (gender == 'PF') return 'as ' + object_words.join(' '); 22 | if (gender == 'PM') return 'os ' + object_words.join(' '); 23 | if (gender == 'PN') return 'os ' + object_words.join(' '); 24 | } 25 | 26 | 27 | // Sequence tag replacement 28 | 29 | 30 | 31 | 32 | var old_writeHook_lang_GL = h_sequencetag; 33 | var h_sequencetag = function (tagparams) 34 | { 35 | var tag = tagparams[0].toUpperCase(); 36 | switch (tag) 37 | { 38 | case 'OREF': 39 | if (tagparams.length != 1) {return '[[[' + STR_INVALID_TAG_SEQUENCE_BADPARAMS + ']]]'}; 40 | if(objects[getFlag(FLAG_REFERRED_OBJECT)]) return getObjectFixArticles_lang_GL(getFlag(FLAG_REFERRED_OBJECT)); else return ''; 41 | break; 42 | case 'OBJECT': 43 | if (tagparams.length != 2) {return '[[[' + STR_INVALID_TAG_SEQUENCE_BADPARAMS + ']]]'}; 44 | if(objects[getFlag(tagparams[1])]) return getObjectFixArticles_lang_GL(getFlag(tagparams[1])); else return ''; 45 | break; 46 | default: 47 | return old_writeHook_lang_GL(tagparams); 48 | } 49 | } 50 | 51 | -------------------------------------------------------------------------------- /inno_installer/InstallerEnglish.iss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Utodev/ngPAWS/ab874b5ab49e2ec520b27bf97823ccfa9c907359/inno_installer/InstallerEnglish.iss -------------------------------------------------------------------------------- /inno_installer/InstallerSpanish.iss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Utodev/ngPAWS/ab874b5ab49e2ec520b27bf97823ccfa9c907359/inno_installer/InstallerSpanish.iss -------------------------------------------------------------------------------- /installation_aux_files/CodeHighLight.ini: -------------------------------------------------------------------------------- 1 | [CommentStyle] 2 | ansi=false 3 | asm=true 4 | bas=false 5 | c=false 6 | pas=false 7 | vb=false 8 | 9 | [String Delimiter] 10 | Double Quotes=true 11 | 12 | [Switches] 13 | markup=false 14 | entity=false 15 | dollarvariables=false 16 | ActiveDot=false 17 | 18 | [Key] 19 | Foreground=clRed 20 | Background=$EEEEEE 21 | Style=normal 22 | 23 | [Object] 24 | Foreground=clBlue 25 | Background=$EEEEEE 26 | Style=normal 27 | 28 | [Constant] 29 | Foreground=clMaroon 30 | Background=$EEEEEE 31 | Style=normal 32 | 33 | 34 | [Comment] 35 | Foreground=$007000 36 | Background=$EEEEEE 37 | Style=italic 38 | 39 | 40 | [Entity] 41 | Foreground=clSkyBlue 42 | Background=$EEEEEE 43 | Style=normal 44 | 45 | [Identifier] 46 | Foreground=clNavy 47 | Background=$EEEEEE 48 | Style=bold 49 | 50 | [Dot] 51 | Foreground=$008800 52 | Background=$EEEEEE 53 | Style=normal 54 | 55 | [Number] 56 | Foreground=$005500 57 | Background=$EEEEEE 58 | Style=bold 59 | 60 | [Space] 61 | Foreground=$008800 62 | Background=$EEEEEE 63 | Style=bold 64 | 65 | [String] 66 | Foreground=$006600 67 | Background=$EEEEEE 68 | Style=bold 69 | 70 | [Symbol] 71 | Foreground=$0000BB 72 | Background=$EEEEEE 73 | Style= 74 | 75 | 76 | [Variables] 77 | Foreground=$008800 78 | Background=$EEEEEE 79 | Style=bold 80 | 81 | 82 | [Objects] 83 | ISNOTLIGHT 84 | ABSENT 85 | ADJECT1 86 | ADJECT2 87 | ADVERB 88 | AT 89 | ATGT 90 | ATLT 91 | CARRIED 92 | CHANCE 93 | EQ 94 | GT 95 | ISAT 96 | ISNOTAT 97 | LT 98 | NOTAT 99 | NOTCARR 100 | NOTEQ 101 | NOTSAME 102 | NOTWORN 103 | NOTZERO 104 | NOUN2 105 | PREP 106 | PRESENT 107 | SAME 108 | TIMEOUT 109 | WORN 110 | ZERO 111 | OZERO 112 | ONOTZERO 113 | QUIT 114 | ATGE 115 | ATLE 116 | BNOTZERO 117 | BZERO 118 | GE 119 | ISMUSIC 120 | ISVIDEO 121 | ISNOTMUSIC 122 | ISSOUND 123 | ISNOTSOUND 124 | ISMOV 125 | ISNOTMOV 126 | ISDOALL 127 | ISNOTDOALL 128 | ISDONE 129 | ISNOTDONE 130 | LE 131 | OBJFOUND 132 | OBJNOTFOUND 133 | ZONE 134 | ISLIGHT 135 | 136 | [Constants] 137 | END 138 | OK 139 | DONE 140 | NOTDONE 141 | DESC 142 | END 143 | RESTART 144 | 145 | 146 | 147 | [Keywords] 148 | SYNONYM 149 | ABILITY 150 | TITLE 151 | ADD 152 | ANYKEY 153 | AUTOD 154 | AUTOG 155 | AUTOP 156 | AUTOR 157 | AUTOT 158 | AUTOW 159 | BACKAT 160 | BEEP 161 | BORDER 162 | CHARSET 163 | CLEAR 164 | CLS 165 | COPYFF 166 | COPYFO 167 | COPYOF 168 | COPYOO 169 | CREATE 170 | DESTROY 171 | HOOK 172 | WARNINGS 173 | HELP 174 | RESP 175 | NORESP 176 | SPACE 177 | DOALL 178 | DROP 179 | DROPALL 180 | EXTERN 181 | GET 182 | GOTO 183 | GRAPHIC 184 | INK 185 | INPUT 186 | INVEN 187 | LET 188 | LINE 189 | LISTAT 190 | LISTNPC 191 | LISTOBJ 192 | YOUTUBE 193 | PLAYVIDEO 194 | RESUMEVIDEO 195 | VOLUMEVIDEO 196 | PAUSEVIDEO 197 | LOAD 198 | MES 199 | MESSAGE 200 | MINUS 201 | MODE 202 | MOVE 203 | NEWLINE 204 | NEWTEXT 205 | PAPER 206 | PARSE 207 | PAUSE 208 | PICTURE 209 | PICTUREAT 210 | NPCAT 211 | PLACE 212 | PLUS 213 | PRINT 214 | PRINTAT 215 | PROCESS 216 | PROMPT 217 | PROTECT 218 | PUTIN 219 | PUTO 220 | RAMLOAD 221 | RAMSAVE 222 | RANDOM 223 | REMOVE 224 | RESET 225 | SAVE 226 | SAVEAT 227 | SCORE 228 | SET 229 | SUB 230 | SWAP 231 | SYSMESS 232 | TAKEOUT 233 | TIME 234 | TURNS 235 | WEAR 236 | WEIGH 237 | WEIGHT 238 | WHATO 239 | OSET 240 | OCLEAR 241 | DEBUG 242 | TRANSCRIPT 243 | WRITE 244 | WRITELN 245 | VERSION 246 | BCLEAR 247 | BNEG 248 | BSET 249 | CLEAREXIT 250 | DIV 251 | EXITS 252 | GETEXIT 253 | MOD 254 | MUL 255 | NOP 256 | OBJAT 257 | ONEG 258 | RANDOMX 259 | SETEXIT 260 | TEXTPIC 261 | WHATOX 262 | WHATOX2 263 | GETKEY 264 | ASK 265 | SILENCE 266 | VOLUME 267 | BLOCK 268 | SOFTBLOCK 269 | COMMAND 270 | FADEOUT -------------------------------------------------------------------------------- /installation_aux_files/DataHighLight.ini: -------------------------------------------------------------------------------- 1 | [CommentStyle] 2 | ansi=false 3 | asm=true 4 | bas=false 5 | c=false 6 | pas=false 7 | vb=false 8 | 9 | [String Delimiter] 10 | Double Quotes=true 11 | 12 | [Switches] 13 | markup=false 14 | entity=false 15 | dollarvariables=false 16 | ActiveDot=false 17 | 18 | [Key] 19 | Foreground=clNavy 20 | Background=$eeeeee 21 | Style=normal 22 | 23 | [Object] 24 | Foreground=clNavy 25 | Background=$eeeeee 26 | Style=normal 27 | 28 | [Constant] 29 | Foreground=$000000 30 | Background=$eeeeee 31 | Style=normal 32 | 33 | 34 | [Comment] 35 | Foreground=$007000 36 | Background=$eeeeee 37 | Style=italic 38 | 39 | 40 | [Entity] 41 | Foreground=$FF0000 42 | Background=$eeeeee 43 | Style=normal 44 | 45 | [Identifier] 46 | Foreground=$000000 47 | Background=$eeeeee 48 | Style=bold 49 | 50 | [Dot] 51 | Foreground=clNavy 52 | Background=$eeeeee 53 | Style=normal 54 | 55 | [Number] 56 | Foreground=$005500 57 | Background=$eeeeee 58 | Style=bold 59 | 60 | [Space] 61 | Foreground=clRed 62 | Background=$eeeeee 63 | Style=bold 64 | 65 | [String] 66 | Foreground=clNavy 67 | Background=$eeeeee 68 | Style= 69 | 70 | [Symbol] 71 | Foreground=clBlack 72 | Background=$eeeeee 73 | Style=bold 74 | 75 | 76 | [Variables] 77 | Foreground=clRed 78 | Background=$eeeeee 79 | Style=bold 80 | -------------------------------------------------------------------------------- /installation_aux_files/LICENSE.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Utodev/ngPAWS/ab874b5ab49e2ec520b27bf97823ccfa9c907359/installation_aux_files/LICENSE.txt -------------------------------------------------------------------------------- /installation_aux_files/VocHighLight.ini: -------------------------------------------------------------------------------- 1 | [CommentStyle] 2 | ansi=false 3 | asm=true 4 | bas=false 5 | c=false 6 | pas=false 7 | vb=false 8 | 9 | [String Delimiter] 10 | Double Quotes=true 11 | 12 | [Switches] 13 | markup=false 14 | entity=false 15 | dollarvariables=false 16 | ActiveDot=false 17 | 18 | [Key] 19 | Foreground=clNavy 20 | Background=$EEEEEE 21 | Style=normal 22 | 23 | [Object] 24 | Foreground=clNavy 25 | Background=$EEEEEE 26 | Style=bold 27 | 28 | [Constant] 29 | Foreground=clNavy 30 | Background=$EEEEEE 31 | Style=normal 32 | 33 | 34 | [Comment] 35 | Foreground=$007000 36 | Background=$EEEEEE 37 | Style=italic 38 | 39 | 40 | [Entity] 41 | Foreground=clNavy 42 | Background=$EEEEEE 43 | Style=normal 44 | 45 | [Identifier] 46 | Foreground=clNavy 47 | Background=$EEEEEE 48 | Style=normal 49 | 50 | [Dot] 51 | Foreground=clyellow 52 | Background=$EEEEEE 53 | Style=normal 54 | 55 | [Number] 56 | Foreground=$005500 57 | Background=$EEEEEE 58 | Style=bold 59 | 60 | [Space] 61 | Foreground=clyellow 62 | Background=$EEEEEE 63 | Style=bold 64 | 65 | [String] 66 | Foreground=$74DBE6 67 | Background=$EEEEEE 68 | Style= 69 | 70 | [Symbol] 71 | Foreground=$0000BB 72 | Background=$EEEEEE 73 | Style=bold 74 | 75 | 76 | [Variables] 77 | Foreground=clNavy 78 | Background=$EEEEEE 79 | Style= 80 | 81 | 82 | [Objects] 83 | verb 84 | noun 85 | preposition 86 | pronoun 87 | conjunction 88 | adverb 89 | adjective 90 | adverb 91 | 92 | [Constants] 93 | 94 | 95 | [Keywords] 96 | -------------------------------------------------------------------------------- /installation_aux_files/css.css: -------------------------------------------------------------------------------- 1 | /* whitepaper theme */ 2 | 3 | 4 | /* global */ 5 | 6 | body { 7 | font-family: Monospace, Verdana, arial, helvetica; 8 | -webkit-text-size-adjust: none; 9 | background-color: black; 10 | color: white; 11 | font-size: 120%; 12 | } 13 | 14 | 15 | a { 16 | color: cornflowerblue; 17 | text-decoration: none; 18 | } 19 | 20 | a:visited { 21 | color: cornflowerblue; 22 | text-decoration: none; 23 | } 24 | 25 | a:hover { 26 | color: cornflowerblue; 27 | text-decoration: underline; 28 | } 29 | 30 | 31 | 32 | /* standard layer */ 33 | 34 | .wrapper 35 | { 36 | position: absolute; 37 | left :0 ; 38 | top :0; 39 | right:0; 40 | bottom:0; 41 | background-color:rgb(0, 0, 36); 42 | } 43 | 44 | 45 | .graphics { 46 | position: absolute; 47 | height: 50%; 48 | top: 0; 49 | margin-left:25%; 50 | width: 50%; 51 | padding:10px; 52 | box-sizing: border-box; 53 | background-color: black; 54 | } 55 | 56 | .text { 57 | position: absolute; 58 | top: 52%; 59 | bottom:7%; 60 | overflow: hidden; 61 | width: 50%; 62 | margin-left:25%; 63 | box-sizing: border-box; 64 | padding: 10px 20px 10px 20px; 65 | background-color: black; 66 | } 67 | 68 | .input { 69 | position: absolute; 70 | margin-left:25%; 71 | height: 5%; 72 | bottom:0; 73 | box-sizing: border-box; 74 | width: 50%; 75 | padding: 0 10px 0 10px; 76 | background-color: black; 77 | } 78 | 79 | .prompt { 80 | border: none; 81 | margin: 5px 0 5px 0; 82 | outline: none; 83 | width: 100%; 84 | font-family: Monospace, Verdana, arial, helvetica; 85 | font-size: 100%; 86 | background-color: black; 87 | color: white; 88 | } 89 | 90 | 91 | .location_picture 92 | { 93 | display: block; 94 | margin-left: auto; 95 | margin-right: auto; 96 | border-radius: 10px; 97 | max-width: 100%; 98 | max-height: 100%; 99 | 100 | } 101 | 102 | 103 | .half_text 104 | { 105 | top: 52%; 106 | bottom:7%; 107 | } 108 | 109 | .half_graphics 110 | { 111 | height: 50%; 112 | top: 0; 113 | } 114 | 115 | .hidden 116 | { 117 | height: 0%; 118 | } 119 | 120 | .feedback { 121 | color: cornflowerblue; 122 | text-shadow: 1px 1px 1px #000; 123 | text-transform: uppercase; 124 | } 125 | 126 | .all_text 127 | { 128 | top: 0; 129 | bottom: 7%; 130 | } 131 | 132 | /* input placeholder */ 133 | 134 | ::-webkit-input-placeholder { color:#777; } 135 | ::-moz-placeholder { color:#777; } /* firefox 19+ */ 136 | :-ms-input-placeholder { color:#777; } /* ie */ 137 | input:-moz-placeholder { color:#777; } 138 | 139 | 140 | 141 | /* block layer */ 142 | 143 | .block_layer 144 | { 145 | position: absolute; 146 | left :0 ; 147 | top :0; 148 | bottom: 0; 149 | right: 0; 150 | display: none; 151 | z-index:1000; 152 | background-color: black; 153 | } 154 | 155 | 156 | 157 | .block_layer .block_graphics { 158 | position: absolute; 159 | width: 100%; 160 | height:50%; 161 | top: 0; 162 | display: block; 163 | background-color: black; 164 | box-sizing: border-box; 165 | } 166 | 167 | .block_picture 168 | { 169 | display: block; 170 | margin-left: auto; 171 | margin-right: auto; 172 | } 173 | 174 | .block_layer .block_text { 175 | position: absolute; 176 | top: 52%; 177 | bottom:0; 178 | width: 100%; 179 | text-align: center; 180 | box-sizing: border-box; 181 | display: block; 182 | padding: 10px; 183 | background-color: black; 184 | } 185 | 186 | /* transcript layer */ 187 | 188 | .transcript_layer { 189 | position: absolute; 190 | left :0 ; 191 | top :0; 192 | bottom: 0; 193 | right: 0; 194 | display: none; 195 | z-index:1001; 196 | overflow:scroll; 197 | background-color: black; 198 | 199 | } 200 | 201 | #transcript_area { 202 | height:100%; 203 | width:100%; 204 | overflow:scroll; 205 | box-sizing: border-box; 206 | padding: 10px; 207 | } 208 | 209 | .textpic { 210 | float:left; 211 | margin: 25px; 212 | } 213 | 214 | .anykey_layer { 215 | position:absolute; 216 | left: 0; 217 | top:0; 218 | bottom:0; 219 | right:0; 220 | background-color: transparent; 221 | z-index: 2000; 222 | display: none; 223 | } 224 | 225 | 226 | @media only screen and (orientation: portrait) 227 | { 228 | .input 229 | { 230 | width: 96%; 231 | } 232 | .text { 233 | width: 96%; 234 | 235 | } 236 | .graphics 237 | { 238 | width: 96%; 239 | 240 | } 241 | } 242 | 243 | 244 | @media (max-width: 1024px) { 245 | 246 | body { 247 | font-size: 300%; 248 | } 249 | 250 | .graphics { 251 | position: relative; 252 | } 253 | .text { 254 | position: relative; 255 | top: auto; 256 | bottom: auto; 257 | height: auto; 258 | } 259 | 260 | .input { 261 | position: relative; 262 | top: auto; 263 | bottom: auto; 264 | } 265 | 266 | 267 | .half_text 268 | { 269 | top: auto; 270 | bottom: auto; 271 | height: auto; 272 | } 273 | 274 | 275 | .hidden 276 | { 277 | height: 0%; 278 | } 279 | 280 | 281 | .all_text 282 | { 283 | top: auto; 284 | bottom: auto; 285 | height: auto; 286 | 287 | } 288 | 289 | .wrapper { 290 | height: auto; 291 | max-height: auto; 292 | overflow: auto; 293 | } 294 | 295 | } 296 | -------------------------------------------------------------------------------- /installation_aux_files/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | An ngPAWS game o'hacker 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 |
15 |
16 | 17 |
18 |
19 | 20 |
21 | 22 |
23 |
24 | 25 |
26 |
27 |
28 |
29 |
30 |
31 | 32 |
33 | 34 |
35 | 36 |
37 | 38 | 39 | -------------------------------------------------------------------------------- /installation_aux_files/msys-2.0.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Utodev/ngPAWS/ab874b5ab49e2ec520b27bf97823ccfa9c907359/installation_aux_files/msys-2.0.dll -------------------------------------------------------------------------------- /installation_aux_files/nonIDE/compile.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | SET ngpaws_path=path_to_ngpaws_executables 4 | 5 | ${ngpaws_path}/txtpaws code.txp 6 | ${ngpaws_path}/ngpc code.sce 7 | -------------------------------------------------------------------------------- /installation_aux_files/nonIDE/leeme.txt: -------------------------------------------------------------------------------- 1 | ESPAÑOL-INSTRUCCIONES SIMPLES 2 | ============================= 3 | 4 | 1) Una vez descomprimido el fichero de ngPAWS tendrás una carpeta con dos subcarpetas. 5 | 2) En la carpeta "new_game_pack" edita la linea que empieza por ngpaws_path= para poner la ruta a los ejecutables que necesita ngPAWS (ngpc y txtpaws) 6 | 3) Renombra el fichero database.start.spanish como code.txp 7 | 4) Copia la subcarpeta "new_game_pack" en otro sitio cada vez que quieras hacer una aventura nueva 8 | 5) Edita el fichero code.txp de la carpeta copiada (nunca de la carpeta new_game_pack) para crear tu aventura. 9 | 6) Ejecuta ./compile.sh cada vez que quieras generar una nueva versión de la aventura (compilar) 10 | 7) Abre el index.html cada vez que compiles para ver la nueva versión de tu aventura -------------------------------------------------------------------------------- /installation_aux_files/nonIDE/readme.txt: -------------------------------------------------------------------------------- 1 | ENGLISH - SIMPLE INSTRUCTIONS 2 | ============================= 3 | 4 | 1) Once you have decompressed the ngPAWS you will have a folder with two subfolders 5 | 2) In the folder "new_game_pack" edit the line starting by ngpaws_path= to reflect the path to the ngPAWS executables (ngpc and txtpaws). 6 | 3) Rename the file database.start.english as code.txp 7 | 4) Copy the folder new_game_pack content in some other folder every time you want to start a new game 8 | 5) Edit code.txp file to make changes in your game (the one in the copied folder, not the one in the new_game_pack folder) 9 | 6) Run ./compile.sh every time you want to compile ( create a new version of the game) 10 | 7) Open index.html to see changes. 11 | -------------------------------------------------------------------------------- /installation_aux_files/sample_plugins/sample_codehook.jsp: -------------------------------------------------------------------------------- 1 | //LIB writetexthook_replacement 2 | 3 | //----------------------------------------------------------- 4 | // This is a sample of a function library tha modifies the code hook. 5 | // Please notice the old_hook is preserved (maybe another 6 | // library is hooking this routine). This hook detects if the user typed 7 | // "version" and outputs text accordingly. 8 | //---------------------------------------------------------- 9 | 10 | old_ch1_codeHook = h_code; 11 | 12 | h_code = function (str) 13 | { 14 | if (str=='RESPONSE_USER') 15 | { 16 | if (getFlag(33) == 70) // version 17 | { 18 | writeText('A hacked version of ngPAWS ...'); 19 | accDONE(); 20 | } 21 | } 22 | old_ch1_codeHook(str); 23 | } 24 | 25 | 26 | -------------------------------------------------------------------------------- /installation_aux_files/sample_plugins/sample_condact.jsp: -------------------------------------------------------------------------------- 1 | //CND SAMPLECONDACT A 0 0 0 0 2 | 3 | 4 | // ^------------------------------------------- It's a condact, not a library 5 | // ^--------------------------------------- condact name 6 | // ^------------------------------------ A= action, C= condition 7 | // ^---------------------------------- 0 = no parameter, 1 = flagno, 2= value, 3=percent, 4=objno, 5=mesno, 6=smesno, 7=prono, 8=locno, 9=locno+, 10=adjective, 11=adverb, 12=preposition, 13=noun, 14=string 8 | // ^---------------------------------- 0 = no parameter, 1 = flagno, 2= value, 3=percent, 4=objno, 5=mesno, 6=smesno, 7=prono, 8=locno, 9=locno+, 10=adjective, 11=adverb, 12=preposition, 13=noun, 14=string 9 | // ^---------------------------------- 0 = no parameter, 1 = flagno, 2= value, 3=percent, 4=objno, 5=mesno, 6=smesno, 7=prono, 8=locno, 9=locno+, 10=adjective, 11=adverb, 12=preposition, 13=noun, 14=string 10 | // ^------------------------------ Termination: 0 = aNothing, 1 = aDescribe, 2=aEnd, 3=End of table, 4=aConditional 11 | 12 | 13 | // actions should be named acc_XXXX, condiction cnd_XXX, where xxx is the name in lowercase. 14 | 15 | function ACCsamplecondact() 16 | { 17 | // Do something here 18 | } 19 | 20 | 21 | -------------------------------------------------------------------------------- /installation_aux_files/sample_plugins/sample_hook_replacement_library.jsp: -------------------------------------------------------------------------------- 1 | //LIB writetexthook_replacement 2 | 3 | //----------------------------------------------------------- 4 | // This is a sample of a function library tha modifies a hook. 5 | // Please notice the old_hook is preserved (maybe another 6 | // library is hooking this routine). This hook routine takes all 7 | // text to be written and turns it into uppercase 8 | //---------------------------------------------------------- 9 | 10 | var old_writeHook = h_writeText; 11 | 12 | var h_writeText = function (text) 13 | { 14 | return text.toUpperCase(); 15 | old_writeHook(text); 16 | } 17 | 18 | -------------------------------------------------------------------------------- /installation_aux_files/sample_plugins/sample_library.jsp: -------------------------------------------------------------------------------- 1 | //LIB sample 2 | 3 | 4 | //--------------------------------------------------------- 5 | // This is a sample of a function library. It allows 6 | // definition of functions that can be later used in 7 | // plugin condacts of extern calls. 8 | //---------------------------------------------------------- 9 | 10 | function dumb() 11 | { 12 | 13 | } 14 | 15 | 16 | -------------------------------------------------------------------------------- /installation_aux_files/sample_plugins/sample_new_sequence_tag_hook_lib.jsp: -------------------------------------------------------------------------------- 1 | //LIB sequence_tag_sample_hook_lib.jsp 2 | 3 | var old_sequence_tag_hook = h_sequencetag; 4 | 5 | h_sequencetag = function(tagparams) 6 | { 7 | if (tagparams[0]=='DATE') return new Date().toString(); 8 | if (tagparams[0]=='UNIXTIME') return new Date().getTime(); 9 | if (tagparams[0]=='SUMFLAGS') return getFlag(tagparams[1]) + getFlag(tagparams[2]); 10 | return old_sequence_tag_hook(tagparams); 11 | } 12 | 13 | -------------------------------------------------------------------------------- /installation_aux_files/themes/classic/css.css: -------------------------------------------------------------------------------- 1 | /* whitepaper theme */ 2 | 3 | 4 | /* global */ 5 | 6 | body { 7 | font-family: Verdana, arial, helvetica; 8 | -webkit-text-size-adjust: none; 9 | background-color: black; 10 | color: white; 11 | font-size: 120%; 12 | } 13 | 14 | 15 | a { 16 | color: cornflowerblue; 17 | text-decoration: none; 18 | } 19 | 20 | a:visited { 21 | color: cornflowerblue; 22 | text-decoration: none; 23 | } 24 | 25 | a:hover { 26 | color: cornflowerblue; 27 | text-decoration: underline; 28 | } 29 | 30 | 31 | 32 | /* standard layer */ 33 | 34 | .wrapper 35 | { 36 | position: absolute; 37 | left :0 ; 38 | top :0; 39 | right:0; 40 | bottom:0; 41 | } 42 | 43 | 44 | .graphics { 45 | position: absolute; 46 | height: 50%; 47 | top: 0; 48 | margin-left: auto; 49 | margin-right: auto; 50 | width: 100%; 51 | padding:10px; 52 | box-sizing: border-box; 53 | 54 | } 55 | 56 | .text { 57 | position: absolute; 58 | top: 52%; 59 | bottom:7%; 60 | overflow: hidden; 61 | width: 100%; 62 | box-sizing: border-box; 63 | padding: 10px 20px 10px 20px; 64 | } 65 | 66 | .input { 67 | position: absolute; 68 | height: 5%; 69 | bottom:0; 70 | box-sizing: border-box; 71 | width: 100%; 72 | padding: 0 10px 0 10px; 73 | background-color: black; 74 | } 75 | 76 | .prompt { 77 | border: none; 78 | margin: 5px 0 5px 0; 79 | outline: none; 80 | width: 100%; 81 | font-size: 105%; 82 | background-color: black; 83 | color: white; 84 | } 85 | 86 | 87 | .location_picture 88 | { 89 | display: block; 90 | margin-left: auto; 91 | margin-right: auto; 92 | border-radius: 10px; 93 | max-width: 100%; 94 | max-height: 100%; 95 | 96 | } 97 | 98 | 99 | .half_text 100 | { 101 | top: 52%; 102 | bottom:7%; 103 | } 104 | 105 | .half_graphics 106 | { 107 | height: 50%; 108 | top: 0; 109 | } 110 | 111 | .hidden 112 | { 113 | height: 0%; 114 | } 115 | 116 | .feedback { 117 | color: cornflowerblue; 118 | text-shadow: 1px 1px 1px #000; 119 | text-transform: uppercase; 120 | } 121 | 122 | .all_text 123 | { 124 | top: 0; 125 | bottom: 7%; 126 | } 127 | 128 | /* input placeholder */ 129 | 130 | ::-webkit-input-placeholder { color:#777; } 131 | ::-moz-placeholder { color:#777; } /* firefox 19+ */ 132 | :-ms-input-placeholder { color:#777; } /* ie */ 133 | input:-moz-placeholder { color:#777; } 134 | 135 | 136 | 137 | /* block layer */ 138 | 139 | .block_layer 140 | { 141 | position: absolute; 142 | left :0 ; 143 | top :0; 144 | bottom: 0; 145 | right: 0; 146 | display: none; 147 | z-index:1000; 148 | background-color: black; 149 | } 150 | 151 | 152 | 153 | .block_layer .block_graphics { 154 | position: absolute; 155 | width: 100%; 156 | height:50%; 157 | top: 0; 158 | display: block; 159 | background-color: black; 160 | box-sizing: border-box; 161 | } 162 | 163 | .block_picture 164 | { 165 | display: block; 166 | margin-left: auto; 167 | margin-right: auto; 168 | } 169 | 170 | .block_layer .block_text { 171 | position: absolute; 172 | top: 52%; 173 | bottom:0; 174 | width: 100%; 175 | text-align: center; 176 | box-sizing: border-box; 177 | display: block; 178 | padding: 10px; 179 | background-color: black; 180 | } 181 | 182 | /* transcript layer */ 183 | 184 | .transcript_layer { 185 | position: absolute; 186 | left :0 ; 187 | top :0; 188 | bottom: 0; 189 | right: 0; 190 | display: none; 191 | z-index:1001; 192 | overflow:scroll; 193 | background-color: black; 194 | 195 | } 196 | 197 | #transcript_area { 198 | height:100%; 199 | width:100%; 200 | overflow:scroll; 201 | box-sizing: border-box; 202 | padding: 10px; 203 | } 204 | 205 | .textpic { 206 | float:left 207 | margin: 25px; 208 | } 209 | 210 | .anykey_layer { 211 | position:absolute; 212 | left: 0; 213 | top:0; 214 | bottom:0; 215 | right:0; 216 | background-color: transparent; 217 | display: none; 218 | z-index:2000; 219 | } 220 | 221 | 222 | 223 | @media (max-width: 1024px) { 224 | 225 | body { 226 | font-size: 300%; 227 | } 228 | 229 | .graphics { 230 | position: relative; 231 | } 232 | .text { 233 | position: relative; 234 | top: auto; 235 | bottom: auto; 236 | height: auto; 237 | } 238 | 239 | .input { 240 | position: relative; 241 | top: auto; 242 | bottom: auto; 243 | } 244 | 245 | 246 | .half_text 247 | { 248 | top: auto; 249 | bottom: auto; 250 | height: auto; 251 | } 252 | 253 | 254 | .hidden 255 | { 256 | height: 0%; 257 | } 258 | 259 | 260 | .all_text 261 | { 262 | top: auto; 263 | bottom: auto; 264 | height: auto; 265 | 266 | } 267 | 268 | .wrapper { 269 | height: auto; 270 | max-height: auto; 271 | overflow: auto; 272 | } 273 | 274 | } -------------------------------------------------------------------------------- /installation_aux_files/themes/classic_sample.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Utodev/ngPAWS/ab874b5ab49e2ec520b27bf97823ccfa9c907359/installation_aux_files/themes/classic_sample.png -------------------------------------------------------------------------------- /installation_aux_files/themes/papyre/css.css: -------------------------------------------------------------------------------- 1 | /* papyre theme */ 2 | 3 | 4 | /* global */ 5 | 6 | body { 7 | font-family: Verdana, Arial, Helvetica; 8 | -webkit-text-size-adjust: none; 9 | font-size: 130%; 10 | background-image: url("theme/parchmentbg.png"); 11 | background-repeat: repeat; 12 | text-shadow: 1px 1px 1px #AAA; 13 | 14 | 15 | } 16 | 17 | 18 | a { 19 | color: #900; 20 | text-decoration: none; 21 | 22 | } 23 | 24 | a:visited { 25 | color: #900; 26 | text-decoration: none; 27 | 28 | } 29 | 30 | a:hover { 31 | color: #900; 32 | text-decoration: underline; 33 | 34 | 35 | } 36 | 37 | 38 | 39 | /* standard layer */ 40 | 41 | .wrapper 42 | { 43 | position: absolute; 44 | left :0 ; 45 | top :0; 46 | right:0; 47 | bottom:0; 48 | } 49 | 50 | 51 | .graphics { 52 | position: absolute; 53 | height: 50%; 54 | top: 0; 55 | margin-left: auto; 56 | margin-right: auto; 57 | width: 100%; 58 | padding:10px; 59 | box-sizing: border-box; 60 | 61 | } 62 | 63 | .text { 64 | position: absolute; 65 | top: 52%; 66 | bottom:7%; 67 | overflow: hidden; 68 | width: 100%; 69 | box-sizing: border-box; 70 | padding: 10px 20px 10px 20px; 71 | } 72 | 73 | .input { 74 | position: absolute; 75 | height: 5%; 76 | bottom:0; 77 | box-sizing: border-box; 78 | width: 100%; 79 | padding: 0 10px 0 10px; 80 | } 81 | 82 | .prompt { 83 | border: none; 84 | margin: 5px 0 5px 0; 85 | outline: none; 86 | width: 100%; 87 | font-family: Georgia, Palatino, "Times New Roman", Times, serif; 88 | -webkit-text-size-adjust: none; 89 | font-size: 105%; 90 | background-color: transparent;; 91 | } 92 | 93 | 94 | .location_picture 95 | { 96 | display: block; 97 | margin-left: auto; 98 | margin-right: auto; 99 | border-radius: 10px; 100 | max-width: 100%; 101 | max-height: 100%; 102 | 103 | } 104 | 105 | 106 | .half_text 107 | { 108 | top: 52%; 109 | bottom:7%; 110 | } 111 | 112 | .half_graphics 113 | { 114 | height: 50%; 115 | top: 0; 116 | } 117 | 118 | .hidden 119 | { 120 | height: 0%; 121 | } 122 | 123 | .feedback { 124 | color: #900; 125 | text-shadow: 1px 1px 1px #000; 126 | } 127 | 128 | .all_text 129 | { 130 | top: 0; 131 | bottom: 7%; 132 | } 133 | 134 | /* input placeholder */ 135 | 136 | ::-webkit-input-placeholder { color:#333; } 137 | ::-moz-placeholder { color:#333; } /* firefox 19+ */ 138 | :-ms-input-placeholder { color:#333; } /* ie */ 139 | input:-moz-placeholder { color:#333; } 140 | 141 | 142 | 143 | /* block layer */ 144 | 145 | .block_layer 146 | { 147 | position: absolute; 148 | left :0 ; 149 | top :0; 150 | bottom: 0; 151 | right: 0; 152 | display: none; 153 | z-index:1000; 154 | background-image: url("theme/parchmentbg.png"); 155 | background-repeat: repeat; 156 | } 157 | 158 | 159 | 160 | .block_layer .block_graphics { 161 | position: absolute; 162 | width: 100%; 163 | height:50%; 164 | top: 0; 165 | display: block; 166 | box-sizing: border-box; 167 | } 168 | 169 | .block_picture 170 | { 171 | display: block; 172 | margin-left: auto; 173 | margin-right: auto; 174 | } 175 | 176 | .block_layer .block_text { 177 | position: absolute; 178 | top: 52%; 179 | bottom:0; 180 | width: 100%; 181 | text-align: center; 182 | box-sizing: border-box; 183 | display: block; 184 | padding: 10px; 185 | } 186 | 187 | /* transcript layer */ 188 | 189 | .transcript_layer { 190 | position: absolute; 191 | left :0 ; 192 | top :0; 193 | bottom: 0; 194 | right: 0; 195 | display: none; 196 | z-index:1001; 197 | overflow:scroll; 198 | background-image: url("theme/parchmentbg.png"); 199 | background-repeat: repeat; 200 | 201 | } 202 | 203 | #transcript_area { 204 | height:100%; 205 | width:100%; 206 | overflow:scroll; 207 | box-sizing: border-box; 208 | padding: 10px; 209 | } 210 | 211 | .textpic { 212 | float:left 213 | margin: 25px; 214 | } 215 | 216 | 217 | .anykey_layer { 218 | position:absolute; 219 | left: 0; 220 | top:0; 221 | bottom:0; 222 | right:0; 223 | background-color: transparent; 224 | display: none; 225 | z-index:2000; 226 | } 227 | 228 | @media (max-width: 1024px) { 229 | 230 | body { 231 | font-size: 300%; 232 | } 233 | 234 | .graphics { 235 | position: relative; 236 | } 237 | .text { 238 | position: relative; 239 | top: auto; 240 | bottom: auto; 241 | height: auto; 242 | } 243 | 244 | .input { 245 | position: relative; 246 | top: auto; 247 | bottom: auto; 248 | } 249 | 250 | 251 | .half_text 252 | { 253 | top: auto; 254 | bottom: auto; 255 | height: auto; 256 | } 257 | 258 | 259 | .hidden 260 | { 261 | height: 0%; 262 | } 263 | 264 | 265 | .all_text 266 | { 267 | top: auto; 268 | bottom: auto; 269 | height: auto; 270 | 271 | } 272 | 273 | .wrapper { 274 | height: auto; 275 | max-height: auto; 276 | overflow: auto; 277 | } 278 | 279 | } -------------------------------------------------------------------------------- /installation_aux_files/themes/papyre/theme/parchmentbg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Utodev/ngPAWS/ab874b5ab49e2ec520b27bf97823ccfa9c907359/installation_aux_files/themes/papyre/theme/parchmentbg.png -------------------------------------------------------------------------------- /installation_aux_files/themes/papyre_sample.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Utodev/ngPAWS/ab874b5ab49e2ec520b27bf97823ccfa9c907359/installation_aux_files/themes/papyre_sample.png -------------------------------------------------------------------------------- /installation_aux_files/themes/papyre_slim/css.css: -------------------------------------------------------------------------------- 1 | /* papyre theme */ 2 | 3 | 4 | /* global */ 5 | 6 | body { 7 | font-family: Verdana, Arial, Helvetica; 8 | -webkit-text-size-adjust: none; 9 | font-size: 130%; 10 | text-shadow: 1px 1px 1px #AAA; 11 | background-color: #555; 12 | 13 | 14 | } 15 | 16 | 17 | a { 18 | color: #900; 19 | text-decoration: none; 20 | 21 | } 22 | 23 | a:visited { 24 | color: #900; 25 | text-decoration: none; 26 | 27 | } 28 | 29 | a:hover { 30 | color: #900; 31 | text-decoration: underline; 32 | 33 | 34 | } 35 | 36 | 37 | 38 | /* standard layer */ 39 | 40 | .wrapper 41 | { 42 | position: absolute; 43 | left :0 ; 44 | top :0; 45 | right:0; 46 | bottom:0; 47 | background-image: url("theme/parchmentbg.png"); 48 | background-repeat: repeat; 49 | max-width: 1024px; 50 | margin-right: auto; 51 | margin-left: auto; 52 | border: 6px solid #222; 53 | border-radius: 10px; 54 | 55 | 56 | } 57 | 58 | 59 | .graphics { 60 | position: absolute; 61 | height: 50%; 62 | top: 0; 63 | margin-left: auto; 64 | margin-right: auto; 65 | width: 100%; 66 | padding:10px; 67 | box-sizing: border-box; 68 | 69 | } 70 | 71 | .text { 72 | position: absolute; 73 | top: 52%; 74 | bottom:7%; 75 | overflow: hidden; 76 | width: 100%; 77 | box-sizing: border-box; 78 | padding: 10px 20px 10px 20px; 79 | } 80 | 81 | .input { 82 | position: absolute; 83 | height: 5%; 84 | bottom:0; 85 | box-sizing: border-box; 86 | width: 100%; 87 | padding: 0 10px 0 10px; 88 | } 89 | 90 | .prompt { 91 | border: none; 92 | margin: 5px 0 5px 0; 93 | outline: none; 94 | width: 100%; 95 | font-family: Georgia, Palatino, "Times New Roman", Times, serif; 96 | -webkit-text-size-adjust: none; 97 | font-size: 105%; 98 | background-color: transparent;; 99 | } 100 | 101 | 102 | .location_picture 103 | { 104 | display: block; 105 | margin-left: auto; 106 | margin-right: auto; 107 | border-radius: 10px; 108 | max-width: 100%; 109 | max-height: 100%; 110 | 111 | } 112 | 113 | 114 | .half_text 115 | { 116 | top: 52%; 117 | bottom:7%; 118 | } 119 | 120 | .half_graphics 121 | { 122 | height: 50%; 123 | top: 0; 124 | } 125 | 126 | .hidden 127 | { 128 | height: 0%; 129 | } 130 | 131 | .feedback { 132 | color: #900; 133 | text-shadow: 1px 1px 1px #000; 134 | } 135 | 136 | .all_text 137 | { 138 | top: 0; 139 | bottom: 7%; 140 | } 141 | 142 | /* input placeholder */ 143 | 144 | ::-webkit-input-placeholder { color:#333; } 145 | ::-moz-placeholder { color:#333; } /* firefox 19+ */ 146 | :-ms-input-placeholder { color:#333; } /* ie */ 147 | input:-moz-placeholder { color:#333; } 148 | 149 | 150 | 151 | /* block layer */ 152 | 153 | .block_layer 154 | { 155 | position: absolute; 156 | left :0 ; 157 | top :0; 158 | bottom: 0; 159 | right: 0; 160 | display: none; 161 | z-index:1000; 162 | background-image: url("theme/parchmentbg.png"); 163 | background-repeat: repeat; 164 | } 165 | 166 | 167 | 168 | .block_layer .block_graphics { 169 | position: absolute; 170 | width: 100%; 171 | height:50%; 172 | top: 0; 173 | display: block; 174 | box-sizing: border-box; 175 | } 176 | 177 | .block_picture 178 | { 179 | display: block; 180 | margin-left: auto; 181 | margin-right: auto; 182 | } 183 | 184 | .block_layer .block_text { 185 | position: absolute; 186 | top: 52%; 187 | bottom:0; 188 | width: 100%; 189 | text-align: center; 190 | box-sizing: border-box; 191 | display: block; 192 | padding: 10px; 193 | } 194 | 195 | /* transcript layer */ 196 | 197 | .transcript_layer { 198 | position: absolute; 199 | left :0 ; 200 | top :0; 201 | bottom: 0; 202 | right: 0; 203 | display: none; 204 | z-index:1001; 205 | overflow:scroll; 206 | background-image: url("theme/parchmentbg.png"); 207 | background-repeat: repeat; 208 | 209 | } 210 | 211 | #transcript_area { 212 | height:100%; 213 | width:100%; 214 | overflow:scroll; 215 | box-sizing: border-box; 216 | padding: 10px; 217 | } 218 | 219 | .textpic { 220 | float:left 221 | margin: 25px; 222 | } 223 | 224 | .anykey_layer { 225 | position:absolute; 226 | left: 0; 227 | top:0; 228 | bottom:0; 229 | right:0; 230 | background-color: transparent; 231 | display: none; 232 | z-index:2000; 233 | } 234 | 235 | @media (max-width: 1024px) { 236 | 237 | body { 238 | font-size: 300%; 239 | } 240 | 241 | .graphics { 242 | position: relative; 243 | } 244 | .text { 245 | position: relative; 246 | top: auto; 247 | bottom: auto; 248 | height: auto; 249 | } 250 | 251 | .input { 252 | position: relative; 253 | top: auto; 254 | bottom: auto; 255 | } 256 | 257 | 258 | .half_text 259 | { 260 | top: auto; 261 | bottom: auto; 262 | height: auto; 263 | } 264 | 265 | 266 | .hidden 267 | { 268 | height: 0%; 269 | } 270 | 271 | 272 | .all_text 273 | { 274 | top: auto; 275 | bottom: auto; 276 | height: auto; 277 | 278 | } 279 | 280 | .wrapper { 281 | height: auto; 282 | max-height: auto; 283 | overflow: auto; 284 | } 285 | 286 | } -------------------------------------------------------------------------------- /installation_aux_files/themes/papyre_slim/theme/parchmentbg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Utodev/ngPAWS/ab874b5ab49e2ec520b27bf97823ccfa9c907359/installation_aux_files/themes/papyre_slim/theme/parchmentbg.png -------------------------------------------------------------------------------- /installation_aux_files/themes/papyre_slim_sample.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Utodev/ngPAWS/ab874b5ab49e2ec520b27bf97823ccfa9c907359/installation_aux_files/themes/papyre_slim_sample.png -------------------------------------------------------------------------------- /installation_aux_files/themes/whitepaper/css.css: -------------------------------------------------------------------------------- 1 | /* whitepaper theme */ 2 | 3 | 4 | /* global */ 5 | 6 | body { 7 | font-family: Georgia, Palatino, "Times New Roman", Times, serif; 8 | -webkit-text-size-adjust: none; 9 | font-size: 110%; 10 | } 11 | 12 | 13 | a { 14 | color: #333; 15 | text-decoration: none; 16 | } 17 | 18 | a:visited { 19 | color: #333; 20 | text-decoration: none; 21 | } 22 | 23 | a:hover { 24 | color: #300; 25 | text-decoration: underline; 26 | } 27 | 28 | 29 | 30 | /* standard layer */ 31 | 32 | .wrapper 33 | { 34 | position: absolute; 35 | left :0 ; 36 | top :0; 37 | right:0; 38 | bottom:0; 39 | } 40 | 41 | 42 | .graphics { 43 | position: absolute; 44 | height: 50%; 45 | top: 0; 46 | margin-left: auto; 47 | margin-right: auto; 48 | width: 100%; 49 | padding:10px; 50 | box-sizing: border-box; 51 | 52 | } 53 | 54 | .text { 55 | position: absolute; 56 | top: 52%; 57 | bottom:7%; 58 | overflow: hidden; 59 | width: 100%; 60 | box-sizing: border-box; 61 | padding: 10px 20px 10px 20px; 62 | } 63 | 64 | .input { 65 | position: absolute; 66 | height: 5%; 67 | bottom:0; 68 | box-sizing: border-box; 69 | width: 100%; 70 | padding: 0 10px 0 10px; 71 | } 72 | 73 | .prompt { 74 | border: none; 75 | margin: 5px 0 5px 0; 76 | outline: none; 77 | width: 100%; 78 | font-family: Georgia, Palatino, "Times New Roman", Times, serif; 79 | -webkit-text-size-adjust: none; 80 | font-size: 105%; 81 | } 82 | 83 | 84 | .location_picture 85 | { 86 | display: block; 87 | margin-left: auto; 88 | margin-right: auto; 89 | border-radius: 10px; 90 | max-width: 100%; 91 | max-height: 100%; 92 | 93 | } 94 | 95 | 96 | .half_text 97 | { 98 | top: 52%; 99 | bottom:7%; 100 | } 101 | 102 | .half_graphics 103 | { 104 | height: 50%; 105 | top: 0; 106 | } 107 | 108 | .hidden 109 | { 110 | height: 0%; 111 | } 112 | 113 | .feedback { 114 | color: #090; 115 | text-shadow: 1px 1px 1px #000; 116 | } 117 | 118 | .all_text 119 | { 120 | top: 0; 121 | bottom: 7%; 122 | } 123 | 124 | /* input placeholder */ 125 | 126 | ::-webkit-input-placeholder { color:#777; } 127 | ::-moz-placeholder { color:#777; } /* firefox 19+ */ 128 | :-ms-input-placeholder { color:#777; } /* ie */ 129 | input:-moz-placeholder { color:#777; } 130 | 131 | 132 | 133 | /* block layer */ 134 | 135 | .block_layer 136 | { 137 | position: absolute; 138 | left :0 ; 139 | top :0; 140 | bottom: 0; 141 | right: 0; 142 | display: none; 143 | z-index:1000; 144 | background-color: white; 145 | } 146 | 147 | 148 | 149 | .block_layer .block_graphics { 150 | position: absolute; 151 | width: 100%; 152 | height:50%; 153 | top: 0; 154 | display: block; 155 | background-color: white; 156 | box-sizing: border-box; 157 | } 158 | 159 | .block_picture 160 | { 161 | display: block; 162 | margin-left: auto; 163 | margin-right: auto; 164 | } 165 | 166 | .block_layer .block_text { 167 | position: absolute; 168 | top: 52%; 169 | bottom:0; 170 | width: 100%; 171 | text-align: center; 172 | box-sizing: border-box; 173 | display: block; 174 | padding: 10px; 175 | background-color: white; 176 | } 177 | 178 | /* transcript layer */ 179 | 180 | .transcript_layer { 181 | position: absolute; 182 | left :0 ; 183 | top :0; 184 | bottom: 0; 185 | right: 0; 186 | display: none; 187 | z-index:1001; 188 | overflow:scroll; 189 | background-color: white; 190 | 191 | } 192 | 193 | #transcript_area { 194 | height:100%; 195 | width:100%; 196 | overflow:scroll; 197 | box-sizing: border-box; 198 | padding: 10px; 199 | } 200 | 201 | .textpic { 202 | float:left 203 | margin: 25px; 204 | } 205 | 206 | .anykey_layer { 207 | position:absolute; 208 | left: 0; 209 | top:0; 210 | bottom:0; 211 | right:0; 212 | background-color: transparent; 213 | display: none; 214 | z-index:2000; 215 | } 216 | 217 | @media (max-width: 1024px) { 218 | 219 | body { 220 | font-size: 300%; 221 | } 222 | 223 | .graphics { 224 | position: relative; 225 | } 226 | .text { 227 | position: relative; 228 | top: auto; 229 | bottom: auto; 230 | height: auto; 231 | } 232 | 233 | .input { 234 | position: relative; 235 | top: auto; 236 | bottom: auto; 237 | } 238 | 239 | 240 | .half_text 241 | { 242 | top: auto; 243 | bottom: auto; 244 | height: auto; 245 | } 246 | 247 | 248 | .hidden 249 | { 250 | height: 0%; 251 | } 252 | 253 | 254 | .all_text 255 | { 256 | top: auto; 257 | bottom: auto; 258 | height: auto; 259 | 260 | } 261 | 262 | .wrapper { 263 | height: auto; 264 | max-height: auto; 265 | overflow: auto; 266 | } 267 | 268 | } -------------------------------------------------------------------------------- /installation_aux_files/themes/whitepaper_sample.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Utodev/ngPAWS/ab874b5ab49e2ec520b27bf97823ccfa9c907359/installation_aux_files/themes/whitepaper_sample.png -------------------------------------------------------------------------------- /installation_aux_files/themes/whitepaper_slim/css.css: -------------------------------------------------------------------------------- 1 | /* whitepaper theme */ 2 | 3 | 4 | /* global */ 5 | 6 | body { 7 | font-family: Georgia, Palatino, "Times New Roman", Times, serif; 8 | -webkit-text-size-adjust: none; 9 | font-size: 110%; 10 | background-color: #555; 11 | } 12 | 13 | 14 | a { 15 | color: #333; 16 | text-decoration: none; 17 | } 18 | 19 | a:visited { 20 | color: #333; 21 | text-decoration: none; 22 | } 23 | 24 | a:hover { 25 | color: #300; 26 | text-decoration: underline; 27 | } 28 | 29 | 30 | 31 | /* standard layer */ 32 | 33 | .wrapper 34 | { 35 | position: absolute; 36 | left :0 ; 37 | top :0; 38 | right:0; 39 | bottom:0; 40 | max-width: 1024px; 41 | margin-left: auto; 42 | margin-right: auto; 43 | background-color: white; 44 | border-right: 8px solid black; 45 | border-bottom: 8px solid black; 46 | } 47 | 48 | 49 | .graphics { 50 | position: absolute; 51 | height: 50%; 52 | top: 0; 53 | margin-left: auto; 54 | margin-right: auto; 55 | width: 100%; 56 | padding:10px; 57 | box-sizing: border-box; 58 | 59 | } 60 | 61 | .text { 62 | position: absolute; 63 | top: 52%; 64 | bottom:7%; 65 | overflow: hidden; 66 | width: 100%; 67 | box-sizing: border-box; 68 | padding: 10px 20px 10px 20px 69 | } 70 | 71 | .input { 72 | position: absolute; 73 | height: 5%; 74 | bottom:0; 75 | box-sizing: border-box; 76 | width: 100%; 77 | padding: 0 10px 0 10px; 78 | } 79 | 80 | .prompt { 81 | border: none; 82 | margin: 5px 0 5px 0; 83 | outline: none; 84 | width: 100%; 85 | font-family: Georgia, Palatino, "Times New Roman", Times, serif; 86 | -webkit-text-size-adjust: none; 87 | font-size: 105%; 88 | } 89 | 90 | 91 | .location_picture 92 | { 93 | display: block; 94 | margin-left: auto; 95 | margin-right: auto; 96 | border-radius: 10px; 97 | max-width: 100%; 98 | max-height: 100%; 99 | 100 | } 101 | 102 | 103 | .half_text 104 | { 105 | top: 52%; 106 | bottom:7%; 107 | } 108 | 109 | .half_graphics 110 | { 111 | height: 50%; 112 | top: 0; 113 | } 114 | 115 | .hidden 116 | { 117 | height: 0%; 118 | } 119 | 120 | .feedback { 121 | color: #090; 122 | text-shadow: 1px 1px 1px #000; 123 | } 124 | 125 | .all_text 126 | { 127 | top: 0; 128 | bottom: 7%; 129 | } 130 | 131 | /* input placeholder */ 132 | 133 | ::-webkit-input-placeholder { color:#777; } 134 | ::-moz-placeholder { color:#777; } /* firefox 19+ */ 135 | :-ms-input-placeholder { color:#777; } /* ie */ 136 | input:-moz-placeholder { color:#777; } 137 | 138 | 139 | 140 | /* block layer */ 141 | 142 | .block_layer 143 | { 144 | position: absolute; 145 | left :0 ; 146 | top :0; 147 | bottom: 0; 148 | right: 0; 149 | display: none; 150 | z-index:1000; 151 | background-color: white; 152 | } 153 | 154 | 155 | 156 | .block_layer .block_graphics { 157 | position: absolute; 158 | width: 100%; 159 | height:50%; 160 | top: 0; 161 | display: block; 162 | background-color: white; 163 | box-sizing: border-box; 164 | } 165 | 166 | .block_picture 167 | { 168 | display: block; 169 | margin-left: auto; 170 | margin-right: auto; 171 | } 172 | 173 | .block_layer .block_text { 174 | position: absolute; 175 | top: 52%; 176 | bottom:0; 177 | width: 100%; 178 | text-align: center; 179 | box-sizing: border-box; 180 | display: block; 181 | padding: 10px; 182 | background-color: white; 183 | } 184 | 185 | /* transcript layer */ 186 | 187 | .transcript_layer { 188 | position: absolute; 189 | left :0 ; 190 | top :0; 191 | bottom: 0; 192 | right: 0; 193 | display: none; 194 | z-index:1001; 195 | overflow:scroll; 196 | background-color: white; 197 | 198 | } 199 | 200 | #transcript_area { 201 | height:100%; 202 | width:100%; 203 | overflow:scroll; 204 | box-sizing: border-box; 205 | padding: 10px; 206 | } 207 | 208 | .textpic { 209 | float:left 210 | margin: 25px; 211 | } 212 | 213 | .anykey_layer { 214 | position:absolute; 215 | left: 0; 216 | top:0; 217 | bottom:0; 218 | right:0; 219 | background-color: transparent; 220 | display: none; 221 | z-index:2000; 222 | } 223 | 224 | @media (max-width: 1024px) { 225 | 226 | body { 227 | font-size: 300%; 228 | } 229 | 230 | .graphics { 231 | position: relative; 232 | } 233 | .text { 234 | position: relative; 235 | top: auto; 236 | bottom: auto; 237 | height: auto; 238 | } 239 | 240 | .input { 241 | position: relative; 242 | top: auto; 243 | bottom: auto; 244 | } 245 | 246 | 247 | .half_text 248 | { 249 | top: auto; 250 | bottom: auto; 251 | height: auto; 252 | } 253 | 254 | 255 | .hidden 256 | { 257 | height: 0%; 258 | } 259 | 260 | 261 | .all_text 262 | { 263 | top: auto; 264 | bottom: auto; 265 | height: auto; 266 | 267 | } 268 | 269 | .wrapper { 270 | height: auto; 271 | max-height: auto; 272 | overflow: auto; 273 | } 274 | 275 | } -------------------------------------------------------------------------------- /installation_aux_files/themes/whitepaper_slim_sample.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Utodev/ngPAWS/ab874b5ab49e2ec520b27bf97823ccfa9c907359/installation_aux_files/themes/whitepaper_slim_sample.png -------------------------------------------------------------------------------- /jsl/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2015 Uto Dev 2 | 3 | Note: this license applies only to contents of jsl folder, that is, ngPAWS libraries. 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | 13 | The above copyright notice and this permission notice shall be included in 14 | all copies or substantial portions of the Software. 15 | 16 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | THE SOFTWARE. 23 | 24 | -------------------------------------------------------------------------------- /jsl/ask.jsp: -------------------------------------------------------------------------------- 1 | //CND ASK W 14 14 1 0 2 | 3 | // Global vars for ASK 4 | 5 | 6 | var inAsk = false; 7 | var ask_responses = null; 8 | var ask_flagno = null; 9 | 10 | 11 | 12 | function ACCask(writeno, writenoOptions, flagno) 13 | { 14 | inAsk = true; 15 | writeWriteMessage(writeno); 16 | ask_responses = getWriteMessageText(writenoOptions); 17 | ask_flagno = flagno; 18 | } 19 | 20 | 21 | 22 | // hook replacement 23 | var old_ask_h_keydown = h_keydown; 24 | h_keydown = function (event) 25 | { 26 | if (inAsk) 27 | { 28 | var keyCodeAsChar = String.fromCharCode(event.keyCode).toLowerCase(); 29 | if (ask_responses.indexOf(keyCodeAsChar)!= -1) 30 | { 31 | setFlag(ask_flagno, ask_responses.indexOf(keyCodeAsChar)); 32 | inAsk = false; 33 | event.preventDefault(); 34 | $('.input').show(); 35 | $('.input').focus(); 36 | hideBlock(); 37 | waitKeyCallback(); 38 | }; 39 | return false; // if we are in ASK condact, no keypress should be considered other than ASK response 40 | } else return old_ask_h_keydown(event); 41 | } 42 | -------------------------------------------------------------------------------- /jsl/atge.jsp: -------------------------------------------------------------------------------- 1 | //CND ATGE C 8 0 0 0 2 | 3 | function CNDatge(locno) 4 | { 5 | return (getFlag(FLAG_LOCATION) >= locno); 6 | } 7 | -------------------------------------------------------------------------------- /jsl/atle.jsp: -------------------------------------------------------------------------------- 1 | //CND ATLE C 8 0 0 0 2 | 3 | function CNDatle(locno) 4 | { 5 | return (getFlag(FLAG_LOCATION) <= locno); 6 | } 7 | -------------------------------------------------------------------------------- /jsl/bclear.jsp: -------------------------------------------------------------------------------- 1 | //CND BCLEAR A 1 2 0 0 2 | 3 | function ACCbclear(flagno, bitno) 4 | { 5 | if (bitno>=32) return; 6 | setFlag(flagno, bitclear(getFlag(flagno), bitno)); 7 | } -------------------------------------------------------------------------------- /jsl/block.jsp: -------------------------------------------------------------------------------- 1 | //CND BLOCK A 14 2 2 0 2 | 3 | function ACCblock(writeno, picno, procno) 4 | { 5 | inBlock = true; 6 | disableInterrupt(); 7 | $('.block_layer').hide(); 8 | var text = getWriteMessageText(writeno); 9 | $('.block_text').html(text); 10 | 11 | var filename = getResourceById(RESOURCE_TYPE_IMG, picno); 12 | if (filename) 13 | { 14 | var imgsrc = ''; 15 | $('.block_graphics').html(imgsrc); 16 | } 17 | if (procno == 0 ) unblock_process = null; else unblock_process = procno; 18 | $('.block_layer').show(); 19 | 20 | } 21 | -------------------------------------------------------------------------------- /jsl/bneg.jsp: -------------------------------------------------------------------------------- 1 | //CND BNEG A 1 2 0 0 2 | 3 | function ACCbneg(flagno, bitno) 4 | { 5 | if (bitno>=32) return; 6 | setFlag(flagno, bitneg(getFlag(flagno),bitno)); 7 | } -------------------------------------------------------------------------------- /jsl/bnotzero.jsp: -------------------------------------------------------------------------------- 1 | //CND BNOTZERO C 1 2 0 0 2 | 3 | function CNDbnotzero(flagno, bitno) 4 | { 5 | if (bitno>=32) return false; 6 | return (bittest(getFlag(flagno), bitno)); 7 | } 8 | -------------------------------------------------------------------------------- /jsl/break.jsp: -------------------------------------------------------------------------------- 1 | //CND BREAK A 0 0 0 0 2 | 3 | function ACCbreak() 4 | { 5 | doall_flag = false; 6 | entry_for_doall = ''; 7 | } -------------------------------------------------------------------------------- /jsl/bset.jsp: -------------------------------------------------------------------------------- 1 | //CND BSET A 1 2 0 0 2 | 3 | function ACCbset(flagno, bitno) 4 | { 5 | if (bitno>=32) return; 6 | setFlag(flagno, bitset(getFlag(flagno),bitno)); 7 | } -------------------------------------------------------------------------------- /jsl/bzero.jsp: -------------------------------------------------------------------------------- 1 | //CND BZERO C 1 2 0 0 2 | 3 | function CNDbzero(flagno, bitno) 4 | { 5 | if (bitno>=32) return false; 6 | return (!bittest(getFlag(flagno), bitno)); 7 | } -------------------------------------------------------------------------------- /jsl/clearexit.jsp: -------------------------------------------------------------------------------- 1 | //CND CLEAREXIT A 2 0 0 0 2 | 3 | function ACCclearexit(wordno) 4 | { 5 | if ((wordno >= NUM_CONNECTION_VERBS) || (wordno< 0 )) return; 6 | setConnection(loc_here(),wordno, -1); 7 | } -------------------------------------------------------------------------------- /jsl/command.jsp: -------------------------------------------------------------------------------- 1 | //CND COMMAND A 2 0 0 0 2 | 3 | function ACCcommand(value) 4 | { 5 | if (value) {$('.input').show();$('.input').focus();} else $('.input').hide(); 6 | } -------------------------------------------------------------------------------- /jsl/div.jsp: -------------------------------------------------------------------------------- 1 | //CND DIV A 1 2 0 0 2 | 3 | function ACCdiv(flagno, valor) 4 | { 5 | if (valor == 0) return; 6 | setFlag(flagno, Math.floor(getFlag(flagno) / valor)); 7 | } -------------------------------------------------------------------------------- /jsl/exits.jsp: -------------------------------------------------------------------------------- 1 | //CND EXITS A 8 5 0 0 2 | 3 | function ACCexits(locno,mesno) 4 | { 5 | writeText(getExitsText(locno,mesno)); 6 | } 7 | -------------------------------------------------------------------------------- /jsl/fadein.jsp: -------------------------------------------------------------------------------- 1 | //CND FADEIN A 2 2 2 0 2 | 3 | function ACCfadein(sfxno, channelno, times) 4 | { 5 | if ((channelno <1) || (channelno >MAX_CHANNELS)) return; //SFX channels from 1 to MAX_CHANNELS, channel 0 is for location music and can't be used here 6 | sfxplay(sfxno, channelno, times, 'fadein'); 7 | } -------------------------------------------------------------------------------- /jsl/fadeout.jsp: -------------------------------------------------------------------------------- 1 | //CND FADEOUT A 2 2 0 0 2 | 3 | function ACCfadeout(channelno, value) 4 | { 5 | if ((channelno <1) || (channelno >MAX_CHANNELS)) return; //SFX channels from 1 to MAX_CHANNELS, channel 0 is for location music and can't be used here 6 | sfxfadeout(channelno, value); 7 | } -------------------------------------------------------------------------------- /jsl/ge.jsp: -------------------------------------------------------------------------------- 1 | //CND GE C 1 2 0 0 2 | 3 | function CNDge(flagno, valor) 4 | { 5 | return (getFlag(flagno)>=valor); 6 | } -------------------------------------------------------------------------------- /jsl/getexit.jsp: -------------------------------------------------------------------------------- 1 | //CND GETEXIT A 2 2 0 0 2 | 3 | function ACCgetexit(value,flagno) 4 | { 5 | if (value >= NUM_CONNECTION_VERBS) 6 | { 7 | setFlag(flagno, NO_EXIT); 8 | return; 9 | } 10 | var locno = getConnection(loc_here(),value); 11 | if (locno == -1) 12 | { 13 | setFlag(flagno, NO_EXIT); 14 | return; 15 | } 16 | setFlag(flagno,locno); 17 | } -------------------------------------------------------------------------------- /jsl/help.jsp: -------------------------------------------------------------------------------- 1 | //CND HELP A 0 0 0 0 2 | 3 | function ACChelp() 4 | { 5 | if (getLang()=='EN') EnglishHelp(); else SpanishHelp(); 6 | } 7 | 8 | function EnglishHelp() 9 | { 10 | writeText('HOW DO I SEND COMMANDS TO THE PC?'); 11 | writeText(STR_NEWLINE); 12 | writeText('Use simple orders: OPEN DOOR, TAKE KEY, GO UP, etc.'); 13 | writeText(STR_NEWLINE + STR_NEWLINE); 14 | writeText('HOW CAN I MOVE IN THE MAP?'); 15 | writeText(STR_NEWLINE); 16 | writeText('Usually you will have to use compass directions as north (shortcut: "N"), south (S), east (E), west (W) or other directions (up, down, enter, leave, etc.). Some games allow complex order like "go to well". Usually you would be able to know avaliable exits by location description, some games also provide the "EXITS" command.'); 17 | writeText(STR_NEWLINE + STR_NEWLINE); 18 | writeText('HOW CAN I CHECK MY INVENTORY?'); 19 | writeText(STR_NEWLINE); 20 | writeText('type INVENTORY (shortcut "I")'); 21 | writeText(STR_NEWLINE + STR_NEWLINE); 22 | writeText('HOW CAN I USE THE OBJECTS?'); 23 | writeText(STR_NEWLINE); 24 | writeText('Use the proper verb, that is, instead of USE KEY type OPEN.'); 25 | writeText(STR_NEWLINE + STR_NEWLINE); 26 | writeText('HOW CAN I CHECK SOMETHING CLOSELY?'); 27 | writeText(STR_NEWLINE); 28 | writeText('Use "examine" verb: EXAMINE DISH. (shortcut: EX)'); 29 | writeText(STR_NEWLINE + STR_NEWLINE); 30 | writeText('HOW CAN I SEE AGAIN THE CURRENT LOCATION DSCRIPTION?'); 31 | writeText(STR_NEWLINE); 32 | writeText('Type LOOK (shortcut "M").'); 33 | writeText(STR_NEWLINE + STR_NEWLINE); 34 | writeText('HOW CAN I TALK TO OTHER CHARACTERS?'); 35 | writeText(STR_NEWLINE); 36 | writeText('Most common methods are [CHARACTER, SENTENCE] or [SAY CHARACTER "SENTENCE"]. For instance: [JOHN, HELLO] o [SAY JOHN "HELLO"]. Some games also allow just [TALK TO JOHN]. '); 37 | writeText(STR_NEWLINE + STR_NEWLINE); 38 | writeText('HOW CAN I PUT SOMETHING IN A CONTAINER, HOW CAN I TAKE SOMETHING OUT?'); 39 | writeText(STR_NEWLINE); 40 | writeText('PUT KEY IN BOX. TAKE KEY OUT OF BOX. INSERT KEY IN BOX. EXTRACT KEY FROM BOX.'); 41 | writeText(STR_NEWLINE + STR_NEWLINE); 42 | writeText('HOW CAN I PUT SOMETHING ON SOMETHING ELSE?'); 43 | writeText(STR_NEWLINE); 44 | writeText('PUT KEY ON TABLE. TAKE KEY FROM TABLE'); 45 | writeText(STR_NEWLINE + STR_NEWLINE); 46 | writeText('HOW CAN I SAVE/RESTORE MY GAME?'); 47 | writeText(STR_NEWLINE); 48 | writeText('Use SAVE/LOAD commands.'); 49 | writeText(STR_NEWLINE + STR_NEWLINE); 50 | 51 | } 52 | 53 | function SpanishHelp() 54 | { 55 | writeText('¿CÓMO DOY ORDENES AL PERSONAJE?'); 56 | writeText(STR_NEWLINE); 57 | writeText('Utiliza órdenes en imperativo o infinitivo: ABRE PUERTA, COGER LLAVE, SUBIR, etc.'); 58 | writeText(STR_NEWLINE + STR_NEWLINE); 59 | writeText('¿CÓMO ME MUEVO POR EL JUEGO?'); 60 | writeText(STR_NEWLINE); 61 | writeText('Por regla general, mediante los puntos cardinales como norte (abreviado "N"), sur (S), este (E), oeste (O) o direcciones espaciales (arriba, abajo, bajar, subir, entrar, salir, etc.). Algunas aventuras permiten también cosas como "ir a pozo". Normalmente podrás saber en qué dirección puedes ir por la descripción del sitio, aunque algunos juegos facilitan el comando "SALIDAS" que te dirá exactamente cuáles hay.'); 62 | writeText(STR_NEWLINE + STR_NEWLINE); 63 | writeText('¿CÓMO PUEDO SABER QUE OBJETOS LLEVO?'); 64 | writeText(STR_NEWLINE); 65 | writeText('Teclea INVENTARIO (abreviado "I")'); 66 | writeText(STR_NEWLINE + STR_NEWLINE); 67 | writeText('¿CÓMO USO LOS OBJETOS?'); 68 | writeText(STR_NEWLINE); 69 | writeText('Utiliza el verbo correcto, en lugar de USAR ESCOBA escribe BARRER.'); 70 | writeText(STR_NEWLINE + STR_NEWLINE); 71 | writeText('¿CÓMO PUEDO MIRAR DE CERCA UN OBJETO U OBSERVARLO MÁS DETALLADAMENTE?'); 72 | writeText(STR_NEWLINE); 73 | writeText('Con el verbo examinar: EXAMINAR PLATO. Generalmente se puede usar la abreviatura "EX": EX PLATO.'); 74 | writeText(STR_NEWLINE + STR_NEWLINE); 75 | writeText('¿CÓMO PUEDO VER DE NUEVO LA DESCRIPCIÓN DEL SITIO DONDE ESTOY?'); 76 | writeText(STR_NEWLINE); 77 | writeText('Escribe MIRAR (abreviado "M").'); 78 | writeText(STR_NEWLINE + STR_NEWLINE); 79 | writeText('¿CÓMO HABLO CON LOS PERSONAJES?'); 80 | writeText(STR_NEWLINE); 81 | writeText('Los modos más comunes son [PERSONAJE, FRASE] o [DECIR A PERSONAJE "FRASE"]. Por ejemplo: [LUIS, HOLA] o [DECIR A LUIS "HOLA"]. En algunas aventuras también se puede utilizar el formato [HABLAR A LUIS]. '); 82 | writeText(STR_NEWLINE + STR_NEWLINE); 83 | writeText('¿CÓMO METO ALGO EN UN CONTENEDOR? ¿CÓMO LO SACO?'); 84 | writeText(STR_NEWLINE); 85 | writeText('METER LLAVE EN CAJA. SACAR LLAVE DE CAJA'); 86 | writeText(STR_NEWLINE + STR_NEWLINE); 87 | writeText('¿CÓMO PONGO ALGO SOBRE ALGO? ¿CÓMO LO QUITO?'); 88 | writeText(STR_NEWLINE); 89 | writeText('PONER LLAVE EN MESA. COGER LLAVE DE MESA'); 90 | writeText(STR_NEWLINE + STR_NEWLINE); 91 | writeText('¿CÓMO GRABO Y CARGO LA PARTIDA?'); 92 | writeText(STR_NEWLINE); 93 | writeText('Usa las órdenes SAVE y LOAD, o GRABAR y CARGAR.'); 94 | writeText(STR_NEWLINE + STR_NEWLINE); 95 | } 96 | -------------------------------------------------------------------------------- /jsl/hook.jsp: -------------------------------------------------------------------------------- 1 | //CND HOOK A 14 0 0 5 2 | 3 | function ACChook(writeno) 4 | { 5 | h_code(writemessages[writeno]); 6 | } -------------------------------------------------------------------------------- /jsl/hooks.js: -------------------------------------------------------------------------------- 1 | // This file is (C) Carlos Sanchez 2014, released under the MIT license 2 | 3 | // This function is called first by the start() function that runs when the game starts for the first time 4 | var h_init = function() 5 | { 6 | } 7 | 8 | 9 | // This function is called last by the start() function that runs when the game starts for the first time 10 | var h_post = function() 11 | { 12 | } 13 | 14 | // This function is called when the engine tries to write any text 15 | var h_writeText = function (text) 16 | { 17 | return text; 18 | } 19 | 20 | //This function is called every time the user types any order 21 | var h_playerOrder = function(player_order) 22 | { 23 | return player_order; 24 | } 25 | 26 | // This function is called every time a location is described, just after the location text is written 27 | var h_description_init = function () 28 | { 29 | } 30 | 31 | // This function is called every time a location is described, just after the process 1 is executed 32 | var h_description_post = function() 33 | { 34 | } 35 | 36 | 37 | // this function is called when the savegame object has been created, in order to be able to add more custom properties 38 | var h_saveGame = function(savegame_object) 39 | { 40 | return savegame_object; 41 | } 42 | 43 | 44 | // this function is called after the restore game function has restored the standard information in savegame, in order to restore any additional data included in a patched (by h_saveGame) savegame. 45 | var h_restoreGame = function(savegame_object) 46 | { 47 | } 48 | 49 | // this funcion is called before writing a message about player order beeing impossible to understand 50 | var h_invalidOrder = function(player_order) 51 | { 52 | } 53 | 54 | // this function is called when a sequence tag is found giving a chance for any hook library to provide a response 55 | // tagparams receives the params inside the tag as an array {XXXX|nn|mm|yy} => ['XXXX', 'nn', 'mm', 'yy'] 56 | var h_sequencetag = function (tagparams) 57 | { 58 | return ''; 59 | } 60 | 61 | // this function is called from certain points in the response or process tables via the HOOK condact. Depending on the string received it can do something or not. 62 | // it's designed to allow direct javascript code to take control in the start database just installing a plugin library (avoiding the wirter need to enter code to activate the library) 63 | var h_code = function(str) 64 | { 65 | return false; 66 | } 67 | 68 | 69 | // this function is called from the keydown evente handler used by block and other functions to emulate a pause or waiting for a keypress. It is designed to allow plugin condacts or 70 | // libraries to attend those key presses and react accordingly. In case a hook function decides that the standard keydown functions should not be processed, the hook function should return false. 71 | // Also, any h_keydown replacement should probably do the same. 72 | var h_keydown = function (event) 73 | { 74 | return true; 75 | } 76 | 77 | 78 | // this function is called every time a process is called, either by the internall loop of by the PROCESS condact, just before running it. 79 | var h_preProcess = function(procno) 80 | { 81 | 82 | } 83 | 84 | // this function is called every time a process is called just after the process exits (no matter which DONE status it has), either by the internall loop of by the PROCESS condact 85 | var h_postProcess= function (procno) 86 | { 87 | 88 | } -------------------------------------------------------------------------------- /jsl/isdoall.jsp: -------------------------------------------------------------------------------- 1 | //CND ISDOALL C 0 0 0 0 2 | 3 | function CNDisdoall() 4 | { 5 | return doall_flag; 6 | } 7 | -------------------------------------------------------------------------------- /jsl/isdone.jsp: -------------------------------------------------------------------------------- 1 | //CND ISDONE C 0 0 0 0 2 | 3 | function CNDisdone() 4 | { 5 | return done_flag; 6 | } 7 | -------------------------------------------------------------------------------- /jsl/ismov.jsp: -------------------------------------------------------------------------------- 1 | //CND ISMOV C 0 0 0 0 2 | 3 | function CNDismov() 4 | { 5 | if ((getFlag(FLAG_VERB)MAX_CHANNELS)) return false; 6 | return !(CNDissound(channelno)); 7 | } -------------------------------------------------------------------------------- /jsl/isresp.jsp: -------------------------------------------------------------------------------- 1 | //CND ISRESP C 0 0 0 0 2 | 3 | function CNDisresp() 4 | { 5 | return in_response; 6 | } 7 | -------------------------------------------------------------------------------- /jsl/issound.jsp: -------------------------------------------------------------------------------- 1 | //CND ISSOUND C 1 0 0 0 2 | 3 | function CNDissound(channelno) 4 | { 5 | if ((channelno <1 ) || (channelno > MAX_CHANNELS)) return false; 6 | return channelActive(channelno); 7 | } -------------------------------------------------------------------------------- /jsl/isvideo.jsp: -------------------------------------------------------------------------------- 1 | //CND ISVIDEO C 0 0 0 0 2 | 3 | function CNDisvideo() 4 | { 5 | if (typeof videoElement == 'undefined') return false; 6 | if (!videoLoopCount) return false; 7 | if (videoElement.paused) return false; 8 | return true; 9 | } 10 | -------------------------------------------------------------------------------- /jsl/le.jsp: -------------------------------------------------------------------------------- 1 | //CND LE C 1 2 0 0 2 | 3 | function CNDle(flagno, valor) 4 | { 5 | return (getFlag(flagno) <= valor); 6 | } -------------------------------------------------------------------------------- /jsl/listcontents.jsp: -------------------------------------------------------------------------------- 1 | //CND LISTCONTENTS A 9 0 0 0 2 | 3 | function ACClistcontents(locno) 4 | { 5 | ACClistat(locno, locno) 6 | } -------------------------------------------------------------------------------- /jsl/log.jsp: -------------------------------------------------------------------------------- 1 | //CND LOG A 14 0 0 0 2 | 3 | function ACClog(writeno) 4 | { 5 | console_log(writemessages[writeno]); 6 | } -------------------------------------------------------------------------------- /jsl/mod.jsp: -------------------------------------------------------------------------------- 1 | //CND MOD A 1 2 0 0 2 | 3 | function ACCmod(flagno, valor) 4 | { 5 | if (valor == 0) return; 6 | setFlag(flagno, Math.floor(getFlag(flagno) % valor)); 7 | } -------------------------------------------------------------------------------- /jsl/mul.jsp: -------------------------------------------------------------------------------- 1 | //CND MUL A 1 2 0 0 2 | 3 | function ACCmul(flagno, valor) 4 | { 5 | if (valor == 0) return; 6 | setFlag(flagno, Math.floor(getFlag(flagno) * valor)); 7 | } -------------------------------------------------------------------------------- /jsl/noresp.jsp: -------------------------------------------------------------------------------- 1 | //CND NORESP A 0 0 0 0 2 | 3 | function ACCnoresp() 4 | { 5 | in_response = false; 6 | } 7 | -------------------------------------------------------------------------------- /jsl/npcat.jsp: -------------------------------------------------------------------------------- 1 | //CND NPCAT A 9 1 0 0 2 | 3 | function ACCnpcat(locno, flagno) 4 | { 5 | setFlag(flagno,getNPCCountAt(locno)); 6 | } 7 | -------------------------------------------------------------------------------- /jsl/objat.jsp: -------------------------------------------------------------------------------- 1 | //CND OBJAT A 9 1 0 0 2 | 3 | function ACCobjat(locno, flagno) 4 | { 5 | setFlag(flagno, getObjectCountAt(locno)); 6 | } -------------------------------------------------------------------------------- /jsl/objfound.jsp: -------------------------------------------------------------------------------- 1 | //CND OBJFOUND C 2 9 0 0 2 | 3 | function CNDobjfound(attrno, locno) 4 | { 5 | 6 | for (var i=0;i 63) return; 6 | if (attrno <= 31) 7 | { 8 | var attrs = getObjectLowAttributes(objno); 9 | attrs = bitneg(attrs, attrno); 10 | setObjectLowAttributes(objno, attrs); 11 | return; 12 | } 13 | var attrs = getObjectHighAttributes(objno); 14 | attrno = attrno - 32; 15 | attrs = bitneg(attrs, attrno); 16 | setObjectHighAttributes(objno, attrs); 17 | } 18 | -------------------------------------------------------------------------------- /jsl/pausevideo.jsp: -------------------------------------------------------------------------------- 1 | //CND PAUSEVIDEO A 0 0 0 0 2 | 3 | 4 | function ACCpausevideo() 5 | { 6 | if (typeof videoElement != 'undefined') 7 | if (!videoElement.ended) 8 | if (!videoElement.paused) 9 | videoElement.pause(); 10 | } 11 | -------------------------------------------------------------------------------- /jsl/pictureat.jsp: -------------------------------------------------------------------------------- 1 | //CND PICTUREAT A 2 2 2 0 2 | 3 | /* 4 | In order to determine the actual size of both background image and pictureat image they should be loaded, thus two chained "onload" are needed. That is, 5 | background image is loaded to determine its size, then pictureat image is loaded to determine its size. Size of currently displayed background image cannot 6 | be used as it may have been already stretched. 7 | */ 8 | 9 | function ACCpictureat(x,y,picno) 10 | { 11 | var filename = getResourceById(RESOURCE_TYPE_IMG, picno); 12 | if (!filename) return; 13 | 14 | // Check location has a picture, otherwise exit 15 | var currentBackgroundScreenImage = $('.location_picture'); 16 | if (!currentBackgroundScreenImage) return; 17 | 18 | // Create a new image with the contents of current background image, to be able to calculate original height of image 19 | var virtualBackgroundImage = new Image(); 20 | // Pass required data as image properties in order to be avaliable at "onload" event 21 | virtualBackgroundImage.bg_data=[]; 22 | virtualBackgroundImage.bg_data.filename = filename; 23 | virtualBackgroundImage.bg_data.x = x; 24 | virtualBackgroundImage.bg_data.y = y; 25 | virtualBackgroundImage.bg_data.picno = picno; 26 | virtualBackgroundImage.bg_data.currentBackgroundScreenImage = currentBackgroundScreenImage; 27 | 28 | 29 | // Event triggered when virtual background image is loaded 30 | virtualBackgroundImage.onload = function() 31 | { 32 | var originalBackgroundImageHeight = this.height; 33 | var scale = this.bg_data.currentBackgroundScreenImage.height() / originalBackgroundImageHeight; 34 | 35 | // Create a new image with the contents of picture to show with PICTUREAT, to be able to calculate height of image 36 | var virtualPictureAtImage = new Image(); 37 | // Also pass data from background image as property so they are avaliable in the onload event 38 | virtualPictureAtImage.pa_data = []; 39 | virtualPictureAtImage.pa_data.x = this.bg_data.x; 40 | virtualPictureAtImage.pa_data.y = this.bg_data.y; 41 | virtualPictureAtImage.pa_data.picno = this.bg_data.picno; 42 | virtualPictureAtImage.pa_data.filename = this.bg_data.filename; 43 | virtualPictureAtImage.pa_data.scale = scale; 44 | virtualPictureAtImage.pa_data.currentBackgroundImageWidth = this.bg_data.currentBackgroundScreenImage.width(); 45 | 46 | // Event triggered when virtual PCITUREAT image is loaded 47 | virtualPictureAtImage.onload = function () 48 | { 49 | var imageHeight = this.height; 50 | var x = Math.floor(this.pa_data.x * this.pa_data.scale); 51 | var y = Math.floor(this.pa_data.y * this.pa_data.scale); 52 | var newimageHeight = Math.floor(imageHeight * this.pa_data.scale); 53 | var actualBackgroundImageX = Math.floor((parseInt($('.graphics').width()) - this.pa_data.currentBackgroundImageWidth)/2);; 54 | var id = 'pictureat_' + this.pa_data.picno; 55 | 56 | // Add new image, notice we are not using the virtual image, but creating a new one 57 | $('.graphics').append(''); 58 | $('#' + id).css('position','absolute'); 59 | $('#' + id).css('left', actualBackgroundImageX + x + 'px'); 60 | $('#' + id).css('top',y + 'px'); 61 | $('#' + id).css('z-index','100'); 62 | $('#' + id).attr('src', this.pa_data.filename); 63 | $('#' + id).css('height',newimageHeight + 'px'); 64 | $('#' + id).show(); 65 | } 66 | 67 | // Assign the virtual pictureat image the destinationsrc to trigger the "onload" event 68 | virtualPictureAtImage.src = this.bg_data.filename; 69 | }; 70 | 71 | // Assign the virtual background image same src as current background to trigger the "onload" event 72 | virtualBackgroundImage.src = currentBackgroundScreenImage.attr("src"); 73 | 74 | } 75 | -------------------------------------------------------------------------------- /jsl/playvideo.jsp: -------------------------------------------------------------------------------- 1 | //CND PLAYVIDEO A 14 2 2 0 2 | 3 | var videoLoopCount; 4 | var videoEscapable; 5 | var videoElement; 6 | 7 | function ACCplayvideo(strno, loopCount, settings) 8 | { 9 | videoEscapable = settings & 1; // if bit 0 of settings is 1, video can be interrupted with ESC key 10 | if (loopCount == 0) loopCount = -1; 11 | videoLoopCount = loopCount; 12 | 13 | str = ''; 18 | $('.graphics').removeClass('hidden'); 19 | $('.graphics').addClass('half_graphics'); 20 | $('.text').removeClass('all_text'); 21 | $('.text').addClass('half_text'); 22 | $('.graphics').html(str); 23 | $('#videoframe').css('height','100%'); 24 | $('#videoframe').css('display','block'); 25 | $('#videoframe').css('margin-left','auto'); 26 | $('#videoframe').css('margin-right','auto'); 27 | $('#graphics').show(); 28 | videoElement = document.getElementById('videoframe'); 29 | videoElement.onended = function() 30 | { 31 | if (videoLoopCount == -1) videoElement.play(); 32 | else 33 | { 34 | videoLoopCount--; 35 | if (videoLoopCount) videoElement.play(); 36 | } 37 | }; 38 | videoElement.play(); 39 | 40 | } 41 | 42 | // Hook into location description to avoid video playing to continue playing while hidden after changing location 43 | var old_video_h_description_init = h_description_init ; 44 | var h_description_init = function () 45 | { 46 | if ($("#videoframe").length > 0) $("#videoframe").remove(); 47 | old_video_h_description_init(); 48 | } 49 | 50 | // Hook into keypress to cancel video playing if ESC is pressed and video is skippable 51 | 52 | var old_video_h_keydown = h_keydown; 53 | h_keydown = function (event) 54 | { 55 | if ((event.keyCode == 27) && (typeof videoElement != 'undefined') && (!videoElement.ended) && (videoEscapable)) 56 | { 57 | videoElement.pause(); 58 | return false; // we've finished attending ESC press 59 | } 60 | else return old_video_h_keydown(event); 61 | } 62 | 63 | 64 | 65 | -------------------------------------------------------------------------------- /jsl/randomx.jsp: -------------------------------------------------------------------------------- 1 | //CND RANDOMX A 1 2 0 0 2 | 3 | function ACCrandomx(flagno, value) 4 | { 5 | setFlag(flagno, 1 + Math.floor((Math.random()*value))); 6 | } -------------------------------------------------------------------------------- /jsl/resp.jsp: -------------------------------------------------------------------------------- 1 | //CND RESP A 0 0 0 0 2 | 3 | function ACCresp() 4 | { 5 | in_response = true; 6 | } 7 | -------------------------------------------------------------------------------- /jsl/resumevideo.jsp: -------------------------------------------------------------------------------- 1 | //CND RESUMEVIDEO A 0 0 0 0 2 | 3 | 4 | function ACCresumevideo() 5 | { 6 | if (typeof videoElement != 'undefined') 7 | if (videoElement.paused) 8 | videoElement.play(); 9 | } 10 | -------------------------------------------------------------------------------- /jsl/rndwrite.jsp: -------------------------------------------------------------------------------- 1 | //CND RNDWRITE A 14 14 14 0 2 | 3 | function ACCrndwrite(writeno1,writeno2,writeno3) 4 | { 5 | var val = Math.floor((Math.random()*3)); 6 | switch (val) 7 | { 8 | case 0 : writeWriteMessage(writeno1);break; 9 | case 1 : writeWriteMessage(writeno2);break; 10 | case 2 : writeWriteMessage(writeno3);break; 11 | } 12 | } -------------------------------------------------------------------------------- /jsl/rndwriteln.jsp: -------------------------------------------------------------------------------- 1 | //CND RNDWRITELN A 14 14 14 0 2 | 3 | function ACCrndwriteln(writeno1,writeno2,writeno3) 4 | { 5 | ACCrndwrite(writeno1,writeno2,writeno3); 6 | ACCnewline(); 7 | } -------------------------------------------------------------------------------- /jsl/setexit.jsp: -------------------------------------------------------------------------------- 1 | //CND SETEXIT A 2 2 0 0 2 | 3 | function ACCsetexit(value, locno) 4 | { 5 | if (value < NUM_CONNECTION_VERBS) setConnection(loc_here(), value, locno); 6 | } -------------------------------------------------------------------------------- /jsl/setweight.jsp: -------------------------------------------------------------------------------- 1 | //CND SETWEIGHT A 4 2 0 0 2 | 3 | function ACCsetweight(objno, value) 4 | { 5 | objectsWeight[objno] = value; 6 | } 7 | -------------------------------------------------------------------------------- /jsl/silence.jsp: -------------------------------------------------------------------------------- 1 | //CND SILENCE A 2 0 0 0 2 | 3 | function ACCsilence(channelno) 4 | { 5 | if ((channelno <1) || (channelno >MAX_CHANNELS)) return; 6 | sfxstop(channelno); 7 | } -------------------------------------------------------------------------------- /jsl/softblock.jsp: -------------------------------------------------------------------------------- 1 | //CND SOFTBLOCK A 2 0 0 0 2 | 3 | function ACCsoftblock(procno) 4 | { 5 | inBlock = true; 6 | disableInterrupt(); 7 | 8 | $('.block_layer').css('display','none'); 9 | $('.block_text').html(''); 10 | $('.block_graphics').html(''); 11 | $('.block_layer').css('background','transparent'); 12 | if (procno == 0 ) unblock_process = null; else unblock_process = procno; 13 | $('.block_layer').css('display','block'); 14 | } 15 | -------------------------------------------------------------------------------- /jsl/space.jsp: -------------------------------------------------------------------------------- 1 | //CND SPACE A 0 0 0 0 2 | 3 | function ACCspace() 4 | { 5 | writeText(' '); 6 | } -------------------------------------------------------------------------------- /jsl/synonym.jsp: -------------------------------------------------------------------------------- 1 | //CND SYNONYM A 15 13 0 0 2 | 3 | function ACCsynonym(wordno1, wordno2) 4 | { 5 | if (wordno1!=EMPTY_WORD) setFlag(FLAG_VERB, wordno1); 6 | if (wordno2!=EMPTY_WORD) setFlag(FLAG_NOUN1, wordno2); 7 | } -------------------------------------------------------------------------------- /jsl/textpic.jsp: -------------------------------------------------------------------------------- 1 | //CND TEXTPIC A 2 2 0 0 2 | 3 | function ACCtextpic(picno, align) 4 | { 5 | var style = ''; 6 | var post = ''; 7 | var pre = ''; 8 | switch(align) 9 | { 10 | case 0: post='
';break; 11 | case 1: style = 'float:left'; break; 12 | case 2: style = 'float:right'; break; 13 | case 3: pre='
';post='

';break; 14 | } 15 | filename = getResourceById(RESOURCE_TYPE_IMG, picno); 16 | if (filename) 17 | { 18 | var texto = pre + "" + post; 19 | writeText(texto); 20 | $(".text").scrollTop($(".text")[0].scrollHeight); 21 | } 22 | } -------------------------------------------------------------------------------- /jsl/title.jsp: -------------------------------------------------------------------------------- 1 | //CND TITLE A 14 0 0 0 2 | 3 | function ACCtitle(writeno) 4 | { 5 | document.title = writemessages[writeno]; 6 | } -------------------------------------------------------------------------------- /jsl/volume.jsp: -------------------------------------------------------------------------------- 1 | //CND VOLUME A 2 2 0 0 2 | 3 | function ACCvolume(channelno, value) 4 | { 5 | if ((channelno <1) || (channelno >MAX_CHANNELS)) return; 6 | sfxvolume(channelno, value); 7 | } 8 | -------------------------------------------------------------------------------- /jsl/volumevideo.jsp: -------------------------------------------------------------------------------- 1 | //CND VOLUMEVIDEO A 2 0 0 0 2 | 3 | 4 | function ACCvolumevideo(value) 5 | { 6 | if (typeof videoElement != 'undefined') 7 | videoElement.volume = value / 65535; 8 | } 9 | -------------------------------------------------------------------------------- /jsl/warnings.jsp: -------------------------------------------------------------------------------- 1 | //CND WARNINGS A 2 0 0 0 2 | 3 | function ACCwarnings(value) 4 | { 5 | if (value) showWarnings = true; else showWarnings = false; 6 | } -------------------------------------------------------------------------------- /jsl/whatox.jsp: -------------------------------------------------------------------------------- 1 | //CND WHATOX A 1 0 0 0 2 | 3 | function ACCwhatox(flagno) 4 | { 5 | var whatoxfound = getReferredObject(); 6 | setFlag(flagno,whatoxfound); 7 | } 8 | -------------------------------------------------------------------------------- /jsl/whatox2.jsp: -------------------------------------------------------------------------------- 1 | //CND WHATOX2 A 1 0 0 0 2 | 3 | function ACCwhatox2(flagno) 4 | { 5 | var auxNoun = getFlag(FLAG_NOUN1); 6 | var auxAdj = getFlag(FLAG_ADJECT1); 7 | setFlag(FLAG_NOUN1, getFlag(FLAG_NOUN2)); 8 | setFlag(FLAG_ADJECT1, getFlag(FLAG_ADJECT2)); 9 | var whatox2found = getReferredObject(); 10 | setFlag(flagno,whatox2found); 11 | setFlag(FLAG_NOUN1, auxNoun); 12 | setFlag(FLAG_ADJECT1, auxAdj); 13 | } -------------------------------------------------------------------------------- /jsl/youtube.jsp: -------------------------------------------------------------------------------- 1 | //CND YOUTUBE A 14 0 0 0 2 | 3 | function ACCyoutube(strno) 4 | { 5 | 6 | var str = '' 7 | $('.graphics').removeClass('hidden'); 8 | $('.graphics').addClass('half_graphics'); 9 | $('.text').removeClass('all_text'); 10 | $('.text').addClass('half_text'); 11 | $('.graphics').html(str); 12 | $('#youtube').css('height','100%'); 13 | $('#youtube').css('display','block'); 14 | $('#youtube').css('margin-left','auto'); 15 | $('#youtube').css('margin-right','auto'); 16 | $('.graphics').show(); 17 | } 18 | 19 | 20 | // Hook into location description to avoid video playing to continue playing while hidden after changing location 21 | var old_youtube_h_description_init = h_description_init ; 22 | var h_description_init = function () 23 | { 24 | if ($("#youtube").length > 0) $("#youtube").remove(); 25 | old_youtube_h_description_init(); 26 | } -------------------------------------------------------------------------------- /jsl/zone.jsp: -------------------------------------------------------------------------------- 1 | //CND ZONE C 8 8 0 0 2 | 3 | function CNDzone(locno1, locno2) 4 | { 5 | 6 | if (loc_here()locno2) return false; 8 | return true; 9 | } -------------------------------------------------------------------------------- /newIDE/backup/ngpaws.lps: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | -------------------------------------------------------------------------------- /newIDE/backup/umain.lfm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Utodev/ngPAWS/ab874b5ab49e2ec520b27bf97823ccfa9c907359/newIDE/backup/umain.lfm -------------------------------------------------------------------------------- /newIDE/images/buttons/compile.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Utodev/ngPAWS/ab874b5ab49e2ec520b27bf97823ccfa9c907359/newIDE/images/buttons/compile.bmp -------------------------------------------------------------------------------- /newIDE/images/buttons/copy.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Utodev/ngPAWS/ab874b5ab49e2ec520b27bf97823ccfa9c907359/newIDE/images/buttons/copy.bmp -------------------------------------------------------------------------------- /newIDE/images/buttons/cut.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Utodev/ngPAWS/ab874b5ab49e2ec520b27bf97823ccfa9c907359/newIDE/images/buttons/cut.bmp -------------------------------------------------------------------------------- /newIDE/images/buttons/help.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Utodev/ngPAWS/ab874b5ab49e2ec520b27bf97823ccfa9c907359/newIDE/images/buttons/help.bmp -------------------------------------------------------------------------------- /newIDE/images/buttons/new.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Utodev/ngPAWS/ab874b5ab49e2ec520b27bf97823ccfa9c907359/newIDE/images/buttons/new.bmp -------------------------------------------------------------------------------- /newIDE/images/buttons/open.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Utodev/ngPAWS/ab874b5ab49e2ec520b27bf97823ccfa9c907359/newIDE/images/buttons/open.bmp -------------------------------------------------------------------------------- /newIDE/images/buttons/paste.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Utodev/ngPAWS/ab874b5ab49e2ec520b27bf97823ccfa9c907359/newIDE/images/buttons/paste.bmp -------------------------------------------------------------------------------- /newIDE/images/buttons/redo.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Utodev/ngPAWS/ab874b5ab49e2ec520b27bf97823ccfa9c907359/newIDE/images/buttons/redo.bmp -------------------------------------------------------------------------------- /newIDE/images/buttons/replace.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Utodev/ngPAWS/ab874b5ab49e2ec520b27bf97823ccfa9c907359/newIDE/images/buttons/replace.bmp -------------------------------------------------------------------------------- /newIDE/images/buttons/run.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Utodev/ngPAWS/ab874b5ab49e2ec520b27bf97823ccfa9c907359/newIDE/images/buttons/run.bmp -------------------------------------------------------------------------------- /newIDE/images/buttons/save.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Utodev/ngPAWS/ab874b5ab49e2ec520b27bf97823ccfa9c907359/newIDE/images/buttons/save.bmp -------------------------------------------------------------------------------- /newIDE/images/buttons/search.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Utodev/ngPAWS/ab874b5ab49e2ec520b27bf97823ccfa9c907359/newIDE/images/buttons/search.bmp -------------------------------------------------------------------------------- /newIDE/images/buttons/settings.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Utodev/ngPAWS/ab874b5ab49e2ec520b27bf97823ccfa9c907359/newIDE/images/buttons/settings.bmp -------------------------------------------------------------------------------- /newIDE/images/buttons/undo.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Utodev/ngPAWS/ab874b5ab49e2ec520b27bf97823ccfa9c907359/newIDE/images/buttons/undo.bmp -------------------------------------------------------------------------------- /newIDE/images/icon/DEF.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Utodev/ngPAWS/ab874b5ab49e2ec520b27bf97823ccfa9c907359/newIDE/images/icon/DEF.png -------------------------------------------------------------------------------- /newIDE/images/icon/OBJ.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Utodev/ngPAWS/ab874b5ab49e2ec520b27bf97823ccfa9c907359/newIDE/images/icon/OBJ.png -------------------------------------------------------------------------------- /newIDE/images/icon/OTX.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Utodev/ngPAWS/ab874b5ab49e2ec520b27bf97823ccfa9c907359/newIDE/images/icon/OTX.png -------------------------------------------------------------------------------- /newIDE/images/icon/STX.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Utodev/ngPAWS/ab874b5ab49e2ec520b27bf97823ccfa9c907359/newIDE/images/icon/STX.png -------------------------------------------------------------------------------- /newIDE/images/icon/compile64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Utodev/ngPAWS/ab874b5ab49e2ec520b27bf97823ccfa9c907359/newIDE/images/icon/compile64.png -------------------------------------------------------------------------------- /newIDE/images/icon/connect.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Utodev/ngPAWS/ab874b5ab49e2ec520b27bf97823ccfa9c907359/newIDE/images/icon/connect.png -------------------------------------------------------------------------------- /newIDE/images/icon/copy64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Utodev/ngPAWS/ab874b5ab49e2ec520b27bf97823ccfa9c907359/newIDE/images/icon/copy64.png -------------------------------------------------------------------------------- /newIDE/images/icon/cut64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Utodev/ngPAWS/ab874b5ab49e2ec520b27bf97823ccfa9c907359/newIDE/images/icon/cut64.png -------------------------------------------------------------------------------- /newIDE/images/icon/help64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Utodev/ngPAWS/ab874b5ab49e2ec520b27bf97823ccfa9c907359/newIDE/images/icon/help64.png -------------------------------------------------------------------------------- /newIDE/images/icon/load64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Utodev/ngPAWS/ab874b5ab49e2ec520b27bf97823ccfa9c907359/newIDE/images/icon/load64.png -------------------------------------------------------------------------------- /newIDE/images/icon/ltx.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Utodev/ngPAWS/ab874b5ab49e2ec520b27bf97823ccfa9c907359/newIDE/images/icon/ltx.png -------------------------------------------------------------------------------- /newIDE/images/icon/mtx.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Utodev/ngPAWS/ab874b5ab49e2ec520b27bf97823ccfa9c907359/newIDE/images/icon/mtx.png -------------------------------------------------------------------------------- /newIDE/images/icon/new64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Utodev/ngPAWS/ab874b5ab49e2ec520b27bf97823ccfa9c907359/newIDE/images/icon/new64.png -------------------------------------------------------------------------------- /newIDE/images/icon/paste64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Utodev/ngPAWS/ab874b5ab49e2ec520b27bf97823ccfa9c907359/newIDE/images/icon/paste64.png -------------------------------------------------------------------------------- /newIDE/images/icon/pro.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Utodev/ngPAWS/ab874b5ab49e2ec520b27bf97823ccfa9c907359/newIDE/images/icon/pro.png -------------------------------------------------------------------------------- /newIDE/images/icon/puzzle-128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Utodev/ngPAWS/ab874b5ab49e2ec520b27bf97823ccfa9c907359/newIDE/images/icon/puzzle-128.png -------------------------------------------------------------------------------- /newIDE/images/icon/puzzle-64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Utodev/ngPAWS/ab874b5ab49e2ec520b27bf97823ccfa9c907359/newIDE/images/icon/puzzle-64.png -------------------------------------------------------------------------------- /newIDE/images/icon/redo64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Utodev/ngPAWS/ab874b5ab49e2ec520b27bf97823ccfa9c907359/newIDE/images/icon/redo64.png -------------------------------------------------------------------------------- /newIDE/images/icon/replace64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Utodev/ngPAWS/ab874b5ab49e2ec520b27bf97823ccfa9c907359/newIDE/images/icon/replace64.png -------------------------------------------------------------------------------- /newIDE/images/icon/resp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Utodev/ngPAWS/ab874b5ab49e2ec520b27bf97823ccfa9c907359/newIDE/images/icon/resp.png -------------------------------------------------------------------------------- /newIDE/images/icon/run64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Utodev/ngPAWS/ab874b5ab49e2ec520b27bf97823ccfa9c907359/newIDE/images/icon/run64.png -------------------------------------------------------------------------------- /newIDE/images/icon/save64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Utodev/ngPAWS/ab874b5ab49e2ec520b27bf97823ccfa9c907359/newIDE/images/icon/save64.png -------------------------------------------------------------------------------- /newIDE/images/icon/search64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Utodev/ngPAWS/ab874b5ab49e2ec520b27bf97823ccfa9c907359/newIDE/images/icon/search64.png -------------------------------------------------------------------------------- /newIDE/images/icon/tools64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Utodev/ngPAWS/ab874b5ab49e2ec520b27bf97823ccfa9c907359/newIDE/images/icon/tools64.png -------------------------------------------------------------------------------- /newIDE/images/icon/undo64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Utodev/ngPAWS/ab874b5ab49e2ec520b27bf97823ccfa9c907359/newIDE/images/icon/undo64.png -------------------------------------------------------------------------------- /newIDE/images/icon/voc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Utodev/ngPAWS/ab874b5ab49e2ec520b27bf97823ccfa9c907359/newIDE/images/icon/voc.png -------------------------------------------------------------------------------- /newIDE/images/ngpaws.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Utodev/ngPAWS/ab874b5ab49e2ec520b27bf97823ccfa9c907359/newIDE/images/ngpaws.bmp -------------------------------------------------------------------------------- /newIDE/images/ngpaws.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /newIDE/images/ngpaws_blur.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Utodev/ngPAWS/ab874b5ab49e2ec520b27bf97823ccfa9c907359/newIDE/images/ngpaws_blur.JPG -------------------------------------------------------------------------------- /newIDE/images/ngpaws_blur.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Utodev/ngPAWS/ab874b5ab49e2ec520b27bf97823ccfa9c907359/newIDE/images/ngpaws_blur.bmp -------------------------------------------------------------------------------- /newIDE/ngpaws.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Utodev/ngPAWS/ab874b5ab49e2ec520b27bf97823ccfa9c907359/newIDE/ngpaws.ico -------------------------------------------------------------------------------- /newIDE/ngpaws.lpr: -------------------------------------------------------------------------------- 1 | program ngpaws; 2 | 3 | {$mode objfpc}{$H+} 4 | 5 | uses 6 | {$IFDEF UNIX}{$IFDEF UseCThreads} 7 | cthreads, 8 | {$ENDIF}{$ENDIF} 9 | Interfaces, // this includes the LCL widgetset 10 | Forms, lazcontrols, UMain, uoptions, urunshell, UConfig, UTXP, UGlobals, 11 | uabout, upuzzlewizard, USearchReplace; 12 | 13 | 14 | 15 | {$R *.res} 16 | 17 | begin 18 | RequireDerivedFormResource := True; 19 | Application.Initialize; 20 | Application.CreateForm(TfMain, fMain); 21 | Application.CreateForm(TfOptions, fOptions); 22 | Application.CreateForm(TfAbout, fAbout); 23 | Application.CreateForm(TfSearchReplace, fSearchReplace); 24 | Application.CreateForm(TfPuzzleWizard, fPuzzleWizard); 25 | Application.Run; 26 | end. 27 | 28 | -------------------------------------------------------------------------------- /newIDE/ngpaws.res: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Utodev/ngPAWS/ab874b5ab49e2ec520b27bf97823ccfa9c907359/newIDE/ngpaws.res -------------------------------------------------------------------------------- /newIDE/ngpaws_osx.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Utodev/ngPAWS/ab874b5ab49e2ec520b27bf97823ccfa9c907359/newIDE/ngpaws_osx.ico -------------------------------------------------------------------------------- /newIDE/ngpaws_osx.lpr: -------------------------------------------------------------------------------- 1 | program ngpaws_osx; 2 | 3 | {$mode objfpc}{$H+} 4 | 5 | uses 6 | {$IFDEF UNIX}{$IFDEF UseCThreads} 7 | cthreads, 8 | {$ENDIF}{$ENDIF} 9 | Interfaces, // this includes the LCL widgetset 10 | Forms, lazcontrols, UMain, uoptions, urunshell, UConfig, UTXP, UGlobals, 11 | uabout, upuzzlewizard, USearchReplace; 12 | 13 | 14 | 15 | {$R *.res} 16 | 17 | begin 18 | Application.Title:='ngpaws'; 19 | RequireDerivedFormResource := True; 20 | Application.Initialize; 21 | Application.CreateForm(TfMain, fMain); 22 | Application.CreateForm(TfOptions, fOptions); 23 | Application.CreateForm(TfAbout, fAbout); 24 | Application.CreateForm(TfSearchReplace, fSearchReplace); 25 | Application.CreateForm(TfPuzzleWizard, fPuzzleWizard); 26 | Application.Run; 27 | end. 28 | 29 | -------------------------------------------------------------------------------- /newIDE/uabout.lrj: -------------------------------------------------------------------------------- 1 | {"version":1,"strings":[ 2 | {"hash":113408336,"name":"tfabout.caption","sourcebytes":[110,103,80,65,87,83,32,50,46,48],"value":"ngPAWS 2.0"}, 3 | {"hash":89293791,"name":"tfabout.label1.caption","sourcebytes":[110,103,80,65,87,83,32,40,67,41,32,50,48,50,49,32,85,116,111],"value":"ngPAWS (C) 2021 Uto"}, 4 | {"hash":144084325,"name":"tfabout.labeldetails.caption","sourcebytes":[76,97,122,97,114,117,115,32,115,111,117,114,99,101,32,99,111,100,101,32,97,118,97,108,105,97,98,108,101],"value":"Lazarus source code avaliable"}, 5 | {"hash":13378361,"name":"tfabout.label2.caption","sourcebytes":[97,116,32,71,105,116,72,117,98,32,40,71,80,76,41],"value":"at GitHub (GPL)"}, 6 | {"hash":71737043,"name":"tfabout.labelngpawssite.caption","sourcebytes":[104,116,116,112,58,47,47,119,119,119,46,110,103,112,97,119,115,46,99,111,109,47,110,103,112,97,119,115],"value":"http://www.ngpaws.com/ngpaws"}, 7 | {"hash":65435219,"name":"tfabout.labelngithubsite.caption","sourcebytes":[104,116,116,112,115,58,47,47,103,105,116,104,117,98,46,99,111,109,47,85,116,111,100,101,118,47,110,103,80,65,87,83],"value":"https://github.com/Utodev/ngPAWS"}, 8 | {"hash":151662249,"name":"tfabout.label3.caption","sourcebytes":[78,105,99,101,32,105,99,111,110,115,32,98,121,32,75,105,114,97,110,115,104,97,115,116,114,121],"value":"Nice icons by Kiranshastry"} 9 | ]} 10 | -------------------------------------------------------------------------------- /newIDE/uabout.lrt: -------------------------------------------------------------------------------- 1 | TFABOUT.CAPTION=ngPAWS Editor 2 | TFABOUT.LABEL1.CAPTION=ngPAWS Editor (C) 2015 Uto 3 | TFABOUT.LABELDETAILS.CAPTION=Lazarus source code avaliable 4 | TFABOUT.LABEL2.CAPTION=at GitHub (GPL) 5 | TFABOUT.LABELNGPAWSSITE.CAPTION=http://www.ngpaws.com 6 | TFABOUT.LABELNGITHUBSITE.CAPTION=https://github.com/Utodev/ngPAWS 7 | -------------------------------------------------------------------------------- /newIDE/uabout.pas: -------------------------------------------------------------------------------- 1 | unit UAbout; 2 | 3 | {$mode objfpc}{$H+} 4 | 5 | interface 6 | 7 | uses 8 | Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls, 9 | ExtCtrls; 10 | 11 | type 12 | 13 | { TfAbout } 14 | 15 | TfAbout = class(TForm) 16 | Image: TImage; 17 | Label1: TLabel; 18 | Label2: TLabel; 19 | Label3: TLabel; 20 | LabelngPAWSSite: TLabel; 21 | LabelDetails: TLabel; 22 | LabelnGithubSite: TLabel; 23 | procedure ImageClick(Sender: TObject); 24 | procedure LabelnGithubSiteClick(Sender: TObject); 25 | procedure LabelngPAWSSiteClick(Sender: TObject); 26 | private 27 | { private declarations } 28 | public 29 | { public declarations } 30 | end; 31 | 32 | var 33 | fAbout: TfAbout; 34 | 35 | implementation 36 | 37 | uses lclintf; 38 | 39 | {$R *.lfm} 40 | 41 | { TfAbout } 42 | 43 | procedure TfAbout.ImageClick(Sender: TObject); 44 | begin 45 | 46 | end; 47 | 48 | procedure TfAbout.LabelnGithubSiteClick(Sender: TObject); 49 | begin 50 | OpenURL(TLabel(Sender).Caption); 51 | end; 52 | 53 | procedure TfAbout.LabelngPAWSSiteClick(Sender: TObject); 54 | begin 55 | OpenURL(TLabel(Sender).Caption); 56 | end; 57 | 58 | end. 59 | 60 | -------------------------------------------------------------------------------- /newIDE/umain.lfm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Utodev/ngPAWS/ab874b5ab49e2ec520b27bf97823ccfa9c907359/newIDE/umain.lfm -------------------------------------------------------------------------------- /newIDE/umain.lrt: -------------------------------------------------------------------------------- 1 | TFMAIN.CAPTION=ngPAWS 2 | TFMAIN.PANELBACKGROUND.CAPTION=ngPAWS Editor (C) 2015 Uto 3 | TFMAIN.BOPEN.HINT=Open 4 | TFMAIN.BNEW.HINT=New 5 | TFMAIN.BSAVE.HINT=Save 6 | TFMAIN.BCOPY.HINT=Copy 7 | TFMAIN.BCUT.HINT=Cut 8 | TFMAIN.BPASTE.HINT=Paste 9 | TFMAIN.BUNDO.HINT=Undo 10 | TFMAIN.BREDO.HINT=Redo 11 | TFMAIN.BFIND.HINT=Find 12 | TFMAIN.BREPLACE.HINT=Replace 13 | TFMAIN.BCOMPILE.HINT=Compile 14 | TFMAIN.BRUN.HINT=Run 15 | TFMAIN.BHELP.HINT=Help 16 | TFMAIN.BOPTIONS.HINT=Options 17 | TFMAIN.COMPILEOUTPUTLISTBOX.HINT=Compiler output 18 | TFMAIN.MFILE.CAPTION=&File 19 | TFMAIN.MNEW.CAPTION=&New 20 | TFMAIN.MOPENFILE.CAPTION=&Open 21 | TFMAIN.MSAVE.CAPTION=&Save 22 | TFMAIN.MCLOSE.CAPTION=&Close 23 | TFMAIN.MRECENTFILES.CAPTION=Recent F&iles 24 | TFMAIN.MQUIT.CAPTION=Quit 25 | TFMAIN.MEDIT.CAPTION=&Edit 26 | TFMAIN.MCOPY.CAPTION=&Copy 27 | TFMAIN.MCUT.CAPTION=C&ut 28 | TFMAIN.MPASTE.CAPTION=Pas&te 29 | TFMAIN.MUNDO.CAPTION=Undo 30 | TFMAIN.MREDO.CAPTION=Redo 31 | TFMAIN.MFIND.CAPTION=Find 32 | TFMAIN.MFINDNEXT.CAPTION=&Find next 33 | TFMAIN.MREPLACE.CAPTION=Replace 34 | TFMAIN.MPROJECT.CAPTION=&Project 35 | TFMAIN.MOPENALLSECTIONS.CAPTION=Open &all sections 36 | TFMAIN.MDATA.CAPTION=Data 37 | TFMAIN.MDEFINITIONS.CAPTION=&Definitions 38 | TFMAIN.MVOCABULARY.CAPTION=&Vocabulary 39 | TFMAIN.MLOCATIONS.CAPTION=&Locations 40 | TFMAIN.MCONNECTIONS.CAPTION=&Connections 41 | TFMAIN.MOBJECTTEXTS.CAPTION=&Object Texts 42 | TFMAIN.MOBJECTDATA.CAPTION=Ob&ject Data 43 | TFMAIN.MMESSAGES.CAPTION=&Messages 44 | TFMAIN.MSYSTEMMESSAGES.CAPTION=&System messages 45 | TFMAIN.MPROCESSES.CAPTION=&Processes 46 | TFMAIN.MNEWPROCESS.CAPTION=&New Process 47 | TFMAIN.MCOMPILE.CAPTION=&Compile 48 | TFMAIN.MCOMPILERUN.CAPTION=Compile && &Run 49 | TFMAIN.MTOOLS.CAPTION=&Tools 50 | TFMAIN.MOPTIONS.CAPTION=&Options 51 | TFMAIN.MHELP.CAPTION=&Help 52 | TFMAIN.MHELPCONTENTS.CAPTION=Help contents 53 | TFMAIN.MABOUT.CAPTION=About ngPAWS 54 | TFMAIN.PMINTERRUPTTOGGLE.CAPTION=Toggle interrupt process mark 55 | TFMAIN.PMCONDACTHELP.CAPTION=Condact Help 56 | TFMAIN.PMPUZZLEWIZARD.CAPTION=Puzzle Wizard 57 | TFMAIN.PMSEPARATOR1.CAPTION=- 58 | TFMAIN.PMLARGERFONT.CAPTION=Larger font 59 | TFMAIN.PMSMALLERFONT.CAPTION=Smaller font 60 | TFMAIN.PMSEPARARTOR2.CAPTION=- 61 | TFMAIN.PMCOPY.CAPTION=Copy 62 | TFMAIN.PMCUT.CAPTION=Cut 63 | TFMAIN.PMPASTE.CAPTION=Paste 64 | TFMAIN.MCLOSECOMPILEROUTPUT.CAPTION=Close this frame 65 | TFMAIN.MCOPYALL.CAPTION=Copy All To Clipboard 66 | -------------------------------------------------------------------------------- /newIDE/uoptions.lrj: -------------------------------------------------------------------------------- 1 | {"version":1,"strings":[ 2 | {"hash":108725763,"name":"tfoptions.caption","sourcebytes":[79,112,116,105,111,110,115],"value":"Options"}, 3 | {"hash":11099,"name":"tfoptions.bok.caption","sourcebytes":[38,79,107],"value":"&Ok"}, 4 | {"hash":177752476,"name":"tfoptions.bcancel.caption","sourcebytes":[38,67,97,110,99,101,108],"value":"&Cancel"}, 5 | {"hash":225551699,"name":"tfoptions.groupboxeditor.caption","sourcebytes":[69,100,105,116,111,114,32,79,112,116,105,111,110,115],"value":"Editor Options"}, 6 | {"hash":210435188,"name":"tfoptions.checkopenalltabs.caption","sourcebytes":[79,112,101,110,32,97,108,108,32,115,101,99,116,105,111,110,115,32,111,110,32,108,111,97,100],"value":"Open all sections on load"}, 7 | {"hash":139375349,"name":"tfoptions.labellang.caption","sourcebytes":[76,97,110,103,117,97,103,101],"value":"Language"}, 8 | {"hash":135140085,"name":"tfoptions.checksavebeforerun.caption","sourcebytes":[83,97,118,101,32,98,101,102,111,114,101,32,114,117,110,32,111,114,32,99,111,109,112,105,108,101],"value":"Save before run or compile"}, 9 | {"hash":229175426,"name":"tfoptions.checkshowtoolbar.caption","sourcebytes":[83,104,111,119,32,116,111,111,108,32,98,97,114],"value":"Show tool bar"}, 10 | {"hash":106200748,"name":"tfoptions.labelhelpurl.caption","sourcebytes":[72,101,108,112,32,66,97,115,101,32,85,82,76],"value":"Help Base URL"}, 11 | {"hash":24946755,"name":"tfoptions.groupboxcompileroptions.caption","sourcebytes":[67,111,109,112,105,108,101,114,32,79,112,116,105,111,110,115],"value":"Compiler Options"}, 12 | {"hash":139569219,"name":"tfoptions.checkdeletetempfiles.caption","sourcebytes":[68,101,108,101,116,101,32,116,101,109,112,32,102,105,108,101,115],"value":"Delete temp files"}, 13 | {"hash":158827235,"name":"tfoptions.labelpreprocessorparameters.caption","sourcebytes":[80,114,101,112,114,111,99,101,115,115,111,114,32,80,97,114,97,109,101,116,101,114,115],"value":"Preprocessor Parameters"}, 14 | {"hash":12558,"name":"tfoptions.bbrowsestartdatabase.caption","sourcebytes":[46,46,46],"value":"..."}, 15 | {"hash":12558,"name":"tfoptions.bbrowsecompiler.caption","sourcebytes":[46,46,46],"value":"..."}, 16 | {"hash":105317986,"name":"tfoptions.labelcompiler.caption","sourcebytes":[67,111,109,112,105,108,101,114],"value":"Compiler"}, 17 | {"hash":36629397,"name":"tfoptions.labelstartdatabase.caption","sourcebytes":[83,116,97,114,116,32,100,97,116,97,98,97,115,101],"value":"Start database"}, 18 | {"hash":12558,"name":"tfoptions.bbrowsepreprocessor.caption","sourcebytes":[46,46,46],"value":"..."}, 19 | {"hash":14970866,"name":"tfoptions.labelpreprocessor.caption","sourcebytes":[80,114,101,112,114,111,99,101,115,115,111,114],"value":"Preprocessor"} 20 | ]} 21 | -------------------------------------------------------------------------------- /newIDE/uoptions.lrt: -------------------------------------------------------------------------------- 1 | TFOPTIONS.CAPTION=Options 2 | TFOPTIONS.BOK.CAPTION=&Ok 3 | TFOPTIONS.BCANCEL.CAPTION=&Cancel 4 | TFOPTIONS.GROUPBOXEDITOR.CAPTION=Editor Options 5 | TFOPTIONS.CHECKOPENALLTABS.CAPTION=Open all sections on load 6 | TFOPTIONS.LABELLANG.CAPTION=Language 7 | TFOPTIONS.CHECKSAVEBEFORERUN.CAPTION=Save before run or compile 8 | TFOPTIONS.CHECKSHOWTOOLBAR.CAPTION=Show tool bar 9 | TFOPTIONS.LABELHELPURL.CAPTION=Help Base URL 10 | TFOPTIONS.GROUPBOXCOMPILEROPTIONS.CAPTION=Compiler Options 11 | TFOPTIONS.CHECKDELETETEMPFILES.CAPTION=Delete temp files 12 | TFOPTIONS.LABELPREPROCESSORPARAMETERS.CAPTION=Preprocessor Parameters 13 | TFOPTIONS.BBROWSESTARTDATABASE.CAPTION=... 14 | TFOPTIONS.BBROWSECOMPILER.CAPTION=... 15 | TFOPTIONS.LABELCOMPILER.CAPTION=Compiler 16 | TFOPTIONS.LABELSTARTDATABASE.CAPTION=Start database 17 | TFOPTIONS.BBROWSEPREPROCESSOR.CAPTION=... 18 | TFOPTIONS.LABELPREPROCESSOR.CAPTION=Preprocessor 19 | -------------------------------------------------------------------------------- /newIDE/uoptions.pas: -------------------------------------------------------------------------------- 1 | unit uoptions; 2 | 3 | {$mode objfpc}{$H+} 4 | 5 | interface 6 | 7 | uses 8 | Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ComCtrls, 9 | StdCtrls, Menus, UConfig, DefaultTranslator; 10 | 11 | type 12 | 13 | { TfOptions } 14 | 15 | TfOptions = class(TForm) 16 | BBrowseCompiler: TButton; 17 | BBrowseStartDatabase: TButton; 18 | BOk: TButton; 19 | BCancel: TButton; 20 | BBrowsePreprocessor: TButton; 21 | checkOpenAllTabs: TCheckBox; 22 | checkDeleteTempFiles: TCheckBox; 23 | checkShowToolbar: TCheckBox; 24 | checkSaveBeforeRun: TCheckBox; 25 | ComboBoxLang: TComboBox; 26 | EditPreprocessorParameters: TEdit; 27 | EditPreprocessor: TEdit; 28 | EditHelpURL: TEdit; 29 | EditCompiler: TEdit; 30 | EditStartDatabase: TEdit; 31 | GroupBoxCompilerOptions: TGroupBox; 32 | GroupBoxEditor: TGroupBox; 33 | LabelPreprocessorParameters: TStaticText; 34 | LabelLang: TStaticText; 35 | LabelCompiler: TStaticText; 36 | LabelPreprocessor: TStaticText; 37 | LabelHelpURL: TStaticText; 38 | LabelStartDatabase: TStaticText; 39 | OpenDialogOptions: TOpenDialog; 40 | procedure BBrowseCompilerClick(Sender: TObject); 41 | procedure BBrowsePreprocessorClick(Sender: TObject); 42 | procedure BBrowseStartDatabaseClick(Sender: TObject); 43 | procedure ComboBoxLangChange(Sender: TObject); 44 | procedure FormShow(Sender: TObject); 45 | procedure SaveToConfig(var Config: TConfig); 46 | private 47 | procedure LoadFromConfig(); 48 | var LanguageChanged : Boolean; 49 | public 50 | { public declarations } 51 | end; 52 | 53 | var 54 | fOptions: TfOptions; 55 | 56 | implementation 57 | 58 | {$R *.lfm} 59 | 60 | uses UMain, UGlobals; 61 | 62 | { TfOptions } 63 | 64 | procedure TfOptions.LoadFromConfig(); 65 | begin 66 | checkShowToolbar.Checked := fMain.Config.ShowToolBar; 67 | checkDeleteTempFiles.Checked:= fMain.Config.DeleteTempFiles; 68 | checkSaveBeforeRun.Checked:=fMain.Config.SaveBeforeRun; 69 | checkOpenAllTabs.Checked:=fMain.Config.OpenAllTabs; 70 | 71 | EditCompiler.Text:= fMain.Config.CompilerPath; 72 | EditHelpURL.Text:= fMain.Config.HelpBaseURL; 73 | EditPreprocessor.Text:= fMain.Config.PreprocessorPath; 74 | EditStartDatabase.Text:= fMain.Config.StartDatabasePath; 75 | EditPreprocessorParameters.Text:=fMain.Config.PreprocessorParameters; 76 | 77 | ComboBoxLang.ItemIndex := 0; 78 | if fMain.Config.Lang = 'es' then ComboBoxLang.ItemIndex := 2 else if fMain.Config.Lang = 'en' then ComboBoxLang.ItemIndex := 1; 79 | 80 | end; 81 | 82 | procedure TfOptions.SaveToConfig(var Config: TConfig); 83 | begin 84 | Config.ShowToolBar := checkShowToolbar.Checked; 85 | Config.DeleteTempFiles := checkDeleteTempFiles.Checked; 86 | Config.SaveBeforeRun := checkSaveBeforeRun.Checked; 87 | Config.OpenAllTabs := checkOpenAllTabs.Checked; 88 | 89 | 90 | 91 | Config.CompilerPath := EditCompiler.Text; 92 | Config.HelpBaseURL := EditHelpURL.Text; 93 | Config.PreprocessorPath := EditPreprocessor.Text; 94 | Config.StartDatabasePath := EditStartDatabase.Text; 95 | Config.PreprocessorParameters := EditPreprocessorParameters.Text; 96 | 97 | if LanguageChanged then 98 | case ComboBoxLang.ItemIndex of 99 | 0 : Config.Lang := ''; 100 | 1 : Config.Lang := 'en'; 101 | 2: Config.Lang := 'es'; 102 | end; 103 | 104 | end; 105 | 106 | 107 | 108 | procedure TfOptions.FormShow(Sender: TObject); 109 | begin 110 | ComboBoxLang.Items.Text := S_LANGUAGES; 111 | LanguageChanged:=false; 112 | LoadFromConfig(); 113 | end; 114 | 115 | procedure TfOptions.ComboBoxLangChange(Sender: TObject); 116 | begin 117 | LanguageChanged:=true; 118 | end; 119 | 120 | procedure TfOptions.BBrowsePreprocessorClick(Sender: TObject); 121 | begin 122 | if OpenDialogOptions.Execute then EditPreprocessor.Text:=OpenDialogOptions.FileName; 123 | end; 124 | 125 | procedure TfOptions.BBrowseStartDatabaseClick(Sender: TObject); 126 | begin 127 | if OpenDialogOptions.Execute then EditStartDatabase.Text:=OpenDialogOptions.FileName; 128 | end; 129 | 130 | procedure TfOptions.BBrowseCompilerClick(Sender: TObject); 131 | begin 132 | if OpenDialogOptions.Execute then EditCompiler.Text:=OpenDialogOptions.FileName; 133 | end; 134 | 135 | 136 | end. 137 | 138 | -------------------------------------------------------------------------------- /newIDE/upuzzlewizard.lrt: -------------------------------------------------------------------------------- 1 | TFPUZZLEWIZARD.CAPTION=Puzzle Wizard 2 | TFPUZZLEWIZARD.TABSHEETVOCLOC.CAPTION=Vocabulary & Location 3 | TFPUZZLEWIZARD.GROUPBOXVOC.HINT=Fill in this box to determine which words will the player have to type for this puzzle to get triggered 4 | TFPUZZLEWIZARD.GROUPBOXVOC.CAPTION=Vocabulary 5 | TFPUZZLEWIZARD.CHECKBOXREQUIRESPREPOSITION.CAPTION=Requires Preposition 6 | TFPUZZLEWIZARD.CHECKBOXREQUIRESNOUN.CAPTION=Requires Noun 7 | TFPUZZLEWIZARD.LABELVERB.CAPTION=Verb 8 | TFPUZZLEWIZARD.CHECKBOXREQUIRESADJECT1.CAPTION=Requires Adjective 9 | TFPUZZLEWIZARD.CHECKBOXREQUIRESADVERB.CAPTION=Requires Adverb 10 | TFPUZZLEWIZARD.CHECKBOXREQUIRESADJECT2.CAPTION=Requires Adjective 2 11 | TFPUZZLEWIZARD.CHECKBOXREQUIRESNOUN2.CAPTION=Requires Noun 2 12 | TFPUZZLEWIZARD.CHECKBOXINCLUDEWORDSONFAILURE.HINT=Select if entries created to show failure text due to conditions failing to match will include also extra required words or just verb or verb+name 13 | TFPUZZLEWIZARD.CHECKBOXINCLUDEWORDSONFAILURE.CAPTION=Include aditional words in failure entries 14 | TFPUZZLEWIZARD.GROUPBOXLOC.HINT=Fill in this box if this puzzle can only be solved in a given location 15 | TFPUZZLEWIZARD.GROUPBOXLOC.CAPTION=Location 16 | TFPUZZLEWIZARD.CHECKBOXLINKEDTOLOCATION.CAPTION=Puzzle is linked to location 17 | TFPUZZLEWIZARD.LABELLOCATIONTOF.HINT=Response to player if he/she tries to perform this action in other location 18 | TFPUZZLEWIZARD.LABELLOCATIONTOF.CAPTION=Text on failure 19 | TFPUZZLEWIZARD.LABELINSTRUCTIONS1.CAPTION=Specify what player should type to succeed on puzzle. Also, if he/she needs to be in an specific location 20 | TFPUZZLEWIZARD.TABSHEETCONDITIONS.CAPTION=Conditions 21 | TFPUZZLEWIZARD.COMBOBOXCONDITIONSELECT.TEXT=Choose a condition... 22 | TFPUZZLEWIZARD.BUTTONADDCONDITION.HINT=Add Condition 23 | TFPUZZLEWIZARD.BUTTONADDCONDITION.CAPTION=Add 24 | TFPUZZLEWIZARD.LABELCONDTOF.CAPTION=Text on failure 25 | TFPUZZLEWIZARD.EDITCONDITIONTOF.HINT=Please specify response for player if this condition is not successful 26 | TFPUZZLEWIZARD.LABELCONDP1.CAPTION=LabelCondP1 27 | TFPUZZLEWIZARD.LABELCONDP2.CAPTION=LabelCondP2 28 | TFPUZZLEWIZARD.LABELINSTRUCTIONS2.CAPTION=If any additional conditions should be met for player success, add them here. 29 | TFPUZZLEWIZARD.TABSHEETACTIONS.CAPTION=Actions 30 | TFPUZZLEWIZARD.COMBOBOXACTIONSELECT.TEXT=Choose an action... 31 | TFPUZZLEWIZARD.BUTTONADDACTION.HINT=Add Action 32 | TFPUZZLEWIZARD.BUTTONADDACTION.CAPTION=Add 33 | TFPUZZLEWIZARD.LABELACTIONP1.CAPTION=LabelActionP1 34 | TFPUZZLEWIZARD.LABELACTIONP2.CAPTION=LabelActionP2 35 | TFPUZZLEWIZARD.GROUPBOX1.CAPTION=On success 36 | TFPUZZLEWIZARD.LABELTOS.CAPTION=Text on success 37 | TFPUZZLEWIZARD.EDITTOS.HINT=Enter text in case of success 38 | TFPUZZLEWIZARD.LABELINSTRRUCTIONS3.CAPTION=In case of success, please specify text output, and add any other actions that should be performed . 39 | TFPUZZLEWIZARD.TABSHEETCODEGEN.CAPTION=Success and options 40 | TFPUZZLEWIZARD.LABELINSTRUCTIONS4.CAPTION=Puzzle code has been generated, please click "Finish" to add it to your game code. 41 | TFPUZZLEWIZARD.BUTTONNEXT.CAPTION=&Next > 42 | TFPUZZLEWIZARD.BUTTONPREV.CAPTION=< &Previous 43 | TFPUZZLEWIZARD.PMDELETELINE.CAPTION=Delete 44 | TFPUZZLEWIZARD.PMMOVEUP.CAPTION=Move up 45 | TFPUZZLEWIZARD.PMMOVEDOWN.CAPTION=Move down 46 | -------------------------------------------------------------------------------- /newIDE/urunshell.pas: -------------------------------------------------------------------------------- 1 | unit URunShell; 2 | 3 | {$mode objfpc}{$H+} 4 | 5 | interface 6 | 7 | 8 | uses 9 | Classes, SysUtils, Process, UGlobals {$IFNDEF Windows}, BaseUnix {$ENDIF} ; 10 | 11 | const 12 | READ_BYTES = 2048; 13 | 14 | 15 | function RunShell(Executable: String; Parameters: String;WorkDir:String=''):TStringList; 16 | 17 | implementation 18 | 19 | function RunShell(Executable: String; Parameters: String;WorkDir:String=''):TStringList; 20 | var aProcess : TProcess; 21 | bytesRead: Longint; 22 | aMemStream :TMemoryStream; 23 | aOutputStringList : TStringList; 24 | NumBytes: LongInt; 25 | NextParameter : String; 26 | inQuotes: Boolean; 27 | i : integer; 28 | ngPAWSLIBPATH : String; 29 | isEscaped : Boolean; 30 | begin 31 | {$IFDEF Linux} 32 | ngPAWSLIBPATH := GetEnvironmentVariable('NGPAWS_LIBPATH'); 33 | if (ngPAWSLIBPATH) = '' then ngPAWSLIBPATH:=ExtractFilePath(fpReadLink('/proc/self/exe')); 34 | {$ENDIF} 35 | {$IFDEF darwin} 36 | ngPAWSLIBPATH := GetEnvironmentVariable('NGPAWS_LIBPATH'); 37 | if (ngPAWSLIBPATH) = '' then ngPAWSLIBPATH := ExtractFilePath(ParamStr(0)) + '../Resources/'; 38 | {$ENDIF} 39 | 40 | aMemStream := TMemoryStream.Create(); 41 | bytesRead := 0; 42 | aProcess := TProcess.Create(nil); 43 | {$IFNDEF Windows} 44 | aProcess.Environment.Add('NGPAWS_LIBPATH=' + ngPAWSLIBPATH); 45 | {$ENDIF} 46 | aProcess.Executable:=Executable; 47 | if (WorkDir<>'') then aProcess.CurrentDirectory:=WorkDir; 48 | inQuotes:= false; 49 | isEscaped := falsE; 50 | NextParameter:=''; 51 | for i:=1 to Length(Parameters) do 52 | begin 53 | if (Parameters[i]='"') then inQuotes := not inQuotes; 54 | if (Parameters[i] = ' ') and (not inQuotes) and (not isEscaped) then 55 | begin 56 | if NextParameter<>'' then begin aProcess.Parameters.Add(NextParameter); end; 57 | NextParameter := ''; 58 | end else NextParameter := NextParameter + Parameters[i]; 59 | end; 60 | isEscaped:=false; 61 | if (Parameters[i]='\') then isEscaped := true; 62 | if NextParameter<>'' then begin aProcess.Parameters.Add(NextParameter); end; 63 | 64 | aProcess.Options := aProcess.Options + [poUsePipes, poNoConsole,poStderrToOutPut]; 65 | aProcess.Execute; 66 | while True do 67 | begin 68 | aMemStream.SetSize(BytesRead + READ_BYTES); 69 | NumBytes := aProcess.Output.Read((aMemStream.Memory + BytesRead)^, READ_BYTES); 70 | if NumBytes > 0 71 | then Inc(BytesRead, NumBytes) else break; 72 | end; 73 | aMemStream.SetSize(BytesRead); 74 | aOutputStringList := TStringList.Create(); 75 | aOutputStringList.LoadFromStream(aMemStream); 76 | aOutputStringList.Insert(0,Executable + ' ' + Parameters + LF); 77 | aMemStream.Free(); 78 | aProcess.Free; 79 | Result := aOutputStringList; 80 | end; 81 | 82 | end. 83 | 84 | -------------------------------------------------------------------------------- /newIDE/usearchreplace.lfm: -------------------------------------------------------------------------------- 1 | object fSearchReplace: TfSearchReplace 2 | Left = 736 3 | Height = 428 4 | Top = 190 5 | Width = 368 6 | BorderStyle = bsDialog 7 | Caption = 'Search' 8 | ClientHeight = 428 9 | ClientWidth = 368 10 | DesignTimePPI = 120 11 | OnKeyDown = FormKeyDown 12 | OnKeyPress = FormKeyPress 13 | OnShow = FormShow 14 | LCLVersion = '2.0.12.0' 15 | object EditSearch: TEdit 16 | Left = 40 17 | Height = 31 18 | Top = 40 19 | Width = 300 20 | Font.CharSet = ANSI_CHARSET 21 | Font.Color = clBlack 22 | Font.Height = -17 23 | Font.Name = 'Segoe UI' 24 | Font.Pitch = fpVariable 25 | Font.Quality = fqDraft 26 | OnKeyPress = FormKeyPress 27 | ParentFont = False 28 | TabOrder = 0 29 | end 30 | object checkReplace: TCheckBox 31 | Left = 40 32 | Height = 27 33 | Top = 80 34 | Width = 83 35 | Caption = 'Replace' 36 | Font.CharSet = ANSI_CHARSET 37 | Font.Color = clBlack 38 | Font.Height = -17 39 | Font.Name = 'Segoe UI' 40 | Font.Pitch = fpVariable 41 | Font.Quality = fqDraft 42 | OnChange = checkReplaceChange 43 | OnKeyPress = FormKeyPress 44 | ParentFont = False 45 | TabOrder = 1 46 | end 47 | object LabelSearch: TLabel 48 | Left = 40 49 | Height = 23 50 | Top = 20 51 | Width = 51 52 | Caption = 'Search' 53 | Font.CharSet = ANSI_CHARSET 54 | Font.Color = clBlack 55 | Font.Height = -17 56 | Font.Name = 'Segoe UI' 57 | Font.Pitch = fpVariable 58 | Font.Quality = fqDraft 59 | ParentColor = False 60 | ParentFont = False 61 | end 62 | object EditReplace: TEdit 63 | Left = 40 64 | Height = 31 65 | Top = 120 66 | Width = 300 67 | Font.CharSet = ANSI_CHARSET 68 | Font.Color = clBlack 69 | Font.Height = -17 70 | Font.Name = 'Segoe UI' 71 | Font.Pitch = fpVariable 72 | Font.Quality = fqDraft 73 | OnKeyPress = FormKeyPress 74 | ParentFont = False 75 | TabOrder = 2 76 | end 77 | object checkCaseSensitive: TCheckBox 78 | Left = 39 79 | Height = 27 80 | Top = 189 81 | Width = 131 82 | Caption = 'Case Sensitive' 83 | Font.CharSet = ANSI_CHARSET 84 | Font.Color = clBlack 85 | Font.Height = -17 86 | Font.Name = 'Segoe UI' 87 | Font.Pitch = fpVariable 88 | Font.Quality = fqDraft 89 | OnKeyPress = FormKeyPress 90 | ParentFont = False 91 | TabOrder = 3 92 | end 93 | object checkWholeWordsOnly: TCheckBox 94 | Left = 40 95 | Height = 27 96 | Top = 220 97 | Width = 164 98 | Caption = 'Whole Words only' 99 | Font.CharSet = ANSI_CHARSET 100 | Font.Color = clBlack 101 | Font.Height = -17 102 | Font.Name = 'Segoe UI' 103 | Font.Pitch = fpVariable 104 | Font.Quality = fqDraft 105 | ParentFont = False 106 | TabOrder = 4 107 | end 108 | object checkOnlyFromCursor: TCheckBox 109 | Left = 39 110 | Height = 27 111 | Top = 250 112 | Width = 152 113 | Caption = 'Only from cursor' 114 | Checked = True 115 | Font.CharSet = ANSI_CHARSET 116 | Font.Color = clBlack 117 | Font.Height = -17 118 | Font.Name = 'Segoe UI' 119 | Font.Pitch = fpVariable 120 | Font.Quality = fqDraft 121 | OnKeyPress = FormKeyPress 122 | ParentFont = False 123 | State = cbChecked 124 | TabOrder = 5 125 | end 126 | object checkOnlyInSelection: TCheckBox 127 | Left = 40 128 | Height = 27 129 | Top = 280 130 | Width = 150 131 | Caption = 'Only in selection' 132 | Font.CharSet = ANSI_CHARSET 133 | Font.Color = clBlack 134 | Font.Height = -17 135 | Font.Name = 'Segoe UI' 136 | Font.Pitch = fpVariable 137 | Font.Quality = fqDraft 138 | OnKeyPress = FormKeyPress 139 | ParentFont = False 140 | TabOrder = 6 141 | end 142 | object bOk: TButton 143 | Left = 128 144 | Height = 55 145 | Top = 336 146 | Width = 95 147 | Caption = 'Ok' 148 | Font.CharSet = ANSI_CHARSET 149 | Font.Color = clBlack 150 | Font.Height = -17 151 | Font.Name = 'Segoe UI' 152 | Font.Pitch = fpVariable 153 | Font.Quality = fqDraft 154 | ModalResult = 1 155 | ParentFont = False 156 | TabOrder = 7 157 | end 158 | object bCancel: TButton 159 | Left = 245 160 | Height = 55 161 | Top = 336 162 | Width = 95 163 | Caption = 'Cancel' 164 | Font.CharSet = ANSI_CHARSET 165 | Font.Color = clBlack 166 | Font.Height = -17 167 | Font.Name = 'Segoe UI' 168 | Font.Pitch = fpVariable 169 | Font.Quality = fqDraft 170 | ModalResult = 2 171 | ParentFont = False 172 | TabOrder = 8 173 | end 174 | end 175 | -------------------------------------------------------------------------------- /newIDE/usearchreplace.lrj: -------------------------------------------------------------------------------- 1 | {"version":1,"strings":[ 2 | {"hash":94079128,"name":"tfsearchreplace.caption","sourcebytes":[83,101,97,114,99,104],"value":"Search"}, 3 | {"hash":147269573,"name":"tfsearchreplace.checkreplace.caption","sourcebytes":[82,101,112,108,97,99,101],"value":"Replace"}, 4 | {"hash":94079128,"name":"tfsearchreplace.labelsearch.caption","sourcebytes":[83,101,97,114,99,104],"value":"Search"}, 5 | {"hash":219680245,"name":"tfsearchreplace.checkcasesensitive.caption","sourcebytes":[67,97,115,101,32,83,101,110,115,105,116,105,118,101],"value":"Case Sensitive"}, 6 | {"hash":153575129,"name":"tfsearchreplace.checkwholewordsonly.caption","sourcebytes":[87,104,111,108,101,32,87,111,114,100,115,32,111,110,108,121],"value":"Whole Words only"}, 7 | {"hash":230976162,"name":"tfsearchreplace.checkonlyfromcursor.caption","sourcebytes":[79,110,108,121,32,102,114,111,109,32,99,117,114,115,111,114],"value":"Only from cursor"}, 8 | {"hash":67929678,"name":"tfsearchreplace.checkonlyinselection.caption","sourcebytes":[79,110,108,121,32,105,110,32,115,101,108,101,99,116,105,111,110],"value":"Only in selection"}, 9 | {"hash":1371,"name":"tfsearchreplace.bok.caption","sourcebytes":[79,107],"value":"Ok"}, 10 | {"hash":77089212,"name":"tfsearchreplace.bcancel.caption","sourcebytes":[67,97,110,99,101,108],"value":"Cancel"} 11 | ]} 12 | -------------------------------------------------------------------------------- /newIDE/usearchreplace.lrt: -------------------------------------------------------------------------------- 1 | TFSEARCHREPLACE.CAPTION=Search 2 | TFSEARCHREPLACE.CHECKREPLACE.CAPTION=Replace 3 | TFSEARCHREPLACE.LABELSEARCH.CAPTION=Search 4 | TFSEARCHREPLACE.CHECKCASESENSITIVE.CAPTION=Case Sensitive 5 | TFSEARCHREPLACE.CHECKWHOLEWORDSONLY.CAPTION=Whole Words only 6 | TFSEARCHREPLACE.CHECKONLYFROMCURSOR.CAPTION=Only from cursor 7 | TFSEARCHREPLACE.CHECKONLYINSELECTION.CAPTION=Only in selection 8 | TFSEARCHREPLACE.BOK.CAPTION=Ok 9 | TFSEARCHREPLACE.BCANCEL.CAPTION=Cancel 10 | -------------------------------------------------------------------------------- /newIDE/usearchreplace.pas: -------------------------------------------------------------------------------- 1 | unit USearchReplace; 2 | 3 | {$mode objfpc}{$H+} 4 | 5 | interface 6 | 7 | uses 8 | Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls; 9 | 10 | type 11 | 12 | { TfSearchReplace } 13 | 14 | TfSearchReplace = class(TForm) 15 | bOk: TButton; 16 | bCancel: TButton; 17 | checkReplace: TCheckBox; 18 | checkCaseSensitive: TCheckBox; 19 | checkWholeWordsOnly: TCheckBox; 20 | checkOnlyFromCursor: TCheckBox; 21 | checkOnlyInSelection: TCheckBox; 22 | EditSearch: TEdit; 23 | EditReplace: TEdit; 24 | LabelSearch: TLabel; 25 | procedure checkReplaceChange(Sender: TObject); 26 | procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); 27 | procedure FormKeyPress(Sender: TObject; var Key: char); 28 | procedure FormShow(Sender: TObject); 29 | private 30 | { private declarations } 31 | public 32 | { public declarations } 33 | end; 34 | 35 | var 36 | fSearchReplace: TfSearchReplace; 37 | 38 | implementation 39 | 40 | {$R *.lfm} 41 | 42 | 43 | 44 | { TfSearchReplace } 45 | 46 | procedure TfSearchReplace.checkReplaceChange(Sender: TObject); 47 | begin 48 | EditReplace.Enabled := checkReplace.Checked; 49 | if not EditReplace.Enabled then EditReplace.Text:=''; 50 | 51 | end; 52 | 53 | procedure TfSearchReplace.FormKeyDown(Sender: TObject; var Key: Word; 54 | Shift: TShiftState); 55 | begin 56 | 57 | end; 58 | 59 | procedure TfSearchReplace.FormKeyPress(Sender: TObject; var Key: char); 60 | begin 61 | if (key = #27) then Close(); 62 | if (key = #13) then bOk.Click(); 63 | end; 64 | 65 | procedure TfSearchReplace.FormShow(Sender: TObject); 66 | begin 67 | EditSearch.SetFocus(); 68 | end; 69 | 70 | end. 71 | 72 | -------------------------------------------------------------------------------- /plugins/CA/inventory_worn_by_gender_lib/ACCinven_lib.jsp: -------------------------------------------------------------------------------- 1 | function ACCinven() 2 | { 3 | var count = 0; 4 | writeSysMessage(SYSMESS_YOUARECARRYING); 5 | ACCnewline(); 6 | var listnpcs_with_objects = !bittest(getFlag(FLAG_PARSER_SETTINGS),3); 7 | var i; 8 | for (i=0;i'); 19 | } else $('.graphics').html(''); 20 | $('.location_picture').css('height','100%'); 21 | pictureDraw = true; 22 | } 23 | } 24 | 25 | if (!pictureDraw) hideGraphicsWindow(); 26 | } 27 | 28 | -------------------------------------------------------------------------------- /plugins/draw_picture_svg_lib/leeme.md: -------------------------------------------------------------------------------- 1 | Nombre de la librería: draw_picture_svg_lib 2 | Sobreescribe: drawPicture() 3 | Uso: raro, bastante específico 4 | Instalación: copia `draw_picture_svg_lib` en la carpeta `jsl` del proyecto y compila. 5 | 6 | Información: Esta librería sobreescribe la forma que tiene ngPAWS de mostrar las imágenes svg en html que es perfecta para un uso general, pero en mi caso voy al límite. 7 | Si tenemos por ejemplo un svg incrustado dentro de otro, por defecto, ngPAWS no mostrará la imagen compuesta. Ejemplo: 8 | 9 | ``` 10 | / 11 | | base.svg 12 | | compuesto.svg | base.svg 13 | ``` 14 | La función por defecto `drawPicture()` mostrará un `composed.svg` vacío. 15 | Con esta librería se añade un elemento `` alrededor del svg y se muestra el `composed.svg` y su imagen enlazada `base.svg` 16 | 17 | -------------------------------------------------------------------------------- /plugins/draw_picture_svg_lib/readme.md: -------------------------------------------------------------------------------- 1 | Lib name: draw_picture_svg_lib 2 | Overrides: drawPicture() 3 | Use: seldom, quite specific 4 | Installation: copy `draw_picture_svg_lib` to project `jsl` folder and compile the game. 5 | 6 | About: This library overrides the way ngPAWS shows the svg images in html. For general cases, default behaviour is perfect, but in my case I stretch the use of the svg. 7 | Having, for example, a svg embeded into another svg, default behaviour will not show the composed picture. Example: 8 | 9 | ``` 10 | / 11 | | base.svg 12 | | composed.svg | base.svg 13 | ``` 14 | Default `drawPicture()` will show and empty `composed.svg` 15 | This lib will add a `` round the svg and display the `composed.svg` and it's linked `base.svg` 16 | 17 | -------------------------------------------------------------------------------- /plugins/extraAttr_lib/LEEME.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Utodev/ngPAWS/ab874b5ab49e2ec520b27bf97823ccfa9c907359/plugins/extraAttr_lib/LEEME.txt -------------------------------------------------------------------------------- /plugins/extraAttr_lib/README.txt: -------------------------------------------------------------------------------- 1 | This extension allows author to use extra numeric attributes for objects in the game, for instance a "hit points" attribute can be assigned, or a density one. 2 | 3 | New condacts: 4 | 5 | ATTRLET "string" objno value --> sets value for attribute "string" for object objno to value 6 | ATTRGET "string" objno flagno --> copies value of attribute "string" for object objno into flag flagno 7 | 8 | Example: 9 | 10 | ATTRLET "hitpoints" 10 100 11 | ATTRGET "hitpoints" 10 fAux 12 | 13 | NOTE: attribute names should be valid at javascript level, so basically they should contain only characters from a-z, A-Z, 0-9 and underscore, never starting with a number. 14 | 15 | License: MIT (https://opensource.org/licenses/MIT) -------------------------------------------------------------------------------- /plugins/extraAttr_lib/attrget.jsp: -------------------------------------------------------------------------------- 1 | //CND ATTRGET A 14 4 1 0 2 | 3 | function ACCattrget(writeno, objno, flagno) 4 | { 5 | if (typeof (eval('objExtraAttr.' + writemessages[writeno])) == 'undefined') 6 | { 7 | setFlag(flagno, 0); 8 | return; 9 | } 10 | 11 | eval('setFlag(flagno,objExtraAttr.' + writemessages[writeno] + '['+objno+'])'); 12 | if (typeof (getFlag(flagno)) =='undefined') setFlag(flagno, 0); 13 | } -------------------------------------------------------------------------------- /plugins/extraAttr_lib/attrlet.jsp: -------------------------------------------------------------------------------- 1 | //CND ATTRLET A 14 4 2 0 2 | 3 | function ACCattrlet(writeno, objno, value) 4 | { 5 | if (typeof (eval('objExtraAttr.' + writemessages[writeno])) == 'undefined') eval('objExtraAttr.' + writemessages[writeno] + '=[]'); 6 | eval('objExtraAttr.' + writemessages[writeno] + '['+objno+']=' + value); 7 | } -------------------------------------------------------------------------------- /plugins/extraAttr_lib/attrlib.jsp: -------------------------------------------------------------------------------- 1 | //LIB extra attr 2 | 3 | var objExtraAttr = new Object();; 4 | 5 | var old_extraattr_h_saveGame = h_saveGame; 6 | 7 | h_saveGame = function(savegame_object) 8 | { 9 | savegame_object.objExtraAttr = objExtraAttrts.slice(); 10 | old_extraattr_h_saveGame(savegame_object); 11 | return savegame_object; 12 | } 13 | 14 | var old_extraattr_h_restoreGame = h_restoreGame; 15 | 16 | h_restoreGame = function(savegame_object) 17 | { 18 | objExtraAttr = savegame_object.objExtraAttr.slice(); 19 | old_extraattr_h_restoreGame(savegame_object); 20 | } -------------------------------------------------------------------------------- /plugins/listSavedGames_lib (import-export)/Changes.txt: -------------------------------------------------------------------------------- 1 | List of changes 2 | v1.0 3 | - List saved games in one line 4 | - Saved games as links 5 | - Added import and export option 6 | -------------------------------------------------------------------------------- /plugins/listSavedGames_lib (import-export)/Leeme.txt: -------------------------------------------------------------------------------- 1 | Este plugin añade un nuevo condacto que muestra una lista de las partidas guardadas en la sesión del navegador con opción de exportar e importar los juegos guardados (json). 2 | 3 | Ejemplo: 4 | 5 | PARTIDAS _ 6 | LISTSAVEDGAMES 7 | DONE 8 | 9 | Uso: 10 | - Copiar listsavedgames.jsp a la carpeta /jsl del juego 11 | - Añadir al archivo .txp del juego una respuesta con el condacto LISTSAVEDGAMES 12 | - Compilar 13 | 14 | Licencia: MIT (https://opensource.org/licenses/MIT) 15 | 16 | Código a partir de: 17 | - https://developer.mozilla.org/en-US/docs/Web/API/FileReader/readAsText 18 | - https://gist.github.com/yiwenl/8f2b735a2263bc93ee33 19 | 20 | -------------------------------------------------------------------------------- /plugins/listSavedGames_lib (import-export)/Readme.txt: -------------------------------------------------------------------------------- 1 | This plugin adds a new condacto that shows a list of the saved games in the browser session and add import/export capabilities. 2 | 3 | Example: 4 | 5 | GAMES _ 6 | LISTSAVEDGAMES 7 | DONE 8 | 9 | Use: 10 | - Copy listsavedgames.jsp to the games folder /jsl 11 | - Add an entry to the .txp using the condact LISTSAVEDGAMES 12 | - Compile 13 | 14 | License: MIT (https://opensource.org/licenses/MIT) 15 | -------------------------------------------------------------------------------- /plugins/listSavedGames_lib (import-export)/listsavedgames.jsp: -------------------------------------------------------------------------------- 1 | //CND LISTSAVEDGAMES A 0 0 0 0 2 | //listsavedgames (i/o) v1.0 3 | 4 | function ACClistsavedgames() 5 | { 6 | var numberofgames = 0; 7 | for(var savedgames in localStorage) 8 | { 9 | gamePrefix = savedgames.substring(0,16); // takes out ngpaws_savegame_ 10 | if (gamePrefix == "ngpaws_savegame_") 11 | { 12 | gameName = savedgames.substring(16); 13 | if (numberofgames > 0) writeText(", "); // add a coma if needed 14 | writeText(filterText("{EXTERN|loadgame('" + gameName + "')|" + gameName + "}")); 15 | writeText(filterText(" {EXTERN|exportgame('" + gameName + "')|[↧]}")); 16 | writelnText(gameName); 17 | numberofgames++; 18 | } 19 | } 20 | if (numberofgames == 0) 21 | { 22 | if (getLang()=='EN') writelnText("No saved games found."); else writelnText("No hay ninguna partida guardada."); 23 | } 24 | else writeText(STR_NEWLINE); // End list with a new line 25 | 26 | if (getLang()=='EN') writelnText(filterText("You could also {EXTERN|importgame()|import} a saved game")); else writelnText(filterText("También se puede {EXTERN|importgame()|importar} una partida")); 27 | } 28 | 29 | //LIB LOADGAME 30 | 31 | function loadgame(gametitle) 32 | { 33 | filename = gametitle; 34 | var json_str; 35 | if (filename == null) filename = prompt(getSysMessageText(SYSMESS_LOADFILE),''); 36 | json_str = localStorage.getItem('ngpaws_savegame_' + filename.toUpperCase()); 37 | if (json_str) 38 | { 39 | savegame_object = JSON.parse(json_str.trim()); 40 | restoreSaveGameObject(savegame_object); 41 | ACCanykey(); //TODO: Fix this workaround to make ACCdesc to work 42 | ACCdesc(); 43 | } 44 | else 45 | { 46 | writeSysMessage(SYSMESS_FILENOTFOUND); 47 | ACCnewline(); 48 | done_flag = true; 49 | } 50 | focusInput(); 51 | } 52 | 53 | //LIB EXPORTGAME 54 | 55 | function exportgame(gametitle) 56 | { 57 | filename = gametitle; 58 | var json_str; 59 | if (filename == null) filename = prompt(getSysMessageText(SYSMESS_LOADFILE),''); 60 | json_str = localStorage.getItem('ngpaws_savegame_' + filename.toUpperCase()); 61 | if (json_str) 62 | { 63 | var blob = new Blob([json_str], {type:"application/json;charset=utf-8"}); 64 | var url = URL.createObjectURL( blob ); 65 | var link = document.createElement( 'a' ); 66 | link.setAttribute( 'href', url ); 67 | link.setAttribute( 'download', filename + '.json' ); 68 | var event = document.createEvent( 'MouseEvents' ); 69 | event.initMouseEvent( 'click', true, true, window, 1, 0, 0, 0, 0, false, false, false, false, 0, null); 70 | link.dispatchEvent( event ); 71 | } 72 | else 73 | { 74 | writeSysMessage(SYSMESS_FILENOTFOUND); 75 | ACCnewline(); 76 | done_flag = true; 77 | } 78 | focusInput(); 79 | } 80 | 81 | //LIB IMPORTGAME 82 | 83 | function importgame() 84 | { 85 | var link = document.createElement('input'); 86 | link.setAttribute('type', 'file'); 87 | link.setAttribute('id', 'inputjson'); 88 | link.setAttribute('onchange', 'readJSONFile(this.files[0])'); 89 | var event = document.createEvent( 'MouseEvents' ); 90 | event.initMouseEvent('click', true, true, window, 1, 0, 0, 0, 0, false, false, false, false, 0, null); 91 | link.dispatchEvent(event); 92 | } 93 | 94 | async function readJSONFile(file) { 95 | let fileReader = new FileReader(); 96 | fileReader.addEventListener("load", e => { 97 | try { 98 | var gameObject = JSON.parse(fileReader.result); 99 | restoreSaveGameObject(gameObject); 100 | if (getLang()=='EN') writelnText("Saved game imported. Loading"); else writelnText("Saved game importado. Cargando"); 101 | ACCanykey(); //TODO: Fix this workaround to make ACCdesc to work 102 | ACCdesc(); 103 | focusInput(); 104 | } 105 | catch (e) { 106 | if (getLang()=='EN') writelnText("Couldn't read json information. Wrong format?"); else writelnText("No se ha podido leer el json. ¿Error de formato?"); 107 | console.log("Error loading saved game json", e); 108 | } 109 | }); 110 | fileReader.readAsText(file); 111 | } 112 | 113 | -------------------------------------------------------------------------------- /plugins/listSavedGames_lib/Changes.txt: -------------------------------------------------------------------------------- 1 | List of changes 2 | v1.0 (not specified) 3 | - List saved games 4 | 5 | v1.1 6 | - List saved games in a same line 7 | - Treat results as links to load the saved game tapping on each one 8 | -------------------------------------------------------------------------------- /plugins/listSavedGames_lib/Leeme.txt: -------------------------------------------------------------------------------- 1 | Este plugin añade un nuevo condacto que muestra una lista de las partidas guardadas en la sesión del navegador. 2 | 3 | Ejemplo: 4 | 5 | PARTIDAS _ 6 | LISTSAVEDGAMES 7 | DONE 8 | 9 | Uso: 10 | - Copiar listsavedgames.jsp a la carpeta /jsl del juego 11 | - Añadir al archivo .txp del juego una respuesta con el condacto LISTSAVEDGAMES 12 | - Compilar 13 | 14 | Licencia: MIT (https://opensource.org/licenses/MIT) 15 | -------------------------------------------------------------------------------- /plugins/listSavedGames_lib/Readme.txt: -------------------------------------------------------------------------------- 1 | This plugin adds a new condacto that shows a list of the saved games in the browser session. 2 | 3 | Example: 4 | 5 | GAMES _ 6 | LISTSAVEDGAMES 7 | DONE 8 | 9 | Use: 10 | - Copy listsavedgames.jsp to the games folder /jsl 11 | - Add an entry to the .txp using the condact LISTSAVEDGAMES 12 | - Compile 13 | 14 | License: MIT (https://opensource.org/licenses/MIT) 15 | -------------------------------------------------------------------------------- /plugins/listSavedGames_lib/listsavedgames.jsp: -------------------------------------------------------------------------------- 1 | //CND LISTSAVEDGAMES A 0 0 0 0 2 | //listsavedgames v1.1 3 | 4 | function ACClistsavedgames() 5 | { 6 | var numberofgames = 0; 7 | for(var savedgames in localStorage) 8 | { 9 | gamePrefix = savedgames.substring(0,16); // takes out ngpaws_savegame_ 10 | if (gamePrefix == "ngpaws_savegame_") 11 | { 12 | gameName = savedgames.substring(16); 13 | if (numberofgames > 0) writeText(", "); // add a coma if needed 14 | writeText(filterText("{EXTERN|loadgame('" + gameName + "')|" + gameName + "}")); 15 | writelnText(gameName); 16 | numberofgames++; 17 | } 18 | } 19 | if (numberofgames == 0) 20 | { 21 | if (getLang()=='EN') writelnText("No saved games found."); else writelnText("No hay ninguna partida guardada."); 22 | } 23 | else writeText(STR_NEWLINE); // End list with a new line 24 | } 25 | 26 | //LIB LOADGAME 27 | 28 | function loadgame(gametitle) 29 | { 30 | filename = gametitle; 31 | var json_str; 32 | if (filename == null) filename = prompt(getSysMessageText(SYSMESS_LOADFILE),''); 33 | json_str = localStorage.getItem('ngpaws_savegame_' + filename.toUpperCase()); 34 | if (json_str) 35 | { 36 | savegame_object = JSON.parse(json_str.trim()); 37 | restoreSaveGameObject(savegame_object); 38 | ACCanykey(); //TODO: Fix this workaround to make ACCdesc to work 39 | ACCdesc(); 40 | } 41 | else 42 | { 43 | writeSysMessage(SYSMESS_FILENOTFOUND); 44 | ACCnewline(); 45 | done_flag = true; 46 | } 47 | focusInput(); 48 | } 49 | -------------------------------------------------------------------------------- /plugins/loc_attributes_lib/lclear.jsp: -------------------------------------------------------------------------------- 1 | //CND LCLEAR A 8 2 0 0 2 | 3 | function ACClclear(locno, attrno) 4 | { 5 | if (attrno > 63) return; 6 | if (attrno <= 31) 7 | { 8 | var attrs = locsAttrLO[locno]; 9 | attrs = bitclear(attrs, attrno); 10 | locsAttrLO[locno] = attrs; 11 | return; 12 | } 13 | var attrs = locsAttrHI[locno]; 14 | attrno = attrno - 32; 15 | attrs = bitclear(attrs, attrno); 16 | locsAttrHI[locno] = attrs; 17 | 18 | } -------------------------------------------------------------------------------- /plugins/loc_attributes_lib/leeme.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Utodev/ngPAWS/ab874b5ab49e2ec520b27bf97823ccfa9c907359/plugins/loc_attributes_lib/leeme.txt -------------------------------------------------------------------------------- /plugins/loc_attributes_lib/linit.jsp: -------------------------------------------------------------------------------- 1 | //CND LINIT A 8 2 2 0 2 | 3 | function ACClinit(locno, value1, value2) 4 | { 5 | locsAttrLO[locno] = value1; 6 | locsAttrHI[locno] = value2; 7 | } 8 | -------------------------------------------------------------------------------- /plugins/loc_attributes_lib/lneg.jsp: -------------------------------------------------------------------------------- 1 | //CND LNEG A 8 2 0 0 2 | 3 | function ACClneg(locno, attrno) 4 | { 5 | if (attrno > 63) return; 6 | if (attrno <= 31) 7 | { 8 | var attrs = locsAttrLO[locno]; 9 | attrs = bitneg(attrs, attrno); 10 | locsAttrLO[locno] = attrs; 11 | return; 12 | } 13 | var attrs = locsAttrHI[locno]; 14 | attrno = attrno - 32; 15 | attrs = bitneg(attrs, attrno); 16 | locsAttrHI[locno] = attrs; 17 | } 18 | -------------------------------------------------------------------------------- /plugins/loc_attributes_lib/lnotzero.jsp: -------------------------------------------------------------------------------- 1 | //CND LNOTZERO C 8 2 0 0 2 | 3 | 4 | function CNDlnotzero(locno, attrno) 5 | { 6 | if (attrno > 63) return false; 7 | return locIsAttr(locno, attrno); 8 | } -------------------------------------------------------------------------------- /plugins/loc_attributes_lib/loc_attributes.jsp: -------------------------------------------------------------------------------- 1 | //LIB loc_attributes.jsp 2 | 3 | // This library implements attributes for locations, just like the object attributes 4 | 5 | 6 | locsAttrLO = []; 7 | locsAttrHI = []; 8 | 9 | 10 | var old_locattr_h_saveGame = h_saveGame; 11 | 12 | h_saveGame = function(savegame_object) 13 | { 14 | savegame_object.locsAttrLO = locsAttrLO.slice(); 15 | savegame_object.locsAttrHI = locsAttrHI.slice(); 16 | old_locattr_h_saveGame(savegame_object); 17 | return savegame_object; 18 | } 19 | 20 | var old_locattr_h_restoreGame = h_restoreGame; 21 | 22 | h_restoreGame = function(savegame_object) 23 | { 24 | locsAttrLO = savegame_object.locsAttrLO.slice(); 25 | locsAttrHI = savegame_object.locsAttrHI.slice(); 26 | old_locattr_h_restoreGame(savegame_object); 27 | } 28 | 29 | // AUX 30 | function locIsAttr(locno, attrno) 31 | { 32 | if (attrno > 63) return false; 33 | var attrs = locsAttrLO[locno]; 34 | if (attrno > 31) 35 | { 36 | attrs = locsAttrHI[locno]; 37 | attrno = attrno - 32; 38 | } 39 | return bittest(attrs, attrno); 40 | } 41 | -------------------------------------------------------------------------------- /plugins/loc_attributes_lib/lset.jsp: -------------------------------------------------------------------------------- 1 | //CND LSET A 8 2 0 0 2 | 3 | function ACClset(locno, attrno) 4 | { 5 | if (attrno > 63) return; 6 | if (attrno <= 31) 7 | { 8 | var attrs = locsAttrLO[locno]; 9 | attrs = bitset(attrs, attrno); 10 | locsAttrLO[locno] = attrs; 11 | return; 12 | } 13 | var attrs = locsAttrHI[locno]; 14 | attrno = attrno - 32; 15 | attrs = bitset(attrs, attrno); 16 | locsAttrHI[locno] = attrs; 17 | 18 | } -------------------------------------------------------------------------------- /plugins/loc_attributes_lib/lzero.jsp: -------------------------------------------------------------------------------- 1 | //CND LZERO C 8 2 0 0 2 | 3 | 4 | function CNDlzero(locno, attrno) 5 | { 6 | if (attrno > 63) return false; 7 | return !locIsAttr(locno, attrno); 8 | } -------------------------------------------------------------------------------- /plugins/loc_attributes_lib/readme.txt: -------------------------------------------------------------------------------- 1 | This library implements attributes for locations, just like the attributes for objects. It also implements several condacts, similar to those for object attributes: 2 | 3 | - LCLEAR --> like OCLEAR 4 | - LSET --> like OSET 5 | - LNEG --> like ONEG 6 | - LZERO --> like OZERO 7 | - LNOTZERO --> like oNOTZERO 8 | 9 | Finally, as there is no way to define attributes in the game database, there is a condacta named LINIT: 10 | 11 | LINIT locno low_attributes high_attributes 12 | 13 | You can use it the old way (i.e. if locatyion has attributes 0 and 1 active): 14 | 15 | LINIT 10 11000000000000000000000000000000 00000000000000000000000000000000 16 | 17 | Or you can use txtpaws ATTR feature: 18 | 19 | #define const laLargeRoom 0 20 | #define const laDangerousPlace 1 21 | 22 | LINIT 10 ATTR laLargeRoom laDangerousPlace 23 | 24 | Also, you can use it "the hard way" using decimal numbers: 25 | 26 | LINIT 10 3 0 27 | 28 | Please notice that despite the condact being named LINIT (location initialize), it can be used as many times as you want in the same location, if that ever makes sense. 29 | 30 | 31 | IMPORTANT NOTE: 32 | 33 | Please notice that due to a limitation in ngPAWS compiler, that uses last bit of each parameter to mark if it has indirection, LINIT cannot use location attributes 31 and 63 cannot be used (must allways be set to 0). 34 | Once initialized, they can be used normally (and can be set with LSET), but using them is not recommended unless all the other 62 attributes have been used. 35 | 36 | 37 | License: MIT (https://opensource.org/licenses/MIT) -------------------------------------------------------------------------------- /plugins/longdescription_lib/longdescription_lib.jsp: -------------------------------------------------------------------------------- 1 | //LIB longdescription_lib.jsp 2 | 3 | var objects_longdescription = []; 4 | 5 | var examine_longdescription = 30; 6 | 7 | var old_longdesc_h_code = h_code; 8 | 9 | h_code = function(str) 10 | { 11 | if (str=="RESPONSE_USER") 12 | { 13 | if (getFlag(33)==examine_longdescription) // Examine 14 | if (getFlag(51)!=EMPTY_OBJECT) // Is an object 15 | if (objects_longdescription[getFlag(51)]!='') // Has long description 16 | if (CNDpresent(getFlag(51))) // Is present 17 | { 18 | writeText(filterText(objects_longdescription[getFlag(51)])); 19 | var viewContents = false; 20 | // Time to list contents if... 21 | // It's a supporter 22 | if (objectIsAttr(getFlag(51),ATTR_SUPPORTER)) viewContents = true; 23 | // It's a transparent container 24 | if ((objectIsAttr(getFlag(51),ATTR_CONTAINER)) && (objectIsAttr(getFlag(51),ATTR_TRANSPARENT))) viewContents = true; 25 | // It's a not openable container 26 | if ((objectIsAttr(getFlag(51),ATTR_CONTAINER)) && (!objectIsAttr(getFlag(51),ATTR_OPENABLE))) viewContents = true; 27 | // It's an openable container that is open 28 | if ((objectIsAttr(getFlag(51),ATTR_CONTAINER)) && (objectIsAttr(getFlag(51),ATTR_OPENABLE)) && (objectIsAttr(getFlag(51),ATTR_OPEN))) viewContents = true; 29 | // but if there is nothing inside/over, then no need to list 30 | if (getObjectCountAt(getFlag(51))==0) viewContents = false; 31 | if (viewContents) ACClistcontents(getFlag(51)); 32 | writeSysMessage(SYSMESS_LISTEND); 33 | ACCnewline(); 34 | ACCdone(); 35 | } 36 | } 37 | old_longdesc_h_code(str); 38 | } 39 | 40 | var old_longdesc_h_init = h_init; 41 | 42 | h_init = function() 43 | { 44 | var test = /^((?:&[^;]*;|[^&])*)#([^]*)/; 45 | for (var i=0;i=MAX_SETS) || (setno<0)) return false; 6 | setno--; 7 | return sets[setno].indexOf(value)!=-1; 8 | } 9 | -------------------------------------------------------------------------------- /plugins/sets_lib/notin.jsp: -------------------------------------------------------------------------------- 1 | //CND NOTIN C 2 2 0 0 2 | 3 | function CNDnotin(setno, value) 4 | { 5 | if ((setno>=MAX_SETS) || (setno<0)) return false; 6 | setno--; 7 | return sets[setno].indexOf(value)==-1; 8 | } 9 | -------------------------------------------------------------------------------- /plugins/sets_lib/readme.txt: -------------------------------------------------------------------------------- 1 | New condacts: 2 | 3 | setno = any value 1-4. If you need more sets edit sets_lib.jsp file and change MAX_SETS value. 4 | 5 | SPUSH setno value => Add value to a set 6 | SPOP setno value => Removes value from a set 7 | IN setno value => Condition, successful if value in set 8 | NOTIN setno value => Condition, successful if value not in set 9 | 10 | 11 | License: MIT (https://opensource.org/licenses/MIT) -------------------------------------------------------------------------------- /plugins/sets_lib/sets_lib.jsp: -------------------------------------------------------------------------------- 1 | //LIB sets_lib.jsp 2 | 3 | // This library implements the base code for supporting the sets condacts. It uses hooks to make sure sets are saved into the savegames 4 | 5 | 6 | MAX_SETS = 4; 7 | 8 | var sets =[]; 9 | 10 | var old_sets_h_saveGame = h_saveGame; 11 | 12 | for (var i=0;i=MAX_SETS) || (setno<0)) return; 6 | setno--; 7 | position = sets[setno].indexOf(value); 8 | if (position>0) sets[setno].splice(position,1); 9 | } 10 | -------------------------------------------------------------------------------- /plugins/sets_lib/spush.jsp: -------------------------------------------------------------------------------- 1 | //CND SPUSH A 2 2 0 0 2 | 3 | function ACCspush(setno, value) 4 | { 5 | 6 | if ((setno>=MAX_SETS) || (setno<0)) return; 7 | setno--; 8 | if (sets[setno].indexOf(value)==-1) sets[setno].push(value); 9 | } 10 | -------------------------------------------------------------------------------- /plugins/stack_queue_lib/pop.jsp: -------------------------------------------------------------------------------- 1 | //CND POP A 2 1 0 0 2 | 3 | function ACCpop(stackno, flagno) 4 | { 5 | if ((stackno>MAX_STACK) || (stackno<1)) return; 6 | stackno--; 7 | if (stacks[stackno].length == 0) return; 8 | retval = stacks[stackno][stacks[stackno].length -1]; 9 | stacks[stackno].splice(stacks[stackno].length -1,1); 10 | setFlag(flagno, retval); 11 | } 12 | -------------------------------------------------------------------------------- /plugins/stack_queue_lib/push.jsp: -------------------------------------------------------------------------------- 1 | //CND PUSH A 2 2 0 0 2 | 3 | function ACCpush(stackno, value) 4 | { 5 | 6 | if ((stackno>MAX_STACK) || (stackno<1)) return; 7 | stackno--; 8 | stacks[stackno].push(value); 9 | } 10 | -------------------------------------------------------------------------------- /plugins/stack_queue_lib/qpop.jsp: -------------------------------------------------------------------------------- 1 | //CND QPOP A 2 1 0 0 2 | 3 | function ACCqpop(queueno, flagno) 4 | { 5 | if ((queueno>MAX_QUEUE) || (queueno<1)) return; 6 | queueno--; 7 | if (queues[queueno].length == 0) return; 8 | retval = queues[queueno][0]; 9 | queues[queueno].splice(0,1); 10 | setFlag(flagno, retval); 11 | } 12 | -------------------------------------------------------------------------------- /plugins/stack_queue_lib/qpush.jsp: -------------------------------------------------------------------------------- 1 | //CND QPUSH A 2 2 0 0 2 | 3 | function ACCqpush(queueno, value) 4 | { 5 | 6 | if ((queueno>MAX_QUEUE) || (queueno<1)) return; 7 | queueno--; 8 | queues[queueno].push(value); 9 | } 10 | -------------------------------------------------------------------------------- /plugins/stack_queue_lib/readme.txt: -------------------------------------------------------------------------------- 1 | New condacts: 2 | 3 | queueno/stackno = any value 1-4. If you need more stacks/queues edit stack_queue_lib.jsp file and change MAX_QUEUE or MAX_STACK value. 4 | 5 | PUSH setno value => Add value to a stack 6 | POP setno flagno => Pops value from a stack and stores it in the flag (last in, first out) 7 | 8 | QPUSH setno value => Add value to a queue 9 | QPOP setno flagno => Pops value from a queue and stores it in the flag (first in, first out) 10 | 11 | 12 | License: MIT (https://opensource.org/licenses/MIT) -------------------------------------------------------------------------------- /plugins/stack_queue_lib/stack_queue_lib.jsp: -------------------------------------------------------------------------------- 1 | //LIB stack_queue_lib.jsp 2 | 3 | // This library implements the base code for supporting the queue and stacks condacts. It uses hooks to make sure stacks and queues are saved into the savegames 4 | 5 | 6 | MAX_QUEUE = 4; 7 | MAX_STACK = 4; 8 | 9 | var queues; 10 | var stacks; 11 | 12 | var old_stackqueue_h_saveGame = h_saveGame; 13 | 14 | h_saveGame = function(savegame_object) 15 | { 16 | savegame_object.queues = queues.slice(); 17 | savegame_object.stacks = stacks.slice(); 18 | old_stackqueue_h_saveGame(savegame_object); 19 | return savegame_object; 20 | } 21 | 22 | var old_stackqueue_h_restoreGame = h_restoreGame; 23 | 24 | h_restoreGame = function(savegame_object) 25 | { 26 | queues = savegame_object.queues.slice(); 27 | stacks = savegame_object.stacks.slice(); 28 | old_stackqueue_h_restoreGame(savegame_object); 29 | } --------------------------------------------------------------------------------