Commit Graph

695 Commits (de899c5966b6cca5d77e67e8ba66b8996a21f89a)

Author SHA1 Message Date
expwnent 036aae060b Merge lethosor stuff. For some reason, git's auto merge message didn't happen because of git-stash shenanigans. Oh well. 2014-06-19 22:58:17 -04:00
Lethosor ec64a787c6 Use _getcwd on Windows 2014-06-19 22:34:40 -04:00
Lethosor 73fdb8b125 Fix Windows compile-time error 2014-06-19 21:24:16 -04:00
lethosor ef69522d93 Merge branch 'develop' into filesystem-module-pr 2014-06-18 15:45:42 -04:00
lethosor 6fa478de22 Filesystem module
Implements a handful of filesystem-related functions (e.g. chdir, mkdir)
in C++ and Lua.
2014-06-15 22:38:17 -04:00
Pierre-David Bélanger e0808c8c96 Use squad::find instead of indexing the vector 2014-06-10 22:38:32 -04:00
Pierre-David Bélanger bdcc00f6f7 Util method (in the Units class) to get a unit squad name (the translated name, or alias if set) 2014-06-09 21:51:52 -04:00
Quietust e483e7439f Fix problems with NONE for item types and subtypes 2014-05-22 08:18:01 -05:00
Alexander Gavrilov 415cdad489 Make using new for allocating DF objects with vtables a compile-time error.
When done from plugins, it doesn't correctly initialize the vtable
because of some weird things MSVC does, so the only safe way is to
use df::allocate<df::foo>(). For consistency, it is also enforced
for code in the main library. It reveals the issue in the digging
invaders plugin, first found by warmist.

This change is linked to a modification in df-structures codegen.
2014-04-30 21:28:02 +04:00
Alexander Gavrilov 98325757e2 Fix signed-unsigned mismatch warnings in the new item value code.
Unsigned comparison allows catching negatives in the same check too.
Also, it didn't check the values in getValue.
2014-04-30 20:44:22 +04:00
Quietust 0f4684f29d Add Items::getItemBaseValue and Items::getValue, available from Lua 2014-04-25 11:04:21 -05:00
Quietust 57fbb1004b Assorted cleanup 2014-04-23 08:23:34 -05:00
Quietust c3d45c3a1e Add Job::getName(job *), also available from Lua 2014-04-23 08:03:10 -05:00
Alexander Gavrilov 6bef167f83 Add a couple of useful scripts and fix two missing NULL checks.
- A script to unstick jobs trying to build walls from the same tile.
- A devel script for viewing the path a unit is currently following.
2014-04-21 09:24:05 +04:00
Alexander Gavrilov c27c38e4c0 Remove tired or hungry siege operators from duty when at peace.
The threshold is set at the level when they start to blink - normally
they would continue on with the job until they get a thirsty/hungry
thought, but immediately run off to eat if they lose the job (thus
refusing to load the engine after firing it). The code checks for
active sieges and whether there is a free replacement unit.
2014-04-15 21:52:39 +04:00
Alexander Gavrilov fc9826389b Account for meandering movement when predicting unit path in siege engine.
The movement is random, but there is an average slowdown coefficient.
2014-04-15 19:50:23 +04:00
Alexander Gavrilov 7844907204 Add new API functions for creating announcements and combat reports.
Allow specifying the announcement flags directly, and adding unit
combat reports. Also, make announcement functions write the message
to the game log.
2014-04-15 19:50:23 +04:00
Alexander Gavrilov b56c3a95a6 Fix some signed/unsigned mismatch warnings and whitespace in Job module. 2014-04-15 19:50:23 +04:00
Alexander Gavrilov 7aecffe0cd Update structures and fix broken things. 2014-04-04 22:34:39 +04:00
Quietust e620ae765c Add missing import/export info for MersenneRNG::unitvector<> 2014-03-25 13:30:21 -05:00
jj 387cc983f9 Merge branch 'osx_shenanigans' of git://github.com/tareqak/dfhack 2014-02-02 23:50:21 +01:00
Tareq A Khandaker f0eeba93ce DFHack compiles under OS X now. 2014-01-25 03:21:56 -05:00
jj ce33973f0f Merge branch 'master' of github.com/quietust/dfhack 2013-12-24 14:07:08 +01:00
Alexander Gavrilov 53bd112515 Hide fake historical figures from legends xml export. 2013-11-07 12:27:53 +04:00
jj 04dce1aa7f MaterialInfo: fix decoding for COAL subtypes 2013-11-05 00:31:32 +01:00
expwnent 329741f235 EventManager: added EQUIPMENT_CHANGE event and exposed it to lua. 2013-10-24 19:32:52 -04:00
expwnent 4dbcee9560 EventManager: be smarter about removing things while iterating. 2013-10-20 23:16:21 -04:00
expwnent c409289ee4 EventManager: TICK events should unregister correctly when requested and after they fire, other tweaks.
- fixed unregister to allow unregistering individual TICK events
 - make registerTick return the resulting freq you have to put back in to the handler in order for it to be unregisterable
