mirror of
https://github.com/luanti-org/luanti.git
synced 2025-08-06 17:41:04 +00:00
Initial files
This commit is contained in:
commit
4e249fb3fb
71 changed files with 22664 additions and 0 deletions
144
src/loadstatus.h
Normal file
144
src/loadstatus.h
Normal file
|
@ -0,0 +1,144 @@
|
|||
#ifndef LOADSTATUS_HEADER
|
||||
#define LOADSTATUS_HEADER
|
||||
|
||||
class LoadStatus
|
||||
{
|
||||
bool ready;
|
||||
JMutex ready_mutex;
|
||||
|
||||
u32 done;
|
||||
JMutex done_mutex;
|
||||
|
||||
u32 todo;
|
||||
JMutex todo_mutex;
|
||||
|
||||
wchar_t *text;
|
||||
JMutex text_mutex;
|
||||
|
||||
public:
|
||||
|
||||
LoadStatus(bool a_ready=false, u32 a_done=0, u32 a_todo=0)
|
||||
{
|
||||
ready = a_ready;
|
||||
done = a_done;
|
||||
todo = a_todo;
|
||||
text = NULL;
|
||||
ready_mutex.Init();
|
||||
done_mutex.Init();
|
||||
todo_mutex.Init();
|
||||
text_mutex.Init();
|
||||
}
|
||||
|
||||
void setReady(bool a_ready)
|
||||
{
|
||||
ready_mutex.Lock();
|
||||
ready = a_ready;
|
||||
ready_mutex.Unlock();
|
||||
}
|
||||
|
||||
bool getReady(void)
|
||||
{
|
||||
ready_mutex.Lock();
|
||||
bool a_ready = ready;
|
||||
ready_mutex.Unlock();
|
||||
return a_ready;
|
||||
}
|
||||
|
||||
void setDone(u32 a_done)
|
||||
{
|
||||
done_mutex.Lock();
|
||||
done = a_done;
|
||||
done_mutex.Unlock();
|
||||
}
|
||||
|
||||
u32 getDone(void)
|
||||
{
|
||||
done_mutex.Lock();
|
||||
u32 a_done = done;
|
||||
done_mutex.Unlock();
|
||||
return a_done;
|
||||
}
|
||||
|
||||
void setTodo(u32 a_todo)
|
||||
{
|
||||
todo_mutex.Lock();
|
||||
todo = a_todo;
|
||||
todo_mutex.Unlock();
|
||||
}
|
||||
|
||||
u32 getTodo(void)
|
||||
{
|
||||
todo_mutex.Lock();
|
||||
u32 a_todo = todo;
|
||||
todo_mutex.Unlock();
|
||||
return a_todo;
|
||||
}
|
||||
|
||||
/*
|
||||
Copies the text if not NULL,
|
||||
If NULL; sets text to NULL.
|
||||
*/
|
||||
void setText(const wchar_t *a_text)
|
||||
{
|
||||
text_mutex.Lock();
|
||||
if(text != NULL)
|
||||
free(text);
|
||||
if(a_text == NULL){
|
||||
text = NULL;
|
||||
text_mutex.Unlock();
|
||||
return;
|
||||
}
|
||||
u32 len = wcslen(a_text);
|
||||
text = (wchar_t*)malloc(sizeof(wchar_t) * (len+1));
|
||||
if(text == NULL) throw;
|
||||
swprintf(text, len+1, L"%ls", a_text);
|
||||
text_mutex.Unlock();
|
||||
}
|
||||
|
||||
/*
|
||||
Return value must be free'd
|
||||
Return value can be NULL
|
||||
*/
|
||||
wchar_t * getText()
|
||||
{
|
||||
text_mutex.Lock();
|
||||
if(text == NULL){
|
||||
text_mutex.Unlock();
|
||||
return NULL;
|
||||
}
|
||||
u32 len = wcslen(text);
|
||||
wchar_t *b_text = (wchar_t*)malloc(sizeof(wchar_t) * (len+1));
|
||||
if(b_text == NULL) throw;
|
||||
swprintf(b_text, len+1, L"%ls", text);
|
||||
text_mutex.Unlock();
|
||||
return b_text;
|
||||
}
|
||||
|
||||
/*
|
||||
Return value must be free'd
|
||||
*/
|
||||
wchar_t * getNiceText()
|
||||
{
|
||||
const wchar_t *defaulttext = L"Loading";
|
||||
wchar_t *t = getText();
|
||||
u32 maxlen = 20; // " (%i/%i)"
|
||||
if(t != NULL)
|
||||
maxlen += wcslen(t);
|
||||
else
|
||||
maxlen += wcslen(defaulttext);
|
||||
wchar_t *b_text = (wchar_t*)malloc(sizeof(wchar_t) * (maxlen+1));
|
||||
if(b_text == NULL) throw;
|
||||
if(t != NULL)
|
||||
swprintf(b_text, maxlen+1, L"%ls (%i/%i)",
|
||||
t, getDone(), getTodo());
|
||||
else
|
||||
swprintf(b_text, maxlen+1, L"%ls (%i/%i)",
|
||||
defaulttext, getDone(), getTodo());
|
||||
if(t != NULL)
|
||||
free(t);
|
||||
return b_text;
|
||||
}
|
||||
};
|
||||
|
||||
#endif
|
||||
|
Loading…
Add table
Add a link
Reference in a new issue