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; }
void Reset() { error=errorT(); int size=times.size(); times.clear(); counts.clear(); InitLevels(size); }
void World::Init() { InitLevels(); InitItemsForLevels(); InitShrinesForLevels(); startupMenu.Init(ResolveFileName(FILE_MENU_DEF, DIR_WORLD)); scripts.push_back(new LevelScript()); for (auto script = scripts.begin(); script != scripts.end(); ++script) { (*script)->OnStart(this); } Logger::Init(); Logger::Log("World initialized", LOW); }
/*! Estimates shift of current image relative to background image. \param [in] current - current image. \param [in] region - a region at the background where the algorithm start to search current image. Estimated shift is taken relative of the region. \param [in] maxShift - a 2D-point which characterizes maximal possible shift of the region (along X and Y axes). \param [in] hiddenAreaPenalty - a parameter used to restrict searching of the shift at the border of background image. \param [in] regionAreaMin - a parameter used to set minimal area of region use for shift estimation. By default is equal to 25. \return a result of shift estimation. */ bool Estimate(const View & current, const Rect & region, const Point & maxShift, double hiddenAreaPenalty = 0, ptrdiff_t regionAreaMin = REGION_CORRELATION_AREA_MIN) { assert(current.Size() == region.Size() && region.Area() > 0); assert(_current.Size() && _current[0].width >= current.width && _current[0].height >= current.height); if (region.Area() < regionAreaMin) return false; InitLevels(region, maxShift, regionAreaMin); SetCurrent(current, region); Point shift; for (ptrdiff_t i = _levels.size() - 1; i >= 0; i--) { shift.x *= 2; shift.y *= 2; if (!SearchLocalMin(_levels[i], shift, hiddenAreaPenalty)) return false; shift = _levels[i].shift; } return true; }
Meteorites::Meteorites() : Client(), Message(){ SetName("MeteoritesGame"); printf("------------------------------------------------------------------------\n"); printf("Initializing TV-Meteorites, Copyright (C) RealityMakers Entertainment as\n"); printf("------------------------------------------------------------------------\n"); // char *str = new char[strlen(GetCurrentProcess()->GetName())+]; // SetName(); extern Host *host; // AttatchHook = host->CreateHook("Attatch"); // DetatchHook = host->CreateHook("Detatch"); // ShutDownHook = host->CreateHook("ShutDown"); View1 = new View(Rect(0,0,1,1)); View1->SetClearState(false); /* ScoreView = new View(Rect(.8f,0,1,.5f)); ScoreView->SetClearState(false); ScoreView->ConsoleStream::Clear(); ScoreView->Print(" 1: 1261\n 2: 8726\n"); ScoreView->Print(" 3: 8145\n 4: 6923\n"); ScoreView->Print(" 5: 1261\n 6: 8726\n"); ScoreView->Print(" 7: 8145\n 8: 6923\n"); ScoreView->Print(" 9: 1261\n10: 8726\n"); ScoreView->Print("11: 8145\n12: 6923\n"); ScoreView->Print("13: 1261\n14: 8726\n"); ScoreView->Print("15: 8145\n16: 6923\n"); font = new Font("Fonts/Swiss"); ScoreView->ConsoleStream::Apply(font); View1->Apply(ScoreView); */ // View2 = new View(Rect(.8f,0,1,.5f)); View4 = new View(Rect(.75f,0,1,.8f)); // View2->SetClearState(false); // View4->SetClearState(false); // MeteoritesBitmap = new Bitmap("Textures/interface/divider"/*Textures/Title/title"*/,BITMAP_RGB); //Titletv4"); // View *LoadView = new View(Rect(.2f,.2f,1-.2f,1-.2f)); // View4->Apply(MeteoritesBitmap); //View1->Apply(View4); // Initialize scene // Bitmap *DividerBitmap = new Bitmap("Textures/interface/divider"/*Textures/Title/title"*/,BITMAP_RGB); //Titletv4"); Bitmap *ShadowBM = new Bitmap("Textures/Interface/Shipshadow",BITMAP_ARGB); View *Shadow = new View(Rect(.7f,0,1,1)); // View1->Apply(Shadow); ScoreViews = new DynamicArray(); font = new Font("Fonts/Swiss"); for(int n=0; n<4; n++){ // 12.5 x 23.3, 54.2 x 23.3 #define xofs .01f #define yofs .1f #define width (.233f*.8f) #define height (((.125f+.542f)/16.0f)*.8f) #define spacing ((0.1666667f/100.0f)*5.0f) // View *DividerView = new View(Rect(1-width,float(n)*height,1,float(n)*height+height-spacing)); // DividerView->Apply(DividerBitmap); // DividerView->SetClearState(false); // View1->Apply(DividerView); char str[1024]; sprintf(str,"Textures/interface/playernum/no%d",n+1); Bitmap *PlayerNBitmap = new Bitmap(str,BITMAP_RGB); //Titletv4"); View *PlayerNView = new View(Rect(1-width-height+xofs,float(n)*height+yofs,1-width-spacing+xofs,float(n)*height+height-spacing+yofs)); PlayerNView->Apply(PlayerNBitmap); PlayerNView->SetClearState(false); View1->Apply(PlayerNView); float scl = 1-width-height*2.0f+xofs; float sct = float(n)*height+yofs; float scr = 1-width-height+xofs; float scb = float(n)*height+height+yofs; float xs = (scr-scl)*.2f; float ys = (scb-sct)*.2f; scl+=xs; scr-=xs; sct+=ys; scb-=ys; switch(n){ Bitmap *PlaceBitmap; View *PlaceView; case 0: PlaceBitmap = new Bitmap("Textures/interface/first",BITMAP_RGB); //Titletv4"); PlaceView = new View(Rect(scl,sct,scr,scb)); PlaceView->Apply(PlaceBitmap); PlaceView->SetClearState(false); View1->Apply(PlaceView); break; case 1: PlaceBitmap = new Bitmap("Textures/interface/second",BITMAP_RGB); //Titletv4"); PlaceView = new View(Rect(scl,sct,scr,scb)); PlaceView->Apply(PlaceBitmap); PlaceView->SetClearState(false); View1->Apply(PlaceView); break; case 2: PlaceBitmap = new Bitmap("Textures/interface/third",BITMAP_RGB); //Titletv4"); PlaceView = new View(Rect(scl,sct,scr,scb)); PlaceView->Apply(PlaceBitmap); PlaceView->SetClearState(false); View1->Apply(PlaceView); break; } #define fontscale 0 View *v = new View(Rect(1-width+xofs,float(n)*height+fontscale+yofs,1+xofs,float(n)*height+height-spacing-fontscale+yofs)); v->ConsoleStream::Apply(font); v->SetClearState(false); v->Print("0 ..."); /* switch(n){ case 0: v->SetColor(ARGB(1,0,0)); break; case 1: v->SetColor(ARGB(0,0,1)); break; case 2: v->SetColor(ARGB(1,1,0)); break; case 3: v->SetColor(ARGB(0,1,0)); break; case 4: v->SetColor(ARGB(1,.5f,.5f)); break; case 5: v->SetColor(ARGB(0,1,1)); break; case 6: v->SetColor(ARGB(.5f,.5f,.5f)); break; case 7: v->SetColor(ARGB(1,0,0)); break; case 8: v->SetColor(ARGB(1,0,0)); break; case 9: v->SetColor(ARGB(1,0,0)); break; case 10: v->SetColor(ARGB(1,0,0)); break; case 11: v->SetColor(ARGB(1,0,0)); break; case 12: v->SetColor(ARGB(1,0,0)); break; case 13: v->SetColor(ARGB(1,0,0)); break; case 14: v->SetColor(ARGB(1,0,0)); break; case 15: v->SetColor(ARGB(1,0,0)); break; } */ v->SetColor(ARGB(1,1,1)); View1->Apply(v); ScoreViews->Add(v); } // 191,189 // 101 // 85 Info1 = new Bitmap("Textures/Interface/Instructions/Inntasting",BITMAP_RGB); Info2 = new Bitmap("Textures/Interface/Instructions/Kontroll",BITMAP_RGB); Info3 = new Bitmap("Textures/Interface/Instructions/Pickups",BITMAP_RGB); printf("%d,%d\n",Info1->GetWidth(),Info1->GetHeight()); printf("%d,%d\n",Info2->GetWidth(),Info2->GetHeight()); printf("%d,%d\n",Info3->GetWidth(),Info3->GetHeight()); View *InfoView = new View(Rect(.75f,.7f,.95f,.9f)); InfoView->SetClearState(false); View *v1 = new View(Rect(0,0,1,1.3f)); View *v2 = new View(Rect(0,0,1,101.0f/189.0f*1.3f)); View *v3 = new View(Rect(0,0,1,85.0f/189.0f*1.3f)); v1->Apply(Info1); v2->Apply(Info2); v3->Apply(Info3); v1->SetClearState(false); v2->SetClearState(false); v3->SetClearState(false); InfoView->Apply(v1); InfoView->Apply(v2); InfoView->Apply(v3); View1->Apply(InfoView); Info3->SetTranslusency(.8f); null = new Geometry(); null->SetPosition(Vector(0,0,1000000)); Back = new Geometry(); Back->Node::Apply(new Background(Back)); Back->SetPosition(Vector(0,0,800000)); Back->Post(); null->Node::Apply(Back); new Planet(null); cam = new Camera(); cam->SetName("Camera"); null->Node::Apply(cam); camAI = new CameraAI(cam); cam->Apply(camAI); View1->Attatch(cam); PlayerGeometries = new DynamicArray(); for(n=0; n<4; n++){ Geometry *Ship = new Geometry(); char name[1024]; sprintf(name,"Player%d",n); Ship->SetName(name); //Ship->SetPosition(Vector(0,0,-800000)); Ship->Post(); PlayerGeometries->Add(Ship); //AI_Player1 = new PlayerAI(Ship); null->Node::Apply(Ship); Ship->Node::Apply(new PlayerAI(Ship,(View*)ScoreViews->GetItem(n))); } // printf("Initializing levels.\n"); //#ifndef _DEBUG InitLevels(2); NextLevel(10); //#endif printf("Done.\n"); printf("------------------------------------------------------------------------\n"); printf(" TV-Meteorites initalized\n"); printf("------------------------------------------------------------------------\n"); Initialized = true; }
Meteorites::Meteorites() : Client(), Message(){ SetName("MeteoritesGame"); printf("------------------------------------------------------------------------\n"); printf("Initializing TV-Meteorites, Copyright (C) RealityMakers Entertainment as\n"); printf("------------------------------------------------------------------------\n"); // char *str = new char[strlen(GetCurrentProcess()->GetName())+]; // SetName(); extern Host *host; AttatchHook = host->CreateHook("Attatch"); DetatchHook = host->CreateHook("Detatch"); ShutDownHook = host->CreateHook("ShutDown"); View1 = new View(Rect(0,0,1,1)); View1->SetClearState(false); ScoreViews = new DynamicArray(); font = new Font("Fonts/Swiss"); for(int n=0; n<16; n++){ View *v = new View(Rect(.8f,float(n)*.6f/16.0f,1,float(n+1)*.6f/16.0f)); v->ConsoleStream::Apply(font); v->SetClearState(false); v->Print("0"); switch(n){ case 0: v->SetColor(ARGB(1,0,0)); break; case 1: v->SetColor(ARGB(0,0,1)); break; case 2: v->SetColor(ARGB(1,1,0)); break; case 3: v->SetColor(ARGB(0,1,0)); break; case 4: v->SetColor(ARGB(1,.5f,.5f)); break; case 5: v->SetColor(ARGB(0,1,1)); break; case 6: v->SetColor(ARGB(.5f,.5f,.5f)); break; case 7: v->SetColor(ARGB(1,0,0)); break; case 8: v->SetColor(ARGB(1,0,0)); break; case 9: v->SetColor(ARGB(1,0,0)); break; case 10: v->SetColor(ARGB(1,0,0)); break; case 11: v->SetColor(ARGB(1,0,0)); break; case 12: v->SetColor(ARGB(1,0,0)); break; case 13: v->SetColor(ARGB(1,0,0)); break; case 14: v->SetColor(ARGB(1,0,0)); break; case 15: v->SetColor(ARGB(1,0,0)); break; } View1->Apply(v); ScoreViews->Add(v); } /* ScoreView = new View(Rect(.8f,0,1,.5f)); ScoreView->SetClearState(false); ScoreView->ConsoleStream::Clear(); ScoreView->Print(" 1: 1261\n 2: 8726\n"); ScoreView->Print(" 3: 8145\n 4: 6923\n"); ScoreView->Print(" 5: 1261\n 6: 8726\n"); ScoreView->Print(" 7: 8145\n 8: 6923\n"); ScoreView->Print(" 9: 1261\n10: 8726\n"); ScoreView->Print("11: 8145\n12: 6923\n"); ScoreView->Print("13: 1261\n14: 8726\n"); ScoreView->Print("15: 8145\n16: 6923\n"); font = new Font("Fonts/Swiss"); ScoreView->ConsoleStream::Apply(font); View1->Apply(ScoreView); */ // View2 = new View(Rect(.8f,0,1,.5f)); View4 = new View(Rect(.75f,0,1,.8f)); // View2->SetClearState(false); // View4->SetClearState(false); MeteoritesBitmap = new Bitmap("Textures/test"/*Textures/Title/title"*/,BITMAP_RGB); //Titletv4"); View *LoadView = new View(Rect(.2f,.2f,1-.2f,1-.2f)); View4->Apply(MeteoritesBitmap); View1->Apply(View4); // Initialize scene null = new Geometry(); null->SetPosition(Vector(0,0,1000000)); Back = new Geometry(); Back->Node::Apply(new Background(Back)); Back->SetPosition(Vector(0,0,1000000)); Back->Post(); null->Node::Apply(Back); cam = new Camera(); cam->SetName("Camera"); null->Node::Apply(cam); camAI = new CameraAI(cam); cam->Apply(camAI); View1->Attatch(cam); PlayerGeometries = new DynamicArray(); for(n=0; n<5; n++){ Geometry *Ship = new Geometry(); char name[1024]; sprintf(name,"Player%d",n); Ship->SetName(name); //Ship->SetPosition(Vector(0,0,-800000)); Ship->Post(); PlayerGeometries->Add(Ship); //AI_Player1 = new PlayerAI(Ship); null->Node::Apply(Ship); Ship->Node::Apply(new PlayerAI(Ship,(View*)ScoreViews->GetItem(n))); } // printf("Initializing levels.\n"); //#ifndef _DEBUG InitLevels(2); NextLevel(10); //#endif printf("Done.\n"); printf("------------------------------------------------------------------------\n"); printf(" TV-Meteorites initalized\n"); printf("------------------------------------------------------------------------\n"); Initialized = true; }
Meteorites::Meteorites() : Client(), Message(){ ViewBunch = new DynamicArray(); BitmapBunch = new DynamicArray(); SetName("MeteoritesGame"); printf("------------------------------------------------------------------------\n"); printf("Initializing TV-Meteorites, Copyright (C) RealityMakers Entertainment as\n"); printf("------------------------------------------------------------------------\n"); View1 = new View(Rect(0,0,1,1)); View1->SetClearState(false); /* Scores = new ScoreViews(View1); */ // 191,189 // 101 // 85 #ifdef TV2 tv2bm = new Bitmap("Textures/tv2/tv2",BITMAP_RGB); tv2v = new View(Rect( 1-.075f*.8f-.01f, .01f, 1-.01f, .1f*.8f+.01f)); tv2bm->SetTranslusency(.5f); tv2v->Apply(tv2bm); tv2v->SetClearState(false); View1->Apply(tv2v); #endif #ifdef SCHIBSTED tv2bm = new Bitmap("Textures/tv2/slogo",BITMAP_RGB); tv2v = new View(Rect( 1-.09f*.8f*1.5f-.01f, .01f, 1-.01f, .1f*.8f+.01f)); tv2bm->SetTranslusency(.5f); tv2v->Apply(tv2bm); tv2v->SetClearState(false); View1->Apply(tv2v); #endif #ifdef JANCO Bitmap *tv2bm = new Bitmap("Textures/tv2/janco",BITMAP_RGB); View *tv2v = new View(Rect( .9f, 0, 1, .1f)); tv2bm->SetTranslusency(.5f); tv2v->Apply(tv2bm); tv2v->SetClearState(false); View1->Apply(tv2v); #endif Info1 = new Bitmap("Textures/Interface/Instructions/Inntasting",BITMAP_RGB); Info2 = new Bitmap("Textures/Interface/Instructions/Kontroll",BITMAP_RGB); Info3 = new Bitmap("Textures/Interface/Instructions/Pickups",BITMAP_RGB); //printf("%d,%d\n",Info1->GetWidth(),Info1->GetHeight()); //printf("%d,%d\n",Info2->GetWidth(),Info2->GetHeight()); //printf("%d,%d\n",Info3->GetWidth(),Info3->GetHeight()); View *InfoView = new View(Rect(.75f,.7f,.95f,.9f)); InfoView->SetClearState(false); View *v1 = new View(Rect(0,0,1,1.3f)); View *v2 = new View(Rect(0,0,1,101.0f/189.0f*1.3f)); View *v3 = new View(Rect(0,0,1,85.0f/189.0f*1.3f)); InfoViews = new DynamicArray(); InfoViews->Add(InfoView); InfoViews->Add(v1); InfoViews->Add(v2); InfoViews->Add(v3); v1->Apply(Info1); v2->Apply(Info2); v3->Apply(Info3); v1->SetClearState(false); v2->SetClearState(false); v3->SetClearState(false); InfoView->Apply(v1); InfoView->Apply(v2); InfoView->Apply(v3); View1->Apply(InfoView); // Info3->SetTranslusency(.8f); #if 1 scene = new Scene(View1); #else Scores = new ScoreViews(View1); null = new Geometry(); null->SetPosition(Vector(0,0,10000)); Back = new Geometry(); Back->Node::Apply(new Background(Back)); Back->SetPosition(Vector(0,0,8000*3)); Back->Post(); null->Node::Apply(Back); new Nebula(null); new Sun(null); // new Planet(null); cam = new Camera(); cam->SetName(String("Camera")); null->Node::Apply(cam); camAI = new CameraAI(cam); cam->Apply(camAI); View1->Attatch(cam); /* // PlayerGeometries = new DynamicArray(); for(int n=0; n<16; n++){ Geometry *Ship = new Geometry(); char name[1024]; sprintf(name,"Player%d",n); Ship->SetName(String(name)); // fixme: Optimize! //Ship->SetPosition(Vector(0,0,-800000)); Ship->Post(); // PlayerGeometries->Add(Ship); //AI_Player1 = new PlayerAI(Ship); null->Node::Apply(Ship); Ship->Node::Apply(new PlayerAI(Ship,Scores,Scores->GetPlayer(n),0)); } */ //#if 0 for(int n=0; n<10; n++){ Geometry *Rock = new Geometry(); Rock->SetName("Rock"); Rock->Add(Vector(-400,-400,0)); Rock->Add(Vector( 400,-400,0)); Rock->Add(Vector( 400, 400,0)); Rock->Add(Vector(-400, 400,0)); Rock->Add(Vertex(0,0,0)); Rock->Add(Vertex(1,1,0)); Rock->Add(Vertex(2,1,1)); Rock->Add(Vertex(3,0,1)); IndexedPolygon *pol = Rock->NewIndexedPolygon(); pol->Add(0); pol->Add(1); pol->Add(2); pol->Add(3); RockAI *AI_Rock = new RockAI(/*this,*/Rock,400.0f); Rock->Node::Apply(AI_Rock); null->Node::Apply(Rock); } //#endif // #if 0 printf("Initializing levels.\n"); //#ifndef _DEBUG InitLevels(2); NextLevel(10); //#endif printf("Done.\n"); #endif #endif printf("------------------------------------------------------------------------\n"); printf(" TV-Meteorites initalized\n"); printf("------------------------------------------------------------------------\n"); Initialized = true; }