- when TICK events fire, they now automatically remove themselves from handlers[TICK], as they should
- make sure manageTickEvent fires once per tick
2013-10-20 22:54:25 -04:00
expwnent 3594dc2eb8 EventManager: fixed the TICK event, and a few tweaks.
- redo tick event management to work with world->frame_counter
 - the freq of a TICK EventHandler is now ignored
 - unregistering for an individual TICK event is still broken
  - you would have to know the modified freq to even begin removing it
  - it is only removed from handleres[TICK], not from tickQueue
- redo unregisterAll to be more efficient
- use the map loaded/unloaded events instead of world loaded/unloaded for initializing/clearing event monitoring data
- get rid of silly unsigned variables
2013-10-20 21:48:28 -04:00
expwnent 9bf004d07f Several EventManager fixes and improvements.
- handle loading and unloading of saves better
  - made sure it never triggers bogus events on loading a save
    - plugins should now handle loading themselves with onStateChange
  - special case to make Buildings module keep track of all buildings correctly on load
- fixed syndrome detection
  - was broken because of the switch from ticks-since-the-dawn-of-time to world->frame_counter
  - added lastSyndromeTime global
- fixed possible off by one error when looking for new created items
- got rid of the unread lastTick global
- const'ed the function pointer array of eventManagers
2013-10-20 20:12:42 -04:00
expwnent f69fd1d528 EventManager: prevent eventspam just after loading a save. 2013-10-20 17:39:54 -04:00
expwnent d78a111f02 EventManager: Fixed the death event, fixed another problem with construction event, and made EventManager use world->frame_counter for scheduling event checking in order to make it work in arena mode. 2013-10-20 14:41:39 -04:00
expwnent 39553cfb6d EventManager: fixed a problem with constructionHandler. 2013-10-20 14:14:02 -04:00
expwnent ee056f4422 Merge remote-tracking branch 'angavrilov/master' into 0.34.11-r4
Conflicts:
	NEWS
2013-10-20 11:09:40 -04:00
expwnent 9d3ee11349 Merge branch 'diggingInvaders' into 0.34.11-r4
Conflicts:
	scripts/devel/invasion-now.lua
2013-10-19 21:26:50 -04:00
expwnent 57fc0f3e89 Merge remote-tracking branch 'angavrilov/master' into 0.34.11-r4
Conflicts:
	NEWS
	library/xml
	plugins/CMakeLists.txt
	plugins/autoSyndrome.cpp
2013-10-19 20:19:29 -04:00
Alexander Gavrilov 78de739d75 Update aquifers when generating 3D vein layout. 2013-10-11 19:23:32 +04:00
Alexander Gavrilov 63d8267606 Decode ice under constructions if possible, but never write it out. 2013-10-10 12:15:50 +04:00
Alexander Gavrilov f36041f6bd Implement a MapCache api for writing base layer tiles of arbitrary stone.
Precompute some tables in TileTypes for extremely efficient
conversion between tiles of most important material types.
2013-10-10 12:15:50 +04:00
Alexander Gavrilov 68b6e10b2c Implement writing veins tile by tile through MapCache.
Unlike changevein, which changes the material in an existing vein
object, with this feature you can set the material for individual
tiles, and the cache will write it out as vein objects.

