526 Commits

Author SHA1 Message Date
yvt
7c3a39e639
Modernize
- Replaced raw pointers with references or smart pointers. Nullable
  references are represented by `stmp::optional<const T&>`. (There are
  many raw pointers still remaining. They should be replaced at some
  point.)
- Added class template specializations `stmp::optional<T &>` and
  `stmp::optional<const T&>`.
- Fixed `stmp::optional`'s various behaviors
- `World::{players, playerPersistents}` are now `std::array`.
- More uses of `stmp::optional` to clarify the semantics
- Renamed `PlayerThrownGrenade` to `PlayerThrewGrenade`
- Replaced old-style `for` loops with range based ones
- Deleted `Player`'s default constructors and `operator =`
- Deleted `TCGameMode`'s default constructor and `operator =`
- Deleted `CTFGameMode`'s default constructor and `operator =`
- Replaced `static_cast` with `dynamic_cast` for down-casting
- `RefCountedObject::operator*()` no longer requires non-constness to
  return `T &`.
- Replaced the uses of `std::vector::operator[]` with `std::vector::at`
  for bounds checking.
- Made some methods of `GameMap` `const`.
- Added some null checks.
2019-07-17 00:31:00 +09:00
yvt
8aa52a40fb
Add const to GameMap's methods 2019-07-16 01:17:47 +09:00
yvt
abcf65d536
Add clearsfxcache console command 2019-07-15 00:08:02 +09:00
yvt
ed508fadd5
Add IRenderer::ClearCache 2019-07-14 23:53:10 +09:00
yvt
a9561991c3
Add savemap console command 2019-07-14 22:29:15 +09:00
yvt
d6f5370581
Add the console window (WIP) 2019-07-14 01:38:28 +09:00
yvt
b02ad53109 Add View::RunFrameLate
`IRenderer::{FrameDone, Flip}` are now called in `RunFrameLate` instead.
This makes it possible to create a `View` wrapping another `View` to
insert a new 2D drawing pass, which is necessary to render the system
console.
2019-07-14 00:29:36 +09:00
yvt
cb89824f32
clang-format 2019-06-09 13:44:05 +09:00
YVT
c2677c0465
Merge pull request #832 from otzade/fix-minimap
Fix minimap
2019-06-09 13:43:05 +09:00
otzade
fabb3bd0ba Draw cursor inside block differently 2019-05-25 20:12:16 +03:00
otzade
aeeca9331e Some more changes..
Cursor made emissive, unshaded
Yellow cursor is back, but less opaque
2019-05-25 17:11:55 +03:00
otzade
a1def7e762 Merge branch 'master' into block 2019-05-25 13:19:59 +03:00
yvt
31a153e711 Add "ghost" rendering
This commit adds new model rendering options
`ModelRenderParam::{ghost, opacity}`.

