ZZYZX
463620c3b8
ClearScope is not needed for methods either. Disabled, but not removed - reenable if needed later
2017-02-18 07:33:27 +02:00
ZZYZX
d7f5d8a403
ClearScope for fields essentially means 'world-writable'. We don't want to support that - disallowed
2017-02-18 07:31:07 +02:00
ZZYZX
dbc595f886
Marked DrawPowerup as ui, still compiles and somewhat works :D
2017-02-18 07:30:20 +02:00
ZZYZX
afc9050a43
Marked Thinker play. Marked OnDestroy and Destroy virtualscope. It compiles :D
2017-02-18 06:56:00 +02:00
ZZYZX
e0ae0fdb2e
Dynamic virtualscope checking. May yet be buggy.
2017-02-18 06:27:28 +02:00
ZZYZX
b5ab011bb9
Static virtualscope checking. This is possible, because virtualscope can't produce false positives (data readable for everyone), only false negatives (which are handled at runtime later)
2017-02-18 04:07:12 +02:00
ZZYZX
12aa18a92b
Preparing to do class-based method scopes: can't change class scope once defined (play stays play, ui stays ui)
2017-02-18 00:39:57 +02:00
ZZYZX
014db18f2a
Fixed some things around
2017-02-17 23:36:16 +02:00
ZZYZX
3056570ea9
Implemented a call check between ui/play/data
2017-02-17 23:02:43 +02:00
ZZYZX
a2f3d8511d
Implemented a read check between ui/play/data fields with a meaningful error
2017-02-17 22:46:18 +02:00
ZZYZX
a7a4406bb1
Supposedly implemented a write check between ui/play/data
2017-02-17 22:41:04 +02:00
ZZYZX
8b0dee6f66
My am dumb: PStruct is a base for PClass
2017-02-17 22:00:47 +02:00
ZZYZX
ecd4f5a32d
Removed supposedly debug value added in commit b0f3121bec
2017-02-17 20:25:11 +02:00
ZZYZX
496b2a74ce
Disallow const qualifier for classes
2017-02-17 20:04:40 +02:00
ZZYZX
195ae24dcb
const method cannot write to self
2017-02-17 19:54:59 +02:00
ZZYZX
338e676e73
Allow calling const methods on readonly structs
2017-02-17 19:25:29 +02:00
ZZYZX
0f031c5f22
Renamed 'allowui' to 'clearscope'. 'allowui' doesn't reflect the real meaning of the keyword which clears implicit 'play' or 'ui' inherited from parent class (for classes) or owning type (for methods/fields)
2017-02-17 18:24:01 +02:00
ZZYZX
2b20abff02
Fixed consistency of checks
2017-02-17 18:01:39 +02:00
ZZYZX
4fe9c7d8c8
Added parsing of ui, play, allowui and const qualifiers
2017-02-17 17:58:16 +02:00
ZZYZX
5e5d0d3e57
Using separate keyword 'nonew' as reverse abstract; nonew is inherited, and nonew class can only be created from the first nonew class in the hierarchy
2017-02-16 12:40:09 +02:00
ZZYZX
0803faf596
Compile time check for abstract class instantiation to reduce programming errors ASAP
2017-02-16 04:22:14 +02:00
ZZYZX
0819dd8d89
Actually pass PFunction to OP_NEW
2017-02-16 04:14:21 +02:00
ZZYZX
7d3663500f
Disallow creation of abstract classes outside of their own class (this is so that modders can create their own factory methods, not just for native)
2017-02-16 03:49:03 +02:00
ZZYZX
363990a105
Class abstractness should be inherited
2017-02-16 02:31:20 +02:00
ZZYZX
3577e4eddc
Fixed possible nullptr dereferencing on c->Type() == nullptr
2017-02-16 02:14:49 +02:00
Christoph Oelckers
c01289e999
- added ZScript property handling for names, sounds and colors.
2017-02-14 23:28:49 +01:00
Christoph Oelckers
2234d36c7a
Merge branch 'thereisnospoon' of https://github.com/jewalky/gzdoom
...
# Conflicts:
# src/dobject.h
2017-02-14 19:10:02 +01:00
Christoph Oelckers
1a63450fe2
- fixed a few issues with actor bouncing logic.
2017-02-13 22:00:27 +01:00
Christoph Oelckers
89ef30166d
- fixed assembly output for SO instruction.
2017-02-13 00:25:39 +01:00
Christoph Oelckers
7d96f85fe8
Merge remote-tracking branch 'remotes/origin/master'
2017-02-12 21:57:46 +01:00
Christoph Oelckers
b6ad14a614
- made adjustments to text input menu to work with scripts.
2017-02-12 21:45:37 +01:00
Christoph Oelckers
f0e925c5a7
- scripted color picker fully working.
2017-02-12 20:20:47 +01:00
Christoph Oelckers
dbf3530696
- the keybinding control works again, this time fully scripted.
2017-02-12 18:38:23 +01:00
Christoph Oelckers
03283de4e8
- fixed issues with option menu items.
...
- fixed the octal parser in strbin.
- remove 'new' token because it gets in the way.
2017-02-12 16:02:55 +01:00
Christoph Oelckers
bb6def820f
- everything compiles and mostly works again.
2017-02-12 14:04:48 +01:00
Christoph Oelckers
947b625c50
- all menu items scriptified, but not yet active.
2017-02-11 16:11:48 +01:00
Christoph Oelckers
f91d91d6e8
- all optionmenu items scriptified, but not integrated yet.
2017-02-11 00:36:53 +01:00
alexey.lysiuk
d2affc7c0c
Fixed crash on attempt to get string value of null
...
https://mantis.zdoom.org/view.php?id=231
2017-02-10 16:19:33 +02:00
Christoph Oelckers
be9b2b38fc
- ColorpickerMenu.MouseEvent exported.
2017-02-10 11:44:46 +01:00
Christoph Oelckers
4f0747c59e
- fixed: Class pointers were accepted for objects of the base type 'Object'.
2017-02-09 11:11:54 +01:00
Christoph Oelckers
36a07b8e6e
- remove all type table entries from garbage collection.
...
Like the symbols and the VM functions this is data that is static from startup until shutdown and has no need to be subjected to garbage collection. All things combined this reduces the amount of GC-sensitive objects at startup from 9600 to 600.
2017-02-08 22:43:20 +01:00
Christoph Oelckers
8277299135
- Turned DropItem into a plain struct again like it was before the scripting branch got merged.
...
Making this an object had little to no advantage, except being able to remove the deleter code. Now, with some of the class data already being allocated in a memory arena so that freeing it is easier, this can also be used for the drop item lists which makes it unnecessary to subject them to the GC. This also merges the memory arenas for VM functions and flat pointers because both get deleted at the same time so they can share the same one.
2017-02-08 20:37:22 +01:00
Christoph Oelckers
9499c22dfe
- restored ZDoom 2.8.1's version of FindClassTentative which just modified the existing class instead of replacing it and having to run a costly and volatile PointerSubstitution call to replace all pointers to the old one.
2017-02-08 19:52:33 +01:00
Christoph Oelckers
17a2666bd4
- moved DisplayName, the last remaining PlayerPawn meta property, to PClassActor so that PClassPlayerPawn could be removed.
...
Now all actors have the same metaclass and therefore it will always be the same size which will finally allow some needed changes to the type system which couldn't be done because it was occasionally necessary to replace tentatively created classes due to size mismatches.
2017-02-08 19:42:24 +01:00
Christoph Oelckers
68e9918ed5
- moved player color sets and pain flashes into global variables.
...
There's simply never enough of them and they are used far too infrequently to justify the hassle of tagging along two TMaps per class.
For what they provide, single global lists that handle all player classes at once are fully sufficient.
2017-02-08 19:10:11 +01:00
Christoph Oelckers
c77f6636f8
- moved the three remaining variables from PClassInventory to PClassActor so that PClassInventory can be removed.
2017-02-08 18:11:23 +01:00
Christoph Oelckers
eebe09fb59
- moved the scalar class properties of PClassInventory into AInventory.
...
What's left is the non-scalars, they will need different treatment to get them out of the way.
2017-02-08 16:57:48 +01:00
Christoph Oelckers
2ca0e34785
- turned many of PClassPlayerPawn's strings into names and moved all scalar properties into APlayerPawn.
...
The goal is to get rid of PClassPlayerPawn and PClassInventory so that the old assumption that all actor class descriptors have the same size can be restored
This is important to remove some code that seriously blocks optimization of the type table because that can only be done if types do not need to be replaced.
2017-02-08 16:42:13 +01:00
Christoph Oelckers
a6785afddb
- optimized the FName versions of IsDescendantOf and IsKindOf. These can be done without first looking up the class type itself.
2017-02-08 15:47:22 +01:00
Christoph Oelckers
31223ca180
- remove all symbols that get linked into the symbol table from the garbage collector.
...
Symbols are very easy to manage once they are in a symbol table and there's lots of them so this reduces the amount of work the GC needs to do quite considerably.
After cleaning out compile-time-only symbols there will still be more than 2000 left, one for each function and one for each member variable of a class or struct.
This means more than 2000 object that won't need to tracked constantly by the garbage collector.
Note that loose fields which do occur during code generation will be GC'd just as before.
2017-02-08 14:34:39 +01:00