/** * \brief Inicializa os servicos disponiveis pela camada mult. */ void services_init(void){ CHAT_PORT = 5555; //inicializa o chat com uma porta default. que será alterada de acordo com a def do chat. global_chat_flag = 0; //chat começa desabilitado, só é habilitado pela cli. telnetd_init(); //telnet faz comunicação através da porta 23 httpd_init(); //http faz comunicação através da porta 80. chat_init(); //porta inicial, ela será alterada de acordo com o chat. //ftp_init(); //inicializa serviço de ftp sftd_init(); }
int chat(FAR struct chat_ctl* ctl, FAR char* script) { int ret = 0; struct chat priv; DEBUGASSERT(script != NULL); chat_init(&priv, ctl); ret = chat_script_parse(&priv, script); if (!ret) { /* TODO: optionally, free 'script' here */ ret = chat_script_run(&priv); } chat_script_free(&priv); return ret; }
void view_init() { sidebar_width=platform_lowres?3*SIDEBAR_WIDTH_MAX/4:SIDEBAR_WIDTH_MAX; font_std=d_font_load("res/FreeMonoBold.ttf", platform_lowres?8:12, 512, 512); mouse_tilesheet=d_render_tilesheet_load("res/mouse.png", 16, 16, DARNIT_PFORMAT_RGB5A1); mouse_target_tilesheet=d_render_tilesheet_load("res/target.png", 32, 32, DARNIT_PFORMAT_RGB5A1); //Menu background int scale=config.plasma==0?1:(1<<(5-config.plasma)); view_background_w=platform.screen_w/scale; view_background_h=platform.screen_h/scale; view_background_ts=d_render_tilesheet_new(1, 1, view_background_w, view_background_h, DARNIT_PFORMAT_RGB5A1); view_background_tile=d_render_tile_new(1, view_background_ts); view_background_pixbuf=malloc(view_background_w*view_background_h*sizeof(unsigned int)); d_render_tilesheet_scale_algorithm(view_background_ts, DARNIT_SCALE_LINEAR); d_render_tile_move(view_background_tile, 0, 0, 0); d_render_tile_tilesheet_coord_set(view_background_tile, 0, 0, 0, view_background_w, view_background_h); d_render_tile_size_set(view_background_tile, 0, platform.screen_w, platform.screen_h); view_background_update(0); menu_init(); lobby_init(); game_view_init(); gameover_init(); chat_init(); gamestate_pane[GAME_STATE_MENU]=&panelist_menu_sidebar; gamestate_pane[GAME_STATE_CREDITS]=&panelist_credits; gamestate_pane[GAME_STATE_CONNECTING]=&panelist_multiplayer_connecting; gamestate_pane[GAME_STATE_LOBBY]=&panelist_lobby_players; gamestate_pane[GAME_STATE_GAME]=&panelist_game_sidebar; gamestate_pane[GAME_STATE_GAME_MENU]=&panelist_game_menu; gamestate_pane[GAME_STATE_GAME_OVER]=&panelist_gameover_sidebar; gamestate_pane[GAME_STATE_QUIT]=NULL; map=NULL; }
int main(int argc, char *argv[]) { int c = 0; unsigned char k; int opt; #ifndef WINDOWS char fname[1024]; #endif cfg_init(argv[0]); #ifdef WINDOWS if (cfg_readconfig("cgchat.cfg") < 0) { return(1); } if (cfg_read == 0) { cfg_writeconfig(default_cgchat_cfg, "cgchat.cfg"); if (cfg_readconfig("cgchat.cfg") < 0) { return(1); } } #else strncpy(fname, cfg_homedir, 1000); strcat(fname, "/.cgchatrc"); if (cfg_file_exists(fname)) { if (cfg_readconfig(fname) < 0) { return(1); } } else { strncpy(fname, cfg_prefix, 1000); strcat(fname, "/etc/cgchat.cfg"); if (cfg_readconfig(fname) < 0) { return(1); } } if (cfg_read == 0) { strncpy(fname, cfg_homedir, 1000); strcat(fname, "/.cgchatrc"); cfg_writeconfig(default_cgchat_cfg, fname); } #endif while ((opt = getopt(argc, argv, "z:k:fs48")) != -1) { switch (opt) { case '4': cfg_columns = 40; break; case '8': cfg_columns = 80; break; case 'f': cfg_fullscreen = 1; break; case 'k': cfg_keyboard = optarg; break; case 's': cfg_sound = 0; break; case 'z': if ((cfg_zoom = strtol(optarg, (char **)NULL, 10)) == 0) { usage(); return(1); } break; case 'h': default: usage(); return(1); } } argc -= optind; argv += optind; if (crc_init()) { return(1); } if (gfx_init(cfg_fullscreen, "CGChat")) { return(1); } if (kbd_init(cfg_keyboard)) { return(1); } if (kernal_init()) { return(1); } if (cfg_sound && sound_init()) { printf("Sound init failed, sound disabled\n"); } else { #ifdef WINDOWS if ((sound_bell = sound_load_sample("bell.wav")) < 0) { printf("Couldn't load bell.wav\n"); return(1); } #else strncpy(fname, cfg_prefix, 1000); strcat(fname, "/share/cgterm/bell.wav"); if ((sound_bell = sound_load_sample(fname)) < 0) { printf("Couldn't load %s\n", fname); return(1); } #endif } print_banner(cfg_columns); if (argc == 0) { if (!cfg_host) { if (cfg_columns == 80) { print(" "); } print(" \x96pRESS\x9e eSC\x96 FOR MENU\x05\x0d\x0d"); } } else if (argc == 1 || argc == 2) { if (strchr(argv[0], '.') == NULL) { printf("Invalid hostname: %s\n", argv[0]); return(1); } cfg_host = argv[0]; if (argc == 2) { cfg_port = (int)strtol(argv[1], (char **)NULL, 10); } } else { usage(); return(1); } cfg_rows = 24; chat_init(); if (cfg_host) { net_connect(cfg_host, cfg_port, &chat_print_net_status); cfg_nextreconnect = timer_get_ticks() + cfg_reconnect * 1000; } data_len = 0; data_buffer[0] = 0; for (;;) { if (timer_get_ticks() > lastvbl + 20) { if (timer_get_ticks() > lastvbl + 40) { lastvbl = timer_get_ticks(); } else { lastvbl += 20; } gfx_vbl(); } if (!net_connected() && cfg_host && cfg_reconnect && cfg_nextreconnect) { if (timer_get_ticks() > cfg_nextreconnect) { net_connect(cfg_host, cfg_port, &chat_print_net_status); cfg_nextreconnect = timer_get_ticks() + cfg_reconnect * 1000; } } k = ffe4(); c = -1; if (net_connected()) { c = net_receive(); } if (c == -2) { if (timer_get_ticks() < cfg_nextreconnect) { cfg_nextreconnect = timer_get_ticks() + cfg_reconnect * 1000; } else { cfg_nextreconnect = 0; } } if (k || c >= 0) { if (k) { chat_inputkey(k); } if (c >= 0) { if (data_len == data_maxlen) { chat_print_msg("locl:lINEBUFFER FULL"); data_len = 0; } if (c == 13) { if (data_len) { chat_print_msg(data_buffer); data_len = 0; } } else { data_buffer[data_len++] = c; data_buffer[data_len] = 0; } } } else { timer_delay(1); } } }
int main(int argc, char *argv[]) { enum engine_id engine = E_UCT; struct time_info ti_default = { .period = TT_NULL }; char *testfile = NULL; char *gtp_port = NULL; char *log_port = NULL; int gtp_sock = -1; char *chatfile = NULL; char *fbookfile = NULL; char *ruleset = NULL; seed = time(NULL) ^ getpid(); int opt; while ((opt = getopt(argc, argv, "c:e:d:Df:g:l:r:s:t:u:")) != -1) { switch (opt) { case 'c': chatfile = strdup(optarg); break; case 'e': if (!strcasecmp(optarg, "random")) { engine = E_RANDOM; } else if (!strcasecmp(optarg, "replay")) { engine = E_REPLAY; } else if (!strcasecmp(optarg, "montecarlo")) { engine = E_MONTECARLO; } else if (!strcasecmp(optarg, "uct")) { engine = E_UCT; } else if (!strcasecmp(optarg, "distributed")) { engine = E_DISTRIBUTED; } else if (!strcasecmp(optarg, "patternscan")) { engine = E_PATTERNSCAN; } else if (!strcasecmp(optarg, "patternplay")) { engine = E_PATTERNPLAY; } else if (!strcasecmp(optarg, "joseki")) { engine = E_JOSEKI; } else { fprintf(stderr, "%s: Invalid -e argument %s\n", argv[0], optarg); exit(1); } break; case 'd': debug_level = atoi(optarg); break; case 'D': debug_boardprint = false; break; case 'f': fbookfile = strdup(optarg); break; case 'g': gtp_port = strdup(optarg); break; case 'l': log_port = strdup(optarg); break; case 'r': ruleset = strdup(optarg); break; case 's': seed = atoi(optarg); break; case 't': /* Time settings to follow; if specified, * GTP time information is ignored. Useful * e.g. when you want to force your bot to * play weaker while giving the opponent * reasonable time to play, or force play * by number of simulations in timed games. */ /* Please see timeinfo.h:time_parse() * description for syntax details. */ if (!time_parse(&ti_default, optarg)) { fprintf(stderr, "%s: Invalid -t argument %s\n", argv[0], optarg); exit(1); } ti_default.ignore_gtp = true; assert(ti_default.period != TT_NULL); break; case 'u': testfile = strdup(optarg); break; default: /* '?' */ usage(argv[0]); exit(1); } } if (log_port) open_log_port(log_port); fast_srandom(seed); if (DEBUGL(0)) fprintf(stderr, "Random seed: %d\n", seed); struct board *b = board_init(fbookfile); if (ruleset) { if (!board_set_rules(b, ruleset)) { fprintf(stderr, "Unknown ruleset: %s\n", ruleset); exit(1); } } struct time_info ti[S_MAX]; ti[S_BLACK] = ti_default; ti[S_WHITE] = ti_default; chat_init(chatfile); char *e_arg = NULL; if (optind < argc) e_arg = argv[optind]; struct engine *e = init_engine(engine, e_arg, b); if (testfile) { unittest(testfile); return 0; } if (gtp_port) { open_gtp_connection(>p_sock, gtp_port); } for (;;) { char buf[4096]; while (fgets(buf, 4096, stdin)) { if (DEBUGL(1)) fprintf(stderr, "IN: %s", buf); enum parse_code c = gtp_parse(b, e, ti, buf); if (c == P_ENGINE_RESET) { ti[S_BLACK] = ti_default; ti[S_WHITE] = ti_default; if (!e->keep_on_clear) { b->es = NULL; done_engine(e); e = init_engine(engine, e_arg, b); } } else if (c == P_UNKNOWN_COMMAND && gtp_port) { /* The gtp command is a weak identity check, * close the connection with a wrong peer. */ break; } } if (!gtp_port) break; open_gtp_connection(>p_sock, gtp_port); } done_engine(e); chat_done(); free(testfile); free(gtp_port); free(log_port); free(chatfile); free(fbookfile); free(ruleset); return 0; }
bool openrct2_initialise() { utf8 userPath[MAX_PATH]; platform_resolve_user_data_path(); platform_get_user_directory(userPath, NULL); if (!platform_ensure_directory_exists(userPath)) { log_fatal("Could not create user directory (do you have write access to your documents folder?)"); return false; } if (!openrct2_setup_rct2_segment()) { log_fatal("Unable to load RCT2 data sector"); return false; } openrct2_set_exe_path(); config_set_defaults(); if (!config_open_default()) { if (!config_find_or_browse_install_directory()) { log_fatal("An RCT2 install directory must be specified!"); return false; } } gOpenRCT2ShowChangelog = true; if (gConfigGeneral.last_run_version != NULL && (strcmp(gConfigGeneral.last_run_version, OPENRCT2_VERSION) == 0)) gOpenRCT2ShowChangelog = false; gConfigGeneral.last_run_version = OPENRCT2_VERSION; config_save_default(); // TODO add configuration option to allow multiple instances // if (!gOpenRCT2Headless && !platform_lock_single_instance()) { // log_fatal("OpenRCT2 is already running."); // return false; // } get_system_info(); if (!gOpenRCT2Headless) { audio_init(); audio_get_devices(); } if (!language_open(gConfigGeneral.language)) { log_fatal("Failed to open language, exiting."); return false; } http_init(); themes_set_default(); themes_load_presets(); title_sequences_set_default(); title_sequences_load_presets(); openrct2_setup_rct2_hooks(); if (!rct2_init()) return false; chat_init(); openrct2_copy_original_user_files_over(); // TODO move to audio initialise function if (str_is_null_or_empty(gConfigSound.device)) { Mixer_Init(NULL); RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_SOUND_DEVICE, uint32) = 0; } else { Mixer_Init(gConfigSound.device); for (int i = 0; i < gAudioDeviceCount; i++) { if (strcmp(gAudioDevices[i].name, gConfigSound.device) == 0) { RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_SOUND_DEVICE, uint32) = i; } } } return true; }
bool openrct2_initialise() { #ifndef DISABLE_NETWORK gHashCTX = EVP_MD_CTX_create(); Guard::Assert(gHashCTX != nullptr, "EVP_MD_CTX_create failed"); #endif // DISABLE_NETWORK crash_init(); // Sets up the environment OpenRCT2 is running in, e.g. directory paths OpenRCT2::_env = OpenRCT2::SetupEnvironment(); if (OpenRCT2::_env == nullptr) { return false; } if (!rct2_interop_setup_segment()) { log_fatal("Unable to load RCT2 data sector"); return false; } if (gConfigGeneral.last_run_version != nullptr && String::Equals(gConfigGeneral.last_run_version, OPENRCT2_VERSION)) { gOpenRCT2ShowChangelog = false; } else { gOpenRCT2ShowChangelog = true; gConfigGeneral.last_run_version = String::Duplicate(OPENRCT2_VERSION); config_save_default(); } // TODO add configuration option to allow multiple instances // if (!gOpenRCT2Headless && !platform_lock_single_instance()) { // log_fatal("OpenRCT2 is already running."); // return false; // } IObjectRepository * objRepo = CreateObjectRepository(OpenRCT2::_env); ITrackDesignRepository * tdRepo = CreateTrackDesignRepository(OpenRCT2::_env); IScenarioRepository * scenarioRepo = CreateScenarioRepository(OpenRCT2::_env); if (!language_open(gConfigGeneral.language)) { log_error("Failed to open configured language..."); if (!language_open(LANGUAGE_ENGLISH_UK)) { log_fatal("Failed to open fallback language..."); return false; } } // TODO Ideally we want to delay this until we show the title so that we can // still open the game window and draw a progress screen for the creation // of the object cache. objRepo->LoadOrConstruct(); // TODO Like objects, this can take a while if there are a lot of track designs // its also really something really we might want to do in the background // as its not required until the player wants to place a new ride. tdRepo->Scan(); scenarioRepo->Scan(); TitleSequenceManager::Scan(); if (!gOpenRCT2Headless) { audio_init(); audio_populate_devices(); } http_init(); theme_manager_initialise(); rct2_interop_setup_hooks(); if (!rct2_init()) { return false; } chat_init(); rct2_copy_original_user_files_over(); return true; }