The array inside the cache data is changed from layer material to
vein material, because layer material is easy to compute.
2013-10-08 18:17:36 +04:00
Alexander Gavrilov 9442e8ea1f Make biome information more explicit in MapCache. 2013-10-07 16:58:10 +04:00
Alexander Gavrilov ea36233dff Split MapCache code from Maps.cpp 2013-10-07 16:58:10 +04:00
Alexander Gavrilov e175efa689 Implement a template-based classical Perlin noise generator.
The mask argument of the Impl template is there because apparently
an inner template cannot be fully specialized, so there needs to be
some argument besides i.
2013-10-01 18:58:04 +04:00
Alexander Gavrilov 599af0a4d9 Fix linux and windows build issues.
- Linux makefile overrides and removes the optimization flags.
- Old linux gcc doesn't understand lambdas.
- MSVC doesn't like extern and explicit instantiation in same file.
2013-09-30 22:51:29 +04:00
Alexander Gavrilov 9e81d27cd1 Implement the same random generator as DF uses for DFHack. 2013-09-30 19:46:39 +04:00
Alexander Gavrilov df2e04db26 Update xml definitions. 2013-08-16 18:25:16 +04:00
expwnent ba73de5e35 EventManager: use units.all instead of units.active. 2013-06-20 21:34:32 -04:00
Alexander Gavrilov 49409d4630 Follow xml changes. 2013-06-11 16:10:42 +04:00
expwnent 57c42e3927 Maps.ensureTileBlock: fixed temperature issues, and properly added blocks to the world.map.map_blocks vector to prevent weird glitches. 2013-06-10 15:43:14 -04:00
expwnent 08114cf574 diggingInvaders: more fixes. Still a few issues with ramps probably. 2013-05-31 20:39:43 -04:00
expwnent f8261348ff Merge branch 'master' into diggingInvaders
Also make edgeCost.cpp compile because I stopped midsentence for some reason.

Conflicts:
	library/modules/Maps.cpp
2013-05-31 16:28:05 -04:00
expwnent 3403146461 Merge remote-tracking branch 'peterix/master'
Conflicts:
	plugins/CMakeLists.txt
	plugins/autoSyndrome.cpp
2013-05-25 20:08:56 -04:00
expwnent 638b2e974c EventManager: cleaned up manageEvents considerably, using a function pointer array. 2013-05-25 12:19:54 -04:00
expwnent bcaaa72387 EventManager should use a CoreSuspender just in case. 2013-05-25 11:50:43 -04:00
expwnent b44cd86dc9 EventManager: completely overhauled JOB_COMPLETED event detection, and tweaked Job::cloneJobStruct. 2013-05-25 09:44:17 -04:00
expwnent 29b5e20575 autoSyndrome should now work with syndromeTrigger. 2013-05-11 16:46:37 -04:00
jj e5fd918b0c job: unk2 -> subtype 2013-05-05 03:55:08 +02:00
Petr Mrázek 6a907e3584 Fix issue #195 - off by one error in building dimensions 2013-04-24 17:41:25 +02:00
expwnent b4092f62e6 New module: Once. Intended to help prevent debug error message spam. 2013-03-23 22:38:33 -04:00
Alexander Gavrilov 7cbd201f31 Nuke the third exit(1) and change building caching code to make more sense. 2013-02-14 13:13:25 +04:00
Alexander Gavrilov 9ca435544e Nuke unsafe behavior in Buildings::findAtTile from orbit. 2013-02-13 15:03:15 +04:00
Petr Mrázek e06b6904f1 Small fix to sync dfhack with the structures. 2013-01-15 23:41:43 +01:00
expwnent 3ffbef2396 Merge branch 'canStepBetween' into recent 2013-01-05 18:10:29 -05:00
expwnent f8abd5c595 StepBetween: renamed stuff back to the way it was. Thought I had already done that. 2013-01-05 18:09:50 -05:00
expwnent 6622e9e06f Merge branch 'canStepBetween' into recent
Conflicts:
	library/modules/Maps.cpp
