示例#1
0
void controls_click(SDL_MouseButtonEvent *ev, state_t *state)
{
	if(ev->button == SDL_BUTTON_RIGHT) {
		state->selected = TT_NONE;
	}
	else if(in_main_area(ev->x, ev->y)) {
		int gx = ev->x/GRID_SIZE;
		int gy = ev->y/GRID_SIZE;
		if(ev->button == SDL_BUTTON_LEFT && state->selected != TT_NONE && state->gil >= tower_cost) {
			int power = state->max_power - state->power_used;
			power = power > 100 ? 100 : power;
			tower_t *tower = tower_new(gx, gy, power, state->selected);
			if(tower != NULL) {
				state->gil -= tower_cost;
				tower_cost += 200;
				state->towers++;
				state->power_used += tower->power;
			}
		}
	}
	else if(in_sel_box(ev->x, ev->y)) {
		int x = ev->x;
		int y = YRES - ev->y;
		if(x % BTN_SIZE > BTN_OFFSET && y % BTN_SIZE > BTN_OFFSET)
			sel_click(x / BTN_SIZE, y / BTN_SIZE, state);
	}
}
示例#2
0
文件: controls.c 项目: jwise/kgtd
/* @brief mouse event dispatcher... might want an improved architecture later */
void controls_click(SDL_MouseButtonEvent *ev, state_t *state)
{
	if(ev->button == SDL_BUTTON_RIGHT) {
		state->type_selected = ATTR_NONE;
	}
	else if((ev->x > SEL_X + SEL_BUFFER || ev->y < SEL_Y - SEL_BUFFER) &&
	        ev->y < BOT_BAR - BOT_BAR_BUFFER) {
		int gx = ev->x/GRID_SIZE;
		int gy = ev->y/GRID_SIZE;
		if(ev->button == SDL_BUTTON_LEFT && state->type_selected != ATTR_NONE)
			place_tower(gx, gy, 100, state->type_selected);
	}
	else if(ev->x < SEL_X && ev->y > SEL_Y) {
		int x = ev->x;
		int y = YRES - ev->y;
		if(x % BTN_SIZE > BTN_OFFSET && y % BTN_SIZE > BTN_OFFSET)
			sel_click(x / BTN_SIZE, y / BTN_SIZE, state);
	}
	else if(ev->y > BOT_BAR) {
	}
}