Reassign debug keys, backspace on textfield added
This commit is contained in:
		
							parent
							
								
									8aa23b7cfc
								
							
						
					
					
						commit
						cb857cfaa6
					
				| @ -428,6 +428,13 @@ INTERNAL void parseInput(GameState *state, const f32 dt) | ||||
| 	   f (t) = (a/2)*t^2 + v*t + p, where p is a constant, old position | ||||
| 	 */ | ||||
| 
 | ||||
| #ifdef DENGINE_DEBUG | ||||
| 	DEBUG_PUSH_STRING("== Controls =="); | ||||
| 	DEBUG_PUSH_STRING("    [: Spawn a mob"); | ||||
| 	DEBUG_PUSH_STRING("<TAB>: Switch UI element"); | ||||
| 	DEBUG_PUSH_STRING("<ESC>: Close program"); | ||||
| #endif | ||||
| 
 | ||||
| 	World *const world = &state->world[state->currWorldIndex]; | ||||
| 	Entity *hero = &world->entities[entity_getIndex(world, world->heroId)]; | ||||
| 	v2 ddPos     = V2(0, 0); | ||||
| @ -504,11 +511,27 @@ INTERNAL void parseInput(GameState *state, const f32 dt) | ||||
| 			state->uiState.keyEntered = keycode_enter; | ||||
| 		} | ||||
| 
 | ||||
| 		if (getKeyStatus(&keys[keycode_tab], readkeytype_delayedRepeat, 0.25f, | ||||
| 		                 dt)) | ||||
| 		{ | ||||
| 			state->uiState.keyEntered = keycode_tab; | ||||
| 		} | ||||
| 
 | ||||
| 		if (getKeyStatus(&keys[keycode_space], readkeytype_delayedRepeat, 0.25f, | ||||
| 		                 dt)) | ||||
| 		{ | ||||
| 			state->uiState.keyEntered = keycode_space; | ||||
| 			DEBUG_LOG("push space"); | ||||
| 			state->uiState.keyChar = keycode_space; | ||||
| 		} | ||||
| 
 | ||||
| 		if (getKeyStatus(&keys[keycode_backspace], readkeytype_delayedRepeat, | ||||
| 		                 0.1f, dt)) | ||||
| 		{ | ||||
| 			state->uiState.keyEntered = keycode_backspace; | ||||
| 		} | ||||
| 
 | ||||
| 		if (getKeyStatus(&keys[keycode_left_square_bracket], | ||||
| 		                 readkeytype_delayedRepeat, 0.25f, dt)) | ||||
| 		{ | ||||
| 
 | ||||
| 			Renderer *renderer = &state->renderer; | ||||
| 			f32 yPos = CAST(f32)(rand() % CAST(i32)renderer->size.h); | ||||
| @ -1030,7 +1053,7 @@ INTERNAL i32 button(UiState *uiState, AssetManager *assetManager, | ||||
| 	{ | ||||
| 		switch (uiState->keyEntered) | ||||
| 		{ | ||||
| 		case keycode_space: | ||||
| 		case keycode_tab: | ||||
| 			// Set focus to nothing and let next widget get focus
 | ||||
| 			uiState->kbdItem = 0; | ||||
| 			if (uiState->keyMod == keycode_leftShift) | ||||
| @ -1113,7 +1136,7 @@ INTERNAL i32 scrollBar(UiState *uiState, AssetManager *assetManager, | ||||
| 	{ | ||||
| 		switch (uiState->keyEntered) | ||||
| 		{ | ||||
| 		case keycode_space: | ||||
| 		case keycode_tab: | ||||
| 			uiState->kbdItem = 0; | ||||
| 			if (uiState->keyMod == keycode_leftShift) | ||||
| 				uiState->kbdItem = uiState->lastWidget; | ||||
| @ -1221,7 +1244,7 @@ INTERNAL i32 textField(UiState *const uiState, MemoryArena *arena, | ||||
| 	{ | ||||
| 		switch (uiState->keyEntered) | ||||
| 		{ | ||||
| 		case keycode_space: | ||||
| 		case keycode_tab: | ||||
| 			uiState->kbdItem = 0; | ||||
| 			if (uiState->keyMod == keycode_leftShift) | ||||
| 				uiState->kbdItem = uiState->lastWidget; | ||||
| @ -1232,8 +1255,7 @@ INTERNAL i32 textField(UiState *const uiState, MemoryArena *arena, | ||||
| 		case keycode_backspace: | ||||
| 			if (strLen > 0) | ||||
| 			{ | ||||
| 				strLen--; | ||||
| 				string[strLen] = 0; | ||||
| 				string[--strLen] = 0; | ||||
| 				changed        = TRUE; | ||||
| 			} | ||||
| 			break; | ||||
| @ -1538,7 +1560,7 @@ void worldTraveller_gameUpdateAndRender(GameState *state, f32 dt) | ||||
| 	else if (state->uiState.activeItem == 0) | ||||
| 		state->uiState.activeItem = -1; | ||||
| 
 | ||||
| 	if (state->uiState.keyEntered == keycode_space) state->uiState.kbdItem = 0; | ||||
| 	if (state->uiState.keyEntered == keycode_tab) state->uiState.kbdItem = 0; | ||||
| 	state->uiState.keyEntered = keycode_null; | ||||
| 	state->uiState.keyChar    = keycode_null; | ||||
| 
 | ||||
|  | ||||
| @ -7,7 +7,6 @@ | ||||
| 
 | ||||
| INTERNAL inline void processKey(KeyState *state, int action) | ||||
| { | ||||
| 	// TODO(doyle): Handle GLFW_REPEAT, and probably remove this function
 | ||||
| 	if (action == GLFW_PRESS || action == GLFW_RELEASE) | ||||
| 	{ | ||||
| 		state->newHalfTransitionCount++; | ||||
| @ -47,6 +46,9 @@ INTERNAL void keyCallback(GLFWwindow *window, int key, int scancode, int action, | ||||
| 	case GLFW_KEY_BACKSPACE: | ||||
| 		processKey(&game->input.keys[keycode_backspace], action); | ||||
| 		break; | ||||
| 	case GLFW_KEY_TAB: | ||||
| 		processKey(&game->input.keys[keycode_tab], action); | ||||
| 		break; | ||||
| 	default: | ||||
| 		if (key >= ' ' && key <= '~') | ||||
| 		{ | ||||
|  | ||||
| @ -114,6 +114,7 @@ enum KeyCode | ||||
| 	keycode_mouseLeft, | ||||
| 	keycode_enter, | ||||
| 	keycode_backspace, | ||||
| 	keycode_tab, | ||||
| 	keycode_count, | ||||
| 	keycode_null, | ||||
| }; | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user