2013-01-05 13:32:29 -05:00
expwnent 8e90ca6b41 Merge branch 'eventManager' into diggingInvaders-unstable 2013-01-03 22:47:45 -05:00
expwnent ec03d567d2 EventManager: use WORLD_LOADED instead of MAP_LOADED. 2013-01-03 22:47:27 -05:00
expwnent f145f8d528 Merge branch 'eventManager' into diggingInvaders-unstable 2013-01-03 19:32:12 -05:00
expwnent 715f191c26 EventManager: made the frequency part of EventHandler. 2013-01-03 19:31:29 -05:00
expwnent 9e74ae58f2 EventManager: Fixed a problem with deregistering event frequencies. 2013-01-03 19:07:05 -05:00
expwnent 84b8fae326 Merge branch 'eventManager' into diggingInvaders-unstable 2013-01-03 15:53:06 -05:00
expwnent 910e398a7b EventManager: added invasion event. 2013-01-03 15:52:56 -05:00
expwnent 5865579b23 EventManager: got rid of print statement. 2013-01-02 19:26:37 -05:00
expwnent 6d2773856a EventManager: fixed a few things. 2013-01-02 19:23:40 -05:00
expwnent 4e4e382b8f EventManager: added syndrome event. 2013-01-02 18:30:15 -05:00
expwnent 144e0b4dcb Digging Invaders: merged eventManager and recent. 2013-01-02 11:26:30 -05:00
expwnent c3b2ae2137 EventManager: allowed plugins to specify how often they need events to be checked, in the event that monitoring is necessary. 2013-01-02 11:07:56 -05:00
expwnent fa78d6ccfc Merge branch 'recent' into eventManager-unstable
Conflicts:
	library/modules/Job.cpp
