bool Simple_GOL_Area::on_button_press_event(GdkEventButton* event) { if(event->type == GDK_BUTTON_PRESS) { if(event->button == 1) { Gtk::Allocation allocation = get_allocation(); int item_x = int(sim_data->get_width()*event->x/allocation.get_width()); int item_y = int(sim_data->get_height()*event->y/allocation.get_height()); std::cout << item_x << " " << item_y << "\n"; mouse_button_one_down = (sim_data->get(item_x, item_y)+1)%2 + 1; sim_data->set(item_x, item_y, (sim_data->get(item_x, item_y)+1)%2); queue_draw(); } else if(event->button == 3) { pause_toggle(); } } return true; }
/** * * rct2: 0x0068E8DA */ void title_load() { log_verbose("loading title"); if (RCT2_GLOBAL(RCT2_ADDRESS_GAME_PAUSED, uint8) & 1) pause_toggle(); RCT2_GLOBAL(RCT2_ADDRESS_SCREEN_FLAGS, uint8) = SCREEN_FLAGS_TITLE_DEMO; reset_park_entrances(); user_string_clear_all(); reset_sprite_list(); ride_init_all(); window_guest_list_init_vars_a(); staff_reset_modes(); map_init(150); park_init(); date_reset(); climate_reset(CLIMATE_COOL_AND_WET); scenery_set_default_placement_configuration(); window_new_ride_init_vars(); window_guest_list_init_vars_b(); window_staff_list_init_vars(); map_update_tile_pointers(); reset_0x69EBE4(); stop_ride_music(); stop_crowd_sound(); //stop_other_sounds(); viewport_init_all(); news_item_init_queue(); title_create_windows(); title_init_showcase(); gfx_invalidate_screen(); RCT2_GLOBAL(RCT2_ADDRESS_SCREEN_AGE, uint16) = 0; #ifndef DISABLE_NETWORK network_close(); #endif if (gOpenRCT2ShowChangelog) { gOpenRCT2ShowChangelog = false; window_changelog_open(); } log_verbose("loading title finished"); }
//Figure out what has been types/clicks and act accordingly bool Simple_GOL_Area::on_key_press_event(GdkEventKey* event) { if(event->keyval == GDK_KEY_space) { pause_toggle(); } else if(event->keyval == GDK_KEY_g) { grid_toggle(); queue_draw(); } else if(event->keyval == GDK_KEY_Right) { if(itteration_time >=10) { itteration_time -= 10; } override_timeout_connection(itteration_time); } else if(event->keyval == GDK_KEY_Left) { itteration_time += 10; override_timeout_connection(itteration_time); } else if(event->keyval == GDK_KEY_r) { sim_data->random_reset(); queue_draw(); } else if(event->keyval == GDK_KEY_Return) { sim_data->itterate_under_conway(); queue_draw(); } else if(event->keyval == GDK_KEY_c) { sim_data->zero(); queue_draw(); } return Gtk::DrawingArea::on_key_release_event(event); }
void Scheduler::run() { avlock.lock(); auto event = next_event(); avlock.unlock(); if (!is_active) { sync_sleep(0.01); return; } show_info(); switch (event) { case EventHandler::Event::Quit: is_active = false; video_thread_active = false; audio_thread_active = false; return; case EventHandler::Event::Pause: pause_toggle(); break; case EventHandler::Event::SeekBack10: perform_seek(-3.0); break; case EventHandler::Event::SeekForward10: perform_seek(3.0); break; case EventHandler::Event::SeekBack60: perform_seek(-30.0); break; case EventHandler::Event::SeekForward60: perform_seek(30.0); break; case EventHandler::Event::Fullscreen: if (video_thread_active) video->toggle_fullscreen(); break; case EventHandler::Event::None: break; default: throw std::runtime_error("Unknown event popped up :V\n"); } if (is_paused) { sync_sleep(0.01); return; } Packet pkt; Packet::Type type = file->packet(pkt); switch(type) { case Packet::Type::Error: is_active = false; // Signal to threads that there won't be any more data. aud_pkt_queue.finalize(); vid_pkt_queue.finalize(); return; case Packet::Type::None: return; case Packet::Type::Audio: while (aud_pkt_queue.size() > 16 && (vid_pkt_queue.size() > 16 || !has_video)) aud_pkt_queue.wait(); aud_pkt_queue.push(std::move(pkt)); break; case Packet::Type::Video: while (vid_pkt_queue.size() > 16 && (aud_pkt_queue.size() > 16 || !has_audio)) vid_pkt_queue.wait(); vid_pkt_queue.push(std::move(pkt)); break; case Packet::Type::Subtitle: while (sub_pkt_queue.size() > 64 && (aud_pkt_queue.size() > 16 || !has_audio) && (vid_pkt_queue.size() > 16 || !has_video)) sub_pkt_queue.wait(); sub_pkt_queue.push(std::move(pkt)); break; default: throw std::runtime_error("What kind of package is this? o.o\n"); } }