Exemplo n.º 1
0
def get_from_UI(dens_prev, u_prev, v_prev):
	dens_prev[:] = 0.0
	u_prev[:] = 0.0
	v_prev[:] = 0.0

	if  hg.GetPlus().KeyDown(hg.KeyF1):
		dens_prev[1, 1] = base_force_dens
	if  hg.GetPlus().KeyDown(hg.KeyF2):
		for i in range(2, 5):
			v_prev[i, 5] = base_force_v
	if  hg.GetPlus().KeyDown(hg.KeyF3):
		u_prev[3, 3] = base_force_u
	if  hg.GetPlus().KeyDown(hg.KeyF4):
		u_prev[int(N / 2.0), int(N / 2.0)] = base_force_u
		v_prev[int(N / 2.0), int(N / 2.0)] = base_force_v
Exemplo n.º 2
0
def draw_text(scene_simple_graphic,
              text,
              mat,
              size=0.01,
              color=hg.Color.White,
              text_centered=False,
              use_font=font):
    scene_simple_graphic.SetDepthWrite(False)
    scene_simple_graphic.SetBlendMode(hg.BlendAlpha)
    if text_centered:
        text_rect = use_font.GetTextRect(hg.GetPlus().GetRenderSystem(), text)
        mat = mat * mat4.TranslationMatrix(
            vec3(-(text_rect.ex - text_rect.sx) * 0.5 * size,
                 -(text_rect.ey - text_rect.sy) * 0.5 * size, 0))
    scene_simple_graphic.Text(mat, text, color, use_font, size)
    scene_simple_graphic.SetDepthWrite(True)
Exemplo n.º 3
0
def request_screen_mode(p_ratio_filter=0):
    global monitors, monitors_names, modes, smr_screenMode, smr_resolution, ratio_filter

    ratio_filter = p_ratio_filter
    monitors = hg.GetMonitors()
    monitors_names = []
    modes = []
    for i in range(monitors.size()):
        monitors_names.append(hg.GetMonitorName(monitors.at(i)) + str(i))
        f, m = hg.GetMonitorModes(monitors.at(i))
        filtered_modes = []
        for j in range(m.size()):
            md = m.at(j)
            rect = md.rect
            epsilon = 0.01
            r = (rect.ex - rect.sx) / (rect.ey - rect.sy)
            if ratio_filter == 0 or r - epsilon < ratio_filter < r + epsilon:
                filtered_modes.append(md)
        modes.append(filtered_modes)

    plus = hg.GetPlus()
    plus.RenderInit(res_w, res_h, 1, hg.Windowed)
    select = ""
    while select == "":
        select = gui_ScreenModeRequester()
        plus.Flip()
        plus.EndFrame()
    plus.RenderUninit()

    if select == "ok":
        if flag_windowed:
            smr_screenMode = hg.Windowed
        else:
            smr_screenMode = screenModes[current_monitor]
        rect = modes[current_monitor][current_mode].rect
        smr_resolution.x, smr_resolution.y = rect.ex - rect.sx, rect.ey - rect.sy
    return select, smr_screenMode, smr_resolution
Exemplo n.º 4
0
import harfang as hg

hg.LoadPlugins()

plus = hg.GetPlus()
plus.RenderInit(400, 300)

while not plus.IsAppEnded():
    plus.Flip()
    plus.EndFrame()

plus.RenderUninit()
Exemplo n.º 5
0
	if  hg.GetPlus().KeyDown(hg.KeyF1):
		dens_prev[1, 1] = base_force_dens
	if  hg.GetPlus().KeyDown(hg.KeyF2):
		for i in range(2, 5):
			v_prev[i, 5] = base_force_v
	if  hg.GetPlus().KeyDown(hg.KeyF3):
		u_prev[3, 3] = base_force_u
	if  hg.GetPlus().KeyDown(hg.KeyF4):
		u_prev[int(N / 2.0), int(N / 2.0)] = base_force_u
		v_prev[int(N / 2.0), int(N / 2.0)] = base_force_v
	
	#for i in range(1, N+1):
	#	v_prev[IX(1, i)] = base_force_v if int(N/3) < i < int(N/3*2) else 0
	#	u_prev[IX(1, i)] = 0
false_texture = hg.GetPlus().LoadTexture("")

def draw_dens(simple_graphic_scene_overlay, N, dens, u, v):	
	scale = 2
	for i in range(1, N + 1):
		for j in range(1, N + 1):
			p = vec3(i / (N) - 0.5, j / (N) - 0.5, 0)
			#helper_2d.draw_line(simple_graphic_scene_overlay, p, p + vec3(u[i, j], v[i,j], 0))
			helper_2d.draw_quad(simple_graphic_scene_overlay, mat4.TransformationMatrix(p + vec3(0, 0, 0.1), vec3(0, 0, 0)), 1 / N, 1 / N, false_texture, col(dens[i, j], 0, 0))

	
def simulation_step(simple_graphic_scene_overlay, dt):
	global visc, diff, base_force_u, base_force_v, base_force_dens
	hg.ImGuiLock()
	if hg.ImGuiBegin("params"):
		visc = hg.ImGuiSliderFloat("visc", visc, 0.0, 10.0)[1]
