Commit Graph

59 Commits

Author SHA1 Message Date
peelz
8774a33914 Fix possible NRE when stopping while a patched method is running 2022-09-15 19:31:47 -04:00
peelz
13d0510d37 Make lua converters private 2022-08-20 11:32:18 -04:00
peelz
dd1b404c9b Refactor error/exception/message handling
This adds:
- LuaCsSetup.ExceptionHandler so we can decide how we want to handle
exceptions for unit tests
- LuaCsSetup.MessageHandler so we can redirect logs to the XUnit output
  helper
2022-08-10 05:59:41 -04:00
peelz
d9dc84425d Make LuaCsSetup easier to integrate into unit tests 2022-08-09 17:50:00 -04:00
peelz
08836088fb Refactor hooking API
This completely changes how method patching works under the hood. Unlike
the previous API (`Hook.HookMethod`), the new API (`Hook.Patch`)
generates a Harmony patch method at runtime, using IL generation.

This fixes methods with ByRef (out/ref) parameters getting silently corrupted
due to the ByRef semantics being lost when passed through the `object[] __args`
parameter.

This new API also makes it possible to:
  - modify parameters (including ByRef params)
  - change the return value to `null` (old API would use `return nil`
    for Harmony control flow)
  - prevent execution of the original method (and other harmony
    patches), independently of modifying the return value
2022-08-09 17:50:00 -04:00
peelz
768abd5ce1 Remove LuaResult 2022-08-09 17:50:00 -04:00
EvilFactory
1b020ff99e don't prevent further cs mods from being executed if one of them has a runtime error 2022-07-25 09:25:06 -03:00
Evil Factory
8153e4af0c print out to the console if the content package Lua folder is being used or not 2022-07-08 19:44:23 -03:00
Evil Factory
e73cd0f398 fix crash if a cs mod errors in the dispose method 2022-07-07 09:52:29 -03:00
Evil Factory
e5d4a38fd7 minor refactor to CsScriptLoader plus fixed source category regex not working as expected with some paths 2022-07-05 17:47:52 -03:00
Evil Factory
4a706c504a debug check for weird timer crash 2022-06-29 20:22:33 -03:00
Evil Factory
3418132b90 fix compile error 2022-06-29 17:08:33 -03:00
Evil Factory
20dabf502a cleanup 2022-06-29 16:48:34 -03:00
Evil Factory
64c81146fb added PerformanceCounter 2022-06-19 11:50:51 -03:00
Evil Factory
a2f8d0019f fix threading issues with initialization 2022-06-17 14:29:10 -03:00
Evil Factory
ed1fbdbe5e Potential fix for threading issues and added CSActive var 2022-06-09 16:02:18 -03:00
Evil Factory
7ee81aca24 fix formatting 2022-05-21 12:48:35 -03:00
Evil Factory
4078fe024b ExecutionNumber variable that counts how many times lua has been executed 2022-05-19 16:45:00 -03:00
Evil Factory
74bf5d12ca added Steam.DownloadWorkshopItem and Steam.GetWorkshopItem 2022-05-17 19:15:44 -03:00
Evil Factory
11220bcff2 why are we manually collecting GC in cs 2022-05-07 14:20:16 -03:00
Evil Factory
64f0e2f137 Fixes for PR #80 2022-05-06 13:10:50 -03:00
Cintique
d244869377 Fix blocking issue in LuaCsTimer
Logic for scheduling actions in `LuaCsHook` (see `Enqueue()` and `Update()`) caused tasks with long delays to block the execution of tasks with shorter delays.
Moved logic for `Timer.Wait()` from `LuaCsHook` to `LuaCsTimer` and corrected the blocking issue.
2022-05-06 15:43:17 +10:00
Jacobin
87550af37d lua.LoadFile -> lua.LoadString 2022-05-05 10:23:17 +10:00
Evil Factory
bbea195e7d fix formatting in lua require and better error handling with dofile,loadfile,etc 2022-05-04 08:50:17 -03:00
Evil Factory
95a9c618e6 fix naming 2022-05-04 08:45:05 -03:00
Jacobin
43f172a190 Remove exception handling on Require
This was just eating exceptions; exceptions should instead propagate to a more appropriate handler (`pcall` should now work).
2022-05-04 11:37:44 +10:00
Evil Factory
9b9bfa7440 whoops 2022-05-02 19:33:42 -03:00
Evil Factory
79daf2ed32 better error handling 2022-05-02 16:36:55 -03:00
Evil Factory
3f221c0d23 fix nullable errors 2022-04-29 17:58:56 -03:00
Evil Factory
af47136bbd use cs package from backup packages 2022-04-29 14:00:53 -03:00
Oiltanker
e5215fb976 Cs source folder filter 2022-04-28 17:13:13 +03:00
Evil Factory
2c1329fa36 we don't actually need to check for threads if theres only one (multiplayer) 2022-04-24 00:01:43 -03:00
Evil Factory
e799eed64e don't call stop hook if we are not in the main thread anymore (likely caused by the exiting of the program) 2022-04-22 16:26:33 -03:00
Evil Factory
e77ef4de26 Check thread access before executing any Lua function, if thats the case, throw a warning and ignore 2022-04-22 15:53:44 -03:00
Evil Factory
fd0c3ba19d Merge branch 'unstable-tests' 2022-04-21 11:21:30 -03:00
Evil Factory
5946a4c043 fix package names 2022-04-20 14:20:38 -03:00
Evil Factory
6246588072 change package name 2022-04-20 13:17:03 -03:00
zhurengong
7c4d7d374b some improves and fixes:
1. should get the last loadded aseembly by checking its version instead of reversing.
2. fixed throw an exception when CsScriptRunner run the second time.
3. an argument carried by an UnregisterType called somewhere have had been accidentally removed.
2022-04-20 14:56:32 +08:00
Evil Factory
7a440e009b add Cs package check back and fix typos 2022-04-19 16:59:02 -03:00
Oiltanker
df83b1904e rebase to origin/unstable-tests 2022-04-19 22:39:05 +03:00
Oiltanker
da251099a3 working serialization + cs mods one-time warning 2022-04-19 22:35:08 +03:00
Evil Factory
ce85d50dbf prioritize enabled package 2022-04-19 13:31:25 -03:00
Evil Factory
8f79054537 only use package if enabled 2022-04-19 13:29:19 -03:00
zhurengong
6e0eae141b fixed assembly can't be unloaded 2022-04-19 15:45:51 +08:00
Jacobin
72063cdf93 Update require() behaviour
The behaviour of `require()` has been changed to align more closely with standard Lua (caching return results).
2022-04-19 15:20:52 +10:00
Oiltanker
767ff55604 fixes and custom serialization 2022-04-18 15:52:46 +03:00
Evil Factory
bab2a88533 cs print message 2022-04-17 15:13:12 -03:00
Evil Factory
edb665a22c only run cs mods if package is present 2022-04-17 15:09:24 -03:00
Evil Factory
6277a6ce5d Merge pull request #58 from oiltanker/unstable-tests
cs script runner + mod store + cs-lua interface
2022-04-17 14:31:44 -03:00
Evil Factory
6da4481c83 fix names 2022-04-17 13:03:24 -03:00