implemented some useful functions

This commit is contained in:
IonutParau 2025-07-30 22:48:27 +02:00
parent 9913af75f1
commit 16127040f4
5 changed files with 27 additions and 2 deletions

View File

@ -16,6 +16,7 @@ typedef struct nn_resource_t {
typedef struct nn_computer { typedef struct nn_computer {
char state; char state;
nn_bool_t hasBeep;
nn_bool_t allocatedError; nn_bool_t allocatedError;
char *err; char *err;
void *userdata; void *userdata;
@ -51,6 +52,9 @@ typedef struct nn_computer {
nn_size_t rid; nn_size_t rid;
nn_resource_t resources[NN_MAX_CONCURRENT_RESOURCES]; nn_resource_t resources[NN_MAX_CONCURRENT_RESOURCES];
nn_deviceInfoList_t *deviceInfo; nn_deviceInfoList_t *deviceInfo;
double beepFrequency;
double beepDuration;
double beepVolume;
} nn_computer; } nn_computer;
#endif #endif

View File

@ -784,6 +784,7 @@ int main(int argc, char **argv) {
.screenCopyPerTick = 8, .screenCopyPerTick = 8,
.screenFillPerTick = 16, .screenFillPerTick = 16,
.screenSetsPerTick = 32, .screenSetsPerTick = 32,
.bitbltPerTick = 8,
.heatPerPixelChange = 0.00005, .heatPerPixelChange = 0.00005,
.heatPerPixelReset = 0.00001, .heatPerPixelReset = 0.00001,

View File

@ -524,6 +524,10 @@ nn_guard *nn_getComputerLock(nn_computer *computer);
int nn_getState(nn_computer *computer); int nn_getState(nn_computer *computer);
void nn_setState(nn_computer *computer, int state); void nn_setState(nn_computer *computer, int state);
void nn_computer_clearBeep(nn_computer *computer);
void nn_computer_setBeep(nn_computer *computer, double frequency, double duration, double volume);
nn_bool_t nn_computer_getBeep(nn_computer *computer, double *frequency, double *duration, double *volume);
void nn_setEnergyInfo(nn_computer *computer, double energy, double capacity); void nn_setEnergyInfo(nn_computer *computer, double energy, double capacity);
double nn_getEnergy(nn_computer *computer); double nn_getEnergy(nn_computer *computer);
double nn_getMaxEnergy(nn_computer *computer); double nn_getMaxEnergy(nn_computer *computer);

View File

@ -212,13 +212,13 @@ static int testLuaArch_computer_beep(lua_State *L) {
static int testLuaArch_computer_energy(lua_State *L) { static int testLuaArch_computer_energy(lua_State *L) {
nn_computer *c = testLuaArch_getComputer(L); nn_computer *c = testLuaArch_getComputer(L);
lua_pushinteger(L, nn_getEnergy(c)); lua_pushnumber(L, nn_getEnergy(c));
return 1; return 1;
} }
static int testLuaArch_computer_maxEnergy(lua_State *L) { static int testLuaArch_computer_maxEnergy(lua_State *L) {
nn_computer *c = testLuaArch_getComputer(L); nn_computer *c = testLuaArch_getComputer(L);
lua_pushinteger(L, nn_getEnergy(c)); lua_pushnumber(L, nn_getEnergy(c));
return 1; return 1;
} }

View File

@ -10,10 +10,26 @@ nn_universe *nn_newUniverse(nn_Context ctx) {
return u; return u;
} }
nn_Context *nn_getContext(nn_universe *universe) {
return &universe->ctx;
}
nn_Alloc *nn_getAllocator(nn_universe *universe) { nn_Alloc *nn_getAllocator(nn_universe *universe) {
return &universe->ctx.allocator; return &universe->ctx.allocator;
} }
nn_Clock *nn_getClock(nn_universe *universe) {
return &universe->ctx.clock;
}
nn_LockManager *nn_getLockManager(nn_universe *universe) {
return &universe->ctx.lockManager;
}
nn_Rng *nn_getRng(nn_universe *universe) {
return &universe->ctx.rng;
}
void nn_unsafeDeleteUniverse(nn_universe *universe) { void nn_unsafeDeleteUniverse(nn_universe *universe) {
for(nn_size_t i = 0; i < universe->udataLen; i++) { for(nn_size_t i = 0; i < universe->udataLen; i++) {
nn_deallocStr(&universe->ctx.allocator, universe->udata[i].name); nn_deallocStr(&universe->ctx.allocator, universe->udata[i].name);