added some temp keyboard, and added string[] for config
This commit is contained in:
parent
b7fd618247
commit
9d199d08dd
6 changed files with 115 additions and 60 deletions
|
|
@ -19,7 +19,7 @@ option(ARCHEUS_STD_OPENGL "Build with OpenGL" OFF)
|
||||||
set(ARCHEUS_STD_FLAGS "")
|
set(ARCHEUS_STD_FLAGS "")
|
||||||
|
|
||||||
if(ARCHEUS_STD_DEBUG)
|
if(ARCHEUS_STD_DEBUG)
|
||||||
string(APPEND ARCHEUS_STD_FLAGS "-Wall -Werror -g -ggdb ")
|
string(APPEND ARCHEUS_STD_FLAGS "-Wall -Werror -g -ggdb -DARC_DEBUG ")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(ARCHEUS_STD_DEFAULT_CONFIG)
|
if(ARCHEUS_STD_DEFAULT_CONFIG)
|
||||||
|
|
|
||||||
|
|
@ -51,6 +51,18 @@ typedef enum ARC_KeyboardKey {
|
||||||
ARC_KEY_Y,
|
ARC_KEY_Y,
|
||||||
ARC_KEY_Z,
|
ARC_KEY_Z,
|
||||||
|
|
||||||
|
ARC_KEY_0,
|
||||||
|
ARC_KEY_1,
|
||||||
|
ARC_KEY_2,
|
||||||
|
ARC_KEY_3,
|
||||||
|
ARC_KEY_4,
|
||||||
|
ARC_KEY_5,
|
||||||
|
ARC_KEY_6,
|
||||||
|
ARC_KEY_7,
|
||||||
|
ARC_KEY_8,
|
||||||
|
ARC_KEY_9,
|
||||||
|
|
||||||
|
ARC_KEY_SPACE,
|
||||||
ARC_KEY_ESC,
|
ARC_KEY_ESC,
|
||||||
} ARC_Keyboard_Key;
|
} ARC_Keyboard_Key;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -27,7 +27,7 @@ uint8_t ARC_ConfigKey_Read_Long (ARC_Config *config, ARC_String *string, v
|
||||||
uint8_t ARC_ConfigKey_Read_Float (ARC_Config *config, ARC_String *string, void **value);
|
uint8_t ARC_ConfigKey_Read_Float (ARC_Config *config, ARC_String *string, void **value);
|
||||||
uint8_t ARC_ConfigKey_Read_Double (ARC_Config *config, ARC_String *string, void **value);
|
uint8_t ARC_ConfigKey_Read_Double (ARC_Config *config, ARC_String *string, void **value);
|
||||||
uint8_t ARC_ConfigKey_Read_String (ARC_Config *config, ARC_String *string, void **value);
|
uint8_t ARC_ConfigKey_Read_String (ARC_Config *config, ARC_String *string, void **value);
|
||||||
// uint8_t ARC_ConfigKey_Read_StringArray(ARC_Config *config, ARC_String *string, void **value);
|
uint8_t ARC_ConfigKey_Read_StringArray(ARC_Config *config, ARC_String *string, void **value);
|
||||||
|
|
||||||
void ARC_ConfigKey_Delete_Uint8_t (ARC_Config *config, ARC_String *string, void *value);
|
void ARC_ConfigKey_Delete_Uint8_t (ARC_Config *config, ARC_String *string, void *value);
|
||||||
void ARC_ConfigKey_Delete_Int8_t (ARC_Config *config, ARC_String *string, void *value);
|
void ARC_ConfigKey_Delete_Int8_t (ARC_Config *config, ARC_String *string, void *value);
|
||||||
|
|
@ -43,7 +43,7 @@ void ARC_ConfigKey_Delete_Long (ARC_Config *config, ARC_String *string, vo
|
||||||
void ARC_ConfigKey_Delete_Float (ARC_Config *config, ARC_String *string, void *value);
|
void ARC_ConfigKey_Delete_Float (ARC_Config *config, ARC_String *string, void *value);
|
||||||
void ARC_ConfigKey_Delete_Double (ARC_Config *config, ARC_String *string, void *value);
|
void ARC_ConfigKey_Delete_Double (ARC_Config *config, ARC_String *string, void *value);
|
||||||
void ARC_ConfigKey_Delete_String (ARC_Config *config, ARC_String *string, void *value);
|
void ARC_ConfigKey_Delete_String (ARC_Config *config, ARC_String *string, void *value);
|
||||||
// void ARC_ConfigKey_Delete_StringArray(ARC_Config *config, ARC_String *string, void *value);
|
void ARC_ConfigKey_Delete_StringArray(ARC_Config *config, ARC_String *string, void *value);
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -79,6 +79,18 @@ ARC_KeyboardState ARC_Keyboard_GetState(ARC_Keyboard *keyboard, enum ARC_Keyboar
|
||||||
case ARC_KEY_Y: return keyboard->keys[SDLK_y];
|
case ARC_KEY_Y: return keyboard->keys[SDLK_y];
|
||||||
case ARC_KEY_Z: return keyboard->keys[SDLK_z];
|
case ARC_KEY_Z: return keyboard->keys[SDLK_z];
|
||||||
|
|
||||||
|
case ARC_KEY_0: return keyboard->keys[SDLK_0];
|
||||||
|
case ARC_KEY_1: return keyboard->keys[SDLK_1];
|
||||||
|
case ARC_KEY_2: return keyboard->keys[SDLK_2];
|
||||||
|
case ARC_KEY_3: return keyboard->keys[SDLK_3];
|
||||||
|
case ARC_KEY_4: return keyboard->keys[SDLK_4];
|
||||||
|
case ARC_KEY_5: return keyboard->keys[SDLK_5];
|
||||||
|
case ARC_KEY_6: return keyboard->keys[SDLK_6];
|
||||||
|
case ARC_KEY_7: return keyboard->keys[SDLK_7];
|
||||||
|
case ARC_KEY_8: return keyboard->keys[SDLK_8];
|
||||||
|
case ARC_KEY_9: return keyboard->keys[SDLK_9];
|
||||||
|
|
||||||
|
case ARC_KEY_SPACE: return keyboard->keys[SDLK_SPACE ];
|
||||||
case ARC_KEY_ESC: return keyboard->keys[SDLK_ESCAPE];
|
case ARC_KEY_ESC: return keyboard->keys[SDLK_ESCAPE];
|
||||||
|
|
||||||
default: return ARC_KEY_NONE;
|
default: return ARC_KEY_NONE;
|
||||||
|
|
|
||||||
|
|
@ -211,6 +211,7 @@ void ARC_Config_LoadFromKey(ARC_Config *config, ARC_String *keyType, ARC_String
|
||||||
ARC_Hashtable_Get(config->keys, keyType->data, keyType->length, (void **)&key);
|
ARC_Hashtable_Get(config->keys, keyType->data, keyType->length, (void **)&key);
|
||||||
if(key == NULL){
|
if(key == NULL){
|
||||||
arc_errno = ARC_ERRNO_DATA;
|
arc_errno = ARC_ERRNO_DATA;
|
||||||
|
ARC_DEBUG_LOG(arc_errno, "in ARC_Config_LoadFromKey(config, string, value); no matching key: %s", keyType->data);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(arc_errno){
|
if(arc_errno){
|
||||||
|
|
|
||||||
|
|
@ -25,7 +25,7 @@ void ARC_Defaults_ConfigKey_Create(ARC_Config *config){
|
||||||
ARC_Config_AddKeyCString(config, "float" , 5, ARC_ConfigKey_Read_Float , ARC_ConfigKey_Delete_Float );
|
ARC_Config_AddKeyCString(config, "float" , 5, ARC_ConfigKey_Read_Float , ARC_ConfigKey_Delete_Float );
|
||||||
ARC_Config_AddKeyCString(config, "double" , 6, ARC_ConfigKey_Read_Double , ARC_ConfigKey_Delete_Double );
|
ARC_Config_AddKeyCString(config, "double" , 6, ARC_ConfigKey_Read_Double , ARC_ConfigKey_Delete_Double );
|
||||||
ARC_Config_AddKeyCString(config, "string" , 6, ARC_ConfigKey_Read_String , ARC_ConfigKey_Delete_String );
|
ARC_Config_AddKeyCString(config, "string" , 6, ARC_ConfigKey_Read_String , ARC_ConfigKey_Delete_String );
|
||||||
// ARC_Config_AddKeyCString(config, "string[]", ARC_ConfigKey_Read_StringArray, ARC_ConfigKey_Delete_StringArray);
|
ARC_Config_AddKeyCString(config, "string[]", 8, ARC_ConfigKey_Read_StringArray, ARC_ConfigKey_Delete_StringArray);
|
||||||
}
|
}
|
||||||
|
|
||||||
uint8_t ARC_ConfigKey_Read_Uint8_t(ARC_Config* config, ARC_String *string, void **value){
|
uint8_t ARC_ConfigKey_Read_Uint8_t(ARC_Config* config, ARC_String *string, void **value){
|
||||||
|
|
@ -183,79 +183,102 @@ uint8_t ARC_ConfigKey_Read_String(ARC_Config* config, ARC_String *string, void *
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
ARC_String_Copy((ARC_String **)value, string);
|
if(string->data[0] != '"' || string->data[string->length - 1] != '"'){
|
||||||
|
arc_errno = ARC_ERRNO_DATA;
|
||||||
|
ARC_DEBUG_LOG(arc_errno, "in ARC_ConfigKey_Read_String(config, string, value); no matching quotes: %s", string->data);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
/*
|
|
||||||
void ARC_ConfigKey_Read_StringArray(ARC_Config* config, const char *data, ARC_StringSubstr *subdata, void **value){
|
|
||||||
ARC_StringSubstr_StripWhitespaceEnds((char *)data, subdata);
|
|
||||||
if(data[subdata->index] != '{' || data[subdata->index + subdata->length - 1] != '}'){ return ARC_ERRNO_DATA; }
|
|
||||||
subdata->index++;
|
|
||||||
subdata->length -= 2;
|
|
||||||
|
|
||||||
uint32_t arraySize = 1;
|
ARC_String_CopySubstring((ARC_String **)value, string, 1, string->length - 2);
|
||||||
for(uint32_t i = subdata->index; i < subdata->index + subdata->length; i++){
|
return 0;
|
||||||
if(data[i] == ','){
|
}
|
||||||
|
|
||||||
|
void ARC_ConfigKey_StringArray_ReadString(ARC_Config* config, ARC_String *stripped, uint64_t index, uint64_t length, uint64_t *arrayIndex, void **value){
|
||||||
|
ARC_String *substr, *temp;
|
||||||
|
ARC_String_CopySubstring(&temp, stripped, index, length);
|
||||||
|
ARC_String_StripEndsWhitespace(temp, &substr);
|
||||||
|
ARC_String_Destroy(temp);
|
||||||
|
|
||||||
|
// reading in reference
|
||||||
|
ARC_String *tempString;
|
||||||
|
// ARC_Config_Get(config, substr, (void **) &tempString);
|
||||||
|
// if(tempString){
|
||||||
|
// ARC_String_Destroy(substr);
|
||||||
|
|
||||||
|
// ((ARC_String *)((ARC_Array *) *value)->data)[*arrayIndex] = *tempString;
|
||||||
|
// ++*arrayIndex;
|
||||||
|
|
||||||
|
// return;
|
||||||
|
// }
|
||||||
|
|
||||||
|
//reading in value
|
||||||
|
ARC_ConfigKey_Read_String(config, substr, (void **) &tempString);
|
||||||
|
if(arc_errno){
|
||||||
|
ARC_DEBUG_LOG(arc_errno, "in ARC_RectArray_ReadRect(config, string, index, length, arrayIndex, value); failed to read string: %s", substr->data);
|
||||||
|
ARC_String_Destroy(substr);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
((ARC_String **)((ARC_Array *) *value)->data)[*arrayIndex] = tempString;
|
||||||
|
++*arrayIndex;
|
||||||
|
|
||||||
|
ARC_String_Destroy(substr);
|
||||||
|
}
|
||||||
|
|
||||||
|
uint8_t ARC_ConfigKey_Read_StringArray(ARC_Config* config, ARC_String *string, void **value){
|
||||||
|
ARC_Config_Get(config, string, value);
|
||||||
|
if(*value){
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(string->data[0] != '{' || string->data[string->length - 1] != '}'){
|
||||||
|
arc_errno = ARC_ERRNO_DATA;
|
||||||
|
ARC_DEBUG_LOG(arc_errno, "in ARC_ConfigKey_Read_StringArray(config, string, value); no matching curly braces: %s", string->data);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
ARC_String *temp, *stripped;
|
||||||
|
ARC_String_CopySubstring(&temp, string, 1, string->length - 2);
|
||||||
|
ARC_String_StripEndsWhitespace(temp, &stripped);
|
||||||
|
ARC_String_Destroy(temp);
|
||||||
|
|
||||||
|
uint64_t arraySize = 1;
|
||||||
|
for(uint64_t i = 0; i < stripped->length; i++){
|
||||||
|
if(stripped->data[i] == ','){
|
||||||
arraySize++;
|
arraySize++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
*value = malloc(sizeof(char *));
|
*value = malloc(sizeof(ARC_Array));
|
||||||
((ARC_Array *) *value)->data = malloc(sizeof(char *) * arraySize);
|
((ARC_Array *) *value)->data = malloc(sizeof(ARC_String *) * arraySize);
|
||||||
((ARC_Array *) *value)->size = malloc(sizeof(uint32_t));
|
((ARC_Array *) *value)->size = malloc(sizeof(uint32_t));
|
||||||
*((ARC_Array *) *value)->size = arraySize;
|
*((ARC_Array *) *value)->size = arraySize;
|
||||||
|
|
||||||
ARC_StringSubstr temp = { subdata->index, 0 };
|
uint64_t index = 0;
|
||||||
arraySize = 0;
|
arraySize = 0;
|
||||||
for(uint64_t i = subdata->index; i < subdata->index + subdata->length; i++){
|
for(uint64_t i = 0; i < stripped->length; i++){
|
||||||
if(data[i] != ','){
|
if(stripped->data[i] == ','){
|
||||||
continue;
|
ARC_ConfigKey_StringArray_ReadString(config, stripped, index, i - index, &arraySize, value);
|
||||||
}
|
|
||||||
|
|
||||||
temp.length = i - temp.index;
|
|
||||||
|
|
||||||
char *tempStr = (char *)ARC_Config_GetReference(config, (char *)data, &temp);
|
|
||||||
if(!tempStr){
|
|
||||||
ARC_ConfigKey_Read_String(config, data, &temp, (void **) &tempStr);
|
|
||||||
if(arc_errno){
|
if(arc_errno){
|
||||||
return arc_errno;
|
return 0;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
((char **)((ARC_Array *) *value)->data)[arraySize] = tempStr;
|
index = i + 1;
|
||||||
|
|
||||||
// ARC_ConfigKey_Delete_String(config, data, &temp, (void *)tempStr);
|
|
||||||
// if(arc_errno){
|
|
||||||
// return arc_errno;
|
|
||||||
// }
|
|
||||||
|
|
||||||
arraySize++;
|
|
||||||
temp = (ARC_StringSubstr){ i + 1, 0 };
|
|
||||||
|
|
||||||
if(arraySize == *((ARC_Array *) *value)->size){
|
if(arraySize == *((ARC_Array *) *value)->size){
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
temp.length = (subdata->index + subdata->length) - temp.index;
|
|
||||||
char *tempStr = (char *)ARC_Config_GetReference(config, (char *)data, &temp);
|
|
||||||
if(!tempStr){
|
|
||||||
ARC_ConfigKey_Read_String(config, data, &temp, (void **) &tempStr);
|
|
||||||
if(arc_errno){
|
|
||||||
return arc_errno;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
((char **)((ARC_Array *) *value)->data)[arraySize] = tempStr;
|
if(arraySize != *((ARC_Array *) *value)->size){
|
||||||
|
ARC_ConfigKey_StringArray_ReadString(config, stripped, index, stripped->length - index, &arraySize, value);
|
||||||
// ARC_ConfigKey_Delete_String(config, data, &temp, (void *)tempStr);
|
}
|
||||||
// if(arc_errno){
|
ARC_String_Destroy(stripped);
|
||||||
// return arc_errno;
|
|
||||||
// }
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
void ARC_ConfigKey_Delete_Uint8_t(ARC_Config *config, ARC_String *string, void *value){
|
void ARC_ConfigKey_Delete_Uint8_t(ARC_Config *config, ARC_String *string, void *value){
|
||||||
free((uint8_t *)value);
|
free((uint8_t *)value);
|
||||||
|
|
@ -313,4 +336,11 @@ void ARC_ConfigKey_Delete_String(ARC_Config *config, ARC_String *string, void *v
|
||||||
ARC_String_Destroy((ARC_String *)value);
|
ARC_String_Destroy((ARC_String *)value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ARC_ConfigKey_Delete_StringArray(ARC_Config *config, ARC_String *string, void *value){
|
||||||
|
for(uint32_t i = 0; i < *((ARC_Array *)value)->size; i++){
|
||||||
|
free(((ARC_String **)((ARC_Array *)value)->data)[i]);
|
||||||
|
}
|
||||||
|
free((ARC_Array *)value);
|
||||||
|
}
|
||||||
|
|
||||||
#endif //ARC_DEFAULT_CONFIG
|
#endif //ARC_DEFAULT_CONFIG
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue