void game_init(void) { int i; srand(time(NULL)); window = SDL_CreateWindow("Pixel Story", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, SCREEN_WIDTH, SCREEN_HEIGHT, SDL_WINDOW_SHOWN); if (window == NULL) { send_error(EXIT_FAILURE); } render = SDL_CreateRenderer(window, -1, SDL_RENDERER_ACCELERATED | SDL_RENDERER_PRESENTVSYNC); if (render == NULL) { send_error(EXIT_FAILURE); } ani_init(render, "../config/img_monitor.txt", &a); map = (l_map *)calloc(a->anim_count, sizeof(l_map)); for (i = 0; i < a->anim_count; i++) { map[i].x = ((rand() % 180 / 10) + 1) * 16; map[i].y = ((rand() % 130 / 10) + 1) * 16; printf("%d = [%d, %d]\n", i, map[i].x, map[i].y); } l.tex = IMG_LoadTexture(render, "../game_art/tileset.gif"); for (i = 0; i < 100; i++) { l.map[rand() % 20][rand() % 15] = 21; } l.map[0][0] = 0; player.tex = IMG_LoadTexture(render, "../game_art/img_keyboard.gif"); }
int main(int argc, char **argv) { ani_init(); ani_print_attack_speed(); exit(0); }
char load(ImlibImage *im, ImlibProgressFunction progress, char progress_granularity, char immediate_load) { MsAni *ani = NULL; MsChunk *chunk; /* if immediate_load is 1, then dont delay image laoding as below, or */ /* already data in this image - dont load it again */ if (im->data) return 0; /* set the format string member to the lower-case full extension */ /* name for the format - so example names would be: */ /* "png", "jpeg", "tiff", "ppm", "pgm", "pbm", "gif", "xpm" ... */ if (!im->format) im->format = strdup("ani"); if (im->loader || immediate_load || progress) { if (! (ani = ani_init((im->real_file)))) return 0; ani_load (ani); for (chunk = ani->chunks; chunk; chunk = chunk->next) { if (chunk->chunk_id == 0x6E6F6369) { ImlibLoadError err; ImlibImage *temp_im; char *filename; if ( !(filename = ani_save_ico(chunk))) return 0; temp_im = __imlib_LoadImage(filename, progress, progress_granularity, immediate_load, 0, &err); im->w = temp_im->w; im->h = temp_im->h; SET_FLAG(im->flags, F_HAS_ALPHA); if (! (im->data = (DATA32 *) malloc(sizeof(DATA32) * im->w * im->h))) { free(filename); return 0; } memcpy(im->data, temp_im->data, sizeof(DATA32) * im->w * im->h); unlink(filename); free(filename); break; } } ani_cleanup (ani); } if (progress) { progress(im, 100, 0, 0, im->w, im->h); } return 1; progress_granularity = 0; }
int main(int argc, char **argv) { #ifdef DEBUG_ALLOC DebugAllocator::StaticSetUp(); #endif ilInit(); // DevIL Initialize WriteVersion(); SECTREE_MANAGER sectree_manager; CHARACTER_MANAGER char_manager; ITEM_MANAGER item_manager; CShopManager shop_manager; CMobManager mob_manager; CMotionManager motion_manager; CPartyManager party_manager; CSkillManager skill_manager; CPVPManager pvp_manager; LZOManager lzo_manager; DBManager db_manager; AccountDB account_db; LogManager log_manager; MessengerManager messenger_manager; P2P_MANAGER p2p_manager; CGuildManager guild_manager; CGuildMarkManager mark_manager; CDungeonManager dungeon_manager; CRefineManager refine_manager; CBanwordManager banword_manager; CPrivManager priv_manager; CWarMapManager war_map_manager; building::CManager building_manager; CTargetManager target_manager; marriage::CManager marriage_manager; marriage::WeddingManager wedding_manager; CItemAddonManager item_addon_manager; CArenaManager arena_manager; COXEventManager OXEvent_manager; CMonarch Monarch; CHorseNameManager horsename_manager; DESC_MANAGER desc_manager; TrafficProfiler trafficProfiler; CTableBySkill SkillPowerByLevel; CPolymorphUtils polymorph_utils; CProfiler profiler; CBattleArena ba; SpamManager spam_mgr; CThreeWayWar threeway_war; CDragonLairManager dl_manager; CSpeedServerManager SSManager; DSManager dsManager; #ifdef __AUCTION__ AuctionManager auctionManager; #endif if (!start(argc, argv)) { CleanUpForEarlyExit(); return 0; } quest::CQuestManager quest_manager; if (!quest_manager.Initialize()) { CleanUpForEarlyExit(); return 0; } MessengerManager::instance().Initialize(); CGuildManager::instance().Initialize(); fishing::Initialize(); OXEvent_manager.Initialize(); if (speed_server) CSpeedServerManager::instance().Initialize(); Cube_init(); Blend_Item_init(); ani_init(); PanamaLoad(); if ( g_bTrafficProfileOn ) TrafficProfiler::instance().Initialize( TRAFFIC_PROFILE_FLUSH_CYCLE, "ProfileLog" ); // Client PackageCrypt //TODO : make it config const std::string strPackageCryptInfoDir = "package/"; if( !desc_manager.LoadClientPackageCryptInfo( strPackageCryptInfoDir.c_str() ) ) { sys_err("Failed to Load ClientPackageCryptInfo File(%s)", strPackageCryptInfoDir.c_str()); } #if defined (__FreeBSD__) && defined(__FILEMONITOR__) PFN_FileChangeListener pPackageNotifyFunc = &(DESC_MANAGER::NotifyClientPackageFileChanged); //FileMonitorFreeBSD::Instance().AddWatch( strPackageCryptInfoName, pPackageNotifyFunc ); #endif while (idle()); sys_log(0, "<shutdown> Starting..."); g_bShutdown = true; g_bNoMoreClient = true; if (g_bAuthServer) { int iLimit = DBManager::instance().CountQuery() / 50; int i = 0; do { DWORD dwCount = DBManager::instance().CountQuery(); sys_log(0, "Queries %u", dwCount); if (dwCount == 0) break; usleep(500000); if (++i >= iLimit) if (dwCount == DBManager::instance().CountQuery()) break; } while (1); } sys_log(0, "<shutdown> Destroying CArenaManager..."); arena_manager.Destroy(); sys_log(0, "<shutdown> Destroying COXEventManager..."); OXEvent_manager.Destroy(); sys_log(0, "<shutdown> Disabling signal timer..."); signal_timer_disable(); sys_log(0, "<shutdown> Shutting down CHARACTER_MANAGER..."); char_manager.GracefulShutdown(); sys_log(0, "<shutdown> Shutting down ITEM_MANAGER..."); item_manager.GracefulShutdown(); sys_log(0, "<shutdown> Flushing db_clientdesc..."); db_clientdesc->FlushOutput(); sys_log(0, "<shutdown> Flushing p2p_manager..."); p2p_manager.FlushOutput(); sys_log(0, "<shutdown> Destroying CShopManager..."); shop_manager.Destroy(); sys_log(0, "<shutdown> Destroying CHARACTER_MANAGER..."); char_manager.Destroy(); sys_log(0, "<shutdown> Destroying ITEM_MANAGER..."); item_manager.Destroy(); sys_log(0, "<shutdown> Destroying DESC_MANAGER..."); desc_manager.Destroy(); sys_log(0, "<shutdown> Destroying quest::CQuestManager..."); quest_manager.Destroy(); sys_log(0, "<shutdown> Destroying building::CManager..."); building_manager.Destroy(); sys_log(0, "<shutdown> Flushing TrafficProfiler..."); trafficProfiler.Flush(); destroy(); #ifdef DEBUG_ALLOC DebugAllocator::StaticTearDown(); #endif return 1; }