2013-01-02 03:16:45 -05:00
expwnent 4e99841862 EventManager: made Buildings module keep track of buildings so that it
can do findAtTile in constant time.
2013-01-01 22:22:31 -05:00
expwnent ee4f37ff72 Merge branch 'canWalkBetween' into diggingInvaders 2012-12-19 20:31:17 -05:00
expwnent 7972902c81 stepBetween: named a few things better, and fixed a lot. 2012-12-19 20:30:37 -05:00
expwnent a93c0223a2 EventManager: unstable. Temp commit. 2012-12-18 20:28:30 -05:00
expwnent 555c754636 EventManager: added construction and building events. 2012-12-18 18:34:38 -05:00
expwnent 515eb3b060 Reverted the silly changes to Buildings module that didn't work anyway. 2012-12-17 17:38:47 -05:00
expwnent 3fde504ae2 Merge branch 'canWalkBetween' into diggingInvaders 2012-12-17 00:25:31 -05:00
expwnent 22837af8d7 canWalkBetween: fixed bug involving ramps. 2012-12-17 00:25:14 -05:00
expwnent d79583a2c9 Merge branch 'canWalkBetween' into diggingInvaders 2012-12-16 23:39:36 -05:00
expwnent 1a6a09281b canWalkBetween: forgot a case with ramps. 2012-12-16 23:37:15 -05:00
expwnent d2be8f18e1 canWalkBetween: forgot a case with stairs. 2012-12-16 23:30:35 -05:00
expwnent 01e5e93825 Renamed Maps::canWalkBetween to Maps::canPathBetween and added Maps::canWalkBetween, which does what it says. 2012-12-16 23:26:50 -05:00
expwnent 131d19e4cf Merge branch 'eventManager' into diggingInvaders 2012-12-16 16:43:58 -05:00
expwnent 8a242b3c0d Merge branch 'master' into diggingInvaders 2012-12-16 16:34:45 -05:00
expwnent 78aab90f3a EventManager: whitespace. 2012-12-16 16:27:08 -05:00
expwnent 3951d4d204 EventManager: made it safe to register/unregister while events are being triggered. 2012-12-16 15:39:39 -05:00
expwnent d4d8e69556 EventManager: Allowed absolute time registration. 2012-12-15 18:08:59 -05:00
expwnent 86e002f3ff EventManager: added item creation event. 2012-12-15 16:49:13 -05:00
expwnent b0314755e0 EventManager: added unit death event. 2012-12-15 14:40:11 -05:00
expwnent 155a4d044c EventManager: fiddled with time events. Made it possible to register for time events before a world is loaded. Also added some files I forgot to add to the previous commit. 2012-12-14 23:29:28 -05:00
expwnent 747723187f EventManager: first draft. 2012-12-14 21:05:38 -05:00
jj 6bc791d985 follow df-structure rename unit.unknown8 + able_stand_* 2012-12-10 22:50:33 +01:00
Alexander Gavrilov a0e671d75d Make rename unit reset the name if it becomes completely empty. 2012-12-08 20:39:57 +04:00
jj ebc2625d97 ditch the unused Vegetation module 2012-12-06 23:47:25 +01:00
jj 3953112eb9 dump Vegetation::t_plant, fix plant.is_burning 2012-12-03 19:03:07 +01:00
Alexander Gavrilov 9703d3fd8f Detect mouse press events for lua. 2012-12-02 14:43:23 +04:00
Quietust e3eb325d36 Minimize references to gps->dimx/dimy 2012-11-23 19:18:56 -06:00
Alexander Gavrilov 767c1b9368 Duplicate the lua Painter class in C++. 2012-11-19 18:11:26 +04:00
Quietust 3f2e583746 Naming consistency 2012-11-16 15:35:34 -06:00
Quietust e2b9b703a0 Get rid of tabs 2012-11-16 15:33:36 -06:00
Alexander Gavrilov 2401be1b3b Add an api function to retrieve unit skill experience. 2012-11-16 22:48:49 +04:00
Alexander Gavrilov 72912edf58 Ensure AddPersistentData won't create duplicate ids.
If anything messes around with the histfig vector between calls.
2012-11-16 18:45:51 +04:00
Quietust bbe94c006f Update for temperaturest 2012-11-12 11:54:21 -06:00
Alexander Gavrilov b4dcc7e7ad Add more native api functions for finding general and specific refs. 2012-11-12 19:17:32 +04:00
Quietust a99d47ee7a Remove UTF-8 BOMs added by notepad 2012-11-12 08:38:29 -06:00
Quietust 766aca4911 Rename general_ref vectors for consistency 2012-11-12 08:27:58 -06:00
Alexander Gavrilov eb936c4ce0 Support milking and shearing in workflow. 2012-11-10 17:06:54 +04:00
Alexander Gavrilov ff982dcf73 Fix representation and parsing of built-in materials.
The trick is to support both FOO and FOO:NONE for all of them,
including INORGANIC[:NONE]. Otherwise the workflow gui scripts
have problems.
2012-11-07 13:31:36 +04:00
Alexander Gavrilov 3ff5d38a5c Add a few utility functions to the main library. 2012-10-30 12:40:26 +04:00
Alexander Gavrilov dc2805b1f3 Link the renderer vtable from libgraphics on linux. 2012-10-30 10:38:32 +04:00
Alexander Gavrilov b976e01b8c Follow the change in the base-type of job_skill. 2012-10-26 20:29:21 +04:00
Alexander Gavrilov a1dd31aab3 Tweak the mechanics for showing and rendering lua screens.
- Place new screens below any dismissed ones on top.
- When asked to render a dismissed lua screen, call render() on its
  parent to avoid producing a black screen frame when unlucky.
