/** ** Make new player colors ** ** @param l Lua state. */ static int CclNewPlayerColors(lua_State *l) { LuaCheckArgs(l, 0); SetPlayersPalette(); return 0; }
/** ** Load all. ** ** Call each module to load additional files (graphics,sounds). */ void LoadModules() { LoadFonts(); LoadIcons(); LoadCursors(PlayerRaces.Name[ThisPlayer->Race]); UI.Load(); #ifndef DYNAMIC_LOAD LoadMissileSprites(); #endif LoadConstructions(); LoadDecorations(); LoadUnitTypes(); InitPathfinder(); LoadUnitSounds(); MapUnitSounds(); if (SoundEnabled()) { InitSoundClient(); } SetPlayersPalette(); UI.Minimap.Create(); SetDefaultTextColors(UI.NormalFontColor, UI.ReverseFontColor); }
/** ** Create palette. */ global void VideoCreatePalette(struct Palette* palette) { int i; for(i = 0; i < 256; i++) { Pixels[i]=SDL_MapRGB(Screen->format, (palette[i].r<<2)&0xFF, (palette[i].g<<2)&0xFF, (palette[i].b<<2)&0xFF); DebugLevel3(__FUNCTION__": %02x %02x %02x\n", (palette[i].r<<2)&0xFF, (palette[i].g<<2)&0xFF, (palette[i].b<<2)&0xFF); } SetPlayersPalette(); }
/** ** Create palette. */ global void VideoCreatePalette(struct Palette* palette) { XColor color; XWindowAttributes xwa; int i; // // Get some colors: // XGetWindowAttributes(TheDisplay,TheMainWindow,&xwa); for( i=0; i<256; ++i ) { color.red=palette[i].r*65535/63; color.green=palette[i].g*65535/63; color.blue=palette[i].b*65535/63; color.flags=DoRed|DoGreen|DoBlue; if( !XAllocColor(TheDisplay,xwa.colormap,&color) ) { fprintf(stderr,"Cannot allocate color\n"); exit(-1); } Pixels[i]=color.pixel; } SetPlayersPalette(); }
/** ** Make new player colors */ local SCM CclNewPlayerColors(void) { SetPlayersPalette(); return SCM_UNSPECIFIED; }
/** ** CreateGame. ** ** Load map, graphics, sounds, etc ** ** @param filename map filename ** @param map map loaded ** ** @todo FIXME: use in this function InitModules / LoadModules!!! */ void CreateGame(const char *filename, CMap *map) { int i; if (SaveGameLoading) { SaveGameLoading = 0; // Load game, already created game with Init/LoadModules CommandLog(NULL, NoUnitP, FlushCommands, -1, -1, NoUnitP, NULL, -1); return; } InitVisionTable(); // build vision table for fog of war InitPlayers(); if (Map.Info.Filename.empty() && filename) { char path[PATH_MAX]; Assert(filename); LibraryFileName(filename, path, sizeof(path)); if(strcasestr(filename, ".smp")) { LuaLoadFile(path); } } for (i = 0; i < PlayerMax; ++i) { int playertype = Map.Info.PlayerType[i]; // Network games only: if (GameSettings.Presets[i].Type != SettingsPresetMapDefault) { playertype = GameSettings.Presets[i].Type; } CreatePlayer(playertype); } if (filename) { if (CurrentMapPath != filename) { strcpy_s(CurrentMapPath, sizeof(CurrentMapPath), filename); } // // Load the map. // InitUnitTypes(1); LoadMap(filename, map); // HARDCODING FOG OF WAR TRUE. It doesn't currently use preferences on a game restart - Should be changed map->NoFogOfWar = true; Map.Reveal(); } GameCycle = 0; FastForwardCycle = 0; SyncHash = 0; InitSyncRand(); if (IsNetworkGame()) { // Prepare network play DebugPrint("Client setup: Calling InitNetwork2\n"); InitNetwork2(); } else { if (LocalPlayerName && strcmp(LocalPlayerName, "Anonymous")) { ThisPlayer->SetName(LocalPlayerName); } } CallbackMusicOn(); #if 0 GamePaused = true; #endif if (FlagRevealMap) { Map.Reveal(); } // // Setup game types // // FIXME: implement more game types if (GameSettings.GameType != SettingsGameTypeMapDefault) { switch (GameSettings.GameType) { case SettingsGameTypeMelee: break; case SettingsGameTypeFreeForAll: GameTypeFreeForAll(); break; case SettingsGameTypeTopVsBottom: GameTypeTopVsBottom(); break; case SettingsGameTypeLeftVsRight: GameTypeLeftVsRight(); break; case SettingsGameTypeManVsMachine: GameTypeManVsMachine(); break; case SettingsGameTypeManTeamVsMachine: GameTypeManTeamVsMachine(); // Future game type ideas #if 0 case SettingsGameTypeOneOnOne: break; case SettingsGameTypeCaptureTheFlag: break; case SettingsGameTypeGreed: break; case SettingsGameTypeSlaughter: break; case SettingsGameTypeSuddenDeath: break; case SettingsGameTypeTeamMelee: break; case SettingsGameTypeTeamCaptureTheFlag: break; #endif } } // // Graphic part // SetPlayersPalette(); InitIcons(); LoadIcons(); LoadCursors(PlayerRaces.Name[ThisPlayer->Race]); UnitUnderCursor = NoUnitP; InitMissileTypes(); #ifndef DYNAMIC_LOAD LoadMissileSprites(); #endif InitConstructions(); LoadConstructions(); LoadUnitTypes(); LoadDecorations(); InitSelections(); InitUserInterface(); UI.Load(); UI.Minimap.Create(); Map.Init(); PreprocessMap(); // // Sound part // LoadUnitSounds(); MapUnitSounds(); if (SoundEnabled()) { InitSoundClient(); } // // Spells // InitSpells(); // // Init units' groups // InitGroups(); // // Init players? // DebugPlayers(); PlayersInitAi(); // // Upgrades // InitUpgrades(); // // Dependencies // InitDependencies(); // // Buttons (botpanel) // InitButtons(); // // Triggers // InitTriggers(); SetDefaultTextColors(UI.NormalFontColor, UI.ReverseFontColor); #if 0 if (!UI.SelectedViewport) { UI.SelectedViewport = UI.Viewports; } #endif UI.SelectedViewport->Center( ThisPlayer->StartX, ThisPlayer->StartY, TileSizeX / 2, TileSizeY / 2); // // Various hacks wich must be done after the map is loaded. // // FIXME: must be done after map is loaded InitAStar(); // // FIXME: The palette is loaded after the units are created. // FIXME: This loops fixes the colors of the units. // for (i = 0; i < NumUnits; ++i) { // I don't really think that there can be any rescued // units at this point. if (Units[i]->RescuedFrom) { Units[i]->Colors = &Units[i]->RescuedFrom->UnitColors; } else { Units[i]->Colors = &Units[i]->Player->UnitColors; } } GameResult = GameNoResult; CommandLog(NULL, NoUnitP, FlushCommands, -1, -1, NoUnitP, NULL, -1); Video.ClearScreen(); }