> Specifies that the model is not an actual object in the virtual world, 
> thus does not affect the shading of other objects and does not appear
> in a mirror.
> ...
> In exchange, it allows the use of an opacity value other than `1`.
2019-05-25 18:56:41 +09:00
yvt
f75f55f33d
FallingBlock: Use the default material ID for generated VoxelModels 2019-05-25 15:42:51 +09:00
yvt
c910bd4846
Remove Mutex, replacing their uses with std::{mutex, recursive_mutex} 2019-05-25 15:00:32 +09:00
yvt
7524bb608c
Remove ModelRenderParam::unlit 2019-05-25 13:06:41 +09:00
yvt
2ae2288034
Documentate 2019-05-25 12:39:06 +09:00
yvt
44f5dff416
Coding style: Initialize fields using default member initializers 2019-05-25 12:30:27 +09:00
yvt
b10c943eed
Harden the model custom color check 2019-05-25 12:18:32 +09:00
yvt
4ffd817056
Add ModelRenderParam::{castShadow, unlit} 2019-05-25 12:10:51 +09:00
teodor6140
ab9521c6ff Some changes
Yellow cursor no longer visible, only shows at the ends of an !active block line
Normal block cursor is the one with the corners only
Solid frame cursor is used when making a line, the corners-only one doesn't look good on lines
2019-05-24 21:10:52 +03:00
teodor6140
843f1434e5 Make lines thinner (1/24) 2019-05-24 18:49:45 +03:00
teodor6140
2e3a433dab Use model for block cursor 2019-05-24 17:28:38 +03:00
teodor6140
88bcb0c8b9 Fix minimap
Don't draw other spectators.
Don't draw own spectator icon when following a player.
Fix this strange bug where everyone is white when spectating
2019-05-21 08:09:31 +03:00
YVT
53a7820ff8
Merge pull request #828 from NotAFile/extinfo-support
Add support for ExtInfo Packet
2019-05-20 00:23:23 +09:00
yvt
672c9b7718
Update comment style 2019-05-20 00:22:24 +09:00
yvt
6f59b7e3fd
clang-format 2019-05-20 00:18:56 +09:00
notafile
6e24902324 Remove accidental line, add comment 2019-05-19 17:07:57 +02:00
NotAFile
a3e4810a18 Add support for ExtInfo Packet 2019-05-19 16:29:22 +02:00
admiral general salam
cf3ba37b6e
Highlight own name in scoreboard 2019-05-19 17:06:53 +03:00
yvt
cf2ecb4342
Apply temporal smoothing on the progress bar 2019-05-19 17:20:50 +09:00
yvt
720be50ff4
Show additional info (estimated remaining time, etc.) when loading map 2019-05-19 17:08:09 +09:00
yvt
bb51d1fe20
Fix to build with GCC 4.9 2019-05-19 16:51:27 +09:00
yvt
cd3304ef24
Display a progress bar when receiving a map
Replaces the old useless "num-bytes-loaded/16777216" message with a
real progress bar.
2019-05-19 16:25:39 +09:00
yvt
97ed5d46ad
Fix several small issues
- `GameMapLoader` did not start the decoding thread.
- `StreamHandle::operator=` caused SEGV for null handles.
- `PipeReader` prematurely stopped outputting data.
2019-05-19 16:13:21 +09:00
yvt
1a2287201d
Add GameMapLoader 2019-05-19 15:51:40 +09:00
yvt
94dbd30bb6
Add onProgress parameter to GameMap::Load 2019-05-19 13:50:07 +09:00
yvt
80972e1661 Reimplement GameMap::Load using RandomAccessAdaptor
It no longer reads all data from the input stream in advance, allowing
streamed parsing.
2019-05-19 13:26:29 +09:00
yvt
f19469f6fe clang-format 2019-05-19 13:03:35 +09:00
yvt
ac6bc01617 Make the movement of the flashlight non-rigid
Like the one in Metro 2033. Should have no negative effect on gameplay.
2019-05-05 23:32:57 +09:00
yvt
157219eb45 Remove a redundant include 2019-05-05 23:30:24 +09:00
yvt
6f47da8710 Change the type of DynamicLightParam::spotAxis to std::array 2019-05-05 23:29:51 +09:00
NotAFile
49a4c0dd4f remove duplicate handling of VersionGet 2019-05-04 20:21:44 +02:00
NotAFile
2ecd3ced44 detect end of map transfer with state packet
Previously, the end of map transfer was detected by a number of fallible
heuristics, including checking if the map is loadable on every non-map
packet, when a timeout had been reached, or the map size given by the
server was reached. This broke in a number of scenarios, including when
an unexpected packet was sent.

Instead, we now detect the end of the map transfer when we receive a
state packet, as intended by the protocol.
2019-05-04 20:14:42 +02:00
yvt
203528a769 Add a hotkey to expand the chat log
Closes #744.
2019-01-01 14:47:40 +09:00
yvt
c7fb662f77 Remove dead code 2018-12-31 21:35:37 +09:00
yvt
2fddc13024 Eliminate compiler warnings
- Possible misuse of comma operators
- `std::move` prevents copy elision
2018-12-31 21:34:30 +09:00
Jipok
d25cf1bb91
Show shotgun tracers 2018-12-09 21:09:28 +05:00
yvt
cfb972f944 Improve code quality
- Overriding methods are clearly indicated with `override` keywords
- Remove redundant `virtual` keywords from destructors of subclasses
- Introduce `SPUnsupported()`, replacing most uses of
  `SPNotImplemented()`, which now serves as a dynamic "TODO" marker
2018-10-13 14:43:49 +09:00
yvt
30e49b68aa Implement thread-local random number generator 2018-09-18 22:18:54 +09:00