2012-10-25 12:09:39 +04:00
Alexander Gavrilov 59ec9b304e Implement adding workflow constraints from gui/workflow. 2012-10-24 21:49:30 +04:00
Quietust 27c7dfde4f ANY_FREE -> IN_PLAY, to match terminology used in DF's error messages 2012-10-23 12:14:21 -05:00
Alexander Gavrilov fbba4caab2 Suppress checking the cookable material flag if the item is a container. 2012-10-20 21:16:00 +04:00
Alexander Gavrilov 0c9f1e0af4 Check the item type against job_item_vector_id when matching to jobs.
This will prevent setting an invalid item type via the job command.
2012-10-20 21:01:22 +04:00
Alexander Gavrilov 795961bfc4 Fix the treatment of non_economic in Materials/Items modules.
non_economic == !(is boulder && is inorganic && is economic)
2012-10-20 20:31:45 +04:00
Alexander Gavrilov 2b1d856214 Add a few utility functions to the lua api. 2012-10-20 17:06:33 +04:00
Alexander Gavrilov 2d4935bc17 Add lua API functions for verifying item and material vs job_item flags. 2012-10-17 19:16:18 +04:00
Alexander Gavrilov 2865e1373a Experimental API for associating tile bitmasks with persistent data.
Use block_square_event_world_constructionst objects with the same
bogus negative id as the matching historical figure object.
2012-10-11 17:34:34 +04:00
Alexander Gavrilov 010417c812 Compute detailed focus string for the hauling menu. 2012-10-11 12:36:17 +04:00
Alexander Gavrilov 459c69046b Dissolve the World module class into a namespace.
It made accessing persistent data way too cumbersome.
2012-10-06 13:46:20 +04:00
Alexander Gavrilov 5396a67465 Some tweaking and edited NEWS. 2012-10-06 12:40:46 +04:00
Alexander Gavrilov 7440e80e6c Add an API function to retrieve interface key bindings for display. 2012-10-02 13:49:31 +04:00
Petr Mrázek 8812238bf6 Update license, add contributors file, bump release number 2012-09-30 04:03:37 +02:00
Alexander Gavrilov 62cde96724 Add a script to reclassify 'individual choice' weapons based on unit skill. 2012-09-29 17:21:49 +04:00
Alexander Gavrilov 48da06ec37 Add an API function for reading the nominal skill level. 2012-09-29 15:18:04 +04:00
Alexander Gavrilov eaddd0e646 Try shutting up a few random warnings. 2012-09-29 12:47:41 +04:00
jj 7cc29250f8 fix for updated viewlist_petst 2012-09-26 18:22:07 +02:00
Alexander Gavrilov 82dc1445cf Support the Room list in getSelectedBuilding. 2012-09-20 11:55:53 +04:00
Alexander Gavrilov c39a337223 Add unit/item/job/building getter hook vmethods to dfhack_viewscreen. 2012-09-20 11:11:20 +04:00
Alexander Gavrilov 7ce772ae0e Add an API function that returns the selected building. 2012-09-20 10:41:03 +04:00
Alexander Gavrilov d70a79deb9 Follow changes in XML defs. 2012-09-18 13:11:11 +04:00
Alexander Gavrilov 36e44c682c Add a plugin implementing 'add spatter to item' reactions. 2012-09-17 21:15:51 +04:00
Alexander Gavrilov c1e20c6f05 Follow changes to structures. 2012-09-17 12:47:18 +04:00
Alexander Gavrilov 24772f4dbc Add an api function for destroying items. 2012-09-14 18:49:02 +04:00
Quietust 1d8c9a6a5f Merge https://github.com/danaris/dfhack 2012-09-13 14:30:44 -05:00
Quietust 46321a6a01 Rename world_data.unk_204 to feature_map 2012-09-12 13:41:59 -05:00
Alexander Gavrilov f06f9af6b8 Throw items from bins around in siege engine, like minecarts do. 2012-09-12 20:57:25 +04:00
Alexander Gavrilov 7c71aeab5f Add function for making item projectiles. 2012-09-12 18:17:42 +04:00
Timothy Collett ccefd02ee3 Merge branch 'master' of git://github.com/angavrilov/dfhack 2012-09-10 11:56:23 -04:00
Timothy Collett 96abc903ab Merge branch 'master' of http://github.com/peterix/dfhack 2012-09-10 11:54:56 -04:00