Commit Graph

68 Commits

Author SHA1 Message Date
Joonas Rikkonen a75fd12020 Started moving single player campaign logic to an abstract CampaignMode class to make it reusable in the eventual multiplayer campaign 2017-08-28 20:19:21 +03:00
Joonas Rikkonen 729108c7b9 Replaced usages of "shift" with "round" for consistency 2017-08-28 17:59:08 +03:00
Joonas Rikkonen e7f4d1474e Fixed interact rects not being calculated correctly for subinventory slots, the tooltip of a parent item isn't shown when highlighting a contained item 2017-08-27 18:10:17 +03:00
Joonas Rikkonen 79f7ce7071 Revert "Characters that are outside are rendered under particles -> creatures can be hidden by smoke from hydrothermal vents. [65211ec]"
Caused characters to be rendered behind ruins, need to come up with a better solution
2017-08-27 14:34:11 +03:00
Joonas Rikkonen 37a5888126 - More small caves in levels.
- Groups of crawlers, mantises and husks can spawn inside the caves.
- Salvage mission variants where the artifact spawns inside a cave.
- Fixed ruins being placed inside the sea floor.
- MonsterEvents don't spawn the monsters if no suitable spawn position is found.
2017-08-27 13:40:47 +03:00
Joonas Rikkonen 362428280a Multiple particle emitters can be be attached to a background sprite, hydrothermal vents push characters and subs upwards, tweaked hydrothermal smoke particles & trigger positioning 2017-08-26 17:07:13 +03:00
Joonas Rikkonen 4bdbf05875 - The range and volume of sounds emitted by StatusEffects can be changed and they can be set to loop.
- StatusEffect sounds are configured as child elements of the StatusEffect (instead of attributes).
- Background sprites can emit sounds.
2017-08-24 19:56:31 +03:00
Joonas Rikkonen 7186a8010a Fixed item pickup sounds playing during loading 2017-08-24 19:52:04 +03:00
Joonas Rikkonen c2da3a6af4 - Added "LevelTriggers", areas that apply statuseffects and/or damage to entities. Atm can only be attached to background sprites.
- Moved background sprites to the shared project.
- The debug textures of physics bodies have a maximum size of 128x128 pixels to prevent large bodies from taking up excessive amounts of memory.
- Attacks can be set to only affect humans.
2017-08-23 20:37:30 +03:00
Joonas Rikkonen 2d1c00546f Reimplemented switching to repair & monster music types (now handled by SoundPlayer) 2017-08-23 14:42:24 +03:00
Joonas Rikkonen 6cf0f966aa Refactored event/task logic:
- Instead of configuring a commonness value and difficulty for an event and creating new random events until the maximum difficulty of the selected level is reached, the number of events per level can be configured directly (and overridden for specific level types).
- Removed task logic. The initial idea was to display the unfinished tasks to the player somehow and to use them as objectives for the AI crew, but those were scrapped and the tasks only ended up controlling which type of music to play. TODO: implement some kind of logic to determine when to play repair/monster music clips.
2017-08-22 21:12:06 +03:00
Joonas Rikkonen 65211ecbb6 Characters that are outside are rendered under particles -> creatures can be hidden by smoke from hydrothermal vents. 2017-08-22 19:06:29 +03:00
Joonas Rikkonen 15a31c5291 - The commonness of scripted events can be overridden for specific level types (e.g. some monsters can be set to spawn more frequently in specific types of levels).
- The sub can be moved from location to another in the map view by double clicking in debug builds.
- Level wall color can be changed in level generation parameters.
- Fixed level geometry not being rendered if the ocean floor is visible (which isn't a problem in most level types, but there can be levels where the ocean floor is so close to the actual level that they can both be visible at the same time).
- Background sprite scale is taken into account when calculating particle emitter positions.
- Fixed limb lights being rendered even if the character is disabled.
2017-08-22 19:04:49 +03:00
Joonas Rikkonen d772049cc0 Particle fixes, background sprites can emit particles if the camera is within the area where the particles are visible 2017-08-22 15:41:23 +03:00
Joonas Rikkonen cc40970b58 Separate ParticleEmitter & ParticleEmitterPrefab classes - the emission timer (and maybe some other values in the future) can't be in the prefab class because multiple objects may use the same prefab. 2017-08-20 22:05:30 +03:00
Joonas Rikkonen 04834f9f7f Background sprites can be set to spawn on the sea floor, particle emitters can be attached to background sprites 2017-08-20 19:07:07 +03:00
Joonas Rikkonen 4a460ff150 - The emission rate of ParticleEmitters can be set as particles per second (instead of particles per frame).
- Particles that are outside the sub aren't visible inside hulls even if they overlap with the sub.
- ParticleManager takes the movement of the particles into account when determining which particles to cull. For example, a particle that will move upwards can be emitted even if it's below the camera view.
2017-08-20 19:05:25 +03:00
Joonas Rikkonen 3c0f099448 Entities can be nudged with the arrow keys in the sub editor 2017-08-20 13:20:52 +03:00
Joonas Rikkonen a6689b894d Map generation tweaking: some biomes are placed at the center of the map, some at the center and some randomly. 2017-08-20 13:20:23 +03:00
Joonas Rikkonen 8e71b4b828 Ocean floor is visible on sonar 2017-08-16 19:09:51 +03:00
Joonas Rikkonen 52a52cdfc7 Level biomes (basically a way of categorizing level generation parameters). The single player map is now divided into biomes, meaning that specific types of levels are generated at different areas of the map.
TODO: more variety between biomes, assign the map biomes in a less random way (e.g. splotches of easier biomes connected by more dangerous ones, very dangerous biomes at the edges of the map...), option to select the biome in MP?
2017-08-15 22:43:58 +03:00
Joonas Rikkonen 9c372137bd Added randomly generated ocean floors. Atm the bottom is too deep to reach in most levels and there's not much to explore down there, but the plan is to have some levels where the bottom or some of the bottom formations are reachable (because we need hydrothermal vents!).
Ice walls also use vertex colors now, could be used to add some cosmetic variety to the levels.
2017-08-15 19:20:21 +03:00
Joonas Rikkonen 8691789974 ScalableFont uses a non-obsolete override of the SpriteBatch.Draw method, + minor optimization 2017-08-13 20:01:00 +03:00
Joonas Rikkonen c7a357d84c Fix for exceptions when a human is targeting a removed entity while debugdraw is enabled, accessing AITarget position properties after the target has been destroyed doesn't throw an exception (but does log an error in debug builds). 2017-08-13 20:00:52 +03:00
Joonas Rikkonen 4d40f5d483 Submarines, items and characters that reach a depth of 300,000 units (~4000 m) are automatically disabled. Avoids the unnecessary cost of updating entities that are way too deep to be reached by anyone. 2017-08-13 20:00:18 +03:00
Joonas Rikkonen 98b4b904d4 Inventory slots are highlighted if the cursor is within 5 pixels of the rect. The spacing between inventory slots is 10 px, so now items can't be accidentally dropped by releasing the cursor between slots. 2017-08-11 17:49:43 +03:00
Joonas Rikkonen 75a4d641bf Medical scanner shows husk infections 2017-08-10 20:30:48 +03:00
Joonas Rikkonen f40d244deb Moved inventory UI update logic to the client project, sound effects for picking up and dropping items 2017-08-10 20:30:29 +03:00
Joonas Rikkonen fd844fd696 Option to make wearable sprites use the depth of the sprite instead of using the depth of the limb it's attached to 2017-08-10 18:19:06 +03:00
Joonas Rikkonen a86a10b177 Fixed the spamchatmessages debug command 2017-08-03 19:29:53 +03:00
Joonas Rikkonen 6e95bbb524 Server log remembers the state of the filters and applies the filter when opened 2017-08-02 17:50:34 +03:00
Joonas Rikkonen 1bc2523269 Added some GPU info to the crash reports, all available debug console messages are included in the reports (not just the 15 latest ones), restart attempts caused by SharpDXExceptions are logged 2017-07-31 20:49:01 +03:00
Joonas Rikkonen 9e3f4bfa5a Syncing crouching from server to clients, not just from clients to server 2017-07-28 19:01:47 +03:00
Joonas Rikkonen 602b99c9fb Fixed hulls not being rendered in the sub editor 2017-07-28 17:26:56 +03:00
Joonas Rikkonen 3c04d2c479 Using SetClientCharacter forces the client's line of sight effect back on 2017-07-27 18:03:29 +03:00
Joonas Rikkonen 61b90464dd Playing whack-a-mole with the interaction logic again:
- Fixed server keeping clients focused on entities until they report focusing on something else. This allowed clients to interact with the entity they previously focused on, even if they weren't anywhere near anymore.
- Checking if clients are allowed to focus on an entity before letting them do so (!!!).
- Server doesn't highlight entities when a client focuses on them.
- Characters can interact with a wire if they've selected either of the items it's connected to.
2017-07-26 21:03:21 +03:00
Joonas Rikkonen a627f25c95 Fixed missing kick/ban buttons in the crew menu 2017-07-26 17:49:55 +03:00
Joonas Rikkonen 286c1ad950 Fixed crashing when a client clears connections of a wire (because the logging attempted to access Character.Controlled instead of the client's character), fixed the (completely broken) ConnectionPanel.ServerRead 2017-07-25 21:27:22 +03:00
Joonas Rikkonen f460b4c2bc Fixed queued debug messages not being included in crash reports 2017-07-25 18:02:04 +03:00
Joonas Rikkonen aaea8bc709 Dedicated servers can use autorestart 2017-07-24 21:21:00 +03:00
Joonas Rikkonen bf7677154b Disabled debug logging of the loading coroutine when verbose logging isn't enabled 2017-07-23 20:11:55 +03:00
Joonas Rikkonen 49003c465c Aiming syncing fix: aiming angle is calculated from the position of the shoulder towards the cursor (or a position within the collider that's roughly at the shoulder). 2017-07-18 18:33:30 +03:00
Joonas Rikkonen 575b643c62 Added "user" parameter to Inventory.PutItem and Inventory.TryPutItem. + More descriptive wiring logging: the logs don't list all the wires in a connectionpanel but only the changes a player does to the wiring. Disconnecting wires by picking them up and wiring done by the host are also logged now. 2017-07-17 23:27:31 +03:00
Joonas Rikkonen d5aa1d8b97 Selecting an item with no ItemContainer component doesn't prevent equipping/unequipping items by double clicking, added missing "gamescreen" console command 2017-07-13 23:33:53 +03:00
Joonas Rikkonen 1ebc923064 Fixed seeing through walls when under a sub 2017-07-11 23:41:47 +03:00
Joonas Rikkonen 935b1ff837 Console fixes, logging launched turret projectile and the items contained inside it 2017-07-11 19:29:41 +03:00
Joonas Rikkonen 6ad5dd6c1e DebugConsole refactoring : available console commands are stored in a list of "Command" objects which contain the name, help text and the action that's invoked when the command is entered. Commands can also now be autocompleted in the client project by pressing tab (TODO: implement in the server project). + Now it should be easier to implement giving clients the permission to use specific console commands. 2017-07-10 21:10:54 +03:00
Joonas Rikkonen 630a079679 "MessageBox" chatmessage type. Not used in the vanilla game (yet), but custom servers can use it to display custom message boxes at the clients' end. Closes #17 2017-07-09 23:25:41 +03:00
Joonas Rikkonen f2d603d2f0 Fixed issue #15 (sub/shuttle lists being empty at the client's side after joining a server). The clients would ignore the initial update message if they happened to receive one of the normal update messages before the initial one. 2017-07-09 20:19:53 +03:00
Joonas Rikkonen bd4c7d68d0 Fixed endless messagebox spam when the controlled character turns into a husk, fixed an index our of range exception when merging firesources 2017-07-09 16:17:44 +03:00