167 Commits

Author SHA1 Message Date
Jens Ayton
a3cd6cf6ca Stuff from r1565-r1566, now with not doing the svn in src/.
git-svn-id: http://svn.berlios.de/svnroot/repos/oolite-linux/trunk@1567 127b21dd-08f5-0310-b4b7-95ae10353056
2008-04-20 15:02:38 +00:00
Jens Ayton
d9a7e5e585 Adaptive collision octree depth selection; preload sounds from customsounds.plist to avoid stutter.
git-svn-id: http://svn.berlios.de/svnroot/repos/oolite-linux/trunk@1508 127b21dd-08f5-0310-b4b7-95ae10353056
2008-03-24 16:52:30 +00:00
Jens Ayton
f67b87aa0d Ahruman's dazzling distraction attack strikes again. All beep, boop and click sounds now go through customsounds.plist. Setting the player's target through JS now works more or less as expected (locks on ident, with UI feedback, unless a missile is selected in which case current missile is locked on to the new target). Custom sound tags can now expand to other custom sound tags (with recursion checking), and final results are cached. No actual progress on the nova script I thought I was working on.
git-svn-id: http://svn.berlios.de/svnroot/repos/oolite-linux/trunk@1477 127b21dd-08f5-0310-b4b7-95ae10353056
2008-03-11 19:49:46 +00:00
Jens Ayton
627e5a9b57 shipWillLaunchFromStation() is once e again called for the player. Ejected items and debris are now spawned with 85% of the parent's cabin temperature. Incompatible OXP message is now loaded from descriptions.plist, but only the internal descriptions.plist; listing incompatible OXPs and generating the messages later would be a better approach.
git-svn-id: http://svn.berlios.de/svnroot/repos/oolite-linux/trunk@1476 127b21dd-08f5-0310-b4b7-95ae10353056
2008-03-11 08:25:42 +00:00
Jens Ayton
5f09cc936a Fixed a bug where subentity relationships would be messed up by -becomeLargeExplosion (currently only used for the player). Better diagnostics for bad AIs.
git-svn-id: http://svn.berlios.de/svnroot/repos/oolite-linux/trunk@1458 127b21dd-08f5-0310-b4b7-95ae10353056
2008-03-05 23:45:09 +00:00
Jens Ayton
3671b45b17 Silenced sky setup messages; stopped making player-fired missiles dump AI debug messages; collection-extracty cleanup.
git-svn-id: http://svn.berlios.de/svnroot/repos/oolite-linux/trunk@1452 127b21dd-08f5-0310-b4b7-95ae10353056
2008-03-03 22:43:18 +00:00
Jens Ayton
84412f33cc Added safeScriptActionOnTarget:, removed some unused code, fixed copy&paste error in sky setup, added sanity check to ensure the main station is in fact a station.
git-svn-id: http://svn.berlios.de/svnroot/repos/oolite-linux/trunk@1450 127b21dd-08f5-0310-b4b7-95ae10353056
2008-03-03 20:41:08 +00:00
Jens Ayton
959dc99d88 Added big fat deprecation warning for scriptActionOnTarget:. Added skanky code to avoid running world scripts more than once with certain player states (such as STATUS_EXITING_WITCHSPACE).
git-svn-id: http://svn.berlios.de/svnroot/repos/oolite-linux/trunk@1445 127b21dd-08f5-0310-b4b7-95ae10353056
2008-03-02 18:56:24 +00:00
Jens Ayton
9fb7456e20 (Woops, thought I did this last night.) Implemented stack for temporary local variables for non-world legacy scripts. (Previous approach was quite thoroughly broken, as it didn't allow reentrancy and broke locals for world scripts.) Moved -descriptionComponents and such into new OOCocoa.m, and added -shortDescription.
git-svn-id: http://svn.berlios.de/svnroot/repos/oolite-linux/trunk@1433 127b21dd-08f5-0310-b4b7-95ae10353056
2008-02-29 15:48:00 +00:00
Jens Ayton
fe22632e96 More of the same bug fix to prefix script. Added JS systemNameForID() and systemIDForName() methods.
git-svn-id: http://svn.berlios.de/svnroot/repos/oolite-linux/trunk@1426 127b21dd-08f5-0310-b4b7-95ae10353056
2008-02-26 18:07:17 +00:00
Jens Ayton
cc056a6a75 Legacy foo_actions can now have local variables, which are cleared when the _actions completes. Marked DebugConsole.py executable for unices. Fixed bugs in vector randomization code, and added a third randomizer which provides an even distribution of lengths (but uneven distribution in space).
git-svn-id: http://svn.berlios.de/svnroot/repos/oolite-linux/trunk@1420 127b21dd-08f5-0310-b4b7-95ae10353056
2008-02-25 16:22:15 +00:00
Jens Ayton
8a940f724c Mission choices are now sorted. Converted missiontext.plist to OpenStep syntax, and hotted it up with proper quotation marks and apostrophes. Changed magic numbers in -checkForAegis from integer to float literals. Hid entity.linkedList.verify.error message by default.
git-svn-id: http://svn.berlios.de/svnroot/repos/oolite-linux/trunk@1402 127b21dd-08f5-0310-b4b7-95ae10353056
2008-02-22 15:26:40 +00:00
Jens Ayton
4546eb0baa Fix for OXP verifier turning of log message classes. Exterminated all uses of NSLog that turn up in Mac builds.
git-svn-id: http://svn.berlios.de/svnroot/repos/oolite-linux/trunk@1257 127b21dd-08f5-0310-b4b7-95ae10353056
2007-12-03 17:53:37 +00:00
Jens Ayton
3fbc24887d * All ships now have a JavaScript script attached, allowing JS scripts to
add behaviours to any ship.
* Legacy script_actions, setup_actions, launch_actions and death_actions
  handled through default JavaScript script.
* In order to implement the above, JS Ship now has a runLegacyScriptActions
  method. This is not to be exposed as an "official" method, though, since
  we might want to change the mechanism -- for instance, to "compile"
  legacy scripts into JS. Handling dynamically-generated legacy scripts in
  that case would be a significant complication.
* Updates for Mac OS X 10.5 "Leopard".
  - Errors on reading/writing plist will not cause a crash if building
    against the Leopard SDK. (I have no intention of requiring Leopard any
    time soon, but future-proofing is good.)
  - OOWeakReference is now more efficient when running under Leopard, by
    implementing the new "fast forwarding" mechanism.
  - Threads now have names set under Leopard, which may provide debugging
    advantages.
  - Fixed some new build warnings for new version of apple-gcc.
  - Updated type declarations to identify Oolite saved games as property
    lists.
* Cleaned up PlayerEntityControls.m somewhat. Moved method declarations
  into files, fixed indentation, broke up monster giant method of doom.
* Script-generated asteroids now behave like system populator-generated
  asteroids (As Seen on BB[TM]).
* Minor optimizations and simplifications of legacy script engine.
* JS System.filteredEntities() now has sensible behaviour if predicate
  throws an exception: the predicate is not called again, and null is
  returned. The exception is reported and not rethrown.


git-svn-id: http://svn.berlios.de/svnroot/repos/oolite-linux/trunk@1240 127b21dd-08f5-0310-b4b7-95ae10353056
2007-11-23 15:04:14 +00:00
Jens Ayton
4a776c4193 Implemented recursion limiter in AI method reactToMessage: in response to SCR crash report.
git-svn-id: http://svn.berlios.de/svnroot/repos/oolite-linux/trunk@1236 127b21dd-08f5-0310-b4b7-95ae10353056
2007-11-19 18:34:28 +00:00
Nikos Barkas
39f1fd30fb Bypass two harmless, log cluttering OpenGL error reports, at the same time gaining on performance, by setting rendering.opengl.error to no in logcontrol.plist.
git-svn-id: http://svn.berlios.de/svnroot/repos/oolite-linux/trunk@1235 127b21dd-08f5-0310-b4b7-95ae10353056
2007-11-17 21:34:05 +00:00
Jens Ayton
9d9128bcb1 * Got Game Options submenu working under OS X.
* Save reduced detail, wireframe and shader settings in preferences.
* Implemented variable shader complexity support.
Added default shader, used for all otherwise-unshaded ships with full shaders on, and for smooth ships or ships with effect maps specified in material dictionary with simple shaders.
* All ships now drawn with slight specular highlight by default (shininess = 10, intensity = 0.2) except in reduced detail mode.
* (JS) Made Ship.shipDescription read-write (except for the player).
* (JS) Added global function ExpandDescription(string : String), to perform substitutions like %H, [commander_name] and so forth. 
* (JS) Added global function RandomName(), intended to be like %R substitution. In so doing, I discovered that %R is broken, but left it as-is so it will generate the same name for existing descriptions. Added %X to do the same thing, but without the bugs. RandomName() is different from either in that it doesn't use the "predictable" PRNG, so it will provide a new name each time. To use the "predictable" variant in JavaScript, use ExpandDescription("%X"). 
* Ships that hyperspace out are no longer replenished in interstellar space.

git-svn-id: http://svn.berlios.de/svnroot/repos/oolite-linux/trunk@1228 127b21dd-08f5-0310-b4b7-95ae10353056
2007-10-22 12:18:18 +00:00
Jens Ayton
122102af4f Cleanup; merged some very similar methods; made most HUD parameter reading use OOCollectionExtractors; made most of Universe use OOCollectionExtractors; added some schemata; moved schemata to separate folder. GNUmakefile.postamble has been updated to copy this folder into Resources/, but note that it isn't needed in final builds.
git-svn-id: http://svn.berlios.de/svnroot/repos/oolite-linux/trunk@1112 127b21dd-08f5-0310-b4b7-95ae10353056
2007-07-29 14:17:30 +00:00
Jens Ayton
8898364de2 OXP verifier: architectural changes, added design note, generate Graphviz file instead of text dump to debug dependency graph.
git-svn-id: http://svn.berlios.de/svnroot/repos/oolite-linux/trunk@1099 127b21dd-08f5-0310-b4b7-95ae10353056
2007-07-20 16:29:40 +00:00
Jens Ayton
675f2918e5 OXP verifier now checks requires.plist; added infrastructure to handle plists in verifier and fixed dependency management.
git-svn-id: http://svn.berlios.de/svnroot/repos/oolite-linux/trunk@1095 127b21dd-08f5-0310-b4b7-95ae10353056
2007-07-19 10:44:52 +00:00
Jens Ayton
7780ef63bb OXP verifier can now identify bad case in standard folder names and config file names. Infrastructure is in place for general case mismatch detection. Fixed Windows build warnings reported by Sotho Tal Ker in forum.
git-svn-id: http://svn.berlios.de/svnroot/repos/oolite-linux/trunk@1094 127b21dd-08f5-0310-b4b7-95ae10353056
2007-07-18 23:53:51 +00:00
Jens Ayton
a3cee138b8 Bumped version number to 1.69.2. Removed support for deprecated shader features. Added caching of GL texture names to avoid expensive glGenTextures()/glDeleteTextures() call. Set texture cache size to something sensible (50 at the moment), but textures are being leaked. Fixed loss-of-precision bug in OOCollectionExtractors' double methods. Added collection extractor methods for vectors, quaternions, and non-negative floats/doubles. Switched on -Werror for OS X build.
git-svn-id: http://svn.berlios.de/svnroot/repos/oolite-linux/trunk@1088 127b21dd-08f5-0310-b4b7-95ae10353056
2007-07-17 10:42:36 +00:00
Jens Ayton
8a85b1a657 Fixed crash when shooting off frangible subentities. Added notequal operator for legacy scripts. Removed unused enumerant GUI_SCREEN_INVENTORY. Added logging-echo-to-stderr option (OS X only) and changed default for logging-show-app-name to NO on OS X (was already NO for other platforms). Scripts no longer run when paused and on a menu screen.
git-svn-id: http://svn.berlios.de/svnroot/repos/oolite-linux/trunk@1068 127b21dd-08f5-0310-b4b7-95ae10353056
2007-07-08 22:47:30 +00:00
Jens Ayton
b3b04859ab Enabled more warning flags (-Wextra -Wno-unused-parameter -Wno-missing-field-initializers) in OS X build, and fixed several hundred resulting warnings (mostly by using more appropriate types). Bumped version number to 1.69.1. Fixed unable-to-buy-in-shipyard bug. Attempt to fix dockEscorts crash bugs (needs testing). Sundry cleanup, especially of AI and GuiDisplayGen; all exception throws now in standard form. Removed some dead code. Use correct key for Advanced Nav Array if no keyconfig.plist found. Changed OOCollectionExtractors to always clamp integer values to the requested type's range rather than truncating like NSNumber. Removed inconsistently-used and apparently-unneeded NSLock from AI.
git-svn-id: http://svn.berlios.de/svnroot/repos/oolite-linux/trunk@1063 127b21dd-08f5-0310-b4b7-95ae10353056
2007-07-07 15:44:50 +00:00
Jens Ayton
71d7a25468 Removed debug code from OOSkyDrawable, and made it use OOMacroOpenGL. Added code to help catch occasional drawing glitch with sun. Disabled pruning of on-disk cache completely; as we now clear the cache when OXP search paths change, its size is bounded by the total size of installed OXPs.
git-svn-id: http://svn.berlios.de/svnroot/repos/oolite-linux/trunk@1032 127b21dd-08f5-0310-b4b7-95ae10353056
2007-06-16 18:01:41 +00:00
Jens Ayton
9a450d5f10 Cleaned up GameController, putting most platform-specific stuff in two major blocks. Mac-specific: Help window contents now loaded from (copy of) ReadMe.rtfd to ensure it's up-to-date; added log message format prefs window to Debug menu.
git-svn-id: http://svn.berlios.de/svnroot/repos/oolite-linux/trunk@1014 127b21dd-08f5-0310-b4b7-95ae10353056
2007-06-09 10:38:16 +00:00
Jens Ayton
f746a728e6 Unbroke last revision.
git-svn-id: http://svn.berlios.de/svnroot/repos/oolite-linux/trunk@1004 127b21dd-08f5-0310-b4b7-95ae10353056
2007-06-06 09:12:35 +00:00
Jens Ayton
5572ddab50 Cache path should now be created properly under GNUstep, and XML should be used for cache (should change to GNUstep binary format once bugs are resolved). Added lots of debug messages to cache.
git-svn-id: http://svn.berlios.de/svnroot/repos/oolite-linux/trunk@995 127b21dd-08f5-0310-b4b7-95ae10353056
2007-06-03 09:32:06 +00:00
Jens Ayton
0382795518 Added support for flushing data cache by holding down shift at startup (needs testing under SDL!). Also, a question mark is now shown as a placeholder model on the Load screen if a saved game uses an unknown ship class.
git-svn-id: http://svn.berlios.de/svnroot/repos/oolite-linux/trunk@994 127b21dd-08f5-0310-b4b7-95ae10353056
2007-06-02 20:58:41 +00:00
Jens Ayton
28855f728e Non-sucky fix for problem plists, hopefully.
git-svn-id: http://svn.berlios.de/svnroot/repos/oolite-linux/trunk@989 127b21dd-08f5-0310-b4b7-95ae10353056
2007-05-24 10:01:41 +00:00
Jens Ayton
8ed1b9af6e Fiddled with Mac debug menu (added in previous commit).
git-svn-id: http://svn.berlios.de/svnroot/repos/oolite-linux/trunk@985 127b21dd-08f5-0310-b4b7-95ae10353056
2007-05-23 14:24:12 +00:00
Jens Ayton
786e73fcbb Work on reimplementing texture reloading -- works for shipentities and text, not sky and particles.
git-svn-id: http://svn.berlios.de/svnroot/repos/oolite-linux/trunk@984 127b21dd-08f5-0310-b4b7-95ae10353056
2007-05-23 13:12:13 +00:00
Jens Ayton
17e40ba6c7 Lots of fiddling around, most of it reverted. Meh. New shinier (and simpler) sky.
git-svn-id: http://svn.berlios.de/svnroot/repos/oolite-linux/trunk@968 127b21dd-08f5-0310-b4b7-95ae10353056
2007-05-19 15:09:05 +00:00
Jens Ayton
076bf6c4fa Lots of stuff I've been working on over the last few weeks - mainly moving ShipEntity rendering into new class (OOMesh); also work on robustness of plist handling and stuff. Texture caching management is currently buggy.
git-svn-id: http://svn.berlios.de/svnroot/repos/oolite-linux/trunk@954 127b21dd-08f5-0310-b4b7-95ae10353056
2007-05-08 15:24:13 +00:00
Jens Ayton
0481b90f2a Changed synchronization mechanism used by async texture loader, because the old one didn't work on Windows. Relabelled all the files that are entirely by me as dual-licensed under GPL+MIT/X11 license. Work on OOMesh stuff, although it doesn't actually do anything useful yet. Probably other stuff done while BerliOS was down.
git-svn-id: http://svn.berlios.de/svnroot/repos/oolite-linux/trunk@944 127b21dd-08f5-0310-b4b7-95ae10353056
2007-04-23 22:21:38 +00:00
Jens Ayton
bdbe1b72ff New texture code (for models with shaders only). Somewhat buggy (notably, player ship is untextured after dying and respawning) but seems stable. Also removed a spurious assert from sound code.
git-svn-id: http://svn.berlios.de/svnroot/repos/oolite-linux/trunk@929 127b21dd-08f5-0310-b4b7-95ae10353056
2007-04-14 00:07:32 +00:00
Jens Ayton
9ead245895 Fixed code using for (i = 0; i != [[foo allKeys] count]; i++) antipattern. Cleanup of player saving: uses proper way of getting an XML property list (which is cross-platform), better error messages, less code duplication. Added Edit menu to OS X version, for use in dialog boxes. Bits of new texture model, but they're not used yet.
git-svn-id: http://svn.berlios.de/svnroot/repos/oolite-linux/trunk@925 127b21dd-08f5-0310-b4b7-95ae10353056
2007-04-13 10:38:08 +00:00
Jens Ayton
73aafb43e1 Rewrite of shader code.
git-svn-id: http://svn.berlios.de/svnroot/repos/oolite-linux/trunk@923 127b21dd-08f5-0310-b4b7-95ae10353056
2007-04-11 20:29:30 +00:00
Jens Ayton
a86bb97788 Subentities now share properties with parent for purposes of shaders.
git-svn-id: http://svn.berlios.de/svnroot/repos/oolite-linux/trunk@913 127b21dd-08f5-0310-b4b7-95ae10353056
2007-04-07 20:49:06 +00:00
Jens Ayton
ca593a0a1e Error reporting for JS Vector and Entity methods.
git-svn-id: http://svn.berlios.de/svnroot/repos/oolite-linux/trunk@911 127b21dd-08f5-0310-b4b7-95ae10353056
2007-04-06 17:35:42 +00:00
Jens Ayton
a2f6fea6a3 Removed a spurious error message. Removed debugOn/debugOff pairs from shipdata.plist and PlayerEntity.m.
git-svn-id: http://svn.berlios.de/svnroot/repos/oolite-linux/trunk@900 127b21dd-08f5-0310-b4b7-95ae10353056
2007-04-03 18:43:53 +00:00
Jens Ayton
8a55bc63a2 Xcode project tweak. Moved script out into Scripts folder (preparation for JavaScript translations).
git-svn-id: http://svn.berlios.de/svnroot/repos/oolite-linux/trunk@898 127b21dd-08f5-0310-b4b7-95ae10353056
2007-04-03 17:37:40 +00:00
Jens Ayton
d327cb7b38 Fiddled with JavaScript loading and error reporting: unicode savvy, should load on all platforms.
git-svn-id: http://svn.berlios.de/svnroot/repos/oolite-linux/trunk@891 127b21dd-08f5-0310-b4b7-95ae10353056
2007-04-02 19:59:43 +00:00
Jens Ayton
7db1aebda6 Added some missingg JS methods; added systemEconomy_string; implemented willLaunch() event.
git-svn-id: http://svn.berlios.de/svnroot/repos/oolite-linux/trunk@887 127b21dd-08f5-0310-b4b7-95ae10353056
2007-04-01 16:56:17 +00:00
Jens Ayton
3fe9c74267 Lots of changes, mostly JavaScript-related. Bumped version number to 1.68.
git-svn-id: http://svn.berlios.de/svnroot/repos/oolite-linux/trunk@877 127b21dd-08f5-0310-b4b7-95ae10353056
2007-04-01 11:26:35 +00:00
Jens Ayton
6345c35592 This week's monster submit:
* Changed required.plist version parsing to treat version strings as series of integers separated by points. This allows:
  - correct parsing of bug-fix versions like 1.67.1
  - correctly sorting 1.100 after 1.99.
* Deleted just about all commented-out NSLog()s (several hundred), and some other commented-out code. (commented-out or #ifdefed-out code with no indication of when you might want to reinstate it is worse than useless.)
* Ensured that most NSLog()s will at least include their class/module in their message class.
* Renamed Universe's -recycledOrNew:, -getShipWithRole: and -getShip: to -allocRecycledOrNewEntity:, -newShipWithRole: and -newShipWithName: to better match Objective-C coding conventions. (Methods whose result needs releasing should always be called alloc*, copy*, retain* or new*.)
* Replaced -[Universe generateSystemDescription] with DescriptionForSystem().
* Replaced -[Universe getRandomDigrams] with RandomDigrams().
* Replaced +[Universe systemSeedString] with StringFromRandomSeed().
* Replaced [Universe entityZero] with [PlayerEntity sharedPlayer].
* Replaced scriptedUniverse in ScriptEngine with [Universe sharedUniverse].
* Removed HAVE_SOUND. If you're porting to a platform without sound, use a no-op implementation of OOSound.
* Removed all (commented-out) NSBeep()s.
* Made settings caching in OOLog actually work. Doing complete message class setting resolution every time OOLog() was called was around 2% of our per-frame cost. (With this fixed, cache hit rate is well over 99% after a few seconds of play.) *headdesk*  (It may also be worth moving the settings-check into the macro, to avoid evaluating parameters for log messages that are never seen, but this might cause obscure bugs due to the parameters having side effects.)

Stuff that should have been in revision 859:
* Replaced all occurrences of -[Universe expandDescription:forSystem:]  with ExpandDescriptionForSeed() and ExpandDescriptionForCurrentSystem().
* Replaced  -[Universe expandDescriptionWithLocals:forSystem:withLocalVariables:] with ExpandDescriptionsWithLocalsForSystemSeed() and ExpandDescriptionsWithLocalsForCurrentSystem().


git-svn-id: http://svn.berlios.de/svnroot/repos/oolite-linux/trunk@872 127b21dd-08f5-0310-b4b7-95ae10353056
2007-03-26 01:24:50 +00:00
Jens Ayton
b30d3692cf Support loading of shaders from external file. New uniform variable, hull_heat_level. Fixed leak when shader loading fails.
git-svn-id: http://svn.berlios.de/svnroot/repos/oolite-linux/trunk@867 127b21dd-08f5-0310-b4b7-95ae10353056
2007-03-22 20:33:04 +00:00
Jens Ayton
93374ac533 Resurrected homebrew XML parser (now in OOPListParsing.m rather than ResourceManager.m).
git-svn-id: http://svn.berlios.de/svnroot/repos/oolite-linux/trunk@863 127b21dd-08f5-0310-b4b7-95ae10353056
2007-03-21 11:40:43 +00:00
Jens Ayton
d2914c3afb Moved property list reading (with error checking) into OOPListParsing.h/m. Build without warnings under Windows.
git-svn-id: http://svn.berlios.de/svnroot/repos/oolite-linux/trunk@862 127b21dd-08f5-0310-b4b7-95ae10353056
2007-03-20 17:12:39 +00:00
Jens Ayton
eda894e7dc Possibly fixed mouse control bug under OS X. Or not.
git-svn-id: http://svn.berlios.de/svnroot/repos/oolite-linux/trunk@849 127b21dd-08f5-0310-b4b7-95ae10353056
2007-03-11 13:09:28 +00:00