int test_drop_eat(void *state) { int num = 0; /* Load the saved game */ eq(savefile_load("Test1", FALSE), TRUE); num = player->upkeep->inven[0]->number; cmdq_push(CMD_WALK); cmd_set_arg_direction(cmdq_peek(), "direction", 4); run_game_loop(); cmdq_push(CMD_DROP); cmd_set_arg_item(cmdq_peek(), "item", player->upkeep->inven[0]); cmd_set_arg_number(cmdq_peek(), "quantity", player->upkeep->inven[0]->number); run_game_loop(); eq(square_object(cave, player->py, player->px)->number, num); cmdq_push(CMD_EAT); cmd_set_arg_item(cmdq_peek(), "item", square_object(cave, player->py, player->px)); run_game_loop(); if (num > 1) { eq(square_object(cave, player->py, player->px)->number, num - 1); } else { eq(square_object(cave, player->py, player->px), NULL); } ok; }
int __fastcall diablo_init_menu(int a1, int bSinglePlayer) { int v2; // esi int v3; // edi int v4; // ecx int pfExitProgram; // [esp+Ch] [ebp-4h] v2 = bSinglePlayer; v3 = a1; byte_678640 = 1; while ( 1 ) { pfExitProgram = 0; dword_5256E8 = 0; if ( !NetInit(v2, &pfExitProgram) ) break; byte_678640 = 0; if ( (v3 || !*(_DWORD *)&gbValidSaveFile) && (InitLevels(), InitQuests(), InitPortals(), InitDungMsgs(myplr), !*(_DWORD *)&gbValidSaveFile) || (v4 = WM_DIABLOADGAME, !dword_5256E8) ) { v4 = WM_DIABNEWGAME; } run_game_loop(v4); NetClose(); pfile_create_player_description(0, 0); if ( !gbRunGameResult ) goto LABEL_11; } gbRunGameResult = pfExitProgram == 0; LABEL_11: SNetDestroy(); return gbRunGameResult; }
int test_stairs2(void *state) { /* Load the saved game */ eq(savefile_load("Test1", FALSE), TRUE); cmdq_push(CMD_WALK); cmd_set_arg_direction(cmdq_peek(), "direction", 4); run_game_loop(); cmdq_push(CMD_WALK); cmd_set_arg_direction(cmdq_peek(), "direction", 6); run_game_loop(); cmdq_push(CMD_GO_DOWN); run_game_loop(); eq(player->depth, 1); ok; }
int test_stairs1(void *state) { /* Load the saved game */ eq(savefile_load("Test1", FALSE), TRUE); cmdq_push(CMD_GO_DOWN); run_game_loop(); eq(player->depth, 1); ok; }
int test_drop_pickup(void *state) { /* Load the saved game */ eq(savefile_load("Test1", FALSE), TRUE); cmdq_push(CMD_WALK); cmd_set_arg_direction(cmdq_peek(), "direction", 4); run_game_loop(); if (player->upkeep->inven[0]->number > 1) { cmdq_push(CMD_DROP); cmd_set_arg_item(cmdq_peek(), "item", player->upkeep->inven[0]); cmd_set_arg_number(cmdq_peek(), "quantity", 1); run_game_loop(); eq(square_object(cave, player->py, player->px)->number, 1); cmdq_push(CMD_AUTOPICKUP); run_game_loop(); } eq(square_object(cave, player->py, player->px), NULL); ok; }
void Process::Run(Game& game) { // ZeroMQ context zmq::context_t zcontext(1); // Components Api api(zcontext, 5555); Notifier notifier(zcontext, 5556); Server server(zcontext, 5557); // TODO: Read workers from file // TODO: Initialize workers properly and distribute players // TODO: Use a worker vector Worker worker; // Game log Log log("match/log"); World* world; if(utils::FileExists("match/world.txt")) { std::ifstream stream("match/world.txt"); // Read existing world world = game.ReadWorld(stream); } else { // TODO: This should be API-driven // Generate a new world world = game.GenerateWorld(); log.Clear(); } // Print current world std::ostringstream stream; world->PrintStructure(stream); debug::Println("MASTER", "Current world:"); debug::Print(stream.str()); // Start servers std::thread api_thread(run_api, std::ref(api), std::ref(worker), std::ref(*world), std::ref(log)); std::thread server_thread(run_server, std::ref(server), std::ref(worker), std::ref(game), std::ref(*world), std::ref(notifier), std::ref(log)); // Run players worker.Run(); // Run game loop run_game_loop(*world, notifier, log); }
/** * Play Angband */ void play_game(bool new_game) { /* Load a savefile or birth a character, or both */ start_game(new_game); /* Get commands from the user, then process the game world until the * command queue is empty and a new player command is needed */ while (!player->is_dead && player->upkeep->playing) { cmd_get_hook(CMD_GAME); run_game_loop(); } /* Close game on death or quitting */ close_game(); }
int test_magic_missile(void *state) { /* Try making a new game */ cmdq_push(CMD_BIRTH_INIT); cmdq_push(CMD_BIRTH_RESET); cmdq_push(CMD_CHOOSE_RACE); cmd_set_arg_choice(cmdq_peek(), "choice", 4); cmdq_push(CMD_CHOOSE_CLASS); cmd_set_arg_choice(cmdq_peek(), "choice", 1); cmdq_push(CMD_ROLL_STATS); cmdq_push(CMD_NAME_CHOICE); cmd_set_arg_string(cmdq_peek(), "name", "Tyrion"); cmdq_push(CMD_ACCEPT_CHARACTER); cmdq_execute(CMD_BIRTH); eq(player->is_dead, FALSE); cave_generate(&cave, player); on_new_level(); notnull(cave); eq(player->chp, player->mhp); eq(player->food, PY_FOOD_FULL - 1); cmdq_push(CMD_STUDY); cmd_set_arg_choice(cmdq_peek(), "spell", 0); run_game_loop(); cmdq_push(CMD_CAST); cmd_set_arg_choice(cmdq_peek(), "spell", 0); cmd_set_arg_target(cmdq_peek(), "target", 2); run_game_loop(); noteq(player->csp, player->msp); ok; }