1
0
Fork 0
mirror of https://github.com/ctruLua/ctruLua.git synced 2025-10-27 16:39:29 +00:00
ctruLua/source/news.c

56 lines
1.3 KiB
C

#include <3ds/types.h>
#include <3ds/util/utf.h>
#include <3ds/services/news.h>
#include <lua.h>
#include <lauxlib.h>
static int news_init(lua_State *L) {
newsInit();
return 0;
}
static int news_notification(lua_State *L) {
const char *title = luaL_checkstring(L, 1);
const char *message = luaL_checkstring(L, 2);
const void *imageData = luaL_checkstring(L, 3);
bool jpeg = false;
if (lua_isboolean(L, 4))
jpeg = lua_toboolean(L, 4);
lua_len(L, 3);
u32 imageDataLength = luaL_checkinteger(L, -1);
const u16* cTitle = 0;
const u16* cMessage = 0;
u32 titleLength, messageLength;
titleLength = (u32) utf8_to_utf16((uint16_t*)cTitle, (uint8_t*)title, sizeof(title));
messageLength = (u32) utf8_to_utf16((uint16_t*)cMessage, (uint8_t*)message, sizeof(message));
NEWSU_AddNotification(cTitle, titleLength, cMessage, messageLength, imageData, imageDataLength, jpeg);
return 0;
}
static int news_shutdown(lua_State *L) {
newsExit();
return 0;
}
static const struct luaL_Reg news_lib[] = {
{"init", news_init },
{"notification", news_notification},
{"shutdown", news_shutdown },
{NULL, NULL}
};
int luaopen_news_lib(lua_State *L) {
luaL_newlib(L, news_lib);
return 1;
}
void load_news_lib(lua_State *L) {
luaL_requiref(L, "ctr.news", luaopen_news_lib, 0);
}