Exemplo n.º 6
0
def game():
	plus = hg.GetPlus()
	plus.RenderInit(screen_width, screen_height)
	al = hg.CreateMixer()
	al.Open()
	hg.MountFileDriver(hg.StdFileDriver())
	keyboard = hg.GetInputSystem().GetDevice("keyboard")

	scn, ground = setup_game_level(plus)
	turret, cannon, turret_mass = create_turret(plus, scn)

	game_state = "GAME_INIT"

	while not plus.IsAppEnded():
		dt = plus.UpdateClock()

		# Initialize Game
		if game_state == "GAME_INIT":
			enemy_list = []
			debris_list = []
			spawn_timer = 0.0
			turret_cool_down = 0.0
			enemy_spawn_interval = max_enemy_spawn_interval
			player_life = max_player_life
			target_angle = 0.0
			score = 0
			play_sound_fx(al, 'game_start')
			game_state = "TITLE"

		# Title screen
		if game_state == "TITLE":
			display_title_screen(plus, scn)
			if plus.KeyReleased(hg.KeySpace):
				game_state = "GAME"
		# Game
		elif game_state == "GAME":
			# Turret
			if plus.KeyDown(hg.KeyRight):
				target_angle += hg.time_to_sec_f(dt) * aim_rotation_speed
			else:
				if plus.KeyDown(hg.KeyLeft):
					target_angle -= hg.time_to_sec_f(dt) * aim_rotation_speed

			if plus.KeyPress(hg.KeySpace):
				if turret_cool_down < 0.0:
					throw_bullet(plus, scn, cannon.GetTransform().GetWorld().GetTranslation(), cannon.GetTransform().GetWorld().GetRow(1))
					turret_cool_down = turret_cool_down_duration
					play_sound_fx(al, 'shoot')
				else:
					play_sound_fx(al, 'error')
					turret_cool_down += 10.0 * hg.time_to_sec_f(dt)

			turret_cool_down -= hg.time_to_sec_f(dt)

			target_angle = max(min(target_angle, aim_angle_range['max']), aim_angle_range['min'])

			rotate_turret(turret, target_angle, turret_mass)

			# Enemies
			spawn_timer += hg.time_to_sec_f(dt)
			if spawn_timer > enemy_spawn_interval:
				spawn_timer = 0
				spawn_pos = hg.Vector3(uniform(-10, 10), 2.5, uniform(5.5, 6.5))
				spawn_pos.Normalize()
				spawn_pos *= 10.0
				spawn_pos.y = 5.0
				new_enemy = spawn_enemy(plus, scn, spawn_pos)
				enemy_list.append([new_enemy[0], new_enemy[1]])

			for enemy in enemy_list:
				# make enemy crawl toward the player
				enemy_dir = turret[0].GetTransform().GetPosition() - enemy[0].GetTransform().GetPosition()
				enemy_dir.Normalize()
				enemy[1].SetIsSleeping(False)
				enemy[1].ApplyLinearForce(enemy_dir * 0.25 * enemy_mass)

				col_pairs = scn.GetPhysicSystem().GetCollisionPairs(enemy[0])
				for col_pair in col_pairs:
					if 'turret' in [col_pair.GetNodeA().GetName(), col_pair.GetNodeB().GetName()]:
						destroy_enemy(plus, scn, enemy[0])
						debris_list.extend(create_explosion(plus, scn, enemy[0].GetTransform().GetPosition()))
						enemy_list.remove(enemy)
						play_sound_fx(al, 'explosion')
						play_sound_fx(al, 'hit')
						player_life -= 1
						turret_cool_down = 0.0
						if player_life < 1:
							play_sound_fx(al, 'game_over')
							game_state = "GAME_OVER"
					else:
						if 'bullet' in [col_pair.GetNodeA().GetName(), col_pair.GetNodeB().GetName()]:
							play_sound_fx(al, 'explosion')
							pos = col_pair.GetNodeB().GetTransform().GetPosition()
							debris_list.extend(create_explosion(plus, scn, pos, 8, 0.25))

							pos = enemy[0].GetTransform().GetPosition()
							destroy_enemy(plus, scn, enemy[0])
							enemy_list.remove(enemy)
							scn.RemoveNode(col_pair.GetNodeB())
							debris_list.extend(create_explosion(plus, scn, pos))

							score += 10

				# Game difficulty
				enemy_spawn_interval = max(1.0, enemy_spawn_interval - hg.time_to_sec_f(dt) * 0.025)

				# Cleanup debris
				if len(debris_list) > max_debris:
					tmp_debris = debris_list[0]
					debris_list.remove(debris_list[0])
					tmp_debris.RemoveComponent(tmp_debris.GetRigidBody())
					# scn.RemoveNode(tmp_debris)

			render_aim_cursor(plus, scn, target_angle)
			display_hud(plus, player_life / max_player_life, max(0, turret_cool_down) / turret_cool_down_duration, score)

		# Game over screen
		elif game_state == "GAME_OVER":
			display_game_over(plus, scn, score)
			if plus.KeyReleased(hg.KeySpace):
				game_state = "SCENE_RESET"

		# Reset the playfield for a new game
		elif game_state == "SCENE_RESET":
			for enemy in enemy_list:
				destroy_enemy(plus, scn, enemy[0])

			for debris in debris_list:
				debris.RemoveComponent(debris.GetRigidBody())

			game_state = "GAME_INIT"

		plus.UpdateScene(scn, dt)
		plus.Flip()
		plus.EndFrame()

	return plus