├── .gitignore ├── LICENSE ├── README.md ├── binaries ├── brogue-ce110 ├── brogue-ce111 ├── brogue-ce120 ├── brogue-ce130 ├── brogue-ce140 ├── brogue-ce18 ├── brogue-ce19-c813284 ├── brogue-ce193-d22c4a1 ├── brogue-fd99bbe ├── brogue-v174 ├── brogue-v175 ├── brogueplus-v1741 ├── bullet-brogue-v100 ├── bullet-brogue-v110 ├── gbrogue-v1180211 ├── rapid-brogue-v100 ├── rapid-brogue-v110 ├── rapid-brogue-v120 ├── rapid-brogue-v130 ├── rapid-brogue-v140 └── unbrogue-v116 ├── brogue-1.7.5 ├── Brogue seed catalog.txt ├── Makefile ├── Makefile.clang ├── Readme.rtf ├── agpl.txt ├── bin │ ├── brogue-icon.png │ ├── fonts │ │ ├── font-1.png │ │ ├── font-10.png │ │ ├── font-11.png │ │ ├── font-12.png │ │ ├── font-13.png │ │ ├── font-2.png │ │ ├── font-3.png │ │ ├── font-4.png │ │ ├── font-5.png │ │ ├── font-6.png │ │ ├── font-7.png │ │ ├── font-8.png │ │ └── font-9.png │ ├── icon.bmp │ └── keymap ├── brogue ├── brogue.desktop ├── make-link-for-desktop.sh ├── readme └── src │ ├── .DS_Store │ ├── brogue │ ├── .DS_Store │ ├── Architect.c │ ├── Buttons.c │ ├── Combat.c │ ├── Dijkstra.c │ ├── Globals.c │ ├── Grid.c │ ├── IO.c │ ├── IncludeGlobals.h │ ├── Items.c │ ├── Light.c │ ├── MainMenu.c │ ├── Monsters.c │ ├── Movement.c │ ├── PowerTables.c │ ├── Random.c │ ├── Recordings.c │ ├── Rogue.h │ ├── RogueMain.c │ ├── Sqrt.c │ └── Time.c │ ├── get-libtcod.sh │ ├── libtcod-1.5.2 │ ├── LIBTCOD-CREDITS.txt │ ├── LIBTCOD-LICENSE.txt │ ├── Makefile │ ├── README-SDL.txt │ ├── REVISION.txt │ ├── data │ │ ├── cfg │ │ │ └── sample.cfg │ │ ├── fonts │ │ │ ├── README.txt │ │ │ ├── arial10x10.png │ │ │ ├── arial12x12.png │ │ │ ├── arial8x8.png │ │ │ ├── caeldera8x8_gs_tc.png │ │ │ ├── celtic_garamond_10x10_gs_tc.png │ │ │ ├── consolas10x10_gs_tc.png │ │ │ ├── consolas12x12_gs_tc.png │ │ │ ├── consolas8x8_gs_tc.png │ │ │ ├── consolas_unicode_10x10.png │ │ │ ├── consolas_unicode_12x12.png │ │ │ ├── consolas_unicode_16x16.png │ │ │ ├── consolas_unicode_8x8.png │ │ │ ├── courier10x10_aa_tc.png │ │ │ ├── courier12x12_aa_tc.png │ │ │ ├── courier8x8_aa_tc.png │ │ │ ├── dejavu10x10_gs_tc.png │ │ │ ├── dejavu12x12_gs_tc.png │ │ │ ├── dejavu16x16_gs_tc.png │ │ │ ├── dejavu8x8_gs_tc.png │ │ │ ├── dejavu_wide12x12_gs_tc.png │ │ │ ├── dejavu_wide16x16_gs_tc.png │ │ │ ├── dundalk12x12_gs_tc.png │ │ │ ├── lucida10x10_gs_tc.png │ │ │ ├── lucida12x12_gs_tc.png │ │ │ ├── lucida8x8_gs_tc.png │ │ │ ├── prestige10x10_gs_tc.png │ │ │ ├── prestige12x12_gs_tc.png │ │ │ ├── prestige8x8_gs_tc.png │ │ │ ├── terminal10x10_gs_tc.png │ │ │ ├── terminal10x16_gs_ro.png │ │ │ ├── terminal10x16_gs_tc.png │ │ │ ├── terminal10x18_gs_ro.png │ │ │ ├── terminal12x12_gs_ro.png │ │ │ ├── terminal16x16_gs_ro.png │ │ │ ├── terminal7x7_gs_tc.png │ │ │ ├── terminal8x12_gs_ro.png │ │ │ ├── terminal8x12_gs_tc.png │ │ │ ├── terminal8x14_gs_ro.png │ │ │ ├── terminal8x8_aa_as.png │ │ │ ├── terminal8x8_aa_ro.png │ │ │ ├── terminal8x8_aa_tc.png │ │ │ ├── terminal8x8_gs_as.png │ │ │ ├── terminal8x8_gs_ro.png │ │ │ └── terminal8x8_gs_tc.png │ │ ├── img │ │ │ ├── circle.png │ │ │ └── skull.png │ │ └── namegen │ │ │ ├── README.txt │ │ │ ├── jice_celtic.cfg │ │ │ ├── jice_fantasy.cfg │ │ │ ├── jice_mesopotamian.cfg │ │ │ ├── jice_norse.cfg │ │ │ ├── jice_region.cfg │ │ │ ├── jice_town.cfg │ │ │ ├── mingos_demon.cfg │ │ │ ├── mingos_dwarf.cfg │ │ │ ├── mingos_norse.cfg │ │ │ ├── mingos_standard.cfg │ │ │ └── mingos_town.cfg │ ├── doc │ │ ├── css │ │ │ ├── shCore.css │ │ │ ├── shThemeDefault.css │ │ │ └── style.css │ │ ├── font │ │ │ ├── DroidSans-Bold.eot │ │ │ ├── DroidSans-Bold.ttf │ │ │ ├── DroidSans.eot │ │ │ ├── DroidSans.ttf │ │ │ ├── VeraMono-Bold.eot │ │ │ ├── VeraMono-Bold.ttf │ │ │ ├── VeraMono.eot │ │ │ └── VeraMono.ttf │ │ ├── html │ │ │ └── compil │ │ │ │ ├── index.html │ │ │ │ ├── linux.html │ │ │ │ ├── macosx.html │ │ │ │ ├── msys_cb.html │ │ │ │ └── msys_mingw.html │ │ ├── html2 │ │ │ ├── bsp.html │ │ │ ├── bsp_init.html │ │ │ ├── bsp_inorder.png │ │ │ ├── bsp_invlevelorder.png │ │ │ ├── bsp_levelorder.png │ │ │ ├── bsp_postorder.png │ │ │ ├── bsp_preorder.png │ │ │ ├── bsp_read.html │ │ │ ├── bsp_resize.html │ │ │ ├── bsp_split.html │ │ │ ├── bsp_traverse.html │ │ │ ├── color.html │ │ │ ├── compile_libtcod.html │ │ │ ├── compile_libtcod_codelite.html │ │ │ ├── compile_libtcod_haiku.html │ │ │ ├── compile_libtcod_linux.html │ │ │ ├── compile_libtcod_mingw.html │ │ │ ├── console.html │ │ │ ├── console_advanced.html │ │ │ ├── console_ascii.html │ │ │ ├── console_bkgnd_flag_t.html │ │ │ ├── console_blocking_input.html │ │ │ ├── console_credits.html │ │ │ ├── console_draw.html │ │ │ ├── console_draw_basic.html │ │ │ ├── console_fading.html │ │ │ ├── console_flush.html │ │ │ ├── console_fullscreen.html │ │ │ ├── console_init.html │ │ │ ├── console_init_root.html │ │ │ ├── console_input.html │ │ │ ├── console_key_t.html │ │ │ ├── console_keyboard_repeat.html │ │ │ ├── console_keycode_t.html │ │ │ ├── console_map.html │ │ │ ├── console_mouse_t.html │ │ │ ├── console_non_blocking_input.html │ │ │ ├── console_offscreen.html │ │ │ ├── console_print.html │ │ │ ├── console_read.html │ │ │ ├── console_set_custom_font.html │ │ │ ├── console_window.html │ │ │ ├── fbm_perlin.png │ │ │ ├── fbm_simplex.png │ │ │ ├── fbm_wavelet.png │ │ │ ├── fov.html │ │ │ ├── fov_compute.html │ │ │ ├── fov_get.html │ │ │ ├── fov_init.html │ │ │ ├── heightmap.html │ │ │ ├── heightmap_base.html │ │ │ ├── heightmap_init.html │ │ │ ├── heightmap_modify.html │ │ │ ├── heightmap_read.html │ │ │ ├── image.html │ │ │ ├── image_blit.html │ │ │ ├── image_create.html │ │ │ ├── image_read.html │ │ │ ├── image_save.html │ │ │ ├── image_update.html │ │ │ ├── line.html │ │ │ ├── list.html │ │ │ ├── list_array.html │ │ │ ├── list_create.html │ │ │ ├── list_iterator.html │ │ │ ├── list_list.html │ │ │ ├── list_stack.html │ │ │ ├── midpoint.png │ │ │ ├── mingw1.png │ │ │ ├── mingw2.png │ │ │ ├── mingw3.png │ │ │ ├── mingw4.png │ │ │ ├── mouse.html │ │ │ ├── namegen.html │ │ │ ├── namegen_file.html │ │ │ ├── namegen_file_1.html │ │ │ ├── namegen_file_2.html │ │ │ ├── namegen_file_3.html │ │ │ ├── namegen_file_4.html │ │ │ ├── namegen_generate.html │ │ │ ├── namegen_init.html │ │ │ ├── noise.html │ │ │ ├── noise_get.html │ │ │ ├── noise_get_fbm.html │ │ │ ├── noise_get_turbulence.html │ │ │ ├── noise_init.html │ │ │ ├── noise_setType.html │ │ │ ├── parser.html │ │ │ ├── parser_format.html │ │ │ ├── parser_run.html │ │ │ ├── parser_str.html │ │ │ ├── parser_types.html │ │ │ ├── path.html │ │ │ ├── path_compute.html │ │ │ ├── path_init.html │ │ │ ├── path_read.html │ │ │ ├── perlin.png │ │ │ ├── random.html │ │ │ ├── random_distro.html │ │ │ ├── random_init.html │ │ │ ├── random_use.html │ │ │ ├── simplex.png │ │ │ ├── subcell.png │ │ │ ├── subcell_comp.png │ │ │ ├── subcell_pyro.png │ │ │ ├── system.html │ │ │ ├── system_clipboard.html │ │ │ ├── system_filesystem.html │ │ │ ├── system_misc.html │ │ │ ├── system_screenshots.html │ │ │ ├── system_sdlcbk.html │ │ │ ├── system_time.html │ │ │ ├── terminal.png │ │ │ ├── terminal8x8_aa_as.png │ │ │ ├── terminal8x8_gs_as.png │ │ │ ├── terminal8x8_gs_as2.png │ │ │ ├── terminal8x8_gs_ro.png │ │ │ ├── terminal8x8_gs_tc.png │ │ │ ├── turbulence_perlin.png │ │ │ ├── turbulence_simplex.png │ │ │ ├── turbulence_wavelet.png │ │ │ ├── wavelet.png │ │ │ ├── zip.html │ │ │ ├── zip_init.html │ │ │ ├── zip_load.html │ │ │ └── zip_put.html │ │ ├── img │ │ │ ├── breadcrumb.png │ │ │ ├── c.png │ │ │ ├── cpp.png │ │ │ ├── cs.png │ │ │ ├── gradient.png │ │ │ ├── haschildren.png │ │ │ ├── lua.png │ │ │ ├── next.png │ │ │ ├── prev.png │ │ │ ├── py.png │ │ │ ├── sidebar.png │ │ │ └── sidebar_arrow.png │ │ ├── index2.html │ │ └── js │ │ │ ├── doctcod.js │ │ │ ├── shBrushBash.js │ │ │ └── shCore.js │ ├── hmtool │ ├── hmtool_debug │ ├── include │ │ ├── bresenham.h │ │ ├── bresenham.hpp │ │ ├── bsp.h │ │ ├── bsp.hpp │ │ ├── color.h │ │ ├── color.hpp │ │ ├── console.h │ │ ├── console.hpp │ │ ├── console_types.h │ │ ├── fov.h │ │ ├── fov.hpp │ │ ├── fov_types.h │ │ ├── gui │ │ │ ├── button.hpp │ │ │ ├── container.hpp │ │ │ ├── flatlist.hpp │ │ │ ├── gui.hpp │ │ │ ├── hbox.hpp │ │ │ ├── image.hpp │ │ │ ├── label.hpp │ │ │ ├── radiobutton.hpp │ │ │ ├── slider.hpp │ │ │ ├── statusbar.hpp │ │ │ ├── textbox.hpp │ │ │ ├── togglebutton.hpp │ │ │ ├── toolbar.hpp │ │ │ ├── vbox.hpp │ │ │ └── widget.hpp │ │ ├── heightmap.h │ │ ├── heightmap.hpp │ │ ├── howto.hpp │ │ ├── image.h │ │ ├── image.hpp │ │ ├── lex.h │ │ ├── lex.hpp │ │ ├── libtcod.h │ │ ├── libtcod.hpp │ │ ├── libtcod_int.h │ │ ├── list.h │ │ ├── list.hpp │ │ ├── mersenne.h │ │ ├── mersenne.hpp │ │ ├── mersenne_types.h │ │ ├── mouse.h │ │ ├── mouse.hpp │ │ ├── mouse_types.h │ │ ├── namegen.h │ │ ├── namegen.hpp │ │ ├── noise.h │ │ ├── noise.hpp │ │ ├── noise_defaults.h │ │ ├── parser.h │ │ ├── parser.hpp │ │ ├── path.h │ │ ├── path.hpp │ │ ├── sys.h │ │ ├── sys.hpp │ │ ├── tree.h │ │ ├── tree.hpp │ │ ├── txtfield.h │ │ ├── txtfield.hpp │ │ ├── wrappers.h │ │ ├── zip.h │ │ └── zip.hpp │ ├── libtcod-CHANGELOG.txt │ ├── libtcod.cfg │ ├── python │ │ ├── cprotos.py │ │ ├── libtcodpy.py │ │ └── samples_py.py │ ├── samples │ │ ├── apfviewer.cpp │ │ ├── doctcod │ │ │ ├── doctcod.cpp │ │ │ └── page.tpl │ │ ├── frost │ │ │ └── frost.cpp │ │ ├── hmtool │ │ │ ├── README.txt │ │ │ ├── hmtool.cpp │ │ │ ├── operation.cpp │ │ │ └── operation.hpp │ │ ├── navier │ │ │ ├── main.cpp │ │ │ └── main.hpp │ │ ├── rad │ │ │ ├── README.txt │ │ │ ├── bsp_helper.cpp │ │ │ ├── bsp_helper.hpp │ │ │ ├── main.cpp │ │ │ ├── rad_shader.cpp │ │ │ ├── rad_shader.hpp │ │ │ ├── rad_shader_photon.cpp │ │ │ ├── rad_shader_standard.cpp │ │ │ └── terminal.png │ │ ├── ripples │ │ │ ├── main.cpp │ │ │ ├── main.hpp │ │ │ ├── util_ripples.cpp │ │ │ └── util_ripples.hpp │ │ ├── samples_c.c │ │ ├── samples_cpp.cpp │ │ ├── weather │ │ │ ├── main.cpp │ │ │ ├── main.hpp │ │ │ ├── util_weather.cpp │ │ │ └── util_weather.hpp │ │ └── worldgen │ │ │ ├── README.txt │ │ │ ├── main.cpp │ │ │ ├── main.hpp │ │ │ ├── terminal.png │ │ │ ├── util_worldgen.cpp │ │ │ └── util_worldgen.hpp │ ├── samples_c │ ├── samples_c_debug │ ├── samples_cpp │ ├── samples_cpp_debug │ ├── src │ │ ├── README.txt │ │ ├── bresenham.cpp │ │ ├── bresenham_c.c │ │ ├── bsp.cpp │ │ ├── bsp_c.c │ │ ├── color.cpp │ │ ├── color_c.c │ │ ├── console.cpp │ │ ├── console_c.c │ │ ├── fov.cpp │ │ ├── fov_c.c │ │ ├── fov_circular_raycasting.c │ │ ├── fov_diamond_raycasting.c │ │ ├── fov_permissive2.c │ │ ├── fov_recursive_shadowcasting.c │ │ ├── fov_restrictive.c │ │ ├── gui │ │ │ ├── README.txt │ │ │ ├── button.cpp │ │ │ ├── container.cpp │ │ │ ├── flatlist.cpp │ │ │ ├── hbox.cpp │ │ │ ├── image.cpp │ │ │ ├── label.cpp │ │ │ ├── radiobutton.cpp │ │ │ ├── slider.cpp │ │ │ ├── statusbar.cpp │ │ │ ├── textbox.cpp │ │ │ ├── togglebutton.cpp │ │ │ ├── toolbar.cpp │ │ │ ├── vbox.cpp │ │ │ └── widget.cpp │ │ ├── heightmap.cpp │ │ ├── heightmap_c.c │ │ ├── image.cpp │ │ ├── image_c.c │ │ ├── lex.cpp │ │ ├── lex_c.c │ │ ├── list_c.c │ │ ├── mersenne.cpp │ │ ├── mersenne_c.c │ │ ├── mouse.cpp │ │ ├── namegen.cpp │ │ ├── namegen_c.c │ │ ├── noise.cpp │ │ ├── noise_c.c │ │ ├── parser.cpp │ │ ├── parser_c.c │ │ ├── path.cpp │ │ ├── path_c.c │ │ ├── png │ │ │ ├── lodepng.c │ │ │ └── lodepng.h │ │ ├── sys.cpp │ │ ├── sys_c.c │ │ ├── sys_opengl_c.c │ │ ├── sys_sdl_c.c │ │ ├── sys_sdl_img_bmp.c │ │ ├── sys_sdl_img_png.c │ │ ├── tree_c.c │ │ ├── txtfield.cpp │ │ ├── txtfield_c.c │ │ ├── wrappers.c │ │ ├── zip.cpp │ │ ├── zip_c.c │ │ └── zlib │ │ │ ├── adler32.c │ │ │ ├── compress.c │ │ │ ├── crc32.c │ │ │ ├── crc32.h │ │ │ ├── deflate.c │ │ │ ├── deflate.h │ │ │ ├── gzclose.c │ │ │ ├── gzguts.h │ │ │ ├── gzlib.c │ │ │ ├── gzread.c │ │ │ ├── gzwrite.c │ │ │ ├── infback.c │ │ │ ├── inffast.c │ │ │ ├── inffast.h │ │ │ ├── inffixed.h │ │ │ ├── inflate.c │ │ │ ├── inflate.h │ │ │ ├── inftrees.c │ │ │ ├── inftrees.h │ │ │ ├── trees.c │ │ │ ├── trees.h │ │ │ ├── uncompr.c │ │ │ ├── zconf.h │ │ │ ├── zlib.h │ │ │ ├── zutil.c │ │ │ └── zutil.h │ └── terminal.png │ └── platform │ ├── PlatformDefines.h │ ├── curses-platform.c │ ├── main.c │ ├── null-platform.c │ ├── platform.h │ ├── platformdependent.c │ ├── tcod-platform.c │ ├── term.c │ ├── term.h │ └── web-platform.c ├── brogue ├── Brogue seed catalog.txt ├── Makefile ├── Readme.rtf ├── agpl.txt ├── bin │ ├── brogue-icon.png │ ├── fonts │ │ ├── font-1.png │ │ ├── font-10.png │ │ ├── font-11.png │ │ ├── font-12.png │ │ ├── font-13.png │ │ ├── font-2.png │ │ ├── font-3.png │ │ ├── font-4.png │ │ ├── font-5.png │ │ ├── font-6.png │ │ ├── font-7.png │ │ ├── font-8.png │ │ └── font-9.png │ ├── icon.bmp │ └── keymap ├── brogue ├── brogue.desktop ├── brogue_client.c ├── brogue_client.js ├── make-link-for-desktop.sh ├── readme └── src │ ├── brogue │ ├── Architect.c │ ├── Buttons.c │ ├── Combat.c │ ├── Dijkstra.c │ ├── Globals.c │ ├── Grid.c │ ├── IO.c │ ├── IncludeGlobals.h │ ├── Items.c │ ├── Light.c │ ├── MainMenu.c │ ├── Monsters.c │ ├── Movement.c │ ├── Random.c │ ├── Recordings.c │ ├── Rogue.h │ ├── RogueMain.c │ └── Time.c │ ├── get-libtcod.sh │ └── platform │ ├── PlatformDefines.h │ ├── curses-platform.c │ ├── main.c │ ├── platform.h │ ├── platformdependent.c │ ├── tcod-platform.c │ ├── term.c │ ├── term.h │ └── web-platform.c ├── brogueplus ├── Brogue seed catalog.txt ├── Makefile ├── Readme.rtf ├── agpl.txt ├── bin │ └── .gitignore ├── brogue ├── brogue.desktop ├── brogue_client.c ├── brogue_client.js ├── make-link-for-desktop.sh ├── readme └── src │ ├── brogue │ ├── Architect.c │ ├── Buttons.c │ ├── Combat.c │ ├── Dijkstra.c │ ├── Globals.c │ ├── Grid.c │ ├── IO.c │ ├── IncludeGlobals.h │ ├── Items.c │ ├── Light.c │ ├── MainMenu.c │ ├── Monsters.c │ ├── Movement.c │ ├── Random.c │ ├── Recordings.c │ ├── Rogue.h │ ├── Rogue.h~ │ ├── RogueMain.c │ └── Time.c │ ├── get-libtcod.sh │ └── platform │ ├── PlatformDefines.h │ ├── curses-platform.c │ ├── main.c │ ├── platform.h │ ├── platformdependent.c │ ├── tcod-platform.c │ ├── term.c │ ├── term.h │ └── web-platform.c ├── build ├── Vagrantfile ├── build.sh ├── provision.sh └── whatisthis.md ├── client ├── assets │ ├── BrogueCE.ttf │ ├── BrogueCE.woff │ ├── BrogueCE.woff2 │ ├── brogue-banner.png │ ├── brogue-icon.ico │ ├── brogue-icon.png │ ├── corridor.jpg │ └── marble.jpg ├── backgrid-paginator.css ├── backgrid.css ├── client.js ├── config.js ├── dataIO │ ├── router.js │ ├── send-generic.js │ ├── send-keypress.js │ ├── send-mouse.js │ └── socket.js ├── dispatcher.js ├── index.html ├── libs │ ├── autocomplete-view.js │ ├── backbone.js │ ├── backbone.paginator.js │ ├── backgrid-paginator.js │ ├── backgrid.js │ ├── chart.js │ ├── jquery.js │ ├── moment.js │ ├── require.js │ └── underscore.js ├── models │ ├── auth.js │ ├── cause-stats-model.js │ ├── chat.js │ ├── console-cell-shared.js │ ├── console-cell.js │ ├── current-games-row.js │ ├── dpad-button.js │ ├── file-row.js │ ├── general-stats-model.js │ ├── high-scores.js │ ├── last-wins-scores.js │ ├── level-probability-model.js │ ├── level-stats-model.js │ ├── lobby-data-table-state.js │ ├── site-news.js │ ├── user-details.js │ ├── user-logged-in.js │ └── user.js ├── router.js ├── services │ ├── observing.js │ ├── recordings.js │ └── scores-api-parser.js ├── style.css ├── tests │ ├── autoplay.js │ ├── debug-mode.js │ ├── mock-brogue-message-rand-few.js │ ├── mock-brogue-message-rand-full.js │ ├── mock-brogue-message-single.js │ ├── show-incoming-data-use.js │ ├── show-incoming-messages.js │ ├── show-outgoing-messages.js │ └── test-socket.js ├── tiles.png ├── util.js ├── variantLookup.js └── views │ ├── all-scores-view.js │ ├── auth-view.js │ ├── cause-stats-view.js │ ├── chat-view.js │ ├── console-cell-view.js │ ├── console-chat-view.js │ ├── console-view.js │ ├── current-games-row-view.js │ ├── current-games-view.js │ ├── dpad-button-view.js │ ├── dpad-visibility-button-view.js │ ├── file-row-view.js │ ├── general-stats-view.js │ ├── header-view.js │ ├── last-wins-scores-view.js │ ├── level-probability-view.js │ ├── level-stats-view.js │ ├── lobby-data-table-base.js │ ├── mini-scores-view.js │ ├── play-view.js │ ├── popups │ ├── popup-view.js │ └── seed-popup-view.js │ ├── remap-brogue-glyphs.js │ ├── score-table-cells.js │ ├── site-news-row-view.js │ ├── site-news-view.js │ ├── statistics-view.js │ ├── users-page-scores-view.js │ ├── users-page-select-view.js │ ├── users-page-selected-user-view.js │ ├── users-page-view.js │ └── view-activation-helpers.js ├── config └── nginx │ └── brogue.localhost ├── doc ├── bugs.txt ├── data-use-estimates.md ├── datagram.txt ├── message-map.md ├── platform-notes.md └── roadmap.md ├── game-data └── .gitignore ├── gbrogue ├── Makefile.linux ├── PlatformCode │ ├── PlatformDefines.h │ ├── curses-platform.c │ ├── main.c │ ├── platform.h │ ├── platformdependent.c │ ├── tcod-platform.c │ ├── term.c │ ├── term.h │ └── web-platform.c ├── agpl.txt ├── bin │ └── .gitignore └── gBrogueCode │ ├── Architect.c │ ├── Buttons.c │ ├── Combat.c │ ├── Dijkstra.c │ ├── Globals.c │ ├── Grid.c │ ├── IO.c │ ├── IncludeGlobals.h │ ├── Items.c │ ├── Light.c │ ├── MainMenu.c │ ├── Monsters.c │ ├── Movement.c │ ├── Random.c │ ├── Recordings.c │ ├── Rogue.h │ ├── RogueMain.c │ └── Time.c ├── licensing.txt ├── research ├── PlatformDefines.h ├── Rogue.h ├── charm_comp_all_charms.c ├── multiplicity_enchant.c └── recording_runner │ └── recording_runner.py ├── scripts ├── fonttest │ └── index.html ├── news │ ├── news-model.js │ ├── news.js │ ├── package.json │ └── seq-model.js └── statstest │ └── teststats.js ├── server ├── api │ ├── high-score-api.js │ ├── news-api.js │ ├── recordings-api.js │ ├── stats-api.js │ └── users-api.js ├── brogue │ ├── brogue-comms.js │ ├── brogue-constants.js │ └── brogue-interface.js ├── config.js ├── controllers │ ├── authentication-controller.js │ ├── brogue-controller.js │ ├── chat-controller.js │ ├── cleanup-controllers.js │ ├── controller-base.js │ ├── controller-factory.js │ ├── error-controller.js │ ├── lobby-controller.js │ └── router.js ├── database │ ├── chat-record-model.js │ ├── game-record-model.js │ └── news-model.js ├── enum │ ├── brogue-mode.js │ ├── brogue-state.js │ └── brogue-status-types.js ├── httpServer.js ├── package.json ├── server.js ├── stats │ ├── stats-database.js │ └── stats.js ├── test │ ├── config-test.js │ ├── game-record-api-test.js │ ├── recordings-api-test.js │ ├── server-test.js │ ├── stats-api-test.js │ ├── stats-test.js │ ├── testfile.broguerec │ └── users-api-test.js └── user │ ├── all-users.js │ └── user-model.js └── unBrogue ├── Makefile ├── PlatformCode ├── PlatformDefines.h ├── curses-platform.c ├── main.c ├── platform.h ├── platformdependent.c ├── tcod-platform.c ├── term.c ├── term.h └── web-platform.c ├── Readme.rtf ├── UnBrogueCode ├── Architect.c ├── Buttons.c ├── Combat.c ├── Dijkstra.c ├── Globals.c ├── IO.c ├── IncludeGlobals.h ├── Items.c ├── Light.c ├── MainMenu.c ├── Monsters.c ├── Movement.c ├── Random.c ├── Recordings.c ├── Rogue.h └── RogueMain.c ├── bin └── .gitignore ├── how-to-build.txt ├── icon.rc ├── keymap └── license-agpl.txt /.gitignore: -------------------------------------------------------------------------------- 1 | #Project things 2 | ## Netbeans 3 | /nbproject 4 | 5 | ## Node.js 6 | /server/node_modules 7 | /server/db 8 | *.log 9 | 10 | # C things 11 | ## Object files 12 | *.o 13 | *.ko 14 | *.obj 15 | *.elf 16 | 17 | ## Precompiled Headers 18 | *.gch 19 | *.pch 20 | 21 | ## Libraries 22 | *.lib 23 | *.a 24 | *.la 25 | *.lo 26 | 27 | ## Shared objects (inc. Windows DLLs) 28 | *.dll 29 | *.so 30 | *.so.* 31 | *.dylib 32 | 33 | ## Executables 34 | *.exe 35 | *.out 36 | *.app 37 | *.i*86 38 | *.x86_64 39 | *.hex 40 | bin/ 41 | -------------------------------------------------------------------------------- /binaries/brogue-ce110: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flend/web-brogue/cce0d050da519b865ed4c8c85ee5737c3a93894d/binaries/brogue-ce110 -------------------------------------------------------------------------------- /binaries/brogue-ce111: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flend/web-brogue/cce0d050da519b865ed4c8c85ee5737c3a93894d/binaries/brogue-ce111 -------------------------------------------------------------------------------- /binaries/brogue-ce120: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flend/web-brogue/cce0d050da519b865ed4c8c85ee5737c3a93894d/binaries/brogue-ce120 -------------------------------------------------------------------------------- /binaries/brogue-ce130: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flend/web-brogue/cce0d050da519b865ed4c8c85ee5737c3a93894d/binaries/brogue-ce130 -------------------------------------------------------------------------------- /binaries/brogue-ce140: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flend/web-brogue/cce0d050da519b865ed4c8c85ee5737c3a93894d/binaries/brogue-ce140 -------------------------------------------------------------------------------- /binaries/brogue-ce18: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flend/web-brogue/cce0d050da519b865ed4c8c85ee5737c3a93894d/binaries/brogue-ce18 -------------------------------------------------------------------------------- /binaries/brogue-ce19-c813284: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flend/web-brogue/cce0d050da519b865ed4c8c85ee5737c3a93894d/binaries/brogue-ce19-c813284 -------------------------------------------------------------------------------- /binaries/brogue-ce193-d22c4a1: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flend/web-brogue/cce0d050da519b865ed4c8c85ee5737c3a93894d/binaries/brogue-ce193-d22c4a1 -------------------------------------------------------------------------------- /binaries/brogue-fd99bbe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flend/web-brogue/cce0d050da519b865ed4c8c85ee5737c3a93894d/binaries/brogue-fd99bbe -------------------------------------------------------------------------------- /binaries/brogue-v174: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flend/web-brogue/cce0d050da519b865ed4c8c85ee5737c3a93894d/binaries/brogue-v174 -------------------------------------------------------------------------------- /binaries/brogue-v175: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flend/web-brogue/cce0d050da519b865ed4c8c85ee5737c3a93894d/binaries/brogue-v175 -------------------------------------------------------------------------------- /binaries/brogueplus-v1741: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flend/web-brogue/cce0d050da519b865ed4c8c85ee5737c3a93894d/binaries/brogueplus-v1741 -------------------------------------------------------------------------------- /binaries/bullet-brogue-v100: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flend/web-brogue/cce0d050da519b865ed4c8c85ee5737c3a93894d/binaries/bullet-brogue-v100 -------------------------------------------------------------------------------- /binaries/bullet-brogue-v110: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flend/web-brogue/cce0d050da519b865ed4c8c85ee5737c3a93894d/binaries/bullet-brogue-v110 -------------------------------------------------------------------------------- /binaries/gbrogue-v1180211: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flend/web-brogue/cce0d050da519b865ed4c8c85ee5737c3a93894d/binaries/gbrogue-v1180211 -------------------------------------------------------------------------------- /binaries/rapid-brogue-v100: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flend/web-brogue/cce0d050da519b865ed4c8c85ee5737c3a93894d/binaries/rapid-brogue-v100 -------------------------------------------------------------------------------- /binaries/rapid-brogue-v110: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flend/web-brogue/cce0d050da519b865ed4c8c85ee5737c3a93894d/binaries/rapid-brogue-v110 -------------------------------------------------------------------------------- /binaries/rapid-brogue-v120: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flend/web-brogue/cce0d050da519b865ed4c8c85ee5737c3a93894d/binaries/rapid-brogue-v120 -------------------------------------------------------------------------------- /binaries/rapid-brogue-v130: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flend/web-brogue/cce0d050da519b865ed4c8c85ee5737c3a93894d/binaries/rapid-brogue-v130 -------------------------------------------------------------------------------- /binaries/rapid-brogue-v140: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flend/web-brogue/cce0d050da519b865ed4c8c85ee5737c3a93894d/binaries/rapid-brogue-v140 -------------------------------------------------------------------------------- /binaries/unbrogue-v116: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flend/web-brogue/cce0d050da519b865ed4c8c85ee5737c3a93894d/binaries/unbrogue-v116 -------------------------------------------------------------------------------- /brogue-1.7.5/bin/brogue-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flend/web-brogue/cce0d050da519b865ed4c8c85ee5737c3a93894d/brogue-1.7.5/bin/brogue-icon.png -------------------------------------------------------------------------------- /brogue-1.7.5/bin/fonts/font-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flend/web-brogue/cce0d050da519b865ed4c8c85ee5737c3a93894d/brogue-1.7.5/bin/fonts/font-1.png -------------------------------------------------------------------------------- /brogue-1.7.5/bin/fonts/font-10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flend/web-brogue/cce0d050da519b865ed4c8c85ee5737c3a93894d/brogue-1.7.5/bin/fonts/font-10.png -------------------------------------------------------------------------------- /brogue-1.7.5/bin/fonts/font-11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flend/web-brogue/cce0d050da519b865ed4c8c85ee5737c3a93894d/brogue-1.7.5/bin/fonts/font-11.png -------------------------------------------------------------------------------- /brogue-1.7.5/bin/fonts/font-12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flend/web-brogue/cce0d050da519b865ed4c8c85ee5737c3a93894d/brogue-1.7.5/bin/fonts/font-12.png -------------------------------------------------------------------------------- /brogue-1.7.5/bin/fonts/font-13.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flend/web-brogue/cce0d050da519b865ed4c8c85ee5737c3a93894d/brogue-1.7.5/bin/fonts/font-13.png -------------------------------------------------------------------------------- /brogue-1.7.5/bin/fonts/font-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flend/web-brogue/cce0d050da519b865ed4c8c85ee5737c3a93894d/brogue-1.7.5/bin/fonts/font-2.png -------------------------------------------------------------------------------- /brogue-1.7.5/bin/fonts/font-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flend/web-brogue/cce0d050da519b865ed4c8c85ee5737c3a93894d/brogue-1.7.5/bin/fonts/font-3.png -------------------------------------------------------------------------------- /brogue-1.7.5/bin/fonts/font-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flend/web-brogue/cce0d050da519b865ed4c8c85ee5737c3a93894d/brogue-1.7.5/bin/fonts/font-4.png -------------------------------------------------------------------------------- /brogue-1.7.5/bin/fonts/font-5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flend/web-brogue/cce0d050da519b865ed4c8c85ee5737c3a93894d/brogue-1.7.5/bin/fonts/font-5.png -------------------------------------------------------------------------------- /brogue-1.7.5/bin/fonts/font-6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flend/web-brogue/cce0d050da519b865ed4c8c85ee5737c3a93894d/brogue-1.7.5/bin/fonts/font-6.png -------------------------------------------------------------------------------- /brogue-1.7.5/bin/fonts/font-7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flend/web-brogue/cce0d050da519b865ed4c8c85ee5737c3a93894d/brogue-1.7.5/bin/fonts/font-7.png -------------------------------------------------------------------------------- /brogue-1.7.5/bin/fonts/font-8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flend/web-brogue/cce0d050da519b865ed4c8c85ee5737c3a93894d/brogue-1.7.5/bin/fonts/font-8.png -------------------------------------------------------------------------------- /brogue-1.7.5/bin/fonts/font-9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flend/web-brogue/cce0d050da519b865ed4c8c85ee5737c3a93894d/brogue-1.7.5/bin/fonts/font-9.png -------------------------------------------------------------------------------- /brogue-1.7.5/bin/icon.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flend/web-brogue/cce0d050da519b865ed4c8c85ee5737c3a93894d/brogue-1.7.5/bin/icon.bmp -------------------------------------------------------------------------------- /brogue-1.7.5/bin/keymap: -------------------------------------------------------------------------------- 1 | # The following keys are valid, although modifier keys (like SHIFT) are 2 | # not supported. Keys that produce characters but are not listed below 3 | # are mapped by the character they produce. 4 | # 5 | # Key remapping is also supported in curses mode, although some key names 6 | # are different and others are the same. 7 | 8 | 9 | # libtcod-mode keys: 10 | # 11 | # NONE 12 | # ESCAPE BACKSPACE TAB ENTER 13 | # SHIFT CONTROL ALT CAPSLOCK LWIN RWIN APPS NUMLOCK SCROLLLOCK 14 | # PAGEUP PAGEDOWN END HOME 15 | # UP LEFT RIGHT DOWN 16 | # PRINTSCREEN PAUSE INSERT DELETE 17 | # 0 1 2 3 4 5 6 7 8 9 18 | # KP0 KP1 KP2 KP3 KP4 KP5 KP6 KP7 KP8 KP9 KPADD KPSUB KPDIV KPMUL KPDEC KPENTER 19 | # F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 20 | # SPACE 21 | 22 | # EXAMPLE: numberpad play 23 | # if you remove the # from each of the following lines, it will be 24 | # possible to perform many actions with only the numberpad (in tcod mode) 25 | #KPDIV a 26 | #KPMUL i 27 | #KPADD t 28 | #KPSUB d 29 | #KPDEC s 30 | #KP0 ESCAPE 31 | 32 | #F5 S 33 | #F7 O 34 | #F2 A 35 | #A NONE 36 | #O NONE 37 | #S NONE 38 | 39 | -------------------------------------------------------------------------------- /brogue-1.7.5/brogue: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | cd `dirname $0`/bin 3 | 4 | ./brogue $* 5 | 6 | # if [ -t 0 ]; then 7 | # ./brogue -t $* 8 | #else 9 | # ./brogue $* 10 | #fi 11 | 12 | -------------------------------------------------------------------------------- /brogue-1.7.5/brogue.desktop: -------------------------------------------------------------------------------- 1 | [Desktop Entry] 2 | Version=1.0 3 | Type=Application 4 | Name=Brogue 1.7.2 5 | GenericName=Roguelike 6 | Comment=Brave the Dungeons of Doom! 7 | Exec=/home/o/brogue-linux-1.7.2/brogue-1.7.2/brogue 8 | Path=/home/o/brogue-linux-1.7.2/brogue-1.7.2 9 | Icon=/home/o/brogue-linux-1.7.2/brogue-1.7.2/bin/brogue-icon.png 10 | Terminal=false 11 | 12 | -------------------------------------------------------------------------------- /brogue-1.7.5/make-link-for-desktop.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | cd `dirname $0` 3 | sed s?PATH?`pwd`?g > brogue.desktop <<-end 4 | [Desktop Entry] 5 | Version=1.0 6 | Type=Application 7 | Name=Brogue 1.7.2 8 | GenericName=Roguelike 9 | Comment=Brave the Dungeons of Doom! 10 | Exec=PATH/brogue 11 | Path=PATH 12 | Icon=PATH/bin/brogue-icon.png 13 | Terminal=false 14 | 15 | end 16 | 17 | chmod +x brogue.desktop 18 | 19 | echo "Created brogue.desktop." 20 | echo "If your desktop is in the default location, type:" 21 | echo "mv brogue.desktop ~/Desktop" 22 | 23 | -------------------------------------------------------------------------------- /brogue-1.7.5/src/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flend/web-brogue/cce0d050da519b865ed4c8c85ee5737c3a93894d/brogue-1.7.5/src/.DS_Store -------------------------------------------------------------------------------- /brogue-1.7.5/src/brogue/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flend/web-brogue/cce0d050da519b865ed4c8c85ee5737c3a93894d/brogue-1.7.5/src/brogue/.DS_Store -------------------------------------------------------------------------------- /brogue-1.7.5/src/get-libtcod.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | cd `dirname $0` 3 | wget -c http://doryen.eptalys.net/?file_id=48 -O libtcod-1.5.2-32.tar.gz 4 | tar -xf libtcod-1.5.2-32.tar.gz 5 | cp libtcod-1.5.2/libtcod.so ../bin 6 | 7 | -------------------------------------------------------------------------------- /brogue-1.7.5/src/libtcod-1.5.2/LIBTCOD-CREDITS.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flend/web-brogue/cce0d050da519b865ed4c8c85ee5737c3a93894d/brogue-1.7.5/src/libtcod-1.5.2/LIBTCOD-CREDITS.txt -------------------------------------------------------------------------------- /brogue-1.7.5/src/libtcod-1.5.2/LIBTCOD-LICENSE.txt: -------------------------------------------------------------------------------- 1 | * libtcod 1.5.2 2 | * Copyright (c) 2008,2009,2010,2012 Jice & Mingos 3 | * All rights reserved. 4 | * 5 | * libtcod 'The Doryen library' is a cross-platform C/C++ library for roguelike 6 | * developers. 7 | * Its source code is available from : 8 | * http://doryen.eptalys.net/libtcod 9 | * 10 | * Redistribution and use in source and binary forms, with or without 11 | * modification, are permitted provided that the following conditions are met: 12 | * * Redistributions of source code must retain the above copyright 13 | * notice, this list of conditions and the following disclaimer. 14 | * * Redistributions in binary form must reproduce the above copyright 15 | * notice, this list of conditions and the following disclaimer in the 16 | * documentation and/or other materials provided with the distribution. 17 | * * The name of Jice or Mingos may not be used to endorse or promote products 18 | * derived from this software without specific prior written permission. 19 | * 20 | * THIS SOFTWARE IS PROVIDED BY JICE AND MINGOS ``AS IS'' AND ANY 21 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 22 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 23 | * DISCLAIMED. IN NO EVENT SHALL JICE OR MINGOS BE LIABLE FOR ANY 24 | * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 25 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 26 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 27 | * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 28 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 29 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 30 | -------------------------------------------------------------------------------- /brogue-1.7.5/src/libtcod-1.5.2/README-SDL.txt: -------------------------------------------------------------------------------- 1 | 2 | Please distribute this file with the SDL runtime environment: 3 | 4 | The Simple DirectMedia Layer (SDL for short) is a cross-platfrom library 5 | designed to make it easy to write multi-media software, such as games and 6 | emulators. 7 | 8 | The Simple DirectMedia Layer library source code is available from: 9 | http://www.libsdl.org/ 10 | 11 | This library is distributed under the terms of the GNU LGPL license: 12 | http://www.gnu.org/copyleft/lesser.html 13 | 14 | -------------------------------------------------------------------------------- /brogue-1.7.5/src/libtcod-1.5.2/REVISION.txt: -------------------------------------------------------------------------------- 1 | 73791d5e0422 (1.5.x) 2 | -------------------------------------------------------------------------------- /brogue-1.7.5/src/libtcod-1.5.2/data/cfg/sample.cfg: -------------------------------------------------------------------------------- 1 | myStruct "struct_name" { 2 | // 3 | bool_field=true 4 | char_field='Z' 5 | int_field=24 6 | float_field=3.14 7 | string_field="hello" 8 | color_field="255,128,128" 9 | dice_field="0.5x3d5+2" 10 | 11 | // dynamically declared fields 12 | bool bool_field2=false 13 | char char_field2='@' 14 | int int_field2=4 15 | float float_field2=4.3 16 | string string_field2="world" 17 | color color_field2=#FF22CC 18 | dice dice_field2="3d20" 19 | 20 | bool_list=[true, false, true] 21 | char_list=['a', 'b', 'z'] 22 | integer_list=[13,2,-3] 23 | float_list=[5.0,2.0,-3.5] 24 | string_list=["item one","time_two"] 25 | color_list=["42,42,142","128,64,128"] 26 | // dice_list=["3d4","2d4+2","0.75x4d6-1"] 27 | 28 | // dynamically declared list fields 29 | bool[] bool_list2=[true, false, true] 30 | char[] char_list2=['a', 'b', 'z'] 31 | int[] integer_list2=[13,2,-3] 32 | float[] float_list2=[5.0,2.0,-3.5] 33 | string[] string_list2=["item one","time_two"] 34 | color[] color_list2=["42,42,142","128,64,128"] 35 | 36 | } 37 | // a completely dynamic structure (not declared at compile time) 38 | struct dynStruct { 39 | int someVar=4 40 | struct subStruct { 41 | float anotherVar=4.3 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /brogue-1.7.5/src/libtcod-1.5.2/data/fonts/README.txt: -------------------------------------------------------------------------------- 1 | This directory contains antialiased fonts for libtcod. 2 | These fonts are in public domain. 3 | 4 | The file names are composed with : 5 | __.png 6 | : aa 32 bits png with alpha channel 7 | gs 24 bits or greyscale PNG 8 | : as standard ASCII layout 9 | ro standard ASCII layout in row 10 | tc TCOD layout 11 | 12 | The terminal8x8 font is provided is every possible format as en example. 13 | You can try them with the provided samples : 14 | 15 | ./samples_c -font fonts/terminal8x8_aa_as.png -font-nb-char 16 16 16 | ./samples_c -font fonts/terminal8x8_aa_ro.png -font-nb-char 16 16 -font-in-row 17 | ./samples_c -font fonts/terminal8x8_aa_tc.png -font-nb-char 32 8 -font-tcod 18 | ./samples_c -font fonts/terminal8x8_gs_as.png -font-nb-char 16 16 -font-greyscale 19 | ./samples_c -font fonts/terminal8x8_gs_ro.png -font-nb-char 16 16 -font-greyscale -font-in-row 20 | ./samples_c -font fonts/terminal8x8_gs_tc.png -font-nb-char 32 8 -font-greyscale -font-tcod 21 | 22 | The libtcod 1.3.2 (non antialiased) terminal font is still there and still works : 23 | ./samples_c -font terminal.png -font-nb-char 16 16 24 | 25 | All other fonts are provided only in gs_tc format (greyscale, TCOD layout). 26 | To try them : 27 | 28 | Terminal fonts with different size (you can use them as template to create new fonts) : 29 | ./samples_c -font fonts/terminal7x7_gs_tc.png -font-nb-char 32 8 -font-greyscale -font-tcod 30 | ./samples_c -font fonts/terminal10x10_gs_tc.png -font-nb-char 32 8 -font-greyscale -font-tcod 31 | 32 | Custom fonts : 33 | ./samples_c -font fonts/caeldera8x8_gs_tc.png -font-nb-char 32 8 -font-greyscale -font-tcod 34 | ./samples_c -font fonts/lucida8x8_gs_tc.png -font-nb-char 32 8 -font-greyscale -font-tcod 35 | ./samples_c -font fonts/celtic_garamond_10x10_gs_tc.png -font-nb-char 32 8 -font-greyscale -font-tcod 36 | ./samples_c -font fonts/dundalk12x12_gs_tc.png -font-nb-char 32 8 -font-greyscale -font-tcod 37 | -------------------------------------------------------------------------------- /brogue-1.7.5/src/libtcod-1.5.2/data/fonts/arial10x10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flend/web-brogue/cce0d050da519b865ed4c8c85ee5737c3a93894d/brogue-1.7.5/src/libtcod-1.5.2/data/fonts/arial10x10.png -------------------------------------------------------------------------------- /brogue-1.7.5/src/libtcod-1.5.2/data/fonts/arial12x12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flend/web-brogue/cce0d050da519b865ed4c8c85ee5737c3a93894d/brogue-1.7.5/src/libtcod-1.5.2/data/fonts/arial12x12.png -------------------------------------------------------------------------------- /brogue-1.7.5/src/libtcod-1.5.2/data/fonts/arial8x8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flend/web-brogue/cce0d050da519b865ed4c8c85ee5737c3a93894d/brogue-1.7.5/src/libtcod-1.5.2/data/fonts/arial8x8.png -------------------------------------------------------------------------------- /brogue-1.7.5/src/libtcod-1.5.2/data/fonts/caeldera8x8_gs_tc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flend/web-brogue/cce0d050da519b865ed4c8c85ee5737c3a93894d/brogue-1.7.5/src/libtcod-1.5.2/data/fonts/caeldera8x8_gs_tc.png -------------------------------------------------------------------------------- /brogue-1.7.5/src/libtcod-1.5.2/data/fonts/celtic_garamond_10x10_gs_tc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flend/web-brogue/cce0d050da519b865ed4c8c85ee5737c3a93894d/brogue-1.7.5/src/libtcod-1.5.2/data/fonts/celtic_garamond_10x10_gs_tc.png -------------------------------------------------------------------------------- /brogue-1.7.5/src/libtcod-1.5.2/data/fonts/consolas10x10_gs_tc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flend/web-brogue/cce0d050da519b865ed4c8c85ee5737c3a93894d/brogue-1.7.5/src/libtcod-1.5.2/data/fonts/consolas10x10_gs_tc.png -------------------------------------------------------------------------------- /brogue-1.7.5/src/libtcod-1.5.2/data/fonts/consolas12x12_gs_tc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flend/web-brogue/cce0d050da519b865ed4c8c85ee5737c3a93894d/brogue-1.7.5/src/libtcod-1.5.2/data/fonts/consolas12x12_gs_tc.png -------------------------------------------------------------------------------- /brogue-1.7.5/src/libtcod-1.5.2/data/fonts/consolas8x8_gs_tc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flend/web-brogue/cce0d050da519b865ed4c8c85ee5737c3a93894d/brogue-1.7.5/src/libtcod-1.5.2/data/fonts/consolas8x8_gs_tc.png -------------------------------------------------------------------------------- /brogue-1.7.5/src/libtcod-1.5.2/data/fonts/consolas_unicode_10x10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flend/web-brogue/cce0d050da519b865ed4c8c85ee5737c3a93894d/brogue-1.7.5/src/libtcod-1.5.2/data/fonts/consolas_unicode_10x10.png -------------------------------------------------------------------------------- /brogue-1.7.5/src/libtcod-1.5.2/data/fonts/consolas_unicode_12x12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flend/web-brogue/cce0d050da519b865ed4c8c85ee5737c3a93894d/brogue-1.7.5/src/libtcod-1.5.2/data/fonts/consolas_unicode_12x12.png -------------------------------------------------------------------------------- /brogue-1.7.5/src/libtcod-1.5.2/data/fonts/consolas_unicode_16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flend/web-brogue/cce0d050da519b865ed4c8c85ee5737c3a93894d/brogue-1.7.5/src/libtcod-1.5.2/data/fonts/consolas_unicode_16x16.png -------------------------------------------------------------------------------- /brogue-1.7.5/src/libtcod-1.5.2/data/fonts/consolas_unicode_8x8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flend/web-brogue/cce0d050da519b865ed4c8c85ee5737c3a93894d/brogue-1.7.5/src/libtcod-1.5.2/data/fonts/consolas_unicode_8x8.png -------------------------------------------------------------------------------- /brogue-1.7.5/src/libtcod-1.5.2/data/fonts/courier10x10_aa_tc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flend/web-brogue/cce0d050da519b865ed4c8c85ee5737c3a93894d/brogue-1.7.5/src/libtcod-1.5.2/data/fonts/courier10x10_aa_tc.png -------------------------------------------------------------------------------- /brogue-1.7.5/src/libtcod-1.5.2/data/fonts/courier12x12_aa_tc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flend/web-brogue/cce0d050da519b865ed4c8c85ee5737c3a93894d/brogue-1.7.5/src/libtcod-1.5.2/data/fonts/courier12x12_aa_tc.png -------------------------------------------------------------------------------- /brogue-1.7.5/src/libtcod-1.5.2/data/fonts/courier8x8_aa_tc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flend/web-brogue/cce0d050da519b865ed4c8c85ee5737c3a93894d/brogue-1.7.5/src/libtcod-1.5.2/data/fonts/courier8x8_aa_tc.png -------------------------------------------------------------------------------- /brogue-1.7.5/src/libtcod-1.5.2/data/fonts/dejavu10x10_gs_tc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flend/web-brogue/cce0d050da519b865ed4c8c85ee5737c3a93894d/brogue-1.7.5/src/libtcod-1.5.2/data/fonts/dejavu10x10_gs_tc.png -------------------------------------------------------------------------------- /brogue-1.7.5/src/libtcod-1.5.2/data/fonts/dejavu12x12_gs_tc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flend/web-brogue/cce0d050da519b865ed4c8c85ee5737c3a93894d/brogue-1.7.5/src/libtcod-1.5.2/data/fonts/dejavu12x12_gs_tc.png -------------------------------------------------------------------------------- /brogue-1.7.5/src/libtcod-1.5.2/data/fonts/dejavu16x16_gs_tc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flend/web-brogue/cce0d050da519b865ed4c8c85ee5737c3a93894d/brogue-1.7.5/src/libtcod-1.5.2/data/fonts/dejavu16x16_gs_tc.png -------------------------------------------------------------------------------- /brogue-1.7.5/src/libtcod-1.5.2/data/fonts/dejavu8x8_gs_tc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flend/web-brogue/cce0d050da519b865ed4c8c85ee5737c3a93894d/brogue-1.7.5/src/libtcod-1.5.2/data/fonts/dejavu8x8_gs_tc.png -------------------------------------------------------------------------------- /brogue-1.7.5/src/libtcod-1.5.2/data/fonts/dejavu_wide12x12_gs_tc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flend/web-brogue/cce0d050da519b865ed4c8c85ee5737c3a93894d/brogue-1.7.5/src/libtcod-1.5.2/data/fonts/dejavu_wide12x12_gs_tc.png -------------------------------------------------------------------------------- /brogue-1.7.5/src/libtcod-1.5.2/data/fonts/dejavu_wide16x16_gs_tc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flend/web-brogue/cce0d050da519b865ed4c8c85ee5737c3a93894d/brogue-1.7.5/src/libtcod-1.5.2/data/fonts/dejavu_wide16x16_gs_tc.png -------------------------------------------------------------------------------- /brogue-1.7.5/src/libtcod-1.5.2/data/fonts/dundalk12x12_gs_tc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flend/web-brogue/cce0d050da519b865ed4c8c85ee5737c3a93894d/brogue-1.7.5/src/libtcod-1.5.2/data/fonts/dundalk12x12_gs_tc.png -------------------------------------------------------------------------------- /brogue-1.7.5/src/libtcod-1.5.2/data/fonts/lucida10x10_gs_tc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flend/web-brogue/cce0d050da519b865ed4c8c85ee5737c3a93894d/brogue-1.7.5/src/libtcod-1.5.2/data/fonts/lucida10x10_gs_tc.png -------------------------------------------------------------------------------- /brogue-1.7.5/src/libtcod-1.5.2/data/fonts/lucida12x12_gs_tc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flend/web-brogue/cce0d050da519b865ed4c8c85ee5737c3a93894d/brogue-1.7.5/src/libtcod-1.5.2/data/fonts/lucida12x12_gs_tc.png -------------------------------------------------------------------------------- /brogue-1.7.5/src/libtcod-1.5.2/data/fonts/lucida8x8_gs_tc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flend/web-brogue/cce0d050da519b865ed4c8c85ee5737c3a93894d/brogue-1.7.5/src/libtcod-1.5.2/data/fonts/lucida8x8_gs_tc.png -------------------------------------------------------------------------------- /brogue-1.7.5/src/libtcod-1.5.2/data/fonts/prestige10x10_gs_tc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flend/web-brogue/cce0d050da519b865ed4c8c85ee5737c3a93894d/brogue-1.7.5/src/libtcod-1.5.2/data/fonts/prestige10x10_gs_tc.png -------------------------------------------------------------------------------- /brogue-1.7.5/src/libtcod-1.5.2/data/fonts/prestige12x12_gs_tc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flend/web-brogue/cce0d050da519b865ed4c8c85ee5737c3a93894d/brogue-1.7.5/src/libtcod-1.5.2/data/fonts/prestige12x12_gs_tc.png -------------------------------------------------------------------------------- /brogue-1.7.5/src/libtcod-1.5.2/data/fonts/prestige8x8_gs_tc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flend/web-brogue/cce0d050da519b865ed4c8c85ee5737c3a93894d/brogue-1.7.5/src/libtcod-1.5.2/data/fonts/prestige8x8_gs_tc.png -------------------------------------------------------------------------------- /brogue-1.7.5/src/libtcod-1.5.2/data/fonts/terminal10x10_gs_tc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flend/web-brogue/cce0d050da519b865ed4c8c85ee5737c3a93894d/brogue-1.7.5/src/libtcod-1.5.2/data/fonts/terminal10x10_gs_tc.png -------------------------------------------------------------------------------- /brogue-1.7.5/src/libtcod-1.5.2/data/fonts/terminal10x16_gs_ro.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flend/web-brogue/cce0d050da519b865ed4c8c85ee5737c3a93894d/brogue-1.7.5/src/libtcod-1.5.2/data/fonts/terminal10x16_gs_ro.png -------------------------------------------------------------------------------- /brogue-1.7.5/src/libtcod-1.5.2/data/fonts/terminal10x16_gs_tc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flend/web-brogue/cce0d050da519b865ed4c8c85ee5737c3a93894d/brogue-1.7.5/src/libtcod-1.5.2/data/fonts/terminal10x16_gs_tc.png -------------------------------------------------------------------------------- /brogue-1.7.5/src/libtcod-1.5.2/data/fonts/terminal10x18_gs_ro.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flend/web-brogue/cce0d050da519b865ed4c8c85ee5737c3a93894d/brogue-1.7.5/src/libtcod-1.5.2/data/fonts/terminal10x18_gs_ro.png -------------------------------------------------------------------------------- /brogue-1.7.5/src/libtcod-1.5.2/data/fonts/terminal12x12_gs_ro.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flend/web-brogue/cce0d050da519b865ed4c8c85ee5737c3a93894d/brogue-1.7.5/src/libtcod-1.5.2/data/fonts/terminal12x12_gs_ro.png -------------------------------------------------------------------------------- /brogue-1.7.5/src/libtcod-1.5.2/data/fonts/terminal16x16_gs_ro.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flend/web-brogue/cce0d050da519b865ed4c8c85ee5737c3a93894d/brogue-1.7.5/src/libtcod-1.5.2/data/fonts/terminal16x16_gs_ro.png -------------------------------------------------------------------------------- /brogue-1.7.5/src/libtcod-1.5.2/data/fonts/terminal7x7_gs_tc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flend/web-brogue/cce0d050da519b865ed4c8c85ee5737c3a93894d/brogue-1.7.5/src/libtcod-1.5.2/data/fonts/terminal7x7_gs_tc.png -------------------------------------------------------------------------------- /brogue-1.7.5/src/libtcod-1.5.2/data/fonts/terminal8x12_gs_ro.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flend/web-brogue/cce0d050da519b865ed4c8c85ee5737c3a93894d/brogue-1.7.5/src/libtcod-1.5.2/data/fonts/terminal8x12_gs_ro.png -------------------------------------------------------------------------------- /brogue-1.7.5/src/libtcod-1.5.2/data/fonts/terminal8x12_gs_tc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flend/web-brogue/cce0d050da519b865ed4c8c85ee5737c3a93894d/brogue-1.7.5/src/libtcod-1.5.2/data/fonts/terminal8x12_gs_tc.png -------------------------------------------------------------------------------- /brogue-1.7.5/src/libtcod-1.5.2/data/fonts/terminal8x14_gs_ro.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flend/web-brogue/cce0d050da519b865ed4c8c85ee5737c3a93894d/brogue-1.7.5/src/libtcod-1.5.2/data/fonts/terminal8x14_gs_ro.png -------------------------------------------------------------------------------- /brogue-1.7.5/src/libtcod-1.5.2/data/fonts/terminal8x8_aa_as.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flend/web-brogue/cce0d050da519b865ed4c8c85ee5737c3a93894d/brogue-1.7.5/src/libtcod-1.5.2/data/fonts/terminal8x8_aa_as.png -------------------------------------------------------------------------------- /brogue-1.7.5/src/libtcod-1.5.2/data/fonts/terminal8x8_aa_ro.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flend/web-brogue/cce0d050da519b865ed4c8c85ee5737c3a93894d/brogue-1.7.5/src/libtcod-1.5.2/data/fonts/terminal8x8_aa_ro.png -------------------------------------------------------------------------------- /brogue-1.7.5/src/libtcod-1.5.2/data/fonts/terminal8x8_aa_tc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flend/web-brogue/cce0d050da519b865ed4c8c85ee5737c3a93894d/brogue-1.7.5/src/libtcod-1.5.2/data/fonts/terminal8x8_aa_tc.png -------------------------------------------------------------------------------- /brogue-1.7.5/src/libtcod-1.5.2/data/fonts/terminal8x8_gs_as.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flend/web-brogue/cce0d050da519b865ed4c8c85ee5737c3a93894d/brogue-1.7.5/src/libtcod-1.5.2/data/fonts/terminal8x8_gs_as.png -------------------------------------------------------------------------------- /brogue-1.7.5/src/libtcod-1.5.2/data/fonts/terminal8x8_gs_ro.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flend/web-brogue/cce0d050da519b865ed4c8c85ee5737c3a93894d/brogue-1.7.5/src/libtcod-1.5.2/data/fonts/terminal8x8_gs_ro.png -------------------------------------------------------------------------------- /brogue-1.7.5/src/libtcod-1.5.2/data/fonts/terminal8x8_gs_tc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flend/web-brogue/cce0d050da519b865ed4c8c85ee5737c3a93894d/brogue-1.7.5/src/libtcod-1.5.2/data/fonts/terminal8x8_gs_tc.png -------------------------------------------------------------------------------- /brogue-1.7.5/src/libtcod-1.5.2/data/img/circle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flend/web-brogue/cce0d050da519b865ed4c8c85ee5737c3a93894d/brogue-1.7.5/src/libtcod-1.5.2/data/img/circle.png -------------------------------------------------------------------------------- /brogue-1.7.5/src/libtcod-1.5.2/data/img/skull.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flend/web-brogue/cce0d050da519b865ed4c8c85ee5737c3a93894d/brogue-1.7.5/src/libtcod-1.5.2/data/img/skull.png -------------------------------------------------------------------------------- /brogue-1.7.5/src/libtcod-1.5.2/data/namegen/jice_celtic.cfg: -------------------------------------------------------------------------------- 1 | //Celtic names from Jice's "The Cave" 2 | name "Celtic male" { 3 | syllablesStart = "Aen, Agno, All, Ba, Beo, Brig, Ci, Cre, Dan, Del, Ela, Eo, En, Er, Et, In, Io, Morr, Nem, Nu, Og, Or, Ta" 4 | syllablesMiddle = "a, ar, ba, bo, ch, d, ig" 5 | syllablesEnd = "aid, ain, an, and, th, ed, eth, gus, lam, lor, man, od, t, thach" 6 | rules = "$s$m$e, $s$e" 7 | } 8 | 9 | name "Celtic female" { 10 | syllablesStart = "Aen, Agno, All, Ba, Beo, Brig, Ci, Cre, Dan, Del, Ela, Eo, En, Er, Et, In, Io, Morr, Nem, Nu, Og, Or, Ta" 11 | syllablesMiddle = "a, ar, ba, bo, ch, d, ig" 12 | syllablesEnd = "ai, an, da, id, iu, ma, me, na, ne, tha" 13 | rules = "$s$m$e, $s$e" 14 | } 15 | 16 | -------------------------------------------------------------------------------- /brogue-1.7.5/src/libtcod-1.5.2/data/namegen/jice_fantasy.cfg: -------------------------------------------------------------------------------- 1 | //Fantasy names from Jice's "The Cave" 2 | name "Fantasy male" { 3 | syllablesStart = "Aer, An, Ar, Ban, Bar, Ber, Beth, Bett, Cut, Dan, Dar, Dell, Der, Edr, Er, Eth, Ett, Fin, Ian, Iarr, Ill, Jed, Kan, Kar, Ker, Kurr, Kyr, Man, Mar, Mer, Mir, Tsal, Tser, Tsir, Van, Var, Yur, Yyr" 4 | syllablesMiddle = "al, an, ar, el, en, ess, ian, onn, or" 5 | syllablesEnd = "ai, an, ar, ath, en, eo, ian, is, u, or" 6 | illegal = "orar, arrar" 7 | rules = "$s$m$e, $s$e" 8 | } 9 | 10 | name "Fantasy female" { 11 | syllablesStart = "Aer, An, Ar, Ban, Bar, Ber, Beth, Bett, Cut, Dan, Dar, Dell, Der, Edr, Er, Eth, Ett, Fin, Ian, Iarr, Ill, Jed, Kan, Kar, Ker, Kurr, Kyr, Man, Mar, Mer, Mir, Tsal, Tser, Tsir, Van, Var, Yur, Yyr" 12 | syllablesMiddle = "al, an, ar, el, en, ess, ian, onn, or" 13 | syllablesEnd = "a, ae, aelle, ai, ea, i, ia, u, wen, wyn" 14 | illegal = "arrar" 15 | rules = "$s$m$e, $s$e" 16 | } 17 | 18 | -------------------------------------------------------------------------------- /brogue-1.7.5/src/libtcod-1.5.2/data/namegen/jice_mesopotamian.cfg: -------------------------------------------------------------------------------- 1 | //Mesopotamian names from Jice's "The Cave" 2 | name "Mesopotamian male" { 3 | syllablesStart = "A, Ann, Ash, E', En, Er, Gil, In, Ir, Ish, Mar, Ni, Nin, Re, Ti, Ur" 4 | syllablesMiddle = "am, an, du, esh, gam, gir, ka, ki, li, un, ur, ta" 5 | syllablesEnd = "aki, al, ar, at, du, eph, esh, il, im, ki, nu, uk, ur, uz" 6 | illegal = "aa, e'e" 7 | rules = "$s$m$e, $s$e" 8 | } 9 | 10 | name "Mesopotamian female" { 11 | syllablesStart = "A, Ann, Ash, E', En, Er, Gil, In, Ir, Ish, Mar, Ni, Nin, Re, Ti, Ur" 12 | syllablesMiddle = "am, an, du, esh, gam, gir, ka, ki, li, un, ur, ta" 13 | syllablesEnd = "ag, il, la, na, sag, su, ta" 14 | illegal = "aa, e'e" 15 | rules = "$s$m$e, $s$e" 16 | } 17 | 18 | -------------------------------------------------------------------------------- /brogue-1.7.5/src/libtcod-1.5.2/data/namegen/jice_norse.cfg: -------------------------------------------------------------------------------- 1 | //Norse names from Jice's "The Cave" 2 | name "Norse male" { 3 | syllablesStart = "Al, Ae, As, Bi, Fen, Ha, Hag, Ho, Hu, Iv, Jot, Ma, Mio, Mu, Nid, Ors, Ra, Sta, Svar, Tys, Vae, Van, Vol, Y, Ygg" 4 | syllablesMiddle = "an, ar, ba, da, dra, gar, na, tal" 5 | syllablesEnd = "ad, ald, agr, ar, ard, eyr, far, frost, heim, hogg, in, mir, nar, nir, or, osk, rir, sil, sir, ttir, urd" 6 | illegal = "yor, yar, yad, yin" 7 | rules = "$s$m$e, $s$e" 8 | } 9 | 10 | name "Norse female" { 11 | syllablesStart = "Al, Ae, As, Bi, Fen, Ha, Hag, Ho, Hu, Iv, Jot, Ma, Mio, Mu, Nid, Ors, Ra, Sta, Svar, Tys, Vae, Van, Vol, Y, Ygg" 12 | syllablesMiddle = "an, ar, ba, da, dra, gar, na, tal" 13 | syllablesEnd = "a, la, li, va" 14 | illegal = "raa, ya, aea, aea" 15 | rules = "$s$m$e, $s$e" 16 | } 17 | 18 | -------------------------------------------------------------------------------- /brogue-1.7.5/src/libtcod-1.5.2/data/namegen/jice_region.cfg: -------------------------------------------------------------------------------- 1 | //Region names from Jice's "The Cave" 2 | name "region" { 3 | syllablesStart = "Act, Afr, Ag, Agr, Alb, Am, An, Angl, Ant, As, Asys, Asis, At, Atl, Brund, Cath, Cor, Dan, Eb, Eg, Er, Esc, Esp, Est, Eth, Eur, Flor, It, Lyr, Mal, Mir, Myr, Nor, Pel, Rom, Seg, Sib, Sylv, Terr, Tir, Tr, Tyr, Xan" 4 | syllablesMiddle = "ad, ag, al, an, and, ant, anth, ar, ard, as, at, atr, eg, en, ent, ern, et, ian, in, itr, on, op, ov, ur, ymn, yr" 5 | syllablesEnd = "a, aia, ana, as, ea, ene, eos, esia, ia, iad, ias, is, ium, ius, on, ona, or, ova, um, us, ya" 6 | rules = "$s$m$e, $s$e" 7 | } 8 | -------------------------------------------------------------------------------- /brogue-1.7.5/src/libtcod-1.5.2/data/namegen/jice_town.cfg: -------------------------------------------------------------------------------- 1 | //Town names from Jice's "The Cave" 2 | name "town" { 3 | syllablesStart = "Ael, Ash, Barrow, Bel, Black, Clear, Cold, Crystal, Deep, Edge, Falcon, Fair, Fall, Glass, Gold, Ice, Iron, Mill, Moon, Mor, Ray, Red, Rock, Rose, Shadow, Silver, Spell, Spring, Stone, Strong, Summer, Swyn, Wester, Winter" 4 | syllablesEnd = "ash, burn, barrow, bridge, castle, cliff, coast, crest, dale, dell, dor, fall, field, ford, fort, gate, haven, hill, hold, hollow, iron, lake, marsh, mill, mist, mount, moor, pond, shade, shore, summer, town, wick" 5 | rules = "$s$e" 6 | } 7 | -------------------------------------------------------------------------------- /brogue-1.7.5/src/libtcod-1.5.2/data/namegen/mingos_standard.cfg: -------------------------------------------------------------------------------- 1 | //Names based on syllables from J.R.R. Tolkien's and David Eddings' novels. 2 | name "male" { 3 | phonemesVocals = "a, e, i, o, u, y" 4 | phonemesConsonants = "b, c, ch, ck, cz, d, dh, f, g, gh, h, j, k, kh, l, m, n, p, ph, q, r, rh, s, sh, t, th, ts, tz, v, w, x, z, zh" 5 | syllablesStart = "Aer, Al, Am, An, Ar, Arm, Arth, B, Bal, Bar, Be, Bel, Ber, Bok, Bor, Bran, Breg, Bren, Brod, Cam, Chal, Cham, Ch, Cuth, Dag, Daim, Dair, Del, Dr, Dur, Duv, Ear, Elen, Er, Erel, Erem, Fal, Ful, Gal, G, Get, Gil, Gor, Grin, Gun, H, Hal, Han, Har, Hath, Hett, Hur, Iss, Khel, K, Kor, Lel, Lor, M, Mal, Man, Mard, N, Ol, Radh, Rag, Relg, Rh, Run, Sam, Tarr, T, Tor, Tul, Tur, Ul, Ulf, Unr, Ur, Urth, Yar, Z, Zan, Zer" 6 | syllablesMiddle = "de, do, dra, du, duna, ga, go, hara, kaltho, la, latha, le, ma, nari, ra, re, rego, ro, rodda, romi, rui, sa, to, ya, zila" 7 | syllablesEnd = "bar, bers, blek, chak, chik, dan, dar, das, dig, dil, din, dir, dor, dur, fang, fast, gar, gas, gen, gorn, grim, gund, had, hek, hell, hir, hor, kan, kath, khad, kor, lach, lar, ldil, ldir, leg, len, lin, mas, mnir, ndil, ndur, neg, nik, ntir, rab, rach, rain, rak, ran, rand, rath, rek, rig, rim, rin, rion, sin, sta, stir, sus, tar, thad, thel, tir, von, vor, yon, zor" 8 | rules = "$s$v$35m$10m$e" 9 | } 10 | 11 | name "female" { 12 | phonemesVocals = "a, e, i, o, u, y" 13 | syllablesStart = "Ad, Aer, Ar, Bel, Bet, Beth, Ce'N, Cyr, Eilin, El, Em, Emel, G, Gl, Glor, Is, Isl, Iv, Lay, Lis, May, Ner, Pol, Por, Sal, Sil, Vel, Vor, X, Xan, Xer, Yv, Zub" 14 | syllablesMiddle = "bre, da, dhe, ga, lda, le, lra, mi, ra, ri, ria, re, se, ya" 15 | syllablesEnd = "ba, beth, da, kira, laith, lle, ma, mina, mira, na, nn, nne, nor, ra, rin, ssra, ta, th, tha, thra, tira, tta, vea, vena, we, wen, wyn" 16 | rules = "$s$v$35m$10m$e" 17 | } 18 | -------------------------------------------------------------------------------- /brogue-1.7.5/src/libtcod-1.5.2/data/namegen/mingos_town.cfg: -------------------------------------------------------------------------------- 1 | //Town names. The town name construction is based on real British town names, 2 | //although many starting syllables are made up. 3 | name "Mingos town" { 4 | syllablesPre = "East, Fort, Great, High, Lower, Middle, Mount, New, North, Old, Royal, Saint, South, Upper, West" 5 | syllablesStart = "Ales, Apple, Ash, Bald, Bay, Bed, Bell, Birdling, Black, Blue, Bow, Bran, Brass, Bright, Brown, Bruns, Bulls, Camp, Cherry, Clark, Clarks, Clay, Clear, Copper, Corn, Cross, Crystal, Dark, Deep, Deer, Drac, Eagle, Earth, Elk, Elles, Elm, Ester, Ewes, Fair, Falcon, Ferry, Fire, Fleet, Fox, Gold, Grand, Green, Grey, Guild, Hammer, Hart, Hawks, Hay, Haze, Hazel, Hemlock, Ice, Iron, Kent, Kings, Knox, Layne, Lint, Lor, Mable, Maple, Marble, Mare, Marsh, Mist, Mor, Mud, Nor, Oak, Orms, Ox, Oxen, Pear, Pine, Pitts, Port, Purple, Red, Rich, Roch, Rock, Rose, Ross, Rye, Salis, Salt, Shadow, Silver, Skeg, Smith, Snow, Sows, Spring, Spruce, Staff, Star, Steel, Still, Stock, Stone, Strong, Summer, Swan, Swine, Sword, Yellow, Val, Wart, Water, Well, Wheat, White, Wild, Winter, Wolf, Wool, Wor" 6 | syllablesEnd = "bank, borne, borough, brook, burg, burgh, bury, castle, cester, cliff, crest, croft, dale, dam, dorf, edge, field, ford, gate, grad, hall, ham, hollow, holm, hurst, keep, kirk, land, ley, lyn, mere, mill, minster, mont, moor, mouth, ness, pool, river, shire, shore, side, stead, stoke, ston, thorpe, ton, town, vale, ville, way, wich, wick, wood, worth" 7 | syllablesPost = "Annex, Barrens, Barrow, Corner, Cove, Crossing, Dell, Dales, Estates, Forest, Furnace, Grove, Haven, Heath, Hill, Junction, Landing, Meadow, Park, Plain, Point, Reserve, Retreat, Ridge, Springs, View, Village, Wells, Woods" 8 | rules = "$15P_$s$e_$15p" 9 | } 10 | -------------------------------------------------------------------------------- /brogue-1.7.5/src/libtcod-1.5.2/doc/font/DroidSans-Bold.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flend/web-brogue/cce0d050da519b865ed4c8c85ee5737c3a93894d/brogue-1.7.5/src/libtcod-1.5.2/doc/font/DroidSans-Bold.eot -------------------------------------------------------------------------------- /brogue-1.7.5/src/libtcod-1.5.2/doc/font/DroidSans-Bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flend/web-brogue/cce0d050da519b865ed4c8c85ee5737c3a93894d/brogue-1.7.5/src/libtcod-1.5.2/doc/font/DroidSans-Bold.ttf -------------------------------------------------------------------------------- /brogue-1.7.5/src/libtcod-1.5.2/doc/font/DroidSans.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flend/web-brogue/cce0d050da519b865ed4c8c85ee5737c3a93894d/brogue-1.7.5/src/libtcod-1.5.2/doc/font/DroidSans.eot -------------------------------------------------------------------------------- /brogue-1.7.5/src/libtcod-1.5.2/doc/font/DroidSans.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flend/web-brogue/cce0d050da519b865ed4c8c85ee5737c3a93894d/brogue-1.7.5/src/libtcod-1.5.2/doc/font/DroidSans.ttf -------------------------------------------------------------------------------- /brogue-1.7.5/src/libtcod-1.5.2/doc/font/VeraMono-Bold.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flend/web-brogue/cce0d050da519b865ed4c8c85ee5737c3a93894d/brogue-1.7.5/src/libtcod-1.5.2/doc/font/VeraMono-Bold.eot -------------------------------------------------------------------------------- /brogue-1.7.5/src/libtcod-1.5.2/doc/font/VeraMono-Bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flend/web-brogue/cce0d050da519b865ed4c8c85ee5737c3a93894d/brogue-1.7.5/src/libtcod-1.5.2/doc/font/VeraMono-Bold.ttf -------------------------------------------------------------------------------- /brogue-1.7.5/src/libtcod-1.5.2/doc/font/VeraMono.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flend/web-brogue/cce0d050da519b865ed4c8c85ee5737c3a93894d/brogue-1.7.5/src/libtcod-1.5.2/doc/font/VeraMono.eot -------------------------------------------------------------------------------- /brogue-1.7.5/src/libtcod-1.5.2/doc/font/VeraMono.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flend/web-brogue/cce0d050da519b865ed4c8c85ee5737c3a93894d/brogue-1.7.5/src/libtcod-1.5.2/doc/font/VeraMono.ttf -------------------------------------------------------------------------------- /brogue-1.7.5/src/libtcod-1.5.2/doc/html2/bsp_inorder.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flend/web-brogue/cce0d050da519b865ed4c8c85ee5737c3a93894d/brogue-1.7.5/src/libtcod-1.5.2/doc/html2/bsp_inorder.png -------------------------------------------------------------------------------- /brogue-1.7.5/src/libtcod-1.5.2/doc/html2/bsp_invlevelorder.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flend/web-brogue/cce0d050da519b865ed4c8c85ee5737c3a93894d/brogue-1.7.5/src/libtcod-1.5.2/doc/html2/bsp_invlevelorder.png -------------------------------------------------------------------------------- /brogue-1.7.5/src/libtcod-1.5.2/doc/html2/bsp_levelorder.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flend/web-brogue/cce0d050da519b865ed4c8c85ee5737c3a93894d/brogue-1.7.5/src/libtcod-1.5.2/doc/html2/bsp_levelorder.png -------------------------------------------------------------------------------- /brogue-1.7.5/src/libtcod-1.5.2/doc/html2/bsp_postorder.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flend/web-brogue/cce0d050da519b865ed4c8c85ee5737c3a93894d/brogue-1.7.5/src/libtcod-1.5.2/doc/html2/bsp_postorder.png -------------------------------------------------------------------------------- /brogue-1.7.5/src/libtcod-1.5.2/doc/html2/bsp_preorder.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flend/web-brogue/cce0d050da519b865ed4c8c85ee5737c3a93894d/brogue-1.7.5/src/libtcod-1.5.2/doc/html2/bsp_preorder.png -------------------------------------------------------------------------------- /brogue-1.7.5/src/libtcod-1.5.2/doc/html2/fbm_perlin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flend/web-brogue/cce0d050da519b865ed4c8c85ee5737c3a93894d/brogue-1.7.5/src/libtcod-1.5.2/doc/html2/fbm_perlin.png -------------------------------------------------------------------------------- /brogue-1.7.5/src/libtcod-1.5.2/doc/html2/fbm_simplex.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flend/web-brogue/cce0d050da519b865ed4c8c85ee5737c3a93894d/brogue-1.7.5/src/libtcod-1.5.2/doc/html2/fbm_simplex.png -------------------------------------------------------------------------------- /brogue-1.7.5/src/libtcod-1.5.2/doc/html2/fbm_wavelet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flend/web-brogue/cce0d050da519b865ed4c8c85ee5737c3a93894d/brogue-1.7.5/src/libtcod-1.5.2/doc/html2/fbm_wavelet.png -------------------------------------------------------------------------------- /brogue-1.7.5/src/libtcod-1.5.2/doc/html2/midpoint.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flend/web-brogue/cce0d050da519b865ed4c8c85ee5737c3a93894d/brogue-1.7.5/src/libtcod-1.5.2/doc/html2/midpoint.png -------------------------------------------------------------------------------- /brogue-1.7.5/src/libtcod-1.5.2/doc/html2/mingw1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flend/web-brogue/cce0d050da519b865ed4c8c85ee5737c3a93894d/brogue-1.7.5/src/libtcod-1.5.2/doc/html2/mingw1.png -------------------------------------------------------------------------------- /brogue-1.7.5/src/libtcod-1.5.2/doc/html2/mingw2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flend/web-brogue/cce0d050da519b865ed4c8c85ee5737c3a93894d/brogue-1.7.5/src/libtcod-1.5.2/doc/html2/mingw2.png -------------------------------------------------------------------------------- /brogue-1.7.5/src/libtcod-1.5.2/doc/html2/mingw3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flend/web-brogue/cce0d050da519b865ed4c8c85ee5737c3a93894d/brogue-1.7.5/src/libtcod-1.5.2/doc/html2/mingw3.png -------------------------------------------------------------------------------- /brogue-1.7.5/src/libtcod-1.5.2/doc/html2/mingw4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flend/web-brogue/cce0d050da519b865ed4c8c85ee5737c3a93894d/brogue-1.7.5/src/libtcod-1.5.2/doc/html2/mingw4.png -------------------------------------------------------------------------------- /brogue-1.7.5/src/libtcod-1.5.2/doc/html2/perlin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flend/web-brogue/cce0d050da519b865ed4c8c85ee5737c3a93894d/brogue-1.7.5/src/libtcod-1.5.2/doc/html2/perlin.png -------------------------------------------------------------------------------- /brogue-1.7.5/src/libtcod-1.5.2/doc/html2/simplex.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flend/web-brogue/cce0d050da519b865ed4c8c85ee5737c3a93894d/brogue-1.7.5/src/libtcod-1.5.2/doc/html2/simplex.png -------------------------------------------------------------------------------- /brogue-1.7.5/src/libtcod-1.5.2/doc/html2/subcell.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flend/web-brogue/cce0d050da519b865ed4c8c85ee5737c3a93894d/brogue-1.7.5/src/libtcod-1.5.2/doc/html2/subcell.png -------------------------------------------------------------------------------- /brogue-1.7.5/src/libtcod-1.5.2/doc/html2/subcell_comp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flend/web-brogue/cce0d050da519b865ed4c8c85ee5737c3a93894d/brogue-1.7.5/src/libtcod-1.5.2/doc/html2/subcell_comp.png -------------------------------------------------------------------------------- /brogue-1.7.5/src/libtcod-1.5.2/doc/html2/subcell_pyro.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flend/web-brogue/cce0d050da519b865ed4c8c85ee5737c3a93894d/brogue-1.7.5/src/libtcod-1.5.2/doc/html2/subcell_pyro.png -------------------------------------------------------------------------------- /brogue-1.7.5/src/libtcod-1.5.2/doc/html2/terminal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flend/web-brogue/cce0d050da519b865ed4c8c85ee5737c3a93894d/brogue-1.7.5/src/libtcod-1.5.2/doc/html2/terminal.png -------------------------------------------------------------------------------- /brogue-1.7.5/src/libtcod-1.5.2/doc/html2/terminal8x8_aa_as.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flend/web-brogue/cce0d050da519b865ed4c8c85ee5737c3a93894d/brogue-1.7.5/src/libtcod-1.5.2/doc/html2/terminal8x8_aa_as.png -------------------------------------------------------------------------------- /brogue-1.7.5/src/libtcod-1.5.2/doc/html2/terminal8x8_gs_as.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flend/web-brogue/cce0d050da519b865ed4c8c85ee5737c3a93894d/brogue-1.7.5/src/libtcod-1.5.2/doc/html2/terminal8x8_gs_as.png -------------------------------------------------------------------------------- /brogue-1.7.5/src/libtcod-1.5.2/doc/html2/terminal8x8_gs_as2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flend/web-brogue/cce0d050da519b865ed4c8c85ee5737c3a93894d/brogue-1.7.5/src/libtcod-1.5.2/doc/html2/terminal8x8_gs_as2.png -------------------------------------------------------------------------------- /brogue-1.7.5/src/libtcod-1.5.2/doc/html2/terminal8x8_gs_ro.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flend/web-brogue/cce0d050da519b865ed4c8c85ee5737c3a93894d/brogue-1.7.5/src/libtcod-1.5.2/doc/html2/terminal8x8_gs_ro.png -------------------------------------------------------------------------------- /brogue-1.7.5/src/libtcod-1.5.2/doc/html2/terminal8x8_gs_tc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flend/web-brogue/cce0d050da519b865ed4c8c85ee5737c3a93894d/brogue-1.7.5/src/libtcod-1.5.2/doc/html2/terminal8x8_gs_tc.png -------------------------------------------------------------------------------- /brogue-1.7.5/src/libtcod-1.5.2/doc/html2/turbulence_perlin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flend/web-brogue/cce0d050da519b865ed4c8c85ee5737c3a93894d/brogue-1.7.5/src/libtcod-1.5.2/doc/html2/turbulence_perlin.png -------------------------------------------------------------------------------- /brogue-1.7.5/src/libtcod-1.5.2/doc/html2/turbulence_simplex.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flend/web-brogue/cce0d050da519b865ed4c8c85ee5737c3a93894d/brogue-1.7.5/src/libtcod-1.5.2/doc/html2/turbulence_simplex.png -------------------------------------------------------------------------------- /brogue-1.7.5/src/libtcod-1.5.2/doc/html2/turbulence_wavelet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flend/web-brogue/cce0d050da519b865ed4c8c85ee5737c3a93894d/brogue-1.7.5/src/libtcod-1.5.2/doc/html2/turbulence_wavelet.png -------------------------------------------------------------------------------- /brogue-1.7.5/src/libtcod-1.5.2/doc/html2/wavelet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flend/web-brogue/cce0d050da519b865ed4c8c85ee5737c3a93894d/brogue-1.7.5/src/libtcod-1.5.2/doc/html2/wavelet.png -------------------------------------------------------------------------------- /brogue-1.7.5/src/libtcod-1.5.2/doc/img/breadcrumb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flend/web-brogue/cce0d050da519b865ed4c8c85ee5737c3a93894d/brogue-1.7.5/src/libtcod-1.5.2/doc/img/breadcrumb.png -------------------------------------------------------------------------------- /brogue-1.7.5/src/libtcod-1.5.2/doc/img/c.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flend/web-brogue/cce0d050da519b865ed4c8c85ee5737c3a93894d/brogue-1.7.5/src/libtcod-1.5.2/doc/img/c.png -------------------------------------------------------------------------------- /brogue-1.7.5/src/libtcod-1.5.2/doc/img/cpp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flend/web-brogue/cce0d050da519b865ed4c8c85ee5737c3a93894d/brogue-1.7.5/src/libtcod-1.5.2/doc/img/cpp.png -------------------------------------------------------------------------------- /brogue-1.7.5/src/libtcod-1.5.2/doc/img/cs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flend/web-brogue/cce0d050da519b865ed4c8c85ee5737c3a93894d/brogue-1.7.5/src/libtcod-1.5.2/doc/img/cs.png -------------------------------------------------------------------------------- /brogue-1.7.5/src/libtcod-1.5.2/doc/img/gradient.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flend/web-brogue/cce0d050da519b865ed4c8c85ee5737c3a93894d/brogue-1.7.5/src/libtcod-1.5.2/doc/img/gradient.png -------------------------------------------------------------------------------- /brogue-1.7.5/src/libtcod-1.5.2/doc/img/haschildren.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flend/web-brogue/cce0d050da519b865ed4c8c85ee5737c3a93894d/brogue-1.7.5/src/libtcod-1.5.2/doc/img/haschildren.png -------------------------------------------------------------------------------- /brogue-1.7.5/src/libtcod-1.5.2/doc/img/lua.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flend/web-brogue/cce0d050da519b865ed4c8c85ee5737c3a93894d/brogue-1.7.5/src/libtcod-1.5.2/doc/img/lua.png -------------------------------------------------------------------------------- /brogue-1.7.5/src/libtcod-1.5.2/doc/img/next.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flend/web-brogue/cce0d050da519b865ed4c8c85ee5737c3a93894d/brogue-1.7.5/src/libtcod-1.5.2/doc/img/next.png -------------------------------------------------------------------------------- /brogue-1.7.5/src/libtcod-1.5.2/doc/img/prev.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flend/web-brogue/cce0d050da519b865ed4c8c85ee5737c3a93894d/brogue-1.7.5/src/libtcod-1.5.2/doc/img/prev.png -------------------------------------------------------------------------------- /brogue-1.7.5/src/libtcod-1.5.2/doc/img/py.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flend/web-brogue/cce0d050da519b865ed4c8c85ee5737c3a93894d/brogue-1.7.5/src/libtcod-1.5.2/doc/img/py.png -------------------------------------------------------------------------------- /brogue-1.7.5/src/libtcod-1.5.2/doc/img/sidebar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flend/web-brogue/cce0d050da519b865ed4c8c85ee5737c3a93894d/brogue-1.7.5/src/libtcod-1.5.2/doc/img/sidebar.png -------------------------------------------------------------------------------- /brogue-1.7.5/src/libtcod-1.5.2/doc/img/sidebar_arrow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flend/web-brogue/cce0d050da519b865ed4c8c85ee5737c3a93894d/brogue-1.7.5/src/libtcod-1.5.2/doc/img/sidebar_arrow.png -------------------------------------------------------------------------------- /brogue-1.7.5/src/libtcod-1.5.2/doc/js/doctcod.js: -------------------------------------------------------------------------------- 1 | function enable(lang,onoff) { 2 | var plist=document.getElementsByTagName("P"); 3 | for (var i=0; i < plist.length; i++) { 4 | var p = plist[i]; 5 | if ( p.className == lang ) { 6 | p.style.display = (onoff ? "" : "none"); 7 | } 8 | } 9 | } 10 | 11 | function link(page) { 12 | var chk_c=document.getElementById("chk_c"); 13 | var chk_cpp=document.getElementById("chk_cpp"); 14 | var chk_cs=document.getElementById("chk_cs"); 15 | var chk_py=document.getElementById("chk_py"); 16 | var chk_lua=document.getElementById("chk_lua"); 17 | var url=page+'?c='+chk_c.checked+'&cpp='+chk_cpp.checked+'&cs='+chk_cs.checked+'&py='+chk_py.checked+'&lua='+chk_lua.checked; 18 | document.location=url; 19 | } 20 | 21 | function getParam(name) { 22 | // var regexS = "[\\?&]"+name+"=([^&#]*)"; 23 | // var regex = new new RegExp( regexS ); 24 | var v = window.location.href.split(/[?&]/); 25 | for (var i=0; i < v.length; i++ ) { 26 | var n = v[i].split(/[=#]/); 27 | if ( n.length >= 1 && n[0] == name ) return decodeURI(n[1]); 28 | } 29 | return ""; 30 | } 31 | 32 | function initFilter() { 33 | var chk_c=document.getElementById("chk_c"); 34 | var chk_cpp=document.getElementById("chk_cpp"); 35 | var chk_cs=document.getElementById("chk_cs"); 36 | var chk_py=document.getElementById("chk_py"); 37 | var chk_lua=document.getElementById("chk_lua"); 38 | chk_c.checked = (getParam("c") == "true"); 39 | chk_cpp.checked = (getParam("cpp") == "true"); 40 | chk_cs.checked = (getParam("cs") == "true"); 41 | chk_py.checked = (getParam("py") == "true"); 42 | chk_lua.checked = (getParam("lua") == "true"); 43 | if (!chk_c.checked) enable("c",false); 44 | if (!chk_cpp.checked) enable("cpp",false); 45 | if (!chk_cs.checked) enable("cs",false); 46 | if (!chk_py.checked) enable("py",false); 47 | if (!chk_lua.checked) enable("lua",false); 48 | } 49 | -------------------------------------------------------------------------------- /brogue-1.7.5/src/libtcod-1.5.2/hmtool: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flend/web-brogue/cce0d050da519b865ed4c8c85ee5737c3a93894d/brogue-1.7.5/src/libtcod-1.5.2/hmtool -------------------------------------------------------------------------------- /brogue-1.7.5/src/libtcod-1.5.2/hmtool_debug: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flend/web-brogue/cce0d050da519b865ed4c8c85ee5737c3a93894d/brogue-1.7.5/src/libtcod-1.5.2/hmtool_debug -------------------------------------------------------------------------------- /brogue-1.7.5/src/libtcod-1.5.2/include/gui/container.hpp: -------------------------------------------------------------------------------- 1 | /* 2 | * libtcod 1.5.2 3 | * Copyright (c) 2008,2009,2010,2012 Jice & Mingos 4 | * All rights reserved. 5 | * 6 | * Redistribution and use in source and binary forms, with or without 7 | * modification, are permitted provided that the following conditions are met: 8 | * * Redistributions of source code must retain the above copyright 9 | * notice, this list of conditions and the following disclaimer. 10 | * * Redistributions in binary form must reproduce the above copyright 11 | * notice, this list of conditions and the following disclaimer in the 12 | * documentation and/or other materials provided with the distribution. 13 | * * The name of Jice or Mingos may not be used to endorse or promote products 14 | * derived from this software without specific prior written permission. 15 | * 16 | * THIS SOFTWARE IS PROVIDED BY JICE AND MINGOS ``AS IS'' AND ANY 17 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 18 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 19 | * DISCLAIMED. IN NO EVENT SHALL JICE OR MINGOS BE LIABLE FOR ANY 20 | * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 21 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 22 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 23 | * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 24 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 25 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 26 | */ 27 | class TCODLIB_GUI_API Container : public Widget { 28 | public : 29 | Container(int x, int y, int w, int h) : Widget(x,y,w,h) {} 30 | virtual ~Container(); 31 | void addWidget(Widget *wid); 32 | void removeWidget(Widget *wid); 33 | void setVisible(bool val); 34 | void render(); 35 | void clear(); 36 | void update(const TCOD_key_t k); 37 | protected : 38 | TCODList content; 39 | }; 40 | 41 | -------------------------------------------------------------------------------- /brogue-1.7.5/src/libtcod-1.5.2/include/gui/hbox.hpp: -------------------------------------------------------------------------------- 1 | /* 2 | * libtcod 1.5.2 3 | * Copyright (c) 2008,2009,2010,2012 Jice & Mingos 4 | * All rights reserved. 5 | * 6 | * Redistribution and use in source and binary forms, with or without 7 | * modification, are permitted provided that the following conditions are met: 8 | * * Redistributions of source code must retain the above copyright 9 | * notice, this list of conditions and the following disclaimer. 10 | * * Redistributions in binary form must reproduce the above copyright 11 | * notice, this list of conditions and the following disclaimer in the 12 | * documentation and/or other materials provided with the distribution. 13 | * * The name of Jice or Mingos may not be used to endorse or promote products 14 | * derived from this software without specific prior written permission. 15 | * 16 | * THIS SOFTWARE IS PROVIDED BY JICE AND MINGOS ``AS IS'' AND ANY 17 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 18 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 19 | * DISCLAIMED. IN NO EVENT SHALL JICE OR MINGOS BE LIABLE FOR ANY 20 | * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 21 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 22 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 23 | * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 24 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 25 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 26 | */ 27 | class TCODLIB_GUI_API HBox : public VBox { 28 | public : 29 | HBox(int x, int y, int padding); 30 | void computeSize(); 31 | }; 32 | 33 | -------------------------------------------------------------------------------- /brogue-1.7.5/src/libtcod-1.5.2/include/gui/image.hpp: -------------------------------------------------------------------------------- 1 | /* 2 | * libtcod 1.5.2 3 | * Copyright (c) 2008,2009,2010,2012 Jice & Mingos 4 | * All rights reserved. 5 | * 6 | * Redistribution and use in source and binary forms, with or without 7 | * modification, are permitted provided that the following conditions are met: 8 | * * Redistributions of source code must retain the above copyright 9 | * notice, this list of conditions and the following disclaimer. 10 | * * Redistributions in binary form must reproduce the above copyright 11 | * notice, this list of conditions and the following disclaimer in the 12 | * documentation and/or other materials provided with the distribution. 13 | * * The name of Jice or Mingos may not be used to endorse or promote products 14 | * derived from this software without specific prior written permission. 15 | * 16 | * THIS SOFTWARE IS PROVIDED BY JICE AND MINGOS ``AS IS'' AND ANY 17 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 18 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 19 | * DISCLAIMED. IN NO EVENT SHALL JICE OR MINGOS BE LIABLE FOR ANY 20 | * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 21 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 22 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 23 | * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 24 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 25 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 26 | */ 27 | class TCODLIB_GUI_API Image : public Widget { 28 | public : 29 | Image(int x,int y,int w, int h, const char *tip=NULL); 30 | virtual ~Image(); 31 | void setBackgroundColor(const TCODColor col); 32 | void render(); 33 | protected : 34 | void expand(int width, int height); 35 | 36 | TCODColor back; 37 | }; 38 | 39 | -------------------------------------------------------------------------------- /brogue-1.7.5/src/libtcod-1.5.2/include/gui/label.hpp: -------------------------------------------------------------------------------- 1 | /* 2 | * libtcod 1.5.2 3 | * Copyright (c) 2008,2009,2010,2012 Jice & Mingos 4 | * All rights reserved. 5 | * 6 | * Redistribution and use in source and binary forms, with or without 7 | * modification, are permitted provided that the following conditions are met: 8 | * * Redistributions of source code must retain the above copyright 9 | * notice, this list of conditions and the following disclaimer. 10 | * * Redistributions in binary form must reproduce the above copyright 11 | * notice, this list of conditions and the following disclaimer in the 12 | * documentation and/or other materials provided with the distribution. 13 | * * The name of Jice or Mingos may not be used to endorse or promote products 14 | * derived from this software without specific prior written permission. 15 | * 16 | * THIS SOFTWARE IS PROVIDED BY JICE AND MINGOS ``AS IS'' AND ANY 17 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 18 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 19 | * DISCLAIMED. IN NO EVENT SHALL JICE OR MINGOS BE LIABLE FOR ANY 20 | * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 21 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 22 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 23 | * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 24 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 25 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 26 | */ 27 | class TCODLIB_GUI_API Label : public Widget { 28 | public : 29 | Label(int x, int y, const char *label, const char *tip=NULL ); 30 | void render(); 31 | void computeSize(); 32 | void setValue(const char *label) { this->label=label; } 33 | protected : 34 | const char *label; 35 | 36 | void expand(int width, int height); 37 | }; 38 | 39 | -------------------------------------------------------------------------------- /brogue-1.7.5/src/libtcod-1.5.2/include/gui/statusbar.hpp: -------------------------------------------------------------------------------- 1 | /* 2 | * libtcod 1.5.2 3 | * Copyright (c) 2008,2009,2010,2012 Jice & Mingos 4 | * All rights reserved. 5 | * 6 | * Redistribution and use in source and binary forms, with or without 7 | * modification, are permitted provided that the following conditions are met: 8 | * * Redistributions of source code must retain the above copyright 9 | * notice, this list of conditions and the following disclaimer. 10 | * * Redistributions in binary form must reproduce the above copyright 11 | * notice, this list of conditions and the following disclaimer in the 12 | * documentation and/or other materials provided with the distribution. 13 | * * The name of Jice or Mingos may not be used to endorse or promote products 14 | * derived from this software without specific prior written permission. 15 | * 16 | * THIS SOFTWARE IS PROVIDED BY JICE AND MINGOS ``AS IS'' AND ANY 17 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 18 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 19 | * DISCLAIMED. IN NO EVENT SHALL JICE OR MINGOS BE LIABLE FOR ANY 20 | * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 21 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 22 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 23 | * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 24 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 25 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 26 | */ 27 | class TCODLIB_GUI_API StatusBar : public Widget { 28 | public : 29 | StatusBar(int x,int y,int w, int h):Widget(x,y,w,h) {} 30 | void render(); 31 | }; 32 | 33 | -------------------------------------------------------------------------------- /brogue-1.7.5/src/libtcod-1.5.2/include/gui/toolbar.hpp: -------------------------------------------------------------------------------- 1 | /* 2 | * libtcod 1.5.2 3 | * Copyright (c) 2008,2009,2010,2012 Jice & Mingos 4 | * All rights reserved. 5 | * 6 | * Redistribution and use in source and binary forms, with or without 7 | * modification, are permitted provided that the following conditions are met: 8 | * * Redistributions of source code must retain the above copyright 9 | * notice, this list of conditions and the following disclaimer. 10 | * * Redistributions in binary form must reproduce the above copyright 11 | * notice, this list of conditions and the following disclaimer in the 12 | * documentation and/or other materials provided with the distribution. 13 | * * The name of Jice or Mingos may not be used to endorse or promote products 14 | * derived from this software without specific prior written permission. 15 | * 16 | * THIS SOFTWARE IS PROVIDED BY JICE AND MINGOS ``AS IS'' AND ANY 17 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 18 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 19 | * DISCLAIMED. IN NO EVENT SHALL JICE OR MINGOS BE LIABLE FOR ANY 20 | * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 21 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 22 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 23 | * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 24 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 25 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 26 | */ 27 | class TCODLIB_GUI_API ToolBar : public Container { 28 | public : 29 | ToolBar(int x, int y, const char *name, const char *tip=NULL); 30 | ToolBar(int x, int y, int w, const char *name, const char *tip=NULL); 31 | ~ToolBar(); 32 | void render(); 33 | void setName(const char *name); 34 | void addSeparator(const char *txt, const char *tip=NULL); 35 | void computeSize(); 36 | protected : 37 | char *name; 38 | int fixedWidth; 39 | }; 40 | 41 | -------------------------------------------------------------------------------- /brogue-1.7.5/src/libtcod-1.5.2/include/gui/vbox.hpp: -------------------------------------------------------------------------------- 1 | /* 2 | * libtcod 1.5.2 3 | * Copyright (c) 2008,2009,2010,2012 Jice & Mingos 4 | * All rights reserved. 5 | * 6 | * Redistribution and use in source and binary forms, with or without 7 | * modification, are permitted provided that the following conditions are met: 8 | * * Redistributions of source code must retain the above copyright 9 | * notice, this list of conditions and the following disclaimer. 10 | * * Redistributions in binary form must reproduce the above copyright 11 | * notice, this list of conditions and the following disclaimer in the 12 | * documentation and/or other materials provided with the distribution. 13 | * * The name of Jice or Mingos may not be used to endorse or promote products 14 | * derived from this software without specific prior written permission. 15 | * 16 | * THIS SOFTWARE IS PROVIDED BY JICE AND MINGOS ``AS IS'' AND ANY 17 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 18 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 19 | * DISCLAIMED. IN NO EVENT SHALL JICE OR MINGOS BE LIABLE FOR ANY 20 | * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 21 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 22 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 23 | * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 24 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 25 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 26 | */ 27 | class TCODLIB_GUI_API VBox : public Container { 28 | public : 29 | VBox(int x, int y, int padding) : Container(x,y,0,0),padding(padding) {} 30 | void computeSize(); 31 | protected : 32 | int padding; 33 | }; 34 | 35 | -------------------------------------------------------------------------------- /brogue-1.7.5/src/libtcod-1.5.2/include/mouse.h: -------------------------------------------------------------------------------- 1 | /* 2 | * libtcod 1.5.2 3 | * Copyright (c) 2008,2009,2010,2012 Jice & Mingos 4 | * All rights reserved. 5 | * 6 | * Redistribution and use in source and binary forms, with or without 7 | * modification, are permitted provided that the following conditions are met: 8 | * * Redistributions of source code must retain the above copyright 9 | * notice, this list of conditions and the following disclaimer. 10 | * * Redistributions in binary form must reproduce the above copyright 11 | * notice, this list of conditions and the following disclaimer in the 12 | * documentation and/or other materials provided with the distribution. 13 | * * The name of Jice or Mingos may not be used to endorse or promote products 14 | * derived from this software without specific prior written permission. 15 | * 16 | * THIS SOFTWARE IS PROVIDED BY JICE AND MINGOS ``AS IS'' AND ANY 17 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 18 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 19 | * DISCLAIMED. IN NO EVENT SHALL JICE OR MINGOS BE LIABLE FOR ANY 20 | * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 21 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 22 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 23 | * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 24 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 25 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 26 | */ 27 | 28 | #ifndef _TCOD_MOUSE_H 29 | #define _TCOD_MOUSE_H 30 | 31 | #include "mouse_types.h" 32 | 33 | TCODLIB_API void TCOD_mouse_show_cursor(bool visible); 34 | TCODLIB_API TCOD_mouse_t TCOD_mouse_get_status(); 35 | TCODLIB_API bool TCOD_mouse_is_cursor_visible(); 36 | TCODLIB_API void TCOD_mouse_move(int x, int y); 37 | TCODLIB_API void TCOD_mouse_includes_touch(bool enable); 38 | 39 | #endif 40 | -------------------------------------------------------------------------------- /brogue-1.7.5/src/libtcod-1.5.2/include/noise_defaults.h: -------------------------------------------------------------------------------- 1 | #ifndef _TCOD_NOISE_DEFAULTS 2 | #define _TCOD_NOISE_DEFAULTS 3 | 4 | #define TCOD_NOISE_MAX_OCTAVES 128 5 | #define TCOD_NOISE_MAX_DIMENSIONS 4 6 | #define TCOD_NOISE_DEFAULT_HURST 0.5f 7 | #define TCOD_NOISE_DEFAULT_LACUNARITY 2.0f 8 | 9 | #endif /* _TCOD_NOISE_DEFAULTS */ 10 | -------------------------------------------------------------------------------- /brogue-1.7.5/src/libtcod-1.5.2/include/tree.h: -------------------------------------------------------------------------------- 1 | /* 2 | * libtcod 1.5.2 3 | * Copyright (c) 2008,2009,2010,2012 Jice & Mingos 4 | * All rights reserved. 5 | * 6 | * Redistribution and use in source and binary forms, with or without 7 | * modification, are permitted provided that the following conditions are met: 8 | * * Redistributions of source code must retain the above copyright 9 | * notice, this list of conditions and the following disclaimer. 10 | * * Redistributions in binary form must reproduce the above copyright 11 | * notice, this list of conditions and the following disclaimer in the 12 | * documentation and/or other materials provided with the distribution. 13 | * * The name of Jice or Mingos may not be used to endorse or promote products 14 | * derived from this software without specific prior written permission. 15 | * 16 | * THIS SOFTWARE IS PROVIDED BY JICE AND MINGOS ``AS IS'' AND ANY 17 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 18 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 19 | * DISCLAIMED. IN NO EVENT SHALL JICE OR MINGOS BE LIABLE FOR ANY 20 | * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 21 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 22 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 23 | * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 24 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 25 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 26 | */ 27 | 28 | #ifndef _TCOD_TREE_H 29 | #define _TCOD_TREE_H 30 | 31 | typedef struct _TCOD_tree_t { 32 | struct _TCOD_tree_t *next; 33 | struct _TCOD_tree_t *father; 34 | struct _TCOD_tree_t *sons; 35 | } TCOD_tree_t; 36 | 37 | TCODLIB_API TCOD_tree_t *TCOD_tree_new(); 38 | TCODLIB_API void TCOD_tree_add_son(TCOD_tree_t *node, TCOD_tree_t *son); 39 | 40 | #endif 41 | -------------------------------------------------------------------------------- /brogue-1.7.5/src/libtcod-1.5.2/libtcod.cfg: -------------------------------------------------------------------------------- 1 | /* 2 | Use this file to customize the behaviour of libtcod, 3 | overriding what's defined in the sample/game code. 4 | The main goal of this file is to allow the player 5 | to tweak the game in case it doesn't work properly 6 | on his system and there are no options screen/config 7 | files available in the game. 8 | */ 9 | libtcod { 10 | // uncomment to force the use of a specific renderer 11 | // renderer = "GLSL" 12 | // renderer = "OPENGL" 13 | //renderer = "SDL" 14 | 15 | // uncomment to force a specific fullscreen resolution 16 | /* 17 | fullscreen=true 18 | fullscreenWidth=1280 19 | fullscreenHeight=1024 20 | */ 21 | 22 | // uncomment to use a custom font. 23 | /* 24 | font="data/fonts/terminal8x8_gs_as.png" 25 | fontInRow=false 26 | fontGreyscale=true 27 | fontTcodLayout=false 28 | fontNbCharHoriz=16 29 | fontNbCharVertic=16 30 | */ 31 | } 32 | 33 | -------------------------------------------------------------------------------- /brogue-1.7.5/src/libtcod-1.5.2/samples/apfviewer.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include "libtcod.hpp" 3 | 4 | static float version=1.0f; 5 | 6 | int main(int argc, char *argv[]) { 7 | TCODConsole * rootcon = NULL; 8 | TCOD_key_t keyPress; 9 | TCOD_renderer_t renderer = TCOD_RENDERER_SDL; 10 | 11 | int row=50; 12 | int col=80; 13 | if ( argc < 2) { 14 | printf ("apfviewer ...\nversion %g\n",version); 15 | return 1; 16 | } 17 | TCODConsole::initRoot(col,row,"apfviewer",false,renderer ); 18 | TCODConsole con(1,1); 19 | for (int i=1; i < argc; i++) { 20 | if (strstr(argv[i],".asc")) con.loadAsc(argv[1]); 21 | else con.loadApf(argv[i]); 22 | delete TCODConsole::root; 23 | TCODConsole::root=NULL; 24 | TCODConsole::initRoot(con.getWidth(),con.getHeight(),argv[i],false,renderer ); 25 | TCODConsole::blit(&con,0,0,0,0,TCODConsole::root,0,0); 26 | TCODConsole::root->flush(); 27 | TCODSystem::waitForEvent(TCOD_EVENT_KEY_RELEASE|TCOD_EVENT_MOUSE_PRESS,NULL,NULL,true); 28 | } 29 | 30 | return 0; 31 | } 32 | -------------------------------------------------------------------------------- /brogue-1.7.5/src/libtcod-1.5.2/samples/doctcod/page.tpl: -------------------------------------------------------------------------------- 1 | 2 | 3 | libtcod documentation | ${TITLE} 4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 |

