Commit Graph

94 Commits

Author SHA1 Message Date
e54c67aaa1 DialogXML header extensions -> .hpp 2014-12-22 09:52:58 -05:00
4b96f579b7 Embark on an epic journey to make both the game and the two editors load the entire scenario into memory.
Some other tweaks and fixes got pulled in along the way.
Details:
- Improved const-correctness
- The scenario is now part of the universe, so now there's no global scenario object in the game or the PC editor. (Of course, the scenario editor has no universe, so it still has a global scenario object.)
- Towns and outdoors now store a reference to the scenario; the party, current town, and current outdoors store a reference to the universe. Altogether this means that the data module has no need for global scenario or universe objects.
- The fileio routines now take a scenario or universe reference as a parameter, so they don't need the global scenario or universe objects either.
- cCurOut now has an arrow operator for accessing the current outdoor section, instead of a 2x2 subset of the outdoors; this replaces using i_w_c to index the 2x2 subset. (And it's much less verbose!)
- cCurTown no longer stores a pointer to the town record, since it can simply access it through the universe instance which it stores a reference to.
- Tweaked how the monster roster menu works (it now caches up to 60 monsters)
- The operator= functions that convert from legacy to new scenario/save format are now ordinary functions rather than operators.
- The bizarre use of assigning a cCreature to itself to populate certain fields has been nuked.
- When at the corner of an outdoor sector, the scenario editor now shows the cornermost terrain in the diagonally adjacent sector.
- There was a missing check to prevent horses entering dangerous terrain (eg, swamp) while in town.
- Fix cancelling load party dialog causing a party to appear
2014-12-22 00:20:37 -05:00
2a2326035e Fix up all the mini-map stuff!
- Preset animated graphics now start at 960 instead of 400, due to all the new preset terrains from the previous commit running into their range.
- Tore out some optimization in the automap drawing, because it made it harder to figure out why it wasn't working
- Both game and editor now use the larger 12x12 map graphics, and fall back to shrinking down the 28x36 terrain graphic if no map graphic is set
- Upon loading an old scenario, map graphic is automatically set the same as the main graphic if it's a preset graphic; for custom graphics it's set to none
- Scenario now has three zoom levels for mini-map - the original in which the entire town is visible, a slightly closer one that matches the in-game view, and a large one using the 12x12 map graphics at full size.
- Fix some map patterns having the wrong bounding rect
- Graphics (and sounds) now included in the project by folder reference, so that I don't need to manually every new sheet to the project
2014-12-18 01:38:22 -05:00
8bb96396a5 Remove the RECT typedef for my custom rectangle class 2014-12-17 00:30:02 -05:00
c6d960d078 Remove the string forwarders that were introduced to allow use of the original string indices
(A few things might be broken, probably just related to recording talk/encounter notes.)
2014-12-15 13:55:00 -05:00
5af865368f Mass reformatting (braces from next line) 2014-12-15 11:09:56 -05:00
d7d08cbaa3 Mass reformatting (space after keywords) 2014-12-15 10:09:23 -05:00
140e0b58ef Mass re-indentation
(Also removes some trailing whitespace)
2014-12-15 09:59:43 -05:00
aaad894ccb Simplify tons of comparisons to true/false 2014-12-15 08:46:48 -05:00
02478da9d7 Lots of TODO comments, some noting things related to the Windows version 2014-12-15 08:46:47 -05:00
2ed3eca8d1 Remove the redundant combat_terrain array 2014-12-15 08:46:46 -05:00
1fbf8939b2 Move per-PC combat data into cPlayer class 2014-12-14 02:51:16 -05:00
6151a24916 FIx linker error in editors 2014-12-12 13:25:39 -05:00
43285d0809 Implement two-part drawing for force cages
- Also a missing check for them
2014-12-11 01:36:32 -05:00
252d6818ee Clear out some unneeded casts 2014-12-11 00:47:03 -05:00
004b6d1ace Various field/belt related stuff
- Remove all field booleans except quickfire and belt, which have been moved to cCurTown
- Alter and extend place_spell_pattern, to allow arbitrary damage types and to make it more clear in the code what's happening when it's called
- Delete fields.cpp file; a few things moved to locutils.cpp, but most are now part of cCurTown
- set_terrain function automatically updates belt present boolean if setting to a conveyor.
2014-12-11 00:46:28 -05:00
eb2fb485ac Don't create a new texture every time tiling is requested, though sadly this introduces a new issue 2014-12-11 00:15:26 -05:00
0629a70419 Strictiy terrain special enum 2014-12-06 20:59:50 -05:00
94d8717a0b Nuke as many warnings as possible, and several globals as well
- Warnings completely suppressed for the included TinyXML and gzstream libraries
- Parentheses warnings are now errors, since there were several that looked like bugs
- Ditto for dangling else warnings

Some of these warnings were actually bugs:
- Town wandering monsters would have never spawned, because the code to do so was accidentally nested within a check for overall_mode == MODE_OUTDOORS
---> boe.monster.cpp, lines 105-137
- Monster's behaviour with respect to elemental fields did not correctly depend on their immunities (this is the same precedence issue Sylae messed up fixing in the Windows code)
---> boe.monsters.cpp, lines 345-359
- Display of damage blocked by armour appeared to be incorrect (needs verification)
---> boe.newgraph.cpp, line 1079
- Three-choice dialogs probably weren't dealing with unusual button types correctly, though that's a minor point since they aren't expected to use such buttons
2014-12-04 12:44:17 -05:00
13116980fb Strictify race enum
- This incidentally fixes a lot of things that were broken in the previous commit due to the magic values changing
2014-12-03 20:21:24 -05:00
a95f1c5b93 Fix the line-of-sight stuff that was broken thanks to 0 being implicitly convertible to std::function 2014-12-02 15:54:50 -05:00
e6057387eb Strictify PC main status enum 2014-12-01 21:38:20 -05:00
e86362d294 Strictify the terrain trim enum 2014-12-01 20:04:30 -05:00
d900c7edef Enumify terrain blockage and generalize the line of sight function
This should probably be two separate commits, but they're tangled together and I don't want to spend the effort to disentangle them.
2014-12-01 19:50:19 -05:00
a9ea0a114c Make text drawing mode a strict enum 2014-11-29 19:41:54 -05:00
a4430cdf5a Fix spellcasting and dynamic menus
- Spell targeting line and array draws nicely, though not the same as the original
- Fix targeting falsely complaining about being off the edge of town
- Monster info dialog works properly; attacks now display correctly
- Fix dialogs always showing the wrong terrain or monster graphic
- Spell menus, monster menus, and PC editor item menus all work
- Spellcasting dialog now chooses the correct spell
- Fix out-of-place LED in spellcasting dialog
2014-04-22 02:06:31 -04:00
9013096624 Fix crash when changing display mode 2014-04-21 13:56:05 -04:00
446bb1550d Some more tweaks to cursor handling
- Fix cursor turning into a sword during universe shifts
- Hide cursor along with menubar during splash screen
- Add watch cursor, used during splash screen
- Properly restore cursor after a dialog
- Use sword cursor for dialogs
- Show ibeam cursor in dialog text fields
- Move everything cursor-related out of graphtool
2014-04-21 13:47:52 -04:00
321cd7c2e5 Finally implement the blue hilite tint for the toolbar buttons 2014-04-21 02:27:59 -04:00
002ee640da Remove the global TextStyle; this should fix some of the textual glitches 2014-04-21 01:49:07 -04:00
3b00392e99 Get road connections working, and convert grass/hill road crossings from old scenarios
In classic BoE, to make a road cross the boundary of grass and hills, you would place a "road on hill" terrain where the boundary should be, and the game would automatically convert it to the correct type of boundary before drawing the road on top. Now, the game expects you to place the proper boundary there instead, meaning there is some more complicated logic to determine when it needs to draw a road across a boundary, or, in some cases, two consecutive boundaries. It works for the surface world of Valley of the Dying Things; there may still be some edge cases that need fixing.
2014-04-18 18:58:53 -04:00
4f741b440f Fix walkway and wall trims; not sure why shore frills don't also work 2014-04-18 16:59:33 -04:00
55c3f83d22 Fix light masks for dark towns 2014-04-18 01:26:05 -04:00
369c7f9f93 Implement scrollbars
- They work almost as you'd expect, though holding the mouse down on an arrow only scrolls once, and it's a little jerky
- Add an additional refresh option to redraw_screen, currently only partially implemented
- Scrollbars now have a page size in addition to pos and max
- cControl::handleClick() now takes the location clicked as a parameter, though the default implementation doesn't use it
- cControl::handleClick() is no longer responsible for redrawing the control when there is no parent dialog
- Fix cTextMsg not allowing retrieval of frame style
2014-04-17 11:33:44 -04:00
d7e372b7a9 Delete a useless function 2014-04-16 17:49:59 -04:00
6060ba6750 Remove c_str() calls made redundant by the previous commit 2014-04-15 21:27:13 -04:00
f302af4dc8 Fix text bar not displaying 2014-04-15 17:47:59 -04:00
62d6576187 Re-indent all files in the boe namespace 2014-04-15 15:09:35 -04:00
ac3ac31f04 Squash a lot of missing prototype warnings 2014-04-15 03:39:21 -04:00
2b924101d6 Nuke nearly all of the unused local variables 2014-04-15 02:54:16 -04:00
14a089aaee Overhaul the game's "rendering pipeline", simplifying it a fair bit
- Also significantly improves performance
2014-04-15 01:31:06 -04:00
93c5921503 Nuke redundant in_startup_mode variable 2014-04-15 00:13:18 -04:00
2ae75df4a7 Fix the blue arrows for look mode 2014-04-14 22:15:33 -04:00
a53c16c4a0 Skip startup music along with splash screen 2014-04-14 15:51:24 -04:00
2a3b275259 Make everything display correctly on the main game screen 2014-04-14 13:55:48 -04:00
41c043ec27 Fix forgetting to initialize render textures and other minor things
- Removed now-unused render texture for the startup animation
- Don't place background after drawing buttons
- Fix conversion error in rectunion call
- A couple of TODO notes
2014-04-14 13:55:36 -04:00
5f6df4d76f Remove FlushAndPause() function 2014-04-14 13:52:08 -04:00
83a67395bb Remove create_clip_region() function 2014-04-14 13:52:08 -04:00
7afaaf3a60 SFML doesn't like textures of size 0 2014-04-14 13:52:06 -04:00
a6a030052c Implement loading of .meg files using the Resource manager
- I extract pixel data from the resource without using QuickDraw
- Both resource-fork and data-fork .meg files work

Related changes:
- The custom graphics textures are now wrapped in a custom class
- bmp images are loaded if a meg is not found

Incidental changes:
- Various TODO notes
- Fix cScenario::spec_strs skipping several strings and potentially fetching out-of-bound entries
- oopsError now uses string streams instead of sprintf
2014-04-14 13:52:05 -04:00