Commit Graph

65 Commits

Author SHA1 Message Date
EvilFactory 0853357300 Move think hook to a better place 2022-11-13 15:56:37 -03:00
EvilFactory ba1157b07d Make init logs nicer 2022-10-30 16:34:01 -03:00
EvilFactory e7d98dc887 Update Moonsharp for the new pcall exception handling 2022-10-29 20:30:02 -03:00
EvilFactory d88a6b5ef0 Move logging stuff to a separate file 2022-10-28 13:19:23 -03:00
EvilFactory 9502d70290 Rename field and remove unnecessary usings 2022-10-28 12:42:35 -03:00
EvilFactory 43810a3509 Use WorkshopId instead and minor cleanup 2022-10-28 12:26:47 -03:00
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