libtcoddocumentation

12 |
13 | 17 |
${FILTER_FORM}
18 |
19 |

${PAGE_TITLE}

20 | ${PAGE_CONTENT} 21 |
22 | 30 | 31 | 35 | 36 | -------------------------------------------------------------------------------- /brogue-1.7.5/src/libtcod-1.5.2/samples/hmtool/README.txt: -------------------------------------------------------------------------------- 1 | libtcod height map tool 2 | 3 | Actually this is currently more a curiosity than a real useful tool. 4 | It allows you to tweak a heightmap by hand and generate the corresponding C,C++ or python code. 5 | 6 | The heightmap tool source code is public domain. Do whatever you want with it. 7 | 8 | NB : this tool has not been upgraded to the latest libtcod API so the generated code won't compile. -------------------------------------------------------------------------------- /brogue-1.7.5/src/libtcod-1.5.2/samples/navier/main.hpp: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2010 Jice 3 | * All rights reserved. 4 | * 5 | * Redistribution and use in source and binary forms, with or without 6 | * modification, are permitted provided that the following conditions are met: 7 | * * Redistributions of source code must retain the above copyright 8 | * notice, this list of conditions and the following disclaimer. 9 | * * Redistributions in binary form must reproduce the above copyright 10 | * notice, this list of conditions and the following disclaimer in the 11 | * documentation and/or other materials provided with the distribution. 12 | * * The name of Jice may not be used to endorse or promote products 13 | * derived from this software without specific prior written permission. 14 | * 15 | * THIS SOFTWARE IS PROVIDED BY JICE ``AS IS'' AND ANY 16 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 17 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 18 | * DISCLAIMED. IN NO EVENT SHALL JICE BE LIABLE FOR ANY 19 | * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 20 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 21 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 22 | * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 23 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 24 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 25 | */ 26 | #include "libtcod.hpp" 27 | 28 | 29 | #define VERSION "0.1.1" 30 | 31 | // console size 32 | #define CON_W 80 33 | #define CON_H 50 34 | 35 | #define IN_RECTANGLE(x,y,w,h) ((unsigned)(x) < (unsigned)(w) && (unsigned)(y) < (unsigned)(h)) 36 | #define SQRDIST(x1,y1,x2,y2) (((x1)-(x2))*((x1)-(x2))+((y1)-(y2))*((y1)-(y2))) 37 | 38 | -------------------------------------------------------------------------------- /brogue-1.7.5/src/libtcod-1.5.2/samples/rad/README.txt: -------------------------------------------------------------------------------- 1 | 2 | Radiosity 0.1.0 3 | 4 | “Radiosity” engine 5 | 6 | Simple light diffusion using some sort of radiosity algorithm 7 | Not fast, not clean code… To be improved 8 | 9 | http://doryen.eptalys.net/demos/ 10 | 11 | -------------------------------------------------------------------------------- /brogue-1.7.5/src/libtcod-1.5.2/samples/rad/terminal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flend/web-brogue/cce0d050da519b865ed4c8c85ee5737c3a93894d/brogue-1.7.5/src/libtcod-1.5.2/samples/rad/terminal.png -------------------------------------------------------------------------------- /brogue-1.7.5/src/libtcod-1.5.2/samples/ripples/main.hpp: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2010 Jice 3 | * All rights reserved. 4 | * 5 | * Redistribution and use in source and binary forms, with or without 6 | * modification, are permitted provided that the following conditions are met: 7 | * * Redistributions of source code must retain the above copyright 8 | * notice, this list of conditions and the following disclaimer. 9 | * * Redistributions in binary form must reproduce the above copyright 10 | * notice, this list of conditions and the following disclaimer in the 11 | * documentation and/or other materials provided with the distribution. 12 | * * The name of Jice may not be used to endorse or promote products 13 | * derived from this software without specific prior written permission. 14 | * 15 | * THIS SOFTWARE IS PROVIDED BY JICE ``AS IS'' AND ANY 16 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 17 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 18 | * DISCLAIMED. IN NO EVENT SHALL JICE BE LIABLE FOR ANY 19 | * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 20 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 21 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 22 | * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 23 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 24 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 25 | */ 26 | #include "libtcod.hpp" 27 | #include "util_ripples.hpp" 28 | 29 | #define VERSION "0.1.0" 30 | 31 | // console size 32 | #define CON_W 80 33 | #define CON_H 50 34 | 35 | #define IN_RECTANGLE(x,y,w,h) ((unsigned)(x) < (unsigned)(w) && (unsigned)(y) < (unsigned)(h)) 36 | #define SQRDIST(x1,y1,x2,y2) (((x1)-(x2))*((x1)-(x2))+((y1)-(y2))*((y1)-(y2))) 37 | 38 | #ifndef NDEBUG 39 | #define DBG(x) printf x 40 | #else 41 | #define DBG(x) 42 | #endif 43 | 44 | extern TCODNoise noise3d; 45 | -------------------------------------------------------------------------------- /brogue-1.7.5/src/libtcod-1.5.2/samples/weather/main.hpp: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2010 Jice 3 | * All rights reserved. 4 | * 5 | * Redistribution and use in source and binary forms, with or without 6 | * modification, are permitted provided that the following conditions are met: 7 | * * Redistributions of source code must retain the above copyright 8 | * notice, this list of conditions and the following disclaimer. 9 | * * Redistributions in binary form must reproduce the above copyright 10 | * notice, this list of conditions and the following disclaimer in the 11 | * documentation and/or other materials provided with the distribution. 12 | * * The name of Jice may not be used to endorse or promote products 13 | * derived from this software without specific prior written permission. 14 | * 15 | * THIS SOFTWARE IS PROVIDED BY JICE ``AS IS'' AND ANY 16 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 17 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 18 | * DISCLAIMED. IN NO EVENT SHALL JICE BE LIABLE FOR ANY 19 | * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 20 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 21 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 22 | * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 23 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 24 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 25 | */ 26 | #include "libtcod.hpp" 27 | #include "util_weather.hpp" 28 | 29 | #define VERSION "0.1.0" 30 | 31 | // console size 32 | #define CON_W 80 33 | #define CON_H 50 34 | 35 | #define IN_RECTANGLE(x,y,w,h) ((unsigned)(x) < (unsigned)(w) && (unsigned)(y) < (unsigned)(h)) 36 | #define SQRDIST(x1,y1,x2,y2) (((x1)-(x2))*((x1)-(x2))+((y1)-(y2))*((y1)-(y2))) 37 | 38 | #ifndef NDEBUG 39 | #define DBG(x) printf x 40 | #else 41 | #define DBG(x) 42 | #endif 43 | 44 | extern TCODNoise noise1d; 45 | extern TCODNoise noise2d; 46 | -------------------------------------------------------------------------------- /brogue-1.7.5/src/libtcod-1.5.2/samples/worldgen/README.txt: -------------------------------------------------------------------------------- 1 | 2 | World generator 0.1.0 3 | 4 | Fast (< 1 sec for a 400×400 map) 5 | Heightmap, precipitation map, latitude-dependant temperature map, biome map 6 | Rain erosion 7 | Rapidely Exploring Random Tree rivers 8 | 9 | http://doryen.eptalys.net/demos/ 10 | 11 | 12 | -------------------------------------------------------------------------------- /brogue-1.7.5/src/libtcod-1.5.2/samples/worldgen/main.hpp: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2010 Jice 3 | * All rights reserved. 4 | * 5 | * Redistribution and use in source and binary forms, with or without 6 | * modification, are permitted provided that the following conditions are met: 7 | * * Redistributions of source code must retain the above copyright 8 | * notice, this list of conditions and the following disclaimer. 9 | * * Redistributions in binary form must reproduce the above copyright 10 | * notice, this list of conditions and the following disclaimer in the 11 | * documentation and/or other materials provided with the distribution. 12 | * * The name of Jice may not be used to endorse or promote products 13 | * derived from this software without specific prior written permission. 14 | * 15 | * THIS SOFTWARE IS PROVIDED BY JICE ``AS IS'' AND ANY 16 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 17 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 18 | * DISCLAIMED. IN NO EVENT SHALL JICE BE LIABLE FOR ANY 19 | * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 20 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 21 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 22 | * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 23 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 24 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 25 | */ 26 | #include "libtcod.hpp" 27 | #include "util_worldgen.hpp" 28 | 29 | #define VERSION "0.1.0" 30 | 31 | // console size 32 | #define CON_W 80 33 | #define CON_H 50 34 | 35 | #define IN_RECTANGLE(x,y,w,h) ((unsigned)(x) < (unsigned)(w) && (unsigned)(y) < (unsigned)(h)) 36 | #define SQRDIST(x1,y1,x2,y2) (((x1)-(x2))*((x1)-(x2))+((y1)-(y2))*((y1)-(y2))) 37 | 38 | #ifndef NDEBUG 39 | #define DBG(x) printf x 40 | #else 41 | #define DBG(x) 42 | #endif 43 | 44 | extern TCODNoise noise1d; 45 | extern TCODNoise noise2d; 46 | -------------------------------------------------------------------------------- /brogue-1.7.5/src/libtcod-1.5.2/samples/worldgen/terminal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flend/web-brogue/cce0d050da519b865ed4c8c85ee5737c3a93894d/brogue-1.7.5/src/libtcod-1.5.2/samples/worldgen/terminal.png -------------------------------------------------------------------------------- /brogue-1.7.5/src/libtcod-1.5.2/samples/worldgen/util_worldgen.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flend/web-brogue/cce0d050da519b865ed4c8c85ee5737c3a93894d/brogue-1.7.5/src/libtcod-1.5.2/samples/worldgen/util_worldgen.cpp -------------------------------------------------------------------------------- /brogue-1.7.5/src/libtcod-1.5.2/samples/worldgen/util_worldgen.hpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flend/web-brogue/cce0d050da519b865ed4c8c85ee5737c3a93894d/brogue-1.7.5/src/libtcod-1.5.2/samples/worldgen/util_worldgen.hpp -------------------------------------------------------------------------------- /brogue-1.7.5/src/libtcod-1.5.2/samples_c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flend/web-brogue/cce0d050da519b865ed4c8c85ee5737c3a93894d/brogue-1.7.5/src/libtcod-1.5.2/samples_c -------------------------------------------------------------------------------- /brogue-1.7.5/src/libtcod-1.5.2/samples_c_debug: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flend/web-brogue/cce0d050da519b865ed4c8c85ee5737c3a93894d/brogue-1.7.5/src/libtcod-1.5.2/samples_c_debug -------------------------------------------------------------------------------- /brogue-1.7.5/src/libtcod-1.5.2/samples_cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flend/web-brogue/cce0d050da519b865ed4c8c85ee5737c3a93894d/brogue-1.7.5/src/libtcod-1.5.2/samples_cpp -------------------------------------------------------------------------------- /brogue-1.7.5/src/libtcod-1.5.2/samples_cpp_debug: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flend/web-brogue/cce0d050da519b865ed4c8c85ee5737c3a93894d/brogue-1.7.5/src/libtcod-1.5.2/samples_cpp_debug -------------------------------------------------------------------------------- /brogue-1.7.5/src/libtcod-1.5.2/src/gui/README.txt: -------------------------------------------------------------------------------- 1 | Those classes are a C++ widget toolkit built on top of libtcod. 2 | -------------------------------------------------------------------------------- /brogue-1.7.5/src/libtcod-1.5.2/src/gui/statusbar.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | * libtcod 1.5.2 3 | * Copyright (c) 2008,2009,2010,2012 Jice & Mingos 4 | * All rights reserved. 5 | * 6 | * Redistribution and use in source and binary forms, with or without 7 | * modification, are permitted provided that the following conditions are met: 8 | * * Redistributions of source code must retain the above copyright 9 | * notice, this list of conditions and the following disclaimer. 10 | * * Redistributions in binary form must reproduce the above copyright 11 | * notice, this list of conditions and the following disclaimer in the 12 | * documentation and/or other materials provided with the distribution. 13 | * * The name of Jice or Mingos may not be used to endorse or promote products 14 | * derived from this software without specific prior written permission. 15 | * 16 | * THIS SOFTWARE IS PROVIDED BY JICE AND MINGOS ``AS IS'' AND ANY 17 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 18 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 19 | * DISCLAIMED. IN NO EVENT SHALL JICE OR MINGOS BE LIABLE FOR ANY 20 | * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 21 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 22 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 23 | * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 24 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 25 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 26 | */ 27 | #include "libtcod.hpp" 28 | #include "gui.hpp" 29 | 30 | void StatusBar::render() { 31 | con->setDefaultBackground(back); 32 | con->rect(x,y,w,h,true,TCOD_BKGND_SET); 33 | if ( focus && focus->tip ) { 34 | con->setDefaultForeground(fore); 35 | con->printRectEx(x+1,y,w,h,TCOD_BKGND_NONE,TCOD_LEFT,focus->tip); 36 | } 37 | } 38 | 39 | 40 | -------------------------------------------------------------------------------- /brogue-1.7.5/src/libtcod-1.5.2/src/mouse.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | * libtcod 1.5.2 3 | * Copyright (c) 2008,2009,2010,2012 Jice & Mingos 4 | * All rights reserved. 5 | * 6 | * Redistribution and use in source and binary forms, with or without 7 | * modification, are permitted provided that the following conditions are met: 8 | * * Redistributions of source code must retain the above copyright 9 | * notice, this list of conditions and the following disclaimer. 10 | * * Redistributions in binary form must reproduce the above copyright 11 | * notice, this list of conditions and the following disclaimer in the 12 | * documentation and/or other materials provided with the distribution. 13 | * * The name of Jice or Mingos may not be used to endorse or promote products 14 | * derived from this software without specific prior written permission. 15 | * 16 | * THIS SOFTWARE IS PROVIDED BY JICE AND MINGOS ``AS IS'' AND ANY 17 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 18 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 19 | * DISCLAIMED. IN NO EVENT SHALL JICE OR MINGOS BE LIABLE FOR ANY 20 | * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 21 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 22 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 23 | * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 24 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 25 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 26 | */ 27 | #include "libtcod.hpp" 28 | 29 | void TCODMouse::showCursor(bool visible) { 30 | TCOD_mouse_show_cursor(visible); 31 | } 32 | 33 | bool TCODMouse::isCursorVisible() { 34 | return TCOD_mouse_is_cursor_visible() != 0; 35 | } 36 | 37 | void TCODMouse::move(int x, int y) { 38 | TCOD_mouse_move(x,y); 39 | } 40 | 41 | TCOD_mouse_t TCODMouse::getStatus() { 42 | return TCOD_mouse_get_status(); 43 | } 44 | 45 | -------------------------------------------------------------------------------- /brogue-1.7.5/src/libtcod-1.5.2/src/tree_c.c: -------------------------------------------------------------------------------- 1 | /* 2 | * libtcod 1.5.2 3 | * Copyright (c) 2008,2009,2010,2012 Jice & Mingos 4 | * All rights reserved. 5 | * 6 | * Redistribution and use in source and binary forms, with or without 7 | * modification, are permitted provided that the following conditions are met: 8 | * * Redistributions of source code must retain the above copyright 9 | * notice, this list of conditions and the following disclaimer. 10 | * * Redistributions in binary form must reproduce the above copyright 11 | * notice, this list of conditions and the following disclaimer in the 12 | * documentation and/or other materials provided with the distribution. 13 | * * The name of Jice or Mingos may not be used to endorse or promote products 14 | * derived from this software without specific prior written permission. 15 | * 16 | * THIS SOFTWARE IS PROVIDED BY JICE AND MINGOS ``AS IS'' AND ANY 17 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 18 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 19 | * DISCLAIMED. IN NO EVENT SHALL JICE OR MINGOS BE LIABLE FOR ANY 20 | * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 21 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 22 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 23 | * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 24 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 25 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 26 | */ 27 | #include 28 | #include "libtcod.h" 29 | 30 | TCOD_tree_t *TCOD_tree_new() { 31 | return (TCOD_tree_t *)calloc(1,sizeof(TCOD_tree_t)); 32 | } 33 | 34 | void TCOD_tree_add_son(TCOD_tree_t *node, TCOD_tree_t *son) { 35 | TCOD_tree_t *lastson = node->sons; 36 | son->father=node; 37 | while ( lastson && lastson->next ) lastson=lastson->next; 38 | if ( lastson ) { 39 | lastson->next=son; 40 | } else { 41 | node->sons=son; 42 | } 43 | } 44 | 45 | -------------------------------------------------------------------------------- /brogue-1.7.5/src/libtcod-1.5.2/src/zlib/gzclose.c: -------------------------------------------------------------------------------- 1 | /* gzclose.c -- zlib gzclose() function 2 | * Copyright (C) 2004, 2010 Mark Adler 3 | * For conditions of distribution and use, see copyright notice in zlib.h 4 | */ 5 | 6 | #include "gzguts.h" 7 | 8 | /* gzclose() is in a separate file so that it is linked in only if it is used. 9 | That way the other gzclose functions can be used instead to avoid linking in 10 | unneeded compression or decompression routines. */ 11 | int ZEXPORT gzclose(file) 12 | gzFile file; 13 | { 14 | #ifndef NO_GZCOMPRESS 15 | gz_statep state; 16 | 17 | if (file == NULL) 18 | return Z_STREAM_ERROR; 19 | state = (gz_statep)file; 20 | 21 | return state->mode == GZ_READ ? gzclose_r(file) : gzclose_w(file); 22 | #else 23 | return gzclose_r(file); 24 | #endif 25 | } 26 | -------------------------------------------------------------------------------- /brogue-1.7.5/src/libtcod-1.5.2/src/zlib/inffast.h: -------------------------------------------------------------------------------- 1 | /* inffast.h -- header to use inffast.c 2 | * Copyright (C) 1995-2003, 2010 Mark Adler 3 | * For conditions of distribution and use, see copyright notice in zlib.h 4 | */ 5 | 6 | /* WARNING: this file should *not* be used by applications. It is 7 | part of the implementation of the compression library and is 8 | subject to change. Applications should only use zlib.h. 9 | */ 10 | 11 | void ZLIB_INTERNAL inflate_fast OF((z_streamp strm, unsigned start)); 12 | -------------------------------------------------------------------------------- /brogue-1.7.5/src/libtcod-1.5.2/terminal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flend/web-brogue/cce0d050da519b865ed4c8c85ee5737c3a93894d/brogue-1.7.5/src/libtcod-1.5.2/terminal.png -------------------------------------------------------------------------------- /brogue-1.7.5/src/platform/PlatformDefines.h: -------------------------------------------------------------------------------- 1 | /* 2 | * PlatformDefines.h 3 | * Brogue 4 | * 5 | * Created by Brian Walker on 5/22/10. 6 | * Copyright 2010. All rights reserved. 7 | * 8 | * This file is part of Brogue. 9 | * 10 | * Brogue is free software: you can redistribute it and/or modify 11 | * it under the terms of the GNU General Public License as published by 12 | * the Free Software Foundation, either version 3 of the License, or 13 | * (at your option) any later version. 14 | * 15 | * Brogue is distributed in the hope that it will be useful, 16 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 17 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 18 | * GNU General Public License for more details. 19 | * 20 | * You should have received a copy of the GNU General Public License 21 | * along with Brogue. If not, see . 22 | */ 23 | 24 | // Any platform-dependent defines that must be accessible in the game code 25 | // should go in here. 26 | 27 | #define BROGUE_LIBTCOD 28 | #define PLAY_AGAIN_STRING "Press space to play again." 29 | 30 | -------------------------------------------------------------------------------- /brogue-1.7.5/src/platform/platform.h: -------------------------------------------------------------------------------- 1 | #include "Rogue.h" 2 | 3 | struct brogueConsole { 4 | void (*gameLoop)(); 5 | boolean (*pauseForMilliseconds)(short milliseconds); 6 | void (*nextKeyOrMouseEvent)(rogueEvent *returnEvent, boolean textInput, boolean colorsDance); 7 | void (*plotChar)(uchar, short, short, short, short, short, short, short, short); 8 | void (*remap)(const char *, const char *); 9 | boolean (*modifierHeld)(int modifier); 10 | void (*notifyEvent)(short eventId, int data1, int data2, const char *str1, const char *str2); 11 | }; 12 | 13 | void loadKeymap(); 14 | 15 | #ifdef BROGUE_TCOD 16 | extern struct brogueConsole tcodConsole; 17 | #endif 18 | 19 | #ifdef BROGUE_CURSES 20 | extern struct brogueConsole cursesConsole; 21 | #endif 22 | 23 | #ifdef BROGUE_WEB 24 | extern struct brogueConsole webConsole; 25 | #endif 26 | 27 | #ifdef BROGUE_NULL 28 | extern struct brogueConsole nullConsole; 29 | #endif 30 | 31 | extern struct brogueConsole currentConsole; 32 | extern boolean serverMode; 33 | extern boolean noMenu; 34 | 35 | -------------------------------------------------------------------------------- /brogue-1.7.5/src/platform/term.h: -------------------------------------------------------------------------------- 1 | 2 | #ifndef _term_h_ 3 | #define _term_h_ 4 | 5 | #define TERM_NONE 0 6 | #define TERM_MOUSE 1 7 | 8 | typedef struct {float r, g, b;} fcolor; 9 | struct term_t { 10 | int (*start)(); 11 | void (*end)(); 12 | void (*put)(int x, int y, int ch, fcolor *fg, fcolor *bg); 13 | void (*refresh)(); 14 | int (*getkey)(); 15 | void (*wait)(); 16 | int (*hasKey)(); 17 | void (*title)(const char *); 18 | void (*resize)(int w, int h); 19 | int (*keycodeByName)(const char *); 20 | 21 | struct { 22 | int up, down, left, right, backspace, del, quit; 23 | } keys; 24 | 25 | int width, height; 26 | struct { 27 | int x, y; 28 | int isPressed, justPressed, justReleased, justMoved; 29 | int shift, control; 30 | } mouse; 31 | }; 32 | 33 | extern struct term_t Term; 34 | 35 | #endif 36 | 37 | -------------------------------------------------------------------------------- /brogue/bin/brogue-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flend/web-brogue/cce0d050da519b865ed4c8c85ee5737c3a93894d/brogue/bin/brogue-icon.png -------------------------------------------------------------------------------- /brogue/bin/fonts/font-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flend/web-brogue/cce0d050da519b865ed4c8c85ee5737c3a93894d/brogue/bin/fonts/font-1.png -------------------------------------------------------------------------------- /brogue/bin/fonts/font-10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flend/web-brogue/cce0d050da519b865ed4c8c85ee5737c3a93894d/brogue/bin/fonts/font-10.png -------------------------------------------------------------------------------- /brogue/bin/fonts/font-11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flend/web-brogue/cce0d050da519b865ed4c8c85ee5737c3a93894d/brogue/bin/fonts/font-11.png -------------------------------------------------------------------------------- /brogue/bin/fonts/font-12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flend/web-brogue/cce0d050da519b865ed4c8c85ee5737c3a93894d/brogue/bin/fonts/font-12.png -------------------------------------------------------------------------------- /brogue/bin/fonts/font-13.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flend/web-brogue/cce0d050da519b865ed4c8c85ee5737c3a93894d/brogue/bin/fonts/font-13.png -------------------------------------------------------------------------------- /brogue/bin/fonts/font-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flend/web-brogue/cce0d050da519b865ed4c8c85ee5737c3a93894d/brogue/bin/fonts/font-2.png -------------------------------------------------------------------------------- /brogue/bin/fonts/font-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flend/web-brogue/cce0d050da519b865ed4c8c85ee5737c3a93894d/brogue/bin/fonts/font-3.png -------------------------------------------------------------------------------- /brogue/bin/fonts/font-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flend/web-brogue/cce0d050da519b865ed4c8c85ee5737c3a93894d/brogue/bin/fonts/font-4.png -------------------------------------------------------------------------------- /brogue/bin/fonts/font-5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flend/web-brogue/cce0d050da519b865ed4c8c85ee5737c3a93894d/brogue/bin/fonts/font-5.png -------------------------------------------------------------------------------- /brogue/bin/fonts/font-6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flend/web-brogue/cce0d050da519b865ed4c8c85ee5737c3a93894d/brogue/bin/fonts/font-6.png -------------------------------------------------------------------------------- /brogue/bin/fonts/font-7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flend/web-brogue/cce0d050da519b865ed4c8c85ee5737c3a93894d/brogue/bin/fonts/font-7.png -------------------------------------------------------------------------------- /brogue/bin/fonts/font-8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flend/web-brogue/cce0d050da519b865ed4c8c85ee5737c3a93894d/brogue/bin/fonts/font-8.png -------------------------------------------------------------------------------- /brogue/bin/fonts/font-9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flend/web-brogue/cce0d050da519b865ed4c8c85ee5737c3a93894d/brogue/bin/fonts/font-9.png -------------------------------------------------------------------------------- /brogue/bin/icon.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flend/web-brogue/cce0d050da519b865ed4c8c85ee5737c3a93894d/brogue/bin/icon.bmp -------------------------------------------------------------------------------- /brogue/bin/keymap: -------------------------------------------------------------------------------- 1 | # The following keys are valid, although modifier keys (like SHIFT) are 2 | # not supported. Keys that produce characters but are not listed below 3 | # are mapped by the character they produce. 4 | # 5 | # Key remapping is also supported in curses mode, although some key names 6 | # are different and others are the same. 7 | 8 | 9 | # libtcod-mode keys: 10 | # 11 | # NONE 12 | # ESCAPE BACKSPACE TAB ENTER 13 | # SHIFT CONTROL ALT CAPSLOCK LWIN RWIN APPS NUMLOCK SCROLLLOCK 14 | # PAGEUP PAGEDOWN END HOME 15 | # UP LEFT RIGHT DOWN 16 | # PRINTSCREEN PAUSE INSERT DELETE 17 | # 0 1 2 3 4 5 6 7 8 9 18 | # KP0 KP1 KP2 KP3 KP4 KP5 KP6 KP7 KP8 KP9 KPADD KPSUB KPDIV KPMUL KPDEC KPENTER 19 | # F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 20 | # SPACE 21 | 22 | # EXAMPLE: numberpad play 23 | # if you remove the # from each of the following lines, it will be 24 | # possible to perform many actions with only the numberpad (in tcod mode) 25 | #KPDIV a 26 | #KPMUL i 27 | #KPADD t 28 | #KPSUB d 29 | #KPDEC s 30 | #KP0 ESCAPE 31 | 32 | #F5 S 33 | #F7 O 34 | #F2 A 35 | #A NONE 36 | #O NONE 37 | #S NONE 38 | 39 | -------------------------------------------------------------------------------- /brogue/brogue: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | cd `dirname $0`/bin 3 | 4 | ./brogue $* 5 | 6 | # if [ -t 0 ]; then 7 | # ./brogue -t $* 8 | #else 9 | # ./brogue $* 10 | #fi 11 | 12 | -------------------------------------------------------------------------------- /brogue/brogue.desktop: -------------------------------------------------------------------------------- 1 | [Desktop Entry] 2 | Version=1.0 3 | Type=Application 4 | Name=Brogue 1.7.2 5 | GenericName=Roguelike 6 | Comment=Brave the Dungeons of Doom! 7 | Exec=/home/o/brogue-linux-1.7.2/brogue-1.7.2/brogue 8 | Path=/home/o/brogue-linux-1.7.2/brogue-1.7.2 9 | Icon=/home/o/brogue-linux-1.7.2/brogue-1.7.2/bin/brogue-icon.png 10 | Terminal=false 11 | 12 | -------------------------------------------------------------------------------- /brogue/brogue_client.js: -------------------------------------------------------------------------------- 1 | var assert = require('assert'); 2 | var fs = require('fs'); 3 | 4 | var unix = require('./node-unix-dgram/lib/unix_dgram'); 5 | var SOCKNAME = 'server-socket'; 6 | var SOCKNAME_CLIENT = 'client-socket'; 7 | 8 | try { fs.unlinkSync(SOCKNAME_CLIENT); } catch (e) { /* swallow */ } 9 | 10 | var send_ping_to_server = function() { 11 | 12 | var sendBuf = new Buffer(5); 13 | sendBuf[0] = 0; //keystroke 14 | sendBuf[1] = 0; //upper byte 15 | sendBuf[2] = 105; //i 16 | sendBuf[3] = 0; //mod 17 | sendBuf[4] = 0; //mod 18 | 19 | server_write.send(sendBuf, 0, 5, SOCKNAME, function() { 20 | console.error('client send', arguments); 21 | }); 22 | 23 | //Do it again in 2 secs 24 | setTimeout(send_ping_to_server, 2000); 25 | }; 26 | 27 | var client_read = unix.createSocket('unix_dgram', function(buf, rinfo) { 28 | console.error('data: (%d, %d) -> %s', buf[0], buf[1], String.fromCharCode(buf[3])); 29 | }); 30 | client_read.bind(SOCKNAME_CLIENT); 31 | 32 | var server_write = unix.createSocket('unix_dgram', function(buf, rinfo) { 33 | //console.error('client recv', arguments); 34 | //assert(0); 35 | }); 36 | 37 | send_ping_to_server(); 38 | 39 | //setInterval( function() { 40 | // console.log('looping'); 41 | //}, 225); 42 | -------------------------------------------------------------------------------- /brogue/make-link-for-desktop.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | cd `dirname $0` 3 | sed s?PATH?`pwd`?g > brogue.desktop <<-end 4 | [Desktop Entry] 5 | Version=1.0 6 | Type=Application 7 | Name=Brogue 1.7.2 8 | GenericName=Roguelike 9 | Comment=Brave the Dungeons of Doom! 10 | Exec=PATH/brogue 11 | Path=PATH 12 | Icon=PATH/bin/brogue-icon.png 13 | Terminal=false 14 | 15 | end 16 | 17 | chmod +x brogue.desktop 18 | 19 | echo "Created brogue.desktop." 20 | echo "If your desktop is in the default location, type:" 21 | echo "mv brogue.desktop ~/Desktop" 22 | 23 | -------------------------------------------------------------------------------- /brogue/src/get-libtcod.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | cd `dirname $0` 3 | wget -c http://doryen.eptalys.net/?file_id=48 -O libtcod-1.5.2-32.tar.gz 4 | tar -xf libtcod-1.5.2-32.tar.gz 5 | cp libtcod-1.5.2/libtcod.so ../bin 6 | 7 | -------------------------------------------------------------------------------- /brogue/src/platform/PlatformDefines.h: -------------------------------------------------------------------------------- 1 | /* 2 | * PlatformDefines.h 3 | * Brogue 4 | * 5 | * Created by Brian Walker on 5/22/10. 6 | * Copyright 2010. All rights reserved. 7 | * 8 | * This file is part of Brogue. 9 | * 10 | * Brogue is free software: you can redistribute it and/or modify 11 | * it under the terms of the GNU General Public License as published by 12 | * the Free Software Foundation, either version 3 of the License, or 13 | * (at your option) any later version. 14 | * 15 | * Brogue is distributed in the hope that it will be useful, 16 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 17 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 18 | * GNU General Public License for more details. 19 | * 20 | * You should have received a copy of the GNU General Public License 21 | * along with Brogue. If not, see . 22 | */ 23 | 24 | // Any platform-dependent defines that must be accessible in the game code 25 | // should go in here. 26 | 27 | #define BROGUE_LIBTCOD 28 | #define PLAY_AGAIN_STRING "Press space to play again." 29 | 30 | -------------------------------------------------------------------------------- /brogue/src/platform/platform.h: -------------------------------------------------------------------------------- 1 | #include "Rogue.h" 2 | 3 | struct brogueConsole { 4 | void (*gameLoop)(); 5 | boolean (*pauseForMilliseconds)(short milliseconds); 6 | void (*nextKeyOrMouseEvent)(rogueEvent *returnEvent, boolean textInput, boolean colorsDance); 7 | void (*plotChar)(uchar, short, short, short, short, short, short, short, short); 8 | void (*remap)(const char *, const char *); 9 | boolean (*modifierHeld)(int modifier); 10 | void (*notifyEvent)(short eventId, int data1, int data2, const char *str1, const char *str2); 11 | }; 12 | 13 | void loadKeymap(); 14 | 15 | #ifdef BROGUE_TCOD 16 | extern struct brogueConsole tcodConsole; 17 | #endif 18 | 19 | #ifdef BROGUE_CURSES 20 | extern struct brogueConsole cursesConsole; 21 | #endif 22 | 23 | #ifdef BROGUE_WEB 24 | extern struct brogueConsole webConsole; 25 | #endif 26 | 27 | extern struct brogueConsole currentConsole; 28 | extern boolean serverMode; 29 | extern boolean noMenu; 30 | 31 | -------------------------------------------------------------------------------- /brogue/src/platform/term.h: -------------------------------------------------------------------------------- 1 | 2 | #ifndef _term_h_ 3 | #define _term_h_ 4 | 5 | #define TERM_NONE 0 6 | #define TERM_MOUSE 1 7 | 8 | typedef struct {float r, g, b;} fcolor; 9 | struct term_t { 10 | int (*start)(); 11 | void (*end)(); 12 | void (*put)(int x, int y, int ch, fcolor *fg, fcolor *bg); 13 | void (*refresh)(); 14 | int (*getkey)(); 15 | void (*wait)(); 16 | int (*hasKey)(); 17 | void (*title)(const char *); 18 | void (*resize)(int w, int h); 19 | int (*keycodeByName)(const char *); 20 | 21 | struct { 22 | int up, down, left, right, backspace, del, quit; 23 | } keys; 24 | 25 | int width, height; 26 | struct { 27 | int x, y; 28 | int isPressed, justPressed, justReleased, justMoved; 29 | int shift, control; 30 | } mouse; 31 | }; 32 | 33 | extern struct term_t Term; 34 | 35 | #endif 36 | 37 | -------------------------------------------------------------------------------- /brogueplus/bin/.gitignore: -------------------------------------------------------------------------------- 1 | # Ignore everything in this directory 2 | * 3 | # Except this file 4 | !.gitignore -------------------------------------------------------------------------------- /brogueplus/brogue: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | cd `dirname $0`/bin 3 | 4 | ./brogue $* 5 | 6 | # if [ -t 0 ]; then 7 | # ./brogue -t $* 8 | #else 9 | # ./brogue $* 10 | #fi 11 | 12 | -------------------------------------------------------------------------------- /brogueplus/brogue.desktop: -------------------------------------------------------------------------------- 1 | [Desktop Entry] 2 | Version=1.0 3 | Type=Application 4 | Name=Brogue 1.7.2 5 | GenericName=Roguelike 6 | Comment=Brave the Dungeons of Doom! 7 | Exec=/home/o/brogue-linux-1.7.2/brogue-1.7.2/brogue 8 | Path=/home/o/brogue-linux-1.7.2/brogue-1.7.2 9 | Icon=/home/o/brogue-linux-1.7.2/brogue-1.7.2/bin/brogue-icon.png 10 | Terminal=false 11 | 12 | -------------------------------------------------------------------------------- /brogueplus/brogue_client.js: -------------------------------------------------------------------------------- 1 | var assert = require('assert'); 2 | var fs = require('fs'); 3 | 4 | var unix = require('./node-unix-dgram/lib/unix_dgram'); 5 | var SOCKNAME = 'server-socket'; 6 | var SOCKNAME_CLIENT = 'client-socket'; 7 | 8 | try { fs.unlinkSync(SOCKNAME_CLIENT); } catch (e) { /* swallow */ } 9 | 10 | var send_ping_to_server = function() { 11 | 12 | var sendBuf = new Buffer(5); 13 | sendBuf[0] = 0; //keystroke 14 | sendBuf[1] = 0; //upper byte 15 | sendBuf[2] = 105; //i 16 | sendBuf[3] = 0; //mod 17 | sendBuf[4] = 0; //mod 18 | 19 | server_write.send(sendBuf, 0, 5, SOCKNAME, function() { 20 | console.error('client send', arguments); 21 | }); 22 | 23 | //Do it again in 2 secs 24 | setTimeout(send_ping_to_server, 2000); 25 | }; 26 | 27 | var client_read = unix.createSocket('unix_dgram', function(buf, rinfo) { 28 | console.error('data: (%d, %d) -> %s', buf[0], buf[1], String.fromCharCode(buf[3])); 29 | }); 30 | client_read.bind(SOCKNAME_CLIENT); 31 | 32 | var server_write = unix.createSocket('unix_dgram', function(buf, rinfo) { 33 | //console.error('client recv', arguments); 34 | //assert(0); 35 | }); 36 | 37 | send_ping_to_server(); 38 | 39 | //setInterval( function() { 40 | // console.log('looping'); 41 | //}, 225); 42 | -------------------------------------------------------------------------------- /brogueplus/make-link-for-desktop.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | cd `dirname $0` 3 | sed s?PATH?`pwd`?g > brogue.desktop <<-end 4 | [Desktop Entry] 5 | Version=1.0 6 | Type=Application 7 | Name=Brogue 1.7.2 8 | GenericName=Roguelike 9 | Comment=Brave the Dungeons of Doom! 10 | Exec=PATH/brogue 11 | Path=PATH 12 | Icon=PATH/bin/brogue-icon.png 13 | Terminal=false 14 | 15 | end 16 | 17 | chmod +x brogue.desktop 18 | 19 | echo "Created brogue.desktop." 20 | echo "If your desktop is in the default location, type:" 21 | echo "mv brogue.desktop ~/Desktop" 22 | 23 | -------------------------------------------------------------------------------- /brogueplus/src/get-libtcod.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | cd `dirname $0` 3 | wget -c http://doryen.eptalys.net/?file_id=48 -O libtcod-1.5.2-32.tar.gz 4 | tar -xf libtcod-1.5.2-32.tar.gz 5 | cp libtcod-1.5.2/libtcod.so ../bin 6 | 7 | -------------------------------------------------------------------------------- /brogueplus/src/platform/PlatformDefines.h: -------------------------------------------------------------------------------- 1 | /* 2 | * PlatformDefines.h 3 | * Brogue 4 | * 5 | * Created by Brian Walker on 5/22/10. 6 | * Copyright 2010. All rights reserved. 7 | * 8 | * This file is part of Brogue. 9 | * 10 | * Brogue is free software: you can redistribute it and/or modify 11 | * it under the terms of the GNU General Public License as published by 12 | * the Free Software Foundation, either version 3 of the License, or 13 | * (at your option) any later version. 14 | * 15 | * Brogue is distributed in the hope that it will be useful, 16 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 17 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 18 | * GNU General Public License for more details. 19 | * 20 | * You should have received a copy of the GNU General Public License 21 | * along with Brogue. If not, see . 22 | */ 23 | 24 | // Any platform-dependent defines that must be accessible in the game code 25 | // should go in here. 26 | 27 | #define BROGUE_LIBTCOD 28 | #define PLAY_AGAIN_STRING "Press space to play again." 29 | 30 | -------------------------------------------------------------------------------- /brogueplus/src/platform/platform.h: -------------------------------------------------------------------------------- 1 | #include "Rogue.h" 2 | 3 | struct brogueConsole { 4 | void (*gameLoop)(); 5 | boolean (*pauseForMilliseconds)(short milliseconds); 6 | void (*nextKeyOrMouseEvent)(rogueEvent *returnEvent, boolean textInput, boolean colorsDance); 7 | void (*plotChar)(uchar, short, short, short, short, short, short, short, short); 8 | void (*remap)(const char *, const char *); 9 | boolean (*modifierHeld)(int modifier); 10 | void (*notifyEvent)(short eventId, int data1, int data2, const char *str1, const char *str2); 11 | }; 12 | 13 | void loadKeymap(); 14 | 15 | #ifdef BROGUE_TCOD 16 | extern struct brogueConsole tcodConsole; 17 | #endif 18 | 19 | #ifdef BROGUE_CURSES 20 | extern struct brogueConsole cursesConsole; 21 | #endif 22 | 23 | #ifdef BROGUE_WEB 24 | extern struct brogueConsole webConsole; 25 | #endif 26 | 27 | extern struct brogueConsole currentConsole; 28 | extern boolean serverMode; 29 | extern boolean noMenu; 30 | 31 | -------------------------------------------------------------------------------- /brogueplus/src/platform/term.h: -------------------------------------------------------------------------------- 1 | 2 | #ifndef _term_h_ 3 | #define _term_h_ 4 | 5 | #define TERM_NONE 0 6 | #define TERM_MOUSE 1 7 | 8 | typedef struct {float r, g, b;} fcolor; 9 | struct term_t { 10 | int (*start)(); 11 | void (*end)(); 12 | void (*put)(int x, int y, int ch, fcolor *fg, fcolor *bg); 13 | void (*refresh)(); 14 | int (*getkey)(); 15 | void (*wait)(); 16 | int (*hasKey)(); 17 | void (*title)(const char *); 18 | void (*resize)(int w, int h); 19 | int (*keycodeByName)(const char *); 20 | 21 | struct { 22 | int up, down, left, right, backspace, del, quit; 23 | } keys; 24 | 25 | int width, height; 26 | struct { 27 | int x, y; 28 | int isPressed, justPressed, justReleased, justMoved; 29 | int shift, control; 30 | } mouse; 31 | }; 32 | 33 | extern struct term_t Term; 34 | 35 | #endif 36 | 37 | -------------------------------------------------------------------------------- /build/build.sh: -------------------------------------------------------------------------------- 1 | #!bin/bas 2 | # Compiles brogue and fetches npm dependencies 3 | 4 | cd ../brogue 5 | make brogue web 6 | cd ../server 7 | npm install 8 | -------------------------------------------------------------------------------- /build/provision.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # Install things with apt 4 | sudo apt-get update 5 | sudo apt-get install -y build-essential 6 | sudo apt-get install -y git 7 | curl -sL https://deb.nodesource.com/setup | sudo bash - #official script for node ppa 8 | sudo apt-get install -y nodejs 9 | sudo apt-get install -y mongodb 10 | # Global NPM packages 11 | sudo npm install -g n 12 | sudo n stable 13 | # MongoDB configuration 14 | # TODO - ensure we bind our db to local only - perhaps make config file here 15 | sudo mkdir -p /data/db 16 | -------------------------------------------------------------------------------- /build/whatisthis.md: -------------------------------------------------------------------------------- 1 | What are these build files? 2 | ========================== 3 | 4 | These files are just to help me set up my linux machine to develop this. It may be more helpful than my readme to look at my commands when I install rather than figure it out yourself. Also, in the future I may start automating processes with tools like `bower` or `gulp` so I wanted a place to keep all that easy to configure for people 5 | 6 | `Vagrantfile` is used by the program Vagrant - if you don't use that then you can ignore it. The vagrant box that I am using is ubuntu 14.04 trusty tahr. If you don't use vagrant or a different distribution than ubuntu, the next scripts may not work for you. Also, if you use Vagrant you probably want to place this file and `provision.sh` somewhere outside of this repo. 7 | 8 | `provision.sh` installs the things on my ubuntu linux machine that I am using globally. Right now it is just 9 | - `build-essential` which we will need to compile some node modules 10 | - `git` 11 | - `nodejs` 12 | - `mongodb` with default configuration 13 | - `n` a node package manager to install various versions of node. Not necessary but it has been useful for developing this. 14 | 15 | `build.sh` compiles my changes to the brogue source and installs our npm dependencies. After writing this you could probably just do it yourself. 16 | -------------------------------------------------------------------------------- /client/assets/BrogueCE.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flend/web-brogue/cce0d050da519b865ed4c8c85ee5737c3a93894d/client/assets/BrogueCE.ttf -------------------------------------------------------------------------------- /client/assets/BrogueCE.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flend/web-brogue/cce0d050da519b865ed4c8c85ee5737c3a93894d/client/assets/BrogueCE.woff -------------------------------------------------------------------------------- /client/assets/BrogueCE.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flend/web-brogue/cce0d050da519b865ed4c8c85ee5737c3a93894d/client/assets/BrogueCE.woff2 -------------------------------------------------------------------------------- /client/assets/brogue-banner.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flend/web-brogue/cce0d050da519b865ed4c8c85ee5737c3a93894d/client/assets/brogue-banner.png -------------------------------------------------------------------------------- /client/assets/brogue-icon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flend/web-brogue/cce0d050da519b865ed4c8c85ee5737c3a93894d/client/assets/brogue-icon.ico -------------------------------------------------------------------------------- /client/assets/brogue-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flend/web-brogue/cce0d050da519b865ed4c8c85ee5737c3a93894d/client/assets/brogue-icon.png -------------------------------------------------------------------------------- /client/assets/corridor.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flend/web-brogue/cce0d050da519b865ed4c8c85ee5737c3a93894d/client/assets/corridor.jpg -------------------------------------------------------------------------------- /client/assets/marble.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flend/web-brogue/cce0d050da519b865ed4c8c85ee5737c3a93894d/client/assets/marble.jpg -------------------------------------------------------------------------------- /client/backgrid-paginator.css: -------------------------------------------------------------------------------- 1 | /* 2 | backgrid-paginator 3 | http://github.com/wyuenho/backgrid 4 | 5 | Copyright (c) 2013 Jimmy Yuen Ho Wong and contributors 6 | Licensed under the MIT license. 7 | */ 8 | 9 | .backgrid-paginator { 10 | border-top: none; 11 | -webkit-border-radius: 0 0 4px 4px; 12 | -moz-border-radius: 0 0 4px 4px; 13 | border-radius: 0 0 4px 4px; 14 | -webkit-box-sizing: border-box; 15 | -moz-box-sizing: border-box; 16 | box-sizing: border-box; 17 | } 18 | 19 | .backgrid-paginator ul { 20 | display: inline-block; 21 | *display: inline; 22 | margin: 5px 0; 23 | padding-left: 2em; 24 | text-align: center; 25 | *zoom: 1; 26 | } 27 | 28 | .backgrid-paginator ul > li { 29 | display: inline; 30 | } 31 | 32 | .backgrid-paginator ul > li > a, 33 | .backgrid-paginator ul > li > span { 34 | float: left; 35 | width: 30px; 36 | height: 30px; 37 | padding: 0; 38 | line-height: 30px; 39 | text-decoration: none; 40 | color: white; 41 | cursor: default; 42 | border: 0; 43 | } 44 | 45 | .backgrid-paginator .active a { 46 | background-color: #152a3f; 47 | border: 1px solid #406080; 48 | } 49 | 50 | .backgrid-paginator ul > li > a:hover { 51 | background-color: #406080; 52 | border: 1px solid #80addb; 53 | } 54 | -------------------------------------------------------------------------------- /client/config.js: -------------------------------------------------------------------------------- 1 | define([ 2 | 'jquery' 3 | ], function($) { 4 | 5 | var Config = { 6 | websocketPort: 8080 7 | }; 8 | 9 | return Config; 10 | }); -------------------------------------------------------------------------------- /client/dataIO/router.js: -------------------------------------------------------------------------------- 1 | // Router for all incoming client websocket messages. 2 | 3 | define([ 4 | "underscore" 5 | ], function (_) { 6 | 7 | var _handlers = {}; 8 | 9 | var router = { 10 | registerHandlers: function (handlerCollection) { 11 | _.extend(_handlers, handlerCollection); 12 | }, 13 | route: function (message) { 14 | 15 | if (message.type === 'b') { 16 | _handlers["brogue"](message.data); 17 | } 18 | else { 19 | 20 | if (message.type && _handlers[message.type]) { 21 | _handlers[message.type](message.data); 22 | } 23 | } 24 | } 25 | }; 26 | 27 | 28 | return router; 29 | }); 30 | 31 | 32 | -------------------------------------------------------------------------------- /client/dataIO/send-generic.js: -------------------------------------------------------------------------------- 1 | // Send JSON data to the server 2 | 3 | define(['dataIO/socket'], function (ws) { 4 | 5 | function send(controller, type, data) { 6 | var messageObj = { 7 | controller: controller, 8 | type: type, 9 | data: data 10 | }; 11 | 12 | ws.send(messageObj); 13 | } 14 | 15 | return send; 16 | }); 17 | -------------------------------------------------------------------------------- /client/dataIO/send-keypress.js: -------------------------------------------------------------------------------- 1 | // Sends keystroke to the server 2 | // Note that the keyCode is a 16 bit character which will need to be split for transmission 3 | 4 | define(['dataIO/socket'], function(ws){ 5 | 6 | // See PlatformCode/web-plaform.c for how these are ultimately used 7 | 8 | function send(eventCharCode, keyCode, ctrlKey, shiftKey){ 9 | 10 | var messageArray = new Uint8ClampedArray(5); 11 | 12 | var keyCodePart1 = (keyCode & '0xffff') >> 8; 13 | var keyCodePart2 = (keyCode & '0xff'); 14 | 15 | messageArray[0] = eventCharCode; 16 | messageArray[1] = keyCodePart1; 17 | messageArray[2] = keyCodePart2; 18 | messageArray[3] = ctrlKey; 19 | messageArray[4] = shiftKey; 20 | 21 | var messageObj = { controller: 'brogue', type: 'c', data: messageArray.buffer }; 22 | 23 | ws.send(messageObj); 24 | } 25 | 26 | return send; 27 | 28 | }); -------------------------------------------------------------------------------- /client/dataIO/send-mouse.js: -------------------------------------------------------------------------------- 1 | // Sends a mouseclick or mouseenter event to the server 2 | // See rogue.h for mouse event definitions 3 | 4 | define(['dataIO/socket'], function(ws){ 5 | 6 | // See PlatformCode/webplaform.c for how these are ultimately used 7 | 8 | function send(eventCharCode, xCoord, yCoord, ctrlKey, shiftKey){ 9 | var messageArray = new Uint8ClampedArray(5); 10 | 11 | messageArray[0] = eventCharCode; 12 | messageArray[1] = xCoord; 13 | messageArray[2] = yCoord; 14 | messageArray[3] = ctrlKey; 15 | messageArray[4] = shiftKey; 16 | 17 | var messageObj = { controller: 'brogue', type: 'c', data: messageArray.buffer }; 18 | 19 | ws.send(messageObj); 20 | } 21 | 22 | return send; 23 | 24 | }); 25 | -------------------------------------------------------------------------------- /client/dataIO/socket.js: -------------------------------------------------------------------------------- 1 | // Define the web socket object for our application 2 | // All socket messages are immediately passed into the router. 3 | 4 | define(['dataIO/router', 'dispatcher', 'io', 'config'], function(router, dispatcher, io, config){ 5 | 6 | var socket = io.connect(window.location.hostname + ":" + config.websocketPort); 7 | var performanceTracking = []; 8 | var debugPoint = 0; 9 | 10 | socket.on('message', function(event) { 11 | performanceTracking.push({ timestamp: performance.now(), 12 | event: event}); 13 | router.route(event); 14 | }); 15 | 16 | socket.on('connect', function() { 17 | }); 18 | 19 | socket.on('reconnect', function() { 20 | dispatcher.trigger("reconnect"); 21 | }); 22 | 23 | socket.outputPerformanceTracking = function() { 24 | for(i=debugPoint;i < performanceTracking.length; i++){ 25 | //console.log(JSON.stringify(performanceTracking[i])); 26 | } 27 | debugPoint = performanceTracking.length; 28 | } 29 | 30 | return socket; 31 | }); 32 | 33 | 34 | -------------------------------------------------------------------------------- /client/dispatcher.js: -------------------------------------------------------------------------------- 1 | define(["backbone"], function(Backbone) { 2 | return _.clone(Backbone.Events); 3 | }); -------------------------------------------------------------------------------- /client/models/auth.js: -------------------------------------------------------------------------------- 1 | // Model for authentication view 2 | 3 | define([ 4 | 'jquery', 5 | 'underscore', 6 | 'backbone' 7 | ], function($, _, Backbone) { 8 | 9 | var AuthenticationModel = Backbone.Model.extend({ 10 | 11 | // Doesn't do much but store the current username to pass along to the other views 12 | defaults: { 13 | username : "" 14 | } 15 | }); 16 | 17 | return AuthenticationModel; 18 | 19 | }); 20 | -------------------------------------------------------------------------------- /client/models/cause-stats-model.js: -------------------------------------------------------------------------------- 1 | define([ 2 | 'jquery', 3 | 'underscore', 4 | 'backbone' 5 | ], function($, _, Backbone) { 6 | 7 | var CauseStatsModel = Backbone.Collection.extend({ 8 | url: '/api/stats/levels/monsters?maxCauses=3', 9 | parse: function (data) { 10 | return data; 11 | }, 12 | setVariantForCauseStats: function(variantCode) { 13 | this.url = '/api/stats/levels/monsters?maxCauses=3&variant=' + variantCode; 14 | } 15 | }); 16 | 17 | return CauseStatsModel; 18 | 19 | }); -------------------------------------------------------------------------------- /client/models/console-cell-shared.js: -------------------------------------------------------------------------------- 1 | define([ 2 | 'jquery', 3 | 'underscore', 4 | 'backbone' 5 | ], function($, _, Backbone) { 6 | 7 | var ConsoleSharedState = { 8 | lastMouseOver: 0, 9 | mouseOverDelayedSend: 0 10 | }; 11 | 12 | return ConsoleSharedState; 13 | }); -------------------------------------------------------------------------------- /client/models/console-cell.js: -------------------------------------------------------------------------------- 1 | // Model for a single console cell. Keeps CSS data about where the cell is placed, the foreground, background, and character that is shown. 2 | 3 | define([ 4 | 'jquery', 5 | 'underscore', 6 | 'backbone' 7 | ], function($, _, Backbone) { 8 | 9 | var ConsoleCellModel = Backbone.Model.extend({ 10 | defaults: { 11 | char: "", 12 | foregroundRed: 255, 13 | foregroundGreen: 255, 14 | foregroundBlue: 255, 15 | backgroundRed: 0, 16 | backgroundGreen: 0, 17 | backgroundBlue: 0, 18 | x: 0, 19 | y: 0, 20 | consoleWidth: 800, 21 | consoleHeight: 600, 22 | consoleColumns: 100, 23 | consoleRows: 34 24 | }, 25 | 26 | clear : function(){ 27 | this.set({ 28 | char: "", 29 | foregroundRed: 255, 30 | foregroundGreen: 255, 31 | foregroundBlue: 255, 32 | backgroundRed: 0, 33 | backgroundGreen: 0, 34 | backgroundBlue: 0 35 | }); 36 | } 37 | 38 | }); 39 | 40 | return ConsoleCellModel; 41 | 42 | }); 43 | -------------------------------------------------------------------------------- /client/models/current-games-row.js: -------------------------------------------------------------------------------- 1 | // Model for single row of the current games view in the lobby 2 | 3 | define([ 4 | 'jquery', 5 | 'underscore', 6 | 'backbone', 7 | 'variantLookup' 8 | ], function($, _, Backbone, VariantLookup) { 9 | 10 | var CurrentGamesRow = Backbone.Model.extend({ 11 | defaults: { 12 | userName : "", 13 | idle : 0, 14 | variant: "", 15 | prettyVariant: "", 16 | formattedIdle : "", 17 | deepestLevel : 0, 18 | seed : false, 19 | gold : 0, 20 | easyMode : false, 21 | gameName: "" 22 | }, 23 | 24 | setPrettyScore : function() { 25 | this.set({prettyScore : this.get("gold").toLocaleString()}); 26 | }, 27 | 28 | setPrettySeeded : function() { 29 | this.set({prettySeeded : this.get("seed") ? "Seeded" : "Random"}); 30 | }, 31 | 32 | setPrettyVariant: function() { 33 | if(this.get("variant") in VariantLookup.variants) { 34 | this.set({prettyVariant : VariantLookup.variants[this.get("variant")].display}); 35 | } 36 | else { 37 | this.set({prettyVariant : "Not found"}); 38 | } 39 | }, 40 | 41 | calculateFormattedIdleTime : function(){ 42 | var idleSeconds = this.get("idle"); 43 | var formattedTime = ""; 44 | 45 | if (idleSeconds < 120){ 46 | formattedTime = idleSeconds + "s"; 47 | } 48 | else if (idleSeconds >= 120 && idleSeconds < 3600){ 49 | var min = (idleSeconds / 60) | 0; 50 | formattedTime = min + "m"; 51 | } 52 | else { 53 | var hours = (idleSeconds / 3600) | 0; 54 | formattedTime = hours + "h"; 55 | } 56 | 57 | this.set({formattedIdle : formattedTime}); 58 | } 59 | }); 60 | 61 | return CurrentGamesRow; 62 | 63 | }); 64 | 65 | -------------------------------------------------------------------------------- /client/models/dpad-button.js: -------------------------------------------------------------------------------- 1 | define([ 2 | 'jquery', 3 | 'underscore', 4 | 'backbone' 5 | ], function($, _, Backbone) { 6 | 7 | var DPadButtonModel = Backbone.Model.extend({ 8 | defaults: { 9 | keyToSend: 0 10 | } 11 | }); 12 | 13 | return DPadButtonModel; 14 | 15 | }); -------------------------------------------------------------------------------- /client/models/file-row.js: -------------------------------------------------------------------------------- 1 | // Model for a single row for files on the server. For instance it is used for viewing saved games 2 | 3 | define([ 4 | 'jquery', 5 | 'underscore', 6 | 'backbone' 7 | ], function($, _, Backbone) { 8 | 9 | File = Backbone.Model.extend({ 10 | defaults: { 11 | fileName : "", 12 | modified : "", 13 | formattedModified : null 14 | }, 15 | 16 | formatModifiedDate : function(){ 17 | var modifiedDate = new Date(this.get("modified")); 18 | var dateString = modifiedDate.toLocaleString(); 19 | this.set("formattedModified", dateString); 20 | } 21 | }); 22 | 23 | return File; 24 | 25 | }); -------------------------------------------------------------------------------- /client/models/last-wins-scores.js: -------------------------------------------------------------------------------- 1 | // Model for a list of high scores 2 | 3 | define([ 4 | 'jquery', 5 | 'underscore', 6 | 'backbone', 7 | 'services/scores-api-parser', 8 | 'variantLookup' 9 | ], function($, _, Backbone, ScoresParser, VariantLookup) { 10 | 11 | var LastWinsScores = Backbone.Collection.extend({ 12 | url: '/api/games/lastwins', 13 | 14 | parse: function (resp) { 15 | _.each(resp, function(element, index, list) { 16 | element.prettyDate = ScoresParser.formatDateFull(element.date); 17 | element.prettyVariant = ScoresParser.lookupVariant(element.variant); 18 | element.prettySeeded = ScoresParser.formatSeeded(element.seeded); 19 | }); 20 | 21 | return resp; 22 | }, 23 | 24 | initialize: function() { 25 | this.setUrlFromConfig(); 26 | }, 27 | 28 | setUrlFromConfig: function () { 29 | const variantsToRetrieve = Object.values(VariantLookup.variants).filter(variant => !variant.disabled) 30 | .map(variant => variant.code); 31 | const variantApiString = variantsToRetrieve.join(','); 32 | this.url = `/api/games/lastwins?variant=${variantApiString}`; 33 | } 34 | 35 | }); 36 | 37 | return LastWinsScores; 38 | 39 | }); -------------------------------------------------------------------------------- /client/models/level-probability-model.js: -------------------------------------------------------------------------------- 1 | define([ 2 | 'jquery', 3 | 'underscore', 4 | 'backbone' 5 | ], function($, _, Backbone) { 6 | 7 | var LevelProbabilityModel = Backbone.Collection.extend({ 8 | url: '/api/stats/levelProbability', 9 | parse: function (data) { 10 | return data; 11 | }, 12 | setVariantForLevelProbabilityStats: function(variantCode) { 13 | this.url = '/api/stats/levelProbability?variant=' + variantCode; 14 | } 15 | }); 16 | 17 | return LevelProbabilityModel; 18 | 19 | }); -------------------------------------------------------------------------------- /client/models/level-stats-model.js: -------------------------------------------------------------------------------- 1 | define([ 2 | 'jquery', 3 | 'underscore', 4 | 'backbone' 5 | ], function($, _, Backbone) { 6 | 7 | var LevelStatsModel = Backbone.Collection.extend({ 8 | url: '/api/stats/levels', 9 | parse: function (data) { 10 | return data; 11 | }, 12 | setVariantForLevelStats: function(variantCode) { 13 | this.url = '/api/stats/levels?variant=' + variantCode; 14 | } 15 | }); 16 | 17 | return LevelStatsModel; 18 | 19 | }); -------------------------------------------------------------------------------- /client/models/lobby-data-table-state.js: -------------------------------------------------------------------------------- 1 | // Model to track if we need to render the empty view or not for lobby rollups 2 | 3 | define([ 4 | 'jquery', 5 | 'underscore', 6 | 'backbone' 7 | ], function($, _, Backbone) { 8 | 9 | TableState = Backbone.Model.extend({ 10 | defaults: { 11 | isEmpty : true, 12 | oldIsEmpty : true 13 | } 14 | }); 15 | 16 | return TableState; 17 | 18 | }); 19 | 20 | -------------------------------------------------------------------------------- /client/models/site-news.js: -------------------------------------------------------------------------------- 1 | define([ 2 | 'jquery', 3 | 'underscore', 4 | 'backbone', 5 | 'backbonePaginator' 6 | ], function($, _, Backbone, BackbonePaginator) { 7 | 8 | var SiteNewsModel = Backbone.PageableCollection.extend({ 9 | url: '/api/news?days=60', 10 | 11 | state: { 12 | pageSize: 10, 13 | sortKey: "date", 14 | order: 1 15 | }, 16 | 17 | queryParams: { 18 | sortKey: "sort", 19 | order: "order", 20 | pageSize: "limit" 21 | }, 22 | 23 | parseState: function (resp, queryParams, state, options) { 24 | return {totalRecords: resp.itemCount }; 25 | }, 26 | 27 | parseRecords: function (resp, options) { 28 | return resp.data; 29 | } 30 | }); 31 | 32 | return SiteNewsModel; 33 | 34 | }); -------------------------------------------------------------------------------- /client/models/user-details.js: -------------------------------------------------------------------------------- 1 | define([ 2 | 'jquery', 3 | 'underscore', 4 | 'backbone', 5 | ], function($, _, Backbone) { 6 | 7 | var UserDetails = Backbone.Collection.extend({ 8 | url: '/api/users', 9 | }); 10 | 11 | return UserDetails; 12 | 13 | }); -------------------------------------------------------------------------------- /client/models/user-logged-in.js: -------------------------------------------------------------------------------- 1 | define([ 2 | 'jquery', 3 | 'underscore', 4 | 'backbone' 5 | ], function($, _, Backbone) { 6 | 7 | var UserLoggedInModel = Backbone.Model.extend({ 8 | defaults: { 9 | username : "" 10 | } 11 | }); 12 | 13 | return UserLoggedInModel; 14 | 15 | }); -------------------------------------------------------------------------------- /client/models/user.js: -------------------------------------------------------------------------------- 1 | // Model for user information and settings. 2 | // Right now it is only used in the header logout button, but the plan is to extend to include other user-specific options 3 | 4 | // TODO- this is similar to the auth model merge? 5 | 6 | define([ 7 | 'jquery', 8 | 'underscore', 9 | 'backbone' 10 | ], function($, _, Backbone) { 11 | 12 | var UserModel = Backbone.Model.extend({ 13 | defaults: { 14 | username : "", 15 | observing: false, 16 | recording: false, 17 | observingUsername: "", 18 | recordingId: 0, 19 | playing: false, 20 | loggedIn: false, 21 | showLobby: false 22 | } 23 | }); 24 | 25 | return UserModel; 26 | 27 | }); -------------------------------------------------------------------------------- /client/router.js: -------------------------------------------------------------------------------- 1 | define([ 2 | 'jquery', 3 | 'underscore', 4 | 'backbone', 5 | 'dispatcher' 6 | ], function($, _, Backbone, dispatcher) { 7 | 8 | var BrogueRouter = Backbone.Router.extend({ 9 | 10 | routes: { 11 | "highScores": "highScores", 12 | "currentGames": "currentGames", 13 | "gameStatistics": "gameStatistics", 14 | "userStatistics": "userStatistics", 15 | "viewRecording/:variant-:id(/:turn)": "viewRecording", 16 | "observeGame/:username-:variant": "observeGame" 17 | }, 18 | 19 | started: false, 20 | 21 | highScores: function() { 22 | dispatcher.trigger("all-scores"); 23 | }, 24 | currentGames: function() { 25 | dispatcher.trigger("currentGames"); 26 | }, 27 | gameStatistics: function() { 28 | dispatcher.trigger("gameStatistics"); 29 | }, 30 | userStatistics: function() { 31 | dispatcher.trigger("users-page"); 32 | }, 33 | viewRecording: function(variant, id, turn) { 34 | 35 | var recordingId = 'recording-' + id; 36 | if (turn) { 37 | recordingId = recordingId.concat("-" + turn); 38 | } 39 | dispatcher.trigger("recordingGame", {variant: variant, id: recordingId}); 40 | dispatcher.trigger("showConsole"); 41 | }, 42 | observeGame: function(username, variant) { 43 | 44 | dispatcher.trigger("observeGame", {username: username, variant: variant}); 45 | dispatcher.trigger("showConsole"); 46 | }, 47 | //Only activate the router on login, to avoid races when viewing recordings etc. 48 | login: function() { 49 | 50 | if(!this.started) { 51 | Backbone.history.start(); 52 | this.started = true; 53 | } 54 | } 55 | }); 56 | 57 | return new BrogueRouter(); 58 | }); -------------------------------------------------------------------------------- /client/services/observing.js: -------------------------------------------------------------------------------- 1 | define([ 2 | 'jquery', 3 | 'underscore', 4 | 'backbone', 5 | "dataIO/send-generic" 6 | ], function($, _, Backbone, send) { 7 | 8 | var Observing = { 9 | 10 | startObserving: function(data) { 11 | 12 | send("brogue", "observe", {username: data.username, variant: data.variant}); 13 | } 14 | 15 | }; 16 | return Observing; 17 | }); 18 | -------------------------------------------------------------------------------- /client/services/recordings.js: -------------------------------------------------------------------------------- 1 | define([ 2 | 'jquery', 3 | 'underscore', 4 | 'backbone', 5 | "dataIO/send-generic" 6 | ], function($, _, Backbone, send) { 7 | 8 | var Recordings = { 9 | 10 | startRecording: function(data) { 11 | 12 | send("brogue", "recording", {recording: data.id}); 13 | } 14 | 15 | }; 16 | return Recordings; 17 | }); -------------------------------------------------------------------------------- /client/services/scores-api-parser.js: -------------------------------------------------------------------------------- 1 | define([ 2 | 'jquery', 3 | 'underscore', 4 | 'moment', 5 | 'variantLookup' 6 | ], function($, _, Moment, VariantLookup) { 7 | 8 | var ScoresFormatter = { 9 | 10 | formatSeeded: function(seeded) { 11 | return seeded ? "Seeded" : "Random" 12 | }, 13 | 14 | formatDate: function(date) { 15 | var d0 = Moment(); 16 | var d1 = Moment(date); 17 | // same day: only show the time 18 | if (d1.format('YYYY-MM-DD') == d0.format('YYYY-MM-DD')) 19 | return d1.format('LT'); 20 | // same year, or less than 6 months ago: show month and day 21 | if (d1.format('YYYY') == d0.format('YYYY') || d0.diff(d1, 'days') < 180) 22 | return d1.format('MMM DD'); 23 | // show month, day, year 24 | return d1.format('ll'); 25 | }, 26 | 27 | formatDateFull: function(date) { 28 | var d1 = Moment(date); 29 | // show localised date in sortable format 30 | return d1.format('YY-MM-DD'); 31 | }, 32 | 33 | lookupVariant: function(variant) { 34 | if(variant in VariantLookup.variants) { 35 | return VariantLookup.variants[variant].display; 36 | } 37 | else { 38 | return "Not found"; 39 | } 40 | }, 41 | 42 | stateFromResp: function (resp) { 43 | return {totalRecords: resp.itemCount }; 44 | }, 45 | 46 | // get the actual records 47 | recordsFromResp: function (resp) { 48 | 49 | var records = resp.data; 50 | 51 | _.each(records, function(element, index, list) { 52 | element.prettyDate = this.formatDate(element.date); 53 | element.prettyVariant = this.lookupVariant(element.variant); 54 | element.prettySeeded = this.formatSeeded(element.seeded); 55 | }, this); 56 | 57 | return resp.data; 58 | } 59 | }; 60 | return ScoresFormatter; 61 | }); 62 | -------------------------------------------------------------------------------- /client/tests/autoplay.js: -------------------------------------------------------------------------------- 1 | // I want to load test my server with lots of connections. 2 | // This will have a player always autoexplore and restart a game when they quit 3 | // Also throws in some random keys for testing 4 | 5 | define([ 6 | 'dataIO/router', 7 | 'dataIO/send-generic', 8 | 'dataIO/send-keypress', 9 | 'dataIO/send-mouse' 10 | ], function(router, send, sendKey, sendMouse){ 11 | 12 | function autoplay() { 13 | // reset each time we die/quit the game 14 | router.registerHandlers({ 15 | "quit": restartOnQuit 16 | }); 17 | 18 | AILoop(); 19 | } 20 | 21 | var restartOnQuit = function(){ 22 | send('brogue', 'start'); 23 | }; 24 | 25 | // Autoplay Event Loop 26 | var AILoop = function(){ 27 | 28 | var rand = Math.random(); 29 | 30 | if (rand < 0.65){ 31 | sendAutoPlay(); 32 | next(10000); 33 | } 34 | else if (rand < 0.85){ 35 | sendThreeEsc(); 36 | next(0); 37 | } 38 | //TODO - these would be nice to get some i/o going for more realistic testing 39 | else if (rand < 0.95){ 40 | // send mouse click 41 | next(0); 42 | } 43 | else if (rand < 0.995){ 44 | // send random keystroke 45 | next(0); 46 | } 47 | else{ 48 | // 0.5% chance of reloading the page and severing the connection in 49 | // the most dirty way possible 50 | var forcedReload = true; 51 | window.location.reload(forcedReload); 52 | } 53 | 54 | }; 55 | 56 | var next = function(time){ 57 | setTimeout(AILoop, time); 58 | }; 59 | 60 | var sendAutoPlay = function(){ 61 | sendKey(0, 65, 0, 0); 62 | }; 63 | 64 | var sendThreeEsc = function(){ 65 | sendKey(0, 27, 0, 0); 66 | sendKey(0, 27, 0, 0); 67 | sendKey(0, 27, 0, 0); 68 | }; 69 | 70 | 71 | return autoplay; 72 | 73 | }); 74 | 75 | 76 | -------------------------------------------------------------------------------- /client/tests/debug-mode.js: -------------------------------------------------------------------------------- 1 | // Eventually we should set up unit test assertions based on these functions, but for now these are just a collection of utility functions that we can use from the client to test the views and the socket commands. 2 | 3 | define([ 4 | 'tests/mock-brogue-message-rand-full', 5 | 'tests/mock-brogue-message-rand-few', 6 | 'tests/mock-brogue-message-single', 7 | 'tests/show-incoming-messages', 8 | 'tests/show-outgoing-messages', 9 | 'tests/show-incoming-data-use', 10 | 'tests/autoplay', 11 | 'dataIO/send-generic', 12 | 'dataIO/send-keypress', 13 | 'dataIO/send-mouse' 14 | ], function(brogueFullRandMsg, brogueFewRandMsg, brogueUpdateCell, showIncomingMessages, showOutgoingMessages, showIncomingDataUse, autoplay, customMessage, customKeyMessage, customMouseMessage) { 15 | 16 | function attach(){ 17 | window.brogue = { 18 | updateConsoleFullRandom : brogueFullRandMsg, 19 | updateConsoleFewRandom : brogueFewRandMsg, 20 | updateConsoleSingleCell : brogueUpdateCell, 21 | showIncomingMessages : showIncomingMessages, 22 | showOutgoingMessages : showOutgoingMessages, 23 | showIncomingDataUse : showIncomingDataUse, 24 | send : customMessage, 25 | sendKey : customKeyMessage, 26 | sendMouse : customMouseMessage, 27 | autoplay : autoplay 28 | }; 29 | } 30 | 31 | return attach; 32 | 33 | }); 34 | 35 | 36 | -------------------------------------------------------------------------------- /client/tests/mock-brogue-message-rand-few.js: -------------------------------------------------------------------------------- 1 | // Fills 5% of cells with a random character and a grey background 2 | // Testing updating less of the cells at a time which is more realistic for real game data 3 | 4 | // TODO - update this test to reflect reality of how data comes over the line. This is currently useful for load testing my application but not very accurate as a test anymore. 5 | 6 | define(['tests/mock-brogue-message-single'], function(updateSingleCell) { 7 | 8 | function dispatchRandomFewMessages() { 9 | 10 | var CONSOLE_ROWS = 34; 11 | var CONSOLE_COLUMNS = 100; 12 | 13 | for ( var i = 0; i < CONSOLE_COLUMNS; i++){ 14 | for ( var j = 0; j < CONSOLE_ROWS; j++){ 15 | 16 | if (Math.random() > 0.05) continue; 17 | 18 | var updateX = i; 19 | var updateY = j; 20 | var updateChar = Math.floor(Math.random() * 255); 21 | var updateFRed = Math.floor(Math.random() * 255); 22 | var updateFGreen = Math.floor(Math.random() * 255); 23 | var updateFBlue = Math.floor(Math.random() * 255); 24 | var updateBRed = 50; 25 | var updateBGreen = 50; 26 | var updateBBlue = 50; 27 | 28 | updateSingleCell(updateX, updateY, updateChar, updateFRed, updateFGreen, updateFBlue, updateBRed, updateBGreen, updateBBlue); 29 | } 30 | } 31 | } 32 | 33 | return dispatchRandomFewMessages; 34 | }); 35 | 36 | 37 | -------------------------------------------------------------------------------- /client/tests/mock-brogue-message-rand-full.js: -------------------------------------------------------------------------------- 1 | // Fill the entire console with random background, foreground, and character values 2 | // Worst case scenario load test 3 | 4 | // TODO - update this test to reflect reality of how data comes over the line. This is currently useful for load testing my application but not very accurate as a test anymore. 5 | 6 | define(['tests/mock-brogue-message-single'], function(updateSingleCell) { 7 | 8 | function dispatchRandomFullMessages() { 9 | 10 | var CONSOLE_ROWS = 34; 11 | var CONSOLE_COLUMNS = 100; 12 | 13 | for ( var i = 0; i < CONSOLE_COLUMNS; i++){ 14 | for ( var j = 0; j < CONSOLE_ROWS; j++){ 15 | 16 | var updateX = i; 17 | var updateY = j; 18 | var updateChar = Math.floor(Math.random() * 255); 19 | var updateFRed = Math.floor(Math.random() * 255); 20 | var updateFGreen = Math.floor(Math.random() * 255); 21 | var updateFBlue = Math.floor(Math.random() * 255); 22 | var updateBRed = Math.floor(Math.random() * 255); 23 | var updateBGreen = Math.floor(Math.random() * 255); 24 | var updateBBlue = Math.floor(Math.random() * 255); 25 | 26 | updateSingleCell(updateX, updateY, updateChar, updateFRed, updateFGreen, updateFBlue, updateBRed, updateBGreen, updateBBlue); 27 | } 28 | } 29 | } 30 | 31 | return dispatchRandomFullMessages; 32 | }); 33 | 34 | 35 | -------------------------------------------------------------------------------- /client/tests/mock-brogue-message-single.js: -------------------------------------------------------------------------------- 1 | // Update a single console cell information 2 | 3 | define(['dataIO/router'], function(router) { 4 | 5 | var CELL_MESSAGE_SIZE = 9; 6 | 7 | function updateSingleConsoleCell( x, y, char, fRed, fGreen, fBlue, bRed, bGreen, bBlue){ 8 | 9 | if (arguments.length !== 9) return; 10 | 11 | var messageBuf = new ArrayBuffer(CELL_MESSAGE_SIZE); 12 | var messageArray = new Uint8ClampedArray(messageBuf); 13 | 14 | for (var i = 0; i < CELL_MESSAGE_SIZE; i++){ 15 | messageArray[i] = arguments[i]; 16 | } 17 | 18 | router.route(messageBuf); 19 | } 20 | 21 | return updateSingleConsoleCell; 22 | 23 | }); 24 | 25 | 26 | -------------------------------------------------------------------------------- /client/tests/show-incoming-data-use.js: -------------------------------------------------------------------------------- 1 | // Test how much data is coming through the socket. Needed for estimating how much hosting data will be needed. 2 | 3 | define(['dataIO/socket', 'dataIO/router'], function(ws, router) { 4 | 5 | function showIncomingDataUse() { 6 | 7 | console.info("You will now see a running total of the data that is coming through the websocket"); 8 | 9 | var originalOnmessage = ws.onmessage.bind(ws); 10 | var totalLength = 0; 11 | 12 | ws.onmessage = function(event){ 13 | originalOnmessage(event); 14 | 15 | var message = event.data; 16 | var incomingLength = 0; 17 | 18 | if (message instanceof ArrayBuffer){ 19 | var messageArray = new Uint8Array(message); 20 | incomingLength = messageArray.length; 21 | } 22 | else if (message.length){ 23 | // strings use utf-16 by default 24 | incomingLength = message.length * 2; 25 | } 26 | 27 | totalLength += incomingLength; 28 | console.log("Incoming message was " + incomingLength + " bytes"); 29 | console.log("Total socket bytes: " + totalLength); 30 | }; 31 | } 32 | 33 | return showIncomingDataUse; 34 | }); 35 | 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /client/tests/show-incoming-messages.js: -------------------------------------------------------------------------------- 1 | // Redefine our socket's onmessage event to log all incoming messages in the console. 2 | 3 | define(['dataIO/socket', 'dataIO/router'], function(ws, router) { 4 | 5 | function showIncomingMessages() { 6 | 7 | console.info("You will now see messages recieved by the socket from the server") 8 | 9 | var originalOnmessage = ws.onmessage.bind(ws); 10 | 11 | ws.onmessage = function(event){ 12 | originalOnmessage(event); 13 | 14 | var message = event.data; 15 | 16 | if (message instanceof ArrayBuffer){ 17 | var messageArray = new Uint8Array(message); 18 | console.log(messageArray); 19 | } 20 | else{ 21 | console.log(message); 22 | } 23 | }; 24 | } 25 | 26 | return showIncomingMessages; 27 | }); 28 | 29 | 30 | -------------------------------------------------------------------------------- /client/tests/show-outgoing-messages.js: -------------------------------------------------------------------------------- 1 | // Redefine the socket send function to log all outgoing messages in the console 2 | 3 | define(['dataIO/socket'], function(ws) { 4 | 5 | var originalSocketSend = ws.send.bind(ws); 6 | 7 | function showOutgoingMessages() { 8 | 9 | console.info("You will now see the messages sent to the socket from the client"); 10 | 11 | ws.send = function(message){ 12 | originalSocketSend(message); 13 | if (message instanceof ArrayBuffer){ 14 | var messageArray = new Uint8Array(message); 15 | console.log(messageArray); 16 | } 17 | else{ 18 | console.log(message); 19 | } 20 | }; 21 | } 22 | 23 | return showOutgoingMessages; 24 | }); -------------------------------------------------------------------------------- /client/tests/test-socket.js: -------------------------------------------------------------------------------- 1 | //A fake web socket object. Currently not used, but could be useful for testing without actually sending data out to the server. 2 | 3 | define(function(){ 4 | 5 | var socket = { 6 | send : function (msg){ 7 | console.log ("test message sent: ", msg); 8 | }, 9 | close : function (){ 10 | console.log ("test socket closing..."); 11 | this.onclose(); 12 | }, 13 | onopen : function () { 14 | console.log("test socket open"); 15 | }, 16 | onerror : function () { 17 | console.error("test socket error thrown"); 18 | }, 19 | onclose : function () { 20 | console.log("test socket closed"); 21 | }, 22 | onmessage : function () { 23 | // deflate message 24 | 25 | // parse JSON 26 | 27 | // split datatype from payload 28 | 29 | //dispatch message 30 | } 31 | }; 32 | 33 | socket.onopen(); 34 | 35 | return socket; 36 | }); 37 | 38 | 39 | -------------------------------------------------------------------------------- /client/tiles.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flend/web-brogue/cce0d050da519b865ed4c8c85ee5737c3a93894d/client/tiles.png -------------------------------------------------------------------------------- /client/util.js: -------------------------------------------------------------------------------- 1 | define([ 2 | 'jquery', 3 | 'underscore', 4 | 'backbone' 5 | ], function($, _, Backbone) { 6 | 7 | var Util = { 8 | debug: false, 9 | 10 | storageAvailable: function (type) { 11 | try { 12 | var storage = window[type], 13 | x = '__storage_test__'; 14 | storage.setItem(x, x); 15 | storage.removeItem(x); 16 | return true; 17 | } 18 | catch (e) { 19 | return false; 20 | } 21 | }, 22 | removeItem: function (key) { 23 | if (this.storageAvailable('localStorage')) { 24 | var storage = window['localStorage']; 25 | storage.removeItem(key); 26 | if(this.debug) { 27 | console.log("Removed: " + key); 28 | } 29 | } 30 | }, 31 | setItem: function (key, value) { 32 | if (this.storageAvailable('localStorage')) { 33 | var storage = window['localStorage']; 34 | storage.setItem(key, value); 35 | if(this.debug) { 36 | console.log("Set: " + key); 37 | } 38 | } 39 | }, 40 | getItem: function (key) { 41 | if (this.storageAvailable('localStorage')) { 42 | var storage = window['localStorage']; 43 | var value = storage.getItem(key); 44 | if(this.debug) { 45 | console.log("Got: " + key + ": " + value); 46 | } 47 | return value; 48 | } 49 | } 50 | }; 51 | 52 | return Util; 53 | }); -------------------------------------------------------------------------------- /client/views/current-games-row-view.js: -------------------------------------------------------------------------------- 1 | // View for current games rollup in the lobby 2 | 3 | define([ 4 | "jquery", 5 | "underscore", 6 | "backbone", 7 | "config", 8 | "dispatcher", 9 | "dataIO/send-generic", 10 | "views/view-activation-helpers" 11 | ], function ($, _, Backbone, config, dispatcher, send) { 12 | 13 | var CurrentGamesRowView = Backbone.View.extend({ 14 | tagName: "tr", 15 | className: "games-row", 16 | events : { 17 | "click #observe-game" : "observeGame", 18 | "click #link-game" : "linkGame" 19 | }, 20 | 21 | template : _.template($('#current-games-row').html()), 22 | 23 | observeGame: function(event){ 24 | event.preventDefault(); 25 | 26 | dispatcher.trigger("observeGame", {username: this.model.get("userName"), variant: this.model.get("variant")}); 27 | this.goToConsole(); 28 | }, 29 | 30 | linkGame: function(event){ 31 | event.preventDefault(); 32 | 33 | var pathDir = window.location.pathname.substring(0, window.location.pathname.lastIndexOf("/") + 1) 34 | var gameLink = window.location.host + pathDir + "#observeGame/" + this.model.get("userName") + "-" + this.model.get("variant"); 35 | var $temp = $(""); 36 | $("body").append($temp); 37 | $temp.val(gameLink).select(); 38 | document.execCommand("copy"); 39 | $temp.remove(); 40 | }, 41 | 42 | render: function() { 43 | this.model.calculateFormattedIdleTime(); 44 | this.model.setPrettyVariant(); 45 | this.model.setPrettyScore(); 46 | this.model.setPrettySeeded(); 47 | 48 | this.$el.html(this.template(this.model.toJSON())); 49 | return this; 50 | }, 51 | 52 | goToConsole : function() { 53 | dispatcher.trigger("showConsole"); 54 | } 55 | 56 | }); 57 | 58 | return CurrentGamesRowView; 59 | 60 | }); 61 | 62 | 63 | 64 | -------------------------------------------------------------------------------- /client/views/dpad-button-view.js: -------------------------------------------------------------------------------- 1 | // View for a d-pad button 2 | 3 | define([ 4 | "jquery", 5 | "underscore", 6 | "backbone", 7 | 'dataIO/send-keypress', 8 | "models/dpad-button", 9 | ], function($, _, Backbone, sendKeypressEvent, DPadButtonModel) { 10 | 11 | // See BrogueCode/rogue.h for all brogue event definitions 12 | var KEYPRESS_EVENT_CHAR = 0; 13 | 14 | //Pass in el and model 15 | var DpadButtonView = Backbone.View.extend({ 16 | 17 | events : { 18 | "click" : "handleClick" 19 | }, 20 | 21 | handleClick : function(event){ 22 | 23 | event.preventDefault(); 24 | sendKeypressEvent(KEYPRESS_EVENT_CHAR, this.model.get("keyToSend"), false, false); 25 | } 26 | }); 27 | 28 | return DpadButtonView; 29 | }); 30 | -------------------------------------------------------------------------------- /client/views/file-row-view.js: -------------------------------------------------------------------------------- 1 | // View for showing a single file from server. Used for saved games. 2 | 3 | define([ 4 | "jquery", 5 | "underscore", 6 | "backbone" 7 | ], function($, _, Backbone) { 8 | 9 | var FileRowView = Backbone.View.extend({ 10 | tagName: "tr", 11 | className: "file-row", 12 | events : { 13 | }, 14 | 15 | template : _.template($('#file-row').html()), 16 | 17 | render: function() { 18 | this.model.formatModifiedDate(); 19 | this.$el.html(this.template(this.model.toJSON())); 20 | return this; 21 | } 22 | }); 23 | 24 | return FileRowView; 25 | 26 | }); 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /client/views/lobby-data-table-base.js: -------------------------------------------------------------------------------- 1 | // Helper functions for our lobby rollup views with a table layout 2 | 3 | define({ 4 | 5 | /* 6 | * Define these properties in the parent. There will only be three of these so I am not going to bother using the Backbone inheritance model. Just make sure that these are defined in the child View 7 | * 8 | $tableElement - jQuery Object 9 | tableSelector - string 10 | headingTemplate - underscore template object 11 | tableState - lobby-data-table-state model 12 | */ 13 | 14 | renderHeading: function () { 15 | this.$el.html(this.headingTemplate({ 16 | isEmpty: this.tableState.get("isEmpty") 17 | })); 18 | }, 19 | renderHeadingOnEmptyChange: function () { 20 | var isEmpty = this.tableState.get("isEmpty"); 21 | var oldIsEmpty = this.tableState.get("oldIsEmpty"); 22 | 23 | if (isEmpty !== oldIsEmpty) { 24 | this.renderHeading(); 25 | this.tableState.set("oldIsEmpty", isEmpty); 26 | 27 | if (!isEmpty) { 28 | this.$tableElement = this.$el.find(this.tableSelector); 29 | } 30 | } 31 | } 32 | }); 33 | 34 | -------------------------------------------------------------------------------- /client/views/popups/popup-view.js: -------------------------------------------------------------------------------- 1 | // Base View for popup modal boxes 2 | 3 | define([ 4 | "jquery", 5 | "underscore", 6 | "backbone", 7 | "dataIO/send-generic", 8 | "views/view-activation-helpers" 9 | ], function ($, _, Backbone, send, activate) { 10 | 11 | var overlayEventsBound = false; 12 | 13 | var PopupView = Backbone.View.extend({ 14 | el: '#popup', 15 | $overlay : $('#popup-overlay'), 16 | 17 | events : { 18 | "click #popup-close" : "closePopup" 19 | }, 20 | 21 | template : function(){}, // override in child 22 | 23 | render: function (data) { 24 | this.$el.html(this.template(data)); 25 | }, 26 | 27 | showPopup : function(message){ 28 | this.render(message); 29 | this.$el.removeClass("inactive"); 30 | this.$overlay.removeClass("inactive"); 31 | }, 32 | 33 | closePopup : function(){ 34 | this.$el.addClass('inactive'); 35 | $('#popup-overlay').addClass("inactive"); 36 | }, 37 | 38 | bindOverlayEvents : function(){ 39 | // need only be bound once for all popup instances 40 | if (!overlayEventsBound){ 41 | this.$overlay.on("click", $.proxy(this.closePopup, this)); 42 | overlayEventsBound = true; 43 | } 44 | } 45 | }); 46 | 47 | return PopupView; 48 | 49 | }); 50 | 51 | -------------------------------------------------------------------------------- /client/views/site-news-row-view.js: -------------------------------------------------------------------------------- 1 | define([ 2 | "jquery", 3 | "underscore", 4 | "backbone", 5 | "moment" 6 | ], function ($, _, Backbone, Moment) { 7 | 8 | var SiteNewsRowView = Backbone.View.extend({ 9 | tagName: "li", 10 | className: "site-news-row", 11 | 12 | template : _.template($('#site-news-row').html()), 13 | 14 | render: function() { 15 | 16 | var objectToRender = { 17 | date: this.formatDate(this.model.get("date")), 18 | description: this.model.get("story") 19 | }; 20 | 21 | this.$el.html(this.template(objectToRender)); 22 | return this; 23 | }, 24 | formatDate: function(date) { 25 | return Moment(date).format('MMMM Do YYYY'); 26 | } 27 | }); 28 | 29 | return SiteNewsRowView; 30 | 31 | }); -------------------------------------------------------------------------------- /client/views/site-news-view.js: -------------------------------------------------------------------------------- 1 | define([ 2 | "jquery", 3 | "underscore", 4 | "backbone", 5 | "views/site-news-row-view" 6 | ], function ($, _, Backbone, SiteNewsRowView) { 7 | 8 | var SiteNewsView = Backbone.View.extend({ 9 | 10 | el: '#site-news', 11 | $listElement: null, 12 | headingTemplate: _.template($('#site-news-heading').html()), 13 | 14 | initialize: function () { 15 | this.render(); 16 | this.listenTo(this.model, 'change', this.render); 17 | this.listenTo(this.model, 'add', this.render); 18 | 19 | this.model.fetch(); 20 | }, 21 | 22 | render: function() { 23 | 24 | var isEmpty = false; 25 | if(this.model && this.model.length == 0) { 26 | isEmpty = true; 27 | } 28 | if(!this.model) { 29 | isEmpty = true; 30 | } 31 | 32 | this.$el.html(this.headingTemplate({ 33 | isEmpty: isEmpty 34 | })); 35 | 36 | this.$listElement = this.$el.find('#site-news-table'); 37 | 38 | if(this.model) { 39 | this.model.each(function (model) { 40 | var item = new SiteNewsRowView({model: model}); 41 | this.$listElement.append(item.render().$el); 42 | }, this); 43 | } 44 | 45 | return this; 46 | } 47 | }); 48 | 49 | return SiteNewsView; 50 | 51 | }); -------------------------------------------------------------------------------- /client/views/statistics-view.js: -------------------------------------------------------------------------------- 1 | define([ 2 | "jquery", 3 | "underscore", 4 | "backbone" 5 | ], function ($, _, Backbone) { 6 | 7 | var StatisticsView = Backbone.View.extend({ 8 | 9 | el: '#server-statistics', 10 | headingTemplate: _.template($('#stats-heading').html()), 11 | 12 | initialize: function() { 13 | 14 | this.refresh(); 15 | }, 16 | 17 | render: function() { 18 | 19 | this.$el.html(this.headingTemplate({ })); 20 | return this; 21 | }, 22 | 23 | refresh: function() { 24 | this.render(); 25 | } 26 | }); 27 | 28 | return StatisticsView; 29 | 30 | }); 31 | 32 | -------------------------------------------------------------------------------- /client/views/users-page-select-view.js: -------------------------------------------------------------------------------- 1 | define([ 2 | "jquery", 3 | "underscore", 4 | "backbone", 5 | "backboneAutocomplete", 6 | "dispatcher" 7 | ], function ($, _, Backbone, AutocompleteView, dispatcher) { 8 | 9 | var UsersPageSelectView = AutocompleteView.extend({ 10 | onSelect: function(model){ 11 | dispatcher.trigger("userSelected", model.get("username")); 12 | }, 13 | searchMethod: function(model) { // method passed to filter(..) on the collection 14 | var label = model.get('username').toLowerCase(); 15 | // the method is bound to the view, with current value of the user input available as `this.searchValue` 16 | var searchValue = this.searchValue.toLowerCase().trim(); 17 | 18 | return label.startsWith(searchValue); 19 | }, 20 | initialise: function() { 21 | this.collection.fetch(); 22 | } 23 | }) 24 | 25 | return UsersPageSelectView; 26 | 27 | }); 28 | 29 | -------------------------------------------------------------------------------- /client/views/users-page-selected-user-view.js: -------------------------------------------------------------------------------- 1 | define([ 2 | "jquery", 3 | "underscore", 4 | "backbone", 5 | "dispatcher" 6 | ], function ($, _, Backbone, dispatcher) { 7 | 8 | var UsersPageSelectedUserView = Backbone.View.extend({ 9 | 10 | el: '#user-stats-selected-user', 11 | template: _.template($('#user-stats-selected-template').html()), 12 | userName: '', 13 | 14 | initialize: function() { 15 | this.refresh(); 16 | }, 17 | 18 | render: function() { 19 | 20 | this.$el.html(this.template({ userName: this.userName })); 21 | return this; 22 | }, 23 | 24 | refresh: function() { 25 | this.render(); 26 | }, 27 | 28 | setSelectedUser: function(userName) { 29 | this.userName = userName; 30 | this.refresh(); 31 | }, 32 | 33 | //Event handler 34 | userSelected: function(userName) { 35 | this.setSelectedUser(userName); 36 | } 37 | }); 38 | 39 | return UsersPageSelectedUserView; 40 | 41 | }); -------------------------------------------------------------------------------- /client/views/users-page-view.js: -------------------------------------------------------------------------------- 1 | define([ 2 | "jquery", 3 | "underscore", 4 | "backbone", 5 | "dispatcher" 6 | ], function ($, _, Backbone, dispatcher) { 7 | 8 | var UsersPageView = Backbone.View.extend({ 9 | 10 | el: '#users-page', 11 | headingTemplate: _.template($('#users-page-template').html()), 12 | userName: '', 13 | 14 | initialize: function() { 15 | this.refresh(); 16 | }, 17 | 18 | render: function() { 19 | 20 | this.$el.html(this.headingTemplate({ userName: this.userName })); 21 | return this; 22 | }, 23 | 24 | refresh: function() { 25 | this.render(); 26 | }, 27 | 28 | setSelectedUser: function(userName) { 29 | this.userName = userName; 30 | this.refresh(); 31 | }, 32 | 33 | //Event handler 34 | login: function(userName) { 35 | dispatcher.trigger("userSelected", userName); 36 | } 37 | }); 38 | 39 | return UsersPageView; 40 | 41 | }); 42 | 43 | -------------------------------------------------------------------------------- /config/nginx/brogue.localhost: -------------------------------------------------------------------------------- 1 | server { 2 | listen 80; 3 | server_name brogue.localhost; 4 | 5 | location / { 6 | proxy_pass http://localhost:8080; 7 | } 8 | } 9 | 10 | server { 11 | listen 81; 12 | server_name brogue.localhost; 13 | 14 | location / { 15 | proxy_pass http://localhost:8081; 16 | proxy_http_version 1.1; 17 | proxy_set_header Upgrade $http_upgrade; 18 | proxy_set_header Connection "upgrade"; 19 | proxy_set_header HOST $host; 20 | } 21 | } -------------------------------------------------------------------------------- /doc/data-use-estimates.md: -------------------------------------------------------------------------------- 1 | Data Use 2 | ======== 3 | 4 | It has come to my attention that the current brogue game uses a ridiculous amount of data. I have plans in the future to implement a brogue-client to talk to the server which will reduce data transfer by orders of magnitude, but until then we will have to make sure we are not using *too* much data when we buy a hosting service. 5 | 6 | In conclusion it looks like we should be safe to use 512MB for around 24 users. More users can be used but then the data transfer hits the ridiculous mark (1TB). 7 | 8 | Memory 9 | ------ 10 | 11 | Base Node Process: 46MB 12 | Additional Node User Process : 1MB 13 | Each Brogue Process : 8MB 14 | 15 | So 50 users would consume - 496MB 16 | 17 | We want less than that of course to account for the mongodb process and other linux processes. 18 | 19 | Data Transfer 20 | ------------- 21 | 22 | Now the fun part - 23 | 24 | A page load sends about 50kb of data. Pretty small in the grand scheme of things. 25 | 26 | Refreshing the entire brogue console is 34kb 27 | 28 | Playing pretty quickly it seems like a casual user hitting autoexplore can hit 1MB of transfer in a minute. So here is the worse case scenario: How many of these users can we support at a time without going over the basic package 1TB/month limit. 29 | 30 | Looks the the answer is about 24 users. The good news is there likely won't be 24 users playing at a time. crawl.akrasic.org has about 45 users logged in at the time of this writing. 31 | 32 | -------------------------------------------------------------------------------- /doc/datagram.txt: -------------------------------------------------------------------------------- 1 | Linux has a limit on the backlog of datagram packets that can wait in the queue. 2 | 3 | cat /proc/sys/net/unix/max_dgram_qlen 4 | 5 | On the digital ocean server this is 10, which causes EAGAIN on sending very quickly when using the mouse. 6 | 7 | It is probably wise to increase this (as root): 8 | 9 | sysctl -w net.unix.max_dgram_qlen=128 10 | 11 | (it is 512 on my debian dev box) -------------------------------------------------------------------------------- /doc/message-map.md: -------------------------------------------------------------------------------- 1 | // TODO - create a map of all the message connections. This will be useful for people who are not me to jump into working on this codebase -------------------------------------------------------------------------------- /doc/platform-notes.md: -------------------------------------------------------------------------------- 1 | Platform Notes 2 | ========================= 3 | 4 | I mention that this only works on a POSIX environment at the moment and wanted to explain why. The plan for this server was to use node.js and simply use the stdin and stdout of the brogue process to do very rudimentary i/o between the server and the child process. I was originally doing my development on a windows platform and started running into problems with multi-turn travel - the io would block whenever the screen was updated every time. 5 | 6 | So I decided to use some kind of function to check if the stdin had something in it before continuing. I finally settled on using the poll function, but unfortunately this is POSIX only if you are going to use it on a file descriptor like stdin. Apparently on windows this is not so hard if you are dealing with sockets, but I was just using the standard input output. 7 | 8 | Here were the things that I tried before just porting everything to linux: 9 | 10 | * ioctrlsocket with FIONREAD - only works with sockets 11 | * select - only works with sockets in windows 12 | * _kbhit - works great if you have a keyboard buffer, but our keyboard is on another computer so this won't work either. -------------------------------------------------------------------------------- /doc/roadmap.md: -------------------------------------------------------------------------------- 1 | Roadmap 2 | ======= 3 | 4 | 1. Create service for brogue comparable to crawl webtiles 5 | 2. Build tools to play brogue on mobile 6 | 3. Create better tools to administer server and better tools for users to access files 7 | 4. Build client js version of brogue to limit data transfer -------------------------------------------------------------------------------- /game-data/.gitignore: -------------------------------------------------------------------------------- 1 | # This directory is for saved games and recordings from the brogue processes. 2 | # As such I want to include this directory in the repository, but I don't want to save anything that may be put here 3 | 4 | * 5 | 6 | !.gitignore -------------------------------------------------------------------------------- /gbrogue/PlatformCode/PlatformDefines.h: -------------------------------------------------------------------------------- 1 | /* 2 | * PlatformDefines.h 3 | * Brogue 4 | * 5 | * Created by Brian Walker on 5/22/10. 6 | * Copyright 2010. All rights reserved. 7 | * 8 | * This file is part of Brogue. 9 | * 10 | * Brogue is free software: you can redistribute it and/or modify 11 | * it under the terms of the GNU General Public License as published by 12 | * the Free Software Foundation, either version 3 of the License, or 13 | * (at your option) any later version. 14 | * 15 | * Brogue is distributed in the hope that it will be useful, 16 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 17 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 18 | * GNU General Public License for more details. 19 | * 20 | * You should have received a copy of the GNU General Public License 21 | * along with Brogue. If not, see . 22 | */ 23 | 24 | // Any platform-dependent defines that must be accessible in the game code 25 | // should go in here. 26 | 27 | #define BROGUE_LIBTCOD 28 | #define PLAY_AGAIN_STRING "Press space to play again." 29 | 30 | -------------------------------------------------------------------------------- /gbrogue/PlatformCode/platform.h: -------------------------------------------------------------------------------- 1 | #include "Rogue.h" 2 | 3 | struct brogueConsole { 4 | void (*gameLoop)(); 5 | boolean (*pauseForMilliseconds)(short milliseconds); 6 | void (*nextKeyOrMouseEvent)(rogueEvent *returnEvent, boolean textInput, boolean colorsDance); 7 | void (*plotChar)(uchar, short, short, short, short, short, short, short, short); 8 | void (*remap)(const char *, const char *); 9 | boolean (*modifierHeld)(int modifier); 10 | void (*notifyEvent)(short eventId, int data1, int data2, const char *str1, const char *str2); 11 | }; 12 | 13 | void loadKeymap(); 14 | 15 | #ifdef BROGUE_TCOD 16 | extern struct brogueConsole tcodConsole; 17 | #endif 18 | 19 | #ifdef BROGUE_CURSES 20 | extern struct brogueConsole cursesConsole; 21 | #endif 22 | 23 | #ifdef BROGUE_WEB 24 | extern struct brogueConsole webConsole; 25 | #endif 26 | 27 | extern struct brogueConsole currentConsole; 28 | extern boolean serverMode; 29 | extern boolean noMenu; 30 | 31 | -------------------------------------------------------------------------------- /gbrogue/PlatformCode/term.h: -------------------------------------------------------------------------------- 1 | 2 | #ifndef _term_h_ 3 | #define _term_h_ 4 | 5 | #define TERM_NONE 0 6 | #define TERM_MOUSE 1 7 | 8 | typedef struct {float r, g, b;} fcolor; 9 | struct term_t { 10 | int (*start)(); 11 | void (*end)(); 12 | void (*put)(int x, int y, int ch, fcolor *fg, fcolor *bg); 13 | void (*refresh)(); 14 | int (*getkey)(); 15 | void (*wait)(); 16 | int (*hasKey)(); 17 | void (*title)(const char *); 18 | void (*resize)(int w, int h); 19 | int (*keycodeByName)(const char *); 20 | 21 | struct { 22 | int up, down, left, right, backspace, del, quit; 23 | } keys; 24 | 25 | int width, height; 26 | struct { 27 | int x, y; 28 | int isPressed, justPressed, justReleased, justMoved; 29 | int shift, control; 30 | } mouse; 31 | }; 32 | 33 | extern struct term_t Term; 34 | 35 | #endif 36 | 37 | -------------------------------------------------------------------------------- /gbrogue/bin/.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flend/web-brogue/cce0d050da519b865ed4c8c85ee5737c3a93894d/gbrogue/bin/.gitignore -------------------------------------------------------------------------------- /licensing.txt: -------------------------------------------------------------------------------- 1 | This repository contains the web-brogue server and a number of 2 | versions of brogue. 3 | 4 | The web-brogue server can be used independently of brogue and will 5 | support any console game using the web-brogue protocol and networking. 6 | 7 | The different components have different licences, which is indicated 8 | by the licensing files in each subdirectory. 9 | 10 | web-brogue, LICENCE, GPL-v2 11 | brogue CE v1.8, AGPL-v3, source available at: https://github.com/tmewett/BrogueCE [source not currently in this repo] 12 | brogue v1.7.5, brogue-1.7.5/agpl.txt, AGPL-v3 13 | brogue v1.7.4, brogue/agpl.txt, AGPL-v3 14 | gBrogue, gbrogue/agpl.txt, AGPL-v3 15 | unBrogue, unBrogue/license-agpl.txt, AGPL-v3 16 | -------------------------------------------------------------------------------- /research/PlatformDefines.h: -------------------------------------------------------------------------------- 1 | /* 2 | * PlatformDefines.h 3 | * Brogue 4 | * 5 | * Created by Brian Walker on 5/22/10. 6 | * Copyright 2010. All rights reserved. 7 | * 8 | * This file is part of Brogue. 9 | * 10 | * Brogue is free software: you can redistribute it and/or modify 11 | * it under the terms of the GNU General Public License as published by 12 | * the Free Software Foundation, either version 3 of the License, or 13 | * (at your option) any later version. 14 | * 15 | * Brogue is distributed in the hope that it will be useful, 16 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 17 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 18 | * GNU General Public License for more details. 19 | * 20 | * You should have received a copy of the GNU General Public License 21 | * along with Brogue. If not, see . 22 | */ 23 | 24 | // Any platform-dependent defines that must be accessible in the game code 25 | // should go in here. 26 | 27 | #define BROGUE_LIBTCOD 28 | #define PLAY_AGAIN_STRING "Press space to play again." 29 | 30 | -------------------------------------------------------------------------------- /scripts/news/news-model.js: -------------------------------------------------------------------------------- 1 | var mongoose = require('mongoose'); 2 | 3 | var newsRecordSchema = mongoose.Schema({ 4 | seq: Number, 5 | date: { type: Date, default: Date.now }, 6 | story: String 7 | }); 8 | 9 | module.exports = mongoose.model('NewsRecord', newsRecordSchema); -------------------------------------------------------------------------------- /scripts/news/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "web-brogue-news", 3 | "version": "0.1.0", 4 | "description": "A utility for add news to the brogue server.", 5 | "contributors": [ 6 | { 7 | "name": "Tom Ford", 8 | "email": "flend@compsoc.net" 9 | } 10 | ], 11 | "repository": { 12 | "type": "git", 13 | "url": "https://github.com/flend/web-brogue" 14 | }, 15 | "main": "news.js", 16 | "dependencies": { 17 | "async": "1.0.0", 18 | "minimist": "^1.2.5", 19 | "mongoose": "^6.1.2", 20 | "underscore": "^1.8.2" 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /scripts/news/seq-model.js: -------------------------------------------------------------------------------- 1 | var mongoose = require('mongoose'); 2 | 3 | var seqSchema = mongoose.Schema({ 4 | _id: String, 5 | seq: Number 6 | }); 7 | 8 | module.exports = mongoose.model('Counters', seqSchema); -------------------------------------------------------------------------------- /server/api/recordings-api.js: -------------------------------------------------------------------------------- 1 | var mongoose = require('mongoose'); 2 | var GameRecord = require("../database/game-record-model"); 3 | var paginate = require("express-paginate"); 4 | var _ = require("underscore"); 5 | var sanitize = require('mongo-sanitize'); 6 | const fs = require('fs'); 7 | var stats = require('../stats/stats.js'); 8 | 9 | module.exports = function(app, config) { 10 | 11 | app.get("/api/recordings/:id", function (req, res, next) { 12 | 13 | var recordingId = sanitize(req.params.id); 14 | 15 | GameRecord.findById(recordingId, function (err, gameRecord) { 16 | 17 | if (err) return next(err); 18 | 19 | if(!gameRecord || 20 | gameRecord && !('recording' in gameRecord)) { 21 | res.status(404).send('Not found'); 22 | return; 23 | } 24 | 25 | //Blacklist old versions that don't have desktop versions 26 | 27 | if(!stats.doesVariantSupportRecordingDownloads(config, gameRecord.variant)) { 28 | res.status(404).send('Not found'); 29 | return; 30 | } 31 | 32 | var file = gameRecord.recording; 33 | 34 | var filename = "webbrogue-recording-" + recordingId + ".broguerec"; 35 | var mimetype = "application/octet-stream"; 36 | 37 | res.setHeader('Content-disposition', 'attachment; filename=' + filename); 38 | res.setHeader('Content-type', mimetype); 39 | 40 | var filestream = fs.createReadStream(file); 41 | 42 | filestream.on('open', function () { 43 | filestream.pipe(res); 44 | }); 45 | 46 | filestream.on('error', function(err) { 47 | console.error("Can't find recording: " + file, err); 48 | res.status(404).send('Not found'); 49 | }); 50 | }); 51 | }); 52 | }; -------------------------------------------------------------------------------- /server/api/users-api.js: -------------------------------------------------------------------------------- 1 | var mongoose = require('mongoose'); 2 | var UsersRecord = require("../user/user-model"); 3 | var sanitize = require('mongo-sanitize'); 4 | var _ = require("underscore"); 5 | 6 | module.exports = function(app, config) { 7 | 8 | app.get("/api/users", function (req, res, next) { 9 | 10 | UsersRecord.find({}).sort({ username: "asc" }).lean().exec(function (err, users) { 11 | 12 | res.format({ 13 | json: function () { 14 | const allUsers = _.map(users, function(user) { 15 | return _.pick(user, 'username'); 16 | }); 17 | res.json(allUsers); 18 | } 19 | }); 20 | }); 21 | }); 22 | }; -------------------------------------------------------------------------------- /server/brogue/brogue-comms.js: -------------------------------------------------------------------------------- 1 | // Class tracks communication with all brogue sockets 2 | // Responsible for distributing messages from players and observers 3 | 4 | var brogue = require('./brogue-interface'); 5 | var brogueMode = require('../enum/brogue-mode'); 6 | 7 | module.exports = { 8 | 9 | brogueInterface: {}, 10 | 11 | getBrogueInterface: function (username, variant, data, mode) { 12 | 13 | //This would allow us to support simultaneously playing 2 variants - but that requires refactoring the user model 14 | var gameKey = variant + '-' + username; 15 | if(mode == brogueMode.RECORDING) { 16 | gameKey += "-RECORDING"; 17 | } 18 | 19 | if (this.brogueInterface[gameKey]) { 20 | if(!this.brogueInterface[gameKey].disconnected) { 21 | return this.brogueInterface[gameKey]; 22 | } 23 | } 24 | 25 | //If no interface exists, or it is disconnected, start with a new interface 26 | 27 | try { 28 | this.brogueInterface[gameKey] = new brogue(username, variant); 29 | this.brogueInterface[gameKey].start(data, mode); 30 | } 31 | catch(e) { 32 | delete this.brogueInterface[gameKey]; 33 | throw e; 34 | } 35 | 36 | return this.brogueInterface[gameKey]; 37 | } 38 | } 39 | 40 | 41 | -------------------------------------------------------------------------------- /server/brogue/brogue-constants.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | notifyEvents : { 3 | GAMEOVER_QUIT: 0, 4 | GAMEOVER_DEATH: 1, 5 | GAMEOVER_VICTORY: 2, 6 | GAMEOVER_SUPERVICTORY: 3, 7 | GAMEOVER_RECORDING: 4, 8 | SWITCH_TO_GRAPHICS: 5 9 | }, 10 | paths : { 11 | RECORDING: "recording" 12 | } 13 | }; 14 | 15 | -------------------------------------------------------------------------------- /server/controllers/cleanup-controllers.js: -------------------------------------------------------------------------------- 1 | 2 | // When the websocket closes we want to make sure that we clean up each controller so they doesn't continue to run processes after the client closes 3 | 4 | module.exports = function(controllers) { 5 | 6 | // again we need 'this' to be in the context of the controller not this function so bind it 7 | controllers.brogue.handlerCollection.clean.call(controllers.brogue); 8 | controllers.lobby.stopUserDataListen(); 9 | }; -------------------------------------------------------------------------------- /server/controllers/controller-base.js: -------------------------------------------------------------------------------- 1 | // A controller in the context of this application is just a part of the code which can receive messages and send messages. The controller base defines this basic functionality. 2 | 3 | function Controller() { 4 | this.controllerName = ""; 5 | this.socket; 6 | this.controllers; 7 | 8 | this.defaultSendCallback = function(err){ 9 | if (!err){ 10 | return; 11 | } 12 | // Going to just eat this error. If you navigate away from the page at the right time it fires quite a few times. 13 | // this.controllers.error.log("Server Error: There is a problem with the socket that prevented sending: " + err); 14 | }; 15 | 16 | this.handlerCollection = {}; // collection of handlername : function 17 | 18 | this.handleIncomingMessage = function (message) { 19 | if (this.handlerCollection[message.type]) { 20 | this.handlerCollection[message.type].call(this, message.data); 21 | } 22 | else { 23 | this.controllers.error.send("Message type incorrectly set: " + JSON.stringify(message)); 24 | } 25 | }; 26 | 27 | this.sendMessage = function(messageType, messageData, callback){ 28 | 29 | if (!callback){ 30 | callback = this.defaultSendCallback.bind(this); 31 | } 32 | 33 | var messageObject = { 34 | "type" : messageType, 35 | "data" : messageData 36 | }; 37 | 38 | //var message = JSON.stringify(messageObject); 39 | 40 | //TODO: remove callbacks 41 | this.socket.send(messageObject); //no callback 42 | }; 43 | } 44 | 45 | module.exports = Controller; -------------------------------------------------------------------------------- /server/controllers/controller-factory.js: -------------------------------------------------------------------------------- 1 | 2 | // This factory initializes each controller and attaches all the controllers used by the socket instance within scope of one another 3 | // This way, each controller can call methods on the other controllers if needed, but still be in separate files. 4 | // controllersList is an array of the names of the controllers (which match the filenames). 5 | 6 | module.exports = function(socket, controllersList) { 7 | 8 | var controllerInstances = {}; 9 | var numControllers = controllersList.length; 10 | 11 | for (var i = 0; i < numControllers; i++){ 12 | var cName = controllersList[i]; 13 | var cPath = "./" + cName + "-controller"; 14 | var ControllerClass = require(cPath); 15 | var controllerInstance = new ControllerClass(socket); 16 | 17 | controllerInstances[controllerInstance.controllerName] = controllerInstance; 18 | } 19 | 20 | for (var cKey in controllerInstances){ 21 | controllerInstances[cKey].controllers = controllerInstances; 22 | } 23 | 24 | return controllerInstances; 25 | }; -------------------------------------------------------------------------------- /server/controllers/error-controller.js: -------------------------------------------------------------------------------- 1 | var _ = require('underscore'); 2 | var util = require('util'); 3 | var Controller = require('./controller-base'); 4 | 5 | // Controller for propigating errors back to the client console for debugging purposes 6 | 7 | function ErrorController(socket) { 8 | this.controllerName = "error"; 9 | this.socket = socket; 10 | this.controllers = null; 11 | } 12 | 13 | ErrorController.prototype = new Controller(); 14 | _.extend(ErrorController.prototype, { 15 | controllerName : "error", 16 | 17 | handleIncomingMessage : function(message){ 18 | this.send("Message is not valid JSON: " + message); 19 | }, 20 | 21 | log : function(message){ 22 | util.log(message); 23 | }, 24 | 25 | send : function(message){ 26 | var errorMessage = "Server Error: " + message; 27 | this.log(errorMessage); 28 | this.sendMessage("error", errorMessage); 29 | } 30 | }); 31 | 32 | module.exports = ErrorController; -------------------------------------------------------------------------------- /server/controllers/router.js: -------------------------------------------------------------------------------- 1 | // Routes incoming websocket messages to the appropriate controller 2 | 3 | var _ = require('underscore'); 4 | 5 | function Router(initialControllers){ 6 | this.routeCollection = {}; 7 | this.registerControllers(initialControllers); 8 | } 9 | 10 | Router.prototype = { 11 | registerControllers : function(controllerCollection) { 12 | for (var cKey in controllerCollection){ 13 | var controller = controllerCollection[cKey]; 14 | this.routeCollection[controller.controllerName] = controller; 15 | } 16 | }, 17 | prepareRecievedData : function(rawMessage) { 18 | return JSON.parse(rawMessage); 19 | }, 20 | route : function(message){ 21 | 22 | if (this.routeCollection[message.controller]) { 23 | this.routeCollection[message.controller].handleIncomingMessage(message); 24 | } 25 | } 26 | }; 27 | 28 | module.exports = Router; -------------------------------------------------------------------------------- /server/database/chat-record-model.js: -------------------------------------------------------------------------------- 1 | var mongoose = require('mongoose'); 2 | 3 | var chatRecordSchema = mongoose.Schema({ 4 | date: { type: Date, default: Date.now }, 5 | username: String, 6 | message: String 7 | }); 8 | 9 | module.exports = mongoose.model('ChatRecord', chatRecordSchema); 10 | -------------------------------------------------------------------------------- /server/database/game-record-model.js: -------------------------------------------------------------------------------- 1 | var mongoose = require('mongoose'); 2 | var mongoosePaginate = require('mongoose-paginate-v2'); 3 | 4 | var gameRecordSchema = mongoose.Schema({ 5 | username: String, 6 | date: { type: Date, default: Date.now }, 7 | seed: Number, 8 | score: Number, 9 | level: Number, 10 | easyMode: Boolean, 11 | result: Number, 12 | description: String, 13 | recording: String, 14 | variant: String, 15 | seeded: Boolean, 16 | seedHigh: Number 17 | }); 18 | 19 | gameRecordSchema.index({ date: 1, username: -1 }, { unique: true }); 20 | 21 | gameRecordSchema.plugin(mongoosePaginate); 22 | 23 | module.exports = mongoose.model('GameRecord', gameRecordSchema); 24 | -------------------------------------------------------------------------------- /server/database/news-model.js: -------------------------------------------------------------------------------- 1 | var mongoose = require('mongoose'); 2 | var mongoosePaginate = require('mongoose-paginate-v2'); 3 | 4 | var newsRecordSchema = mongoose.Schema({ 5 | seq: Number, 6 | date: { type: Date, default: Date.now }, 7 | story: String 8 | }); 9 | 10 | newsRecordSchema.plugin(mongoosePaginate); 11 | 12 | module.exports = mongoose.model('NewsRecord', newsRecordSchema); 13 | -------------------------------------------------------------------------------- /server/enum/brogue-mode.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | GAME: 0, 3 | OBSERVE: 1, 4 | RECORDING: 2 5 | } -------------------------------------------------------------------------------- /server/enum/brogue-state.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | INACTIVE : 0, 3 | ACTIVE : 1 4 | }; -------------------------------------------------------------------------------- /server/enum/brogue-status-types.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | DEEPEST_LEVEL : 0, 3 | GOLD : 1, 4 | SEED : 2, 5 | EASY_MODE : 3 6 | }; -------------------------------------------------------------------------------- /server/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "web-brogue", 3 | "version": "0.1.0", 4 | "description": "A web server for playing the Brogue over the internet. Brogue is a game for Mac OS X, Windows, and Linux by Brian Walker. For more information go https://sites.google.com/site/broguegame/. The server only can be run on a POSIX environment at the moment.", 5 | "contributors": [ 6 | { 7 | "name": "Kristofer Raske", 8 | "email": "kip.raske@gmail.com" 9 | }, 10 | { 11 | "name": "Tom Ford", 12 | "email": "flend@compsoc.net" 13 | } 14 | ], 15 | "repository": { 16 | "type": "git", 17 | "url": "https://github.com/flend/web-brogue" 18 | }, 19 | "main": "server/server.js", 20 | "dependencies": { 21 | "bcrypt-nodejs": "^0.0.3", 22 | "client-sessions": "^0.7.0", 23 | "cookie-parser": "^1.4.4", 24 | "escape-html": "^1.0.3", 25 | "express": "^4.16.4", 26 | "express-paginate": "^1.0.0", 27 | "express-session": "^1.16.1", 28 | "fs-extra": "^5.0.0", 29 | "integer": "^4.0.0", 30 | "mongo-sanitize": "^1.1.0", 31 | "mongoose": "^6.1.2", 32 | "mongoose-paginate-v2": "^1.4.2", 33 | "morgan": "^1.9.1", 34 | "socket.io": "^2.2.0", 35 | "underscore": "^1.8.2", 36 | "unix-dgram": "^2.0.4" 37 | }, 38 | "scripts": { 39 | "test": "mocha --timeout 10000" 40 | }, 41 | "devDependencies": { 42 | "chai": "^3.5.0", 43 | "mocha": "^9.1.3", 44 | "supertest": "^3.4.2" 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /server/server.js: -------------------------------------------------------------------------------- 1 | // Main entry point in server side code. Sets up http server and websocket server and routes 2 | var domain = require("domain"); 3 | var config = require("./config"); 4 | var util = require("util"); 5 | 6 | httpServerDomain = domain.create(); 7 | httpServerDomain.on("error", function (err) { 8 | util.log("Uncaught exception emitted internally from Http Server. Process Terminating."); 9 | console.log(err.stack); 10 | process.exit(1); 11 | }); 12 | 13 | httpServerDomain.run(function () { 14 | require("./httpServer")(config); 15 | }); -------------------------------------------------------------------------------- /server/test/config-test.js: -------------------------------------------------------------------------------- 1 | // Object containing global constants for server program 2 | 3 | var path = require('path'); 4 | 5 | var config = { 6 | port : { 7 | HTTP : 8080 8 | }, 9 | brogueVariants : { 10 | "BROGUE": { 11 | binaryPath: "brogue/bin/brogue", 12 | version: "1.7.4", 13 | versionGroup: "1.7.4", 14 | modernCmdLine: true, 15 | supportsDownloads: true 16 | }, 17 | "GBROGUE": { 18 | binaryPath: "gbrogue/bin/brogue", 19 | version: "1.18.02.11", 20 | versionGroup: "1.18.02.11", 21 | modernCmdLine: false, 22 | supportsDownloads: false 23 | } 24 | }, 25 | defaultBrogueVariant: "BROGUE", 26 | path : { 27 | CLIENT_DIR : path.normalize(__dirname + "/../client/"), 28 | GAME_DATA_DIR : path.normalize(__dirname + "/../game-data/"), 29 | }, 30 | db : { 31 | url : "mongodb://localhost/server_test" 32 | }, 33 | lobby : { 34 | UPDATE_INTERVAL : 1000, 35 | TIMEOUT_INTERVAL : 300000 36 | }, 37 | auth : { 38 | secret: 'asecret', 39 | tokenExpiryTime: 90 * 24 * 60 * 60 * 1000 40 | } 41 | }; 42 | 43 | module.exports = config; 44 | -------------------------------------------------------------------------------- /server/test/server-test.js: -------------------------------------------------------------------------------- 1 | var config = require("./config-test"); 2 | var httpServer = require("../httpServer")(config); 3 | 4 | module.exports = httpServer; -------------------------------------------------------------------------------- /server/test/stats-test.js: -------------------------------------------------------------------------------- 1 | var expect = require("chai").expect; 2 | 3 | var brogueConstants = require("../brogue/brogue-constants.js"); 4 | var config = require("./config-test"); 5 | 6 | var stats = require("../stats/stats.js"); 7 | -------------------------------------------------------------------------------- /server/test/testfile.broguerec: -------------------------------------------------------------------------------- 1 | fakedata 2 | -------------------------------------------------------------------------------- /server/test/users-api-test.js: -------------------------------------------------------------------------------- 1 | var request = require('supertest'); 2 | var mongoose = require("mongoose"); 3 | var userRecord = require("../user/user-model"); 4 | var expect = require("chai").expect; 5 | var server = require("./server-test"); 6 | var config = require("./config-test"); 7 | 8 | var db = mongoose.createConnection(config.db.url); 9 | 10 | describe("users", function(){ 11 | 12 | beforeEach(function(done) { 13 | 14 | var userRecord1 = { 15 | username: "flend", 16 | password: "flend1" 17 | }; 18 | 19 | var userRecord2 = { 20 | username: "whitechapel", 21 | password: "apassword" 22 | }; 23 | 24 | var userRecord3 = { 25 | username: "dave", 26 | password: "fluffy" 27 | }; 28 | 29 | userRecord.create([userRecord1, userRecord2, userRecord3], function() { 30 | done(); 31 | }); 32 | }); 33 | 34 | afterEach(function(done) { 35 | 36 | userRecord.remove({}, function() { 37 | done(); 38 | }); 39 | }); 40 | 41 | it("returns status 200", function(done) { 42 | request(server) 43 | .get("/api/users") 44 | .set('Accept', 'application/json') 45 | .expect('Content-Type', /json/) 46 | .expect(200, done) 47 | }); 48 | 49 | it("returns all user names", function(done) { 50 | request(server) 51 | .get("/api/users") 52 | .set('Accept', 'application/json') 53 | .end(function(err, res) { 54 | var bodyObj = JSON.parse(res.text); 55 | expect(bodyObj).to.deep.equal([{"username": "dave"}, 56 | {"username": "flend"}, 57 | {"username": "whitechapel"}]); 58 | done(); 59 | }); 60 | }); 61 | }); -------------------------------------------------------------------------------- /server/user/user-model.js: -------------------------------------------------------------------------------- 1 | var mongoose = require('mongoose'); 2 | var bCrypt = require('bcrypt-nodejs'); 3 | 4 | var userSchema = mongoose.Schema({ 5 | username: String, 6 | password: String 7 | }); 8 | 9 | userSchema.methods.isValidPassword = function (password) { 10 | return bCrypt.compareSync(password, this.password); 11 | }; 12 | 13 | userSchema.methods.createHash = function (password) { 14 | return bCrypt.hashSync(password, bCrypt.genSaltSync(10)); 15 | }; 16 | 17 | userSchema.index({ username: 1 }); 18 | 19 | module.exports = mongoose.model('User', userSchema); 20 | -------------------------------------------------------------------------------- /unBrogue/PlatformCode/PlatformDefines.h: -------------------------------------------------------------------------------- 1 | /* 2 | * PlatformDefines.h 3 | * Brogue 4 | * 5 | * Created by Brian Walker on 5/22/10. 6 | * Copyright 2010. All rights reserved. 7 | * 8 | * This file is part of Brogue. 9 | * 10 | * Brogue is free software: you can redistribute it and/or modify 11 | * it under the terms of the GNU General Public License as published by 12 | * the Free Software Foundation, either version 3 of the License, or 13 | * (at your option) any later version. 14 | * 15 | * Brogue is distributed in the hope that it will be useful, 16 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 17 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 18 | * GNU General Public License for more details. 19 | * 20 | * You should have received a copy of the GNU General Public License 21 | * along with Brogue. If not, see . 22 | */ 23 | 24 | // Any platform-dependent defines that must be accessible in the game code 25 | // should go in here. 26 | 27 | #define BROGUE_LIBTCOD 28 | #define PLAY_AGAIN_STRING "Press space to play again." 29 | 30 | -------------------------------------------------------------------------------- /unBrogue/PlatformCode/platform.h: -------------------------------------------------------------------------------- 1 | #include "Rogue.h" 2 | 3 | struct brogueConsole { 4 | void (*gameLoop)(); 5 | boolean (*pauseForMilliseconds)(short milliseconds); 6 | void (*nextKeyOrMouseEvent)(rogueEvent *returnEvent, boolean textInput, boolean colorsDance); 7 | void (*plotChar)(uchar, short, short, short, short, short, short, short, short); 8 | void (*remap)(const char *, const char *); 9 | boolean (*modifierHeld)(int modifier); 10 | void (*notifyEvent)(short eventId, int data1, int data2, const char *str1, const char *str2); 11 | }; 12 | 13 | void loadKeymap(); 14 | 15 | #ifdef BROGUE_TCOD 16 | extern struct brogueConsole tcodConsole; 17 | #endif 18 | 19 | #ifdef BROGUE_CURSES 20 | extern struct brogueConsole cursesConsole; 21 | #endif 22 | 23 | #ifdef BROGUE_WEB 24 | extern struct brogueConsole webConsole; 25 | #endif 26 | 27 | extern struct brogueConsole currentConsole; 28 | extern boolean serverMode; 29 | extern boolean noMenu; 30 | 31 | -------------------------------------------------------------------------------- /unBrogue/PlatformCode/term.h: -------------------------------------------------------------------------------- 1 | 2 | #ifndef _term_h_ 3 | #define _term_h_ 4 | 5 | #define TERM_NONE 0 6 | #define TERM_MOUSE 1 7 | 8 | typedef struct {float r, g, b;} fcolor; 9 | struct term_t { 10 | int (*start)(); 11 | void (*end)(); 12 | void (*put)(int x, int y, int ch, fcolor *fg, fcolor *bg); 13 | void (*refresh)(); 14 | int (*getkey)(); 15 | void (*wait)(); 16 | int (*hasKey)(); 17 | void (*title)(const char *); 18 | void (*resize)(int w, int h); 19 | 20 | struct { 21 | int up, down, left, right, backspace, del, quit; 22 | } keys; 23 | 24 | int width, height; 25 | struct { 26 | int x, y; 27 | int isPressed, justPressed, justReleased, justMoved; 28 | int shift, control; 29 | } mouse; 30 | }; 31 | 32 | extern struct term_t Term; 33 | 34 | #endif 35 | 36 | -------------------------------------------------------------------------------- /unBrogue/bin/.gitignore: -------------------------------------------------------------------------------- 1 | # Ignore everything in this directory 2 | * 3 | # Except this file 4 | !.gitignore -------------------------------------------------------------------------------- /unBrogue/how-to-build.txt: -------------------------------------------------------------------------------- 1 | COMPILING BROGUE 2 | ---------------- 3 | 4 | You need libtcod-1.5.1b2 and SDL 1.2 to compile Brogue yourself. 5 | 6 | Find the appropriate version of libtcod at: 7 | http://doryen.eptalys.net/libtcod/download/ 8 | 9 | Or download directly: 10 | * for mingw: http://doryen.eptalys.net/?file_id=27 11 | * for Visual Studio: http://doryen.eptalys.net/?file_id=29 12 | 13 | Get SDL from http://www.libsdl.org/download-1.2.php -- you want the 14 | Development Library for Win32; the direct link is 15 | http://www.libsdl.org/release/SDL-devel-1.2.14-mingw32.tar.gz 16 | (and if you can't extract a .tar.gz, do yourself a favor and get 7zip.) 17 | 18 | 19 | USING THE PROJECT FILE (brogue.cbp) 20 | ----------------------------------- 21 | 22 | Get the mingw version of libtcod-1.5.1b2 and the mingw version of SDL. 23 | 24 | If you do not have Code::Blocks, go to 25 | * http://www.codeblocks.org/downloads/26#windows 26 | and get the version that includes mingw. 27 | 28 | You must unzip and put libtcod-1.5.1 and SDL-1.2.14 in "Brogue Source" 29 | (alongside "BrogueCode" and "PlatformCode") for the project to work unchanged. 30 | 31 | Happy hacking. 32 | -------------------------------------------------------------------------------- /unBrogue/icon.rc: -------------------------------------------------------------------------------- 1 | UNBROGUE_ICON ICON "unbrogue-icon.ico" 2 | -------------------------------------------------------------------------------- /unBrogue/keymap: -------------------------------------------------------------------------------- 1 | # The following keys are valid, although modifier keys (like SHIFT) are 2 | # not supported. Keys that produce characters but are not listed below 3 | # are mapped by the character they produce. 4 | # 5 | # Key remapping is not supported in curses mode. 6 | 7 | 8 | # NONE 9 | # ESCAPE BACKSPACE TAB ENTER 10 | # SHIFT CONTROL ALT CAPSLOCK LWIN RWIN APPS NUMLOCK SCROLLLOCK 11 | # PAGEUP PAGEDOWN END HOME 12 | # UP LEFT RIGHT DOWN 13 | # PRINTSCREEN PAUSE INSERT DELETE 14 | # 0 1 2 3 4 5 6 7 8 9 15 | # KP0 KP1 KP2 KP3 KP4 KP5 KP6 KP7 KP8 KP9 KPADD KPSUB KPDIV KPMUL KPDEC KPENTER 16 | # F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 17 | # SPACE 18 | 19 | # EXAMPLE: numberpad play 20 | # if you remove the # from each of the following lines, it will be 21 | # possible to perform many actions with only the numberpad (in tcod mode) 22 | #KPDIV a 23 | #KPMUL i 24 | #KPADD t 25 | #KPSUB d 26 | #KPDEC s 27 | #KP0 ESCAPE 28 | 29 | #F5 S 30 | #F7 O 31 | #F2 A 32 | #A NONE 33 | #O NONE 34 | #S NONE 35 | 36 | --------------------------------------------------------------------------------