Skip to content

Commit 12a1f75

Browse files
committed
embed chakracore into cod2 and refactor api somewhat
1 parent d563b97 commit 12a1f75

File tree

4 files changed

+36
-19
lines changed

4 files changed

+36
-19
lines changed

chakracore.cpp

+16-15
Original file line numberDiff line numberDiff line change
@@ -2,39 +2,40 @@
22
#include <stdio.h>
33
#include <Windows.h>
44

5-
chakracore_init_t dll_chakracore_init = NULL;
6-
chakracore_set_printf_t dll_chakracore_set_printf = NULL;
7-
chakracore_eval_t dll_chakracore_eval = NULL;
5+
chakracore_init_t dll_chakracore_init = NULL;
6+
chakracore_set_printstring_t dll_chakracore_set_printstring = NULL;
7+
chakracore_eval_t dll_chakracore_eval = NULL;
88

9-
int chakracore_prepare(printf_t printer) {
9+
int chakracore_prepare(printstring_t printer) {
1010

1111
HMODULE handle = LoadLibraryA("ChakraCoreInterface.dll");
1212

13-
dll_chakracore_init = (chakracore_init_t )GetProcAddress(handle, "chakracore_init");
14-
dll_chakracore_set_printf = (chakracore_set_printf_t)GetProcAddress(handle, "chakracore_set_printf");
15-
dll_chakracore_eval = (chakracore_eval_t )GetProcAddress(handle, "chakracore_eval");
13+
dll_chakracore_init = (chakracore_init_t )GetProcAddress(handle, "chakracore_init");
14+
dll_chakracore_set_printstring = (chakracore_set_printstring_t)GetProcAddress(handle, "chakracore_set_printstring");
15+
dll_chakracore_eval = (chakracore_eval_t )GetProcAddress(handle, "chakracore_eval");
1616

17-
#if 1
17+
#ifdef TEST_CHAKRACORE
1818
printf("cci handle=%d\n", handle);
19-
printf("dll_chakracore_init = %d\n", dll_chakracore_init );
20-
printf("dll_chakracore_set_printf = %d\n", dll_chakracore_set_printf);
21-
printf("dll_chakracore_eval = %d\n", dll_chakracore_eval );
22-
#endif
19+
printf("dll_chakracore_init = %d\n", dll_chakracore_init );
20+
printf("dll_chakracore_set_printf = %d\n", dll_chakracore_set_printstring);
21+
printf("dll_chakracore_eval = %d\n", dll_chakracore_eval );
22+
#endif
2323

24-
if (dll_chakracore_set_printf) {
25-
dll_chakracore_set_printf(printer);
24+
if (dll_chakracore_set_printstring) {
25+
dll_chakracore_set_printstring(printer);
2626
}
2727

2828
if (dll_chakracore_init)
2929
dll_chakracore_init();
3030

31-
3231
return 1;
3332
}
3433

3534
int chakracore_eval(const char *code) {
3635
if (dll_chakracore_eval == NULL) {
36+
#ifdef TEST_CHAKRACORE
3737
printf("dll_chakracore_eval == NULL\n");
38+
#endif
3839
return 0;
3940
}
4041
return dll_chakracore_eval(code);

chakracore.h

+3-3
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,10 @@
22

33

44

5-
typedef int(*printf_t)(const char *format, ...);
5+
typedef int(__cdecl *printstring_t)(const char *format);
66
typedef int(*chakracore_init_t)();
7-
typedef int(*chakracore_set_printf_t)(printf_t);
7+
typedef int(*chakracore_set_printstring_t)(printstring_t);
88
typedef int(*chakracore_eval_t)(const char *code);
99

10-
int chakracore_prepare(printf_t printer);
10+
int chakracore_prepare(printstring_t printer);
1111
int chakracore_eval(const char *code);

cl_main.cpp

+9
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
//#pragma comment(lib, "opengl32.lib")
44
#include "imgui.h"
55
#include "cg_public.h"
6+
#include "chakracore.h"
67

78
dvar_t *con_restricted = (dvar_t*)0x5E132C;
89
int *cls_keyCatchers = (int*)0x96B654;
@@ -163,6 +164,11 @@ void CL_Frame()
163164

164165
//bool cl_inited = false;
165166

167+
int Com_PrintString(const char *str) {
168+
Com_Printf("%s", str);
169+
return 0;
170+
}
171+
166172
void CL_Init( void )
167173
{
168174
void(*o)(void) = (void(*)(void))0x411650;
@@ -181,4 +187,7 @@ void CL_Init( void )
181187
//cl_inited = true;
182188

183189
CG_InitConsoleCommands();
190+
191+
chakracore_prepare(Com_PrintString);
192+
chakracore_eval("console.log(\"^3Loaded ChakraCore\");");
184193
}

test_chakracore.cpp

+8-1
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,15 @@
1+
#define TEST_CHAKRACORE 1
2+
13
#include <stdio.h>
24
#include "chakracore.h"
35

6+
int __cdecl printstring(const char *str) {
7+
printf("%s", str);
8+
return 0;
9+
}
10+
411
int main() {
5-
chakracore_prepare(printf);
12+
chakracore_prepare(printstring);
613
chakracore_eval("console.log(\"^1hai\");");
714
chakracore_eval("console.log(1);");
815
chakracore_eval("console.log(2);");

0 commit comments

Comments
 (0)