protected override void Load() { Thread.CurrentThread.Name = "FreelancerGame UIThread"; //Move to stop _TSGetMainThread error on OSX MinimumWindowSize = new Point(640, 480); SetVSync(Config.VSync); new IdentityCamera(this); uithread = Thread.CurrentThread.ManagedThreadId; useintromovies = _cfg.IntroMovies; FLLog.Info("Platform", Platform.RunningOS.ToString() + (IntPtr.Size == 4 ? " 32-bit" : " 64-bit")); FLLog.Info("Available Threads", Environment.ProcessorCount.ToString()); //Cache ResourceManager = new GameResourceManager(this); //Init Audio FLLog.Info("Audio", "Initialising Audio"); Audio = new AudioManager(this); if (_cfg.MuteMusic) { Audio.Music.Volume = 0f; } //Load data FLLog.Info("Game", "Loading game data"); GameData = new GameDataManager(_cfg.FreelancerPath, ResourceManager); IntroMovies = GameData.GetIntroMovies(); MpvOverride = _cfg.MpvOverride; Thread GameDataLoaderThread = new Thread(() => { GameData.LoadData(); Sound = new SoundManager(GameData, Audio); FLLog.Info("Game", "Finished loading game data"); InitialLoadComplete = true; }); GameDataLoaderThread.Name = "GamedataLoader"; GameDataLoaderThread.Start(); // Renderer2D = new Renderer2D(RenderState); Fonts = new FontManager(this); Billboards = new Billboards(); Nebulae = new NebulaVertices(); ViewportManager = new ViewportManager(RenderState); ViewportManager.Push(0, 0, Width, Height); Screenshots = new ScreenshotManager(this); Services.Add(Billboards); Services.Add(Nebulae); Services.Add(ResourceManager); Services.Add(Renderer2D); Services.Add(Config); Services.Add(Fonts); if (useintromovies && IntroMovies.Count > 0) { ChangeState(new IntroMovie(this, 0)); } else { ChangeState(new LoadingDataState(this)); } }
public SystemRenderer(ICamera camera, GameDataManager data, ResourceManager rescache, Game game) { this.camera = camera; AsteroidFields = new List <AsteroidFieldRenderer>(); Nebulae = new List <NebulaRenderer>(); StarSphereModels = new IDrawable[0]; Polyline = new PolylineRender(commands); cache = rescache; rstate = cache.Game.RenderState; this.game = game; gconfig = game.GetService <GameConfig>(); billboards = game.GetService <Billboards>(); resman = game.GetService <ResourceManager>(); nebulae = game.GetService <NebulaVertices>(); dot = (Texture2D)rescache.FindTexture(ResourceManager.WhiteTextureName); DebugRenderer = new PhysicsDebugRenderer(); if (GLExtensions.Features430) { pointLightBuffer = new ShaderStorageBuffer(MAX_POINTS * (16 * sizeof(float))); if (pointLightCull == null) { pointLightCull = new ComputeShader(Resources.LoadString("LibreLancer.Shaders.lightingcull.glcompute")); } } }
public void LoadFontsFromGameData(GameDataManager gd) { infocardFonts = new Dictionary <int, FontVariations>(); var v = new FontVariations(); v.Regular = GetSystemFont("Agency FB"); v.Bold = GetSystemFont("Agency FB", FontStyles.Bold); v.Italic = GetSystemFont("Agency FB", FontStyles.Italic); v.BoldItalic = GetSystemFont("Agency FB", FontStyles.Bold | FontStyles.Italic); v.Size = 14; infocardFonts.Add(-1, v); foreach (var f in gd.GetRichFonts()) { //points = pixels * 72 / 96 int sz = (int)(f.Size * 72f / 96f); var variations = new FontVariations(); variations.Size = sz; variations.Regular = GetSystemFont(f.Name, FontStyles.Regular); variations.Bold = GetSystemFont(f.Name, FontStyles.Bold); variations.Italic = GetSystemFont(f.Name, FontStyles.Italic); variations.BoldItalic = GetSystemFont(f.Name, FontStyles.Bold | FontStyles.Italic); infocardFonts.Add(f.Index, variations); } _loaded = true; }
public Cutscene(IEnumerable <ThnScript> scripts, SpaceGameplay gameplay) { this.game = gameplay.FlGame; this.gameData = gameplay.FlGame.GameData; World = gameplay.world; spawnObjects = false; camera = new ThnCamera(gameplay.FlGame.Viewport); //thn = script; var evs = new List <ThnEvent>(); foreach (var thn in scripts) { totalDuration = Math.Max(totalDuration, thn.Duration); foreach (var ev in thn.Events) { ev.TimeOffset = 0; evs.Add(ev); } AddEntities(thn); } evs.Sort((x, y) => x.Time.CompareTo(y.Time)); foreach (var item in evs) { events.Enqueue(item); } }
public Cutscene(ThnScriptContext context, GameDataManager gameData, Rectangle viewport, Game game) { scriptContext = context; this.game = game; this.gameData = gameData; camera = new ThnCamera(viewport); }
public SoundManager(GameDataManager gameData, AudioManager audio, IUIThread ui) { data = gameData; this.audio = audio; soundCache = new LRUCache <string, LoadedSound>(64, OnLoadSound); this.ui = ui; }
public Cutscene(ThnScriptContext context, SpaceGameplay gameplay) { game = gameplay.FlGame; gameData = gameplay.FlGame.GameData; World = gameplay.world; spawnObjects = false; camera = new ThnCamera(gameplay.FlGame.RenderContext.CurrentViewport); scriptContext = context; }
public Cutscene(ThnScriptContext context, GameDataManager gameData, Viewport viewport, Game game) { this.game = game; this.gameData = gameData; scriptContext = context; camera = new ThnCamera(viewport); Renderer = new SystemRenderer(camera, gameData, game.GetService <GameResourceManager>(), game); World = new GameWorld(Renderer, false); //thn = script; var evs = new List <ThnEvent>(); foreach (var thn in context.Scripts) { totalDuration = Math.Max(totalDuration, thn.Duration); foreach (var ev in thn.Events) { ev.TimeOffset = 0; evs.Add(ev); } AddEntities(thn); } //work around SET_CAMERA not being called in disco (match vanilla behaviour) var firstCamera = Objects.Values.Where(x => x.Camera != null).FirstOrDefault(); if (firstCamera != null) { camera.Transform = firstCamera.Camera; } evs.Sort((x, y) => x.Time.CompareTo(y.Time)); foreach (var item in evs) { events.Enqueue(item); } //Add starspheres in the right order var sorted = ((IEnumerable <Tuple <IDrawable, ThnObject> >)layers).Reverse().OrderBy(x => x.Item2.Entity.SortGroup).ToArray(); Renderer.StarSphereModels = new RigidModel[sorted.Length]; Renderer.StarSphereWorlds = new Matrix4x4[sorted.Length]; Renderer.StarSphereLightings = new Lighting[sorted.Length]; starSphereObjects = new ThnObject[sorted.Length]; for (int i = 0; i < sorted.Length; i++) { Renderer.StarSphereModels[i] = (sorted[i].Item1 as IRigidModelFile).CreateRigidModel(true); Renderer.StarSphereWorlds[i] = sorted[i].Item2.Rotate * Matrix4x4.CreateTranslation(sorted[i].Item2.Translate); Renderer.StarSphereLightings[i] = Lighting.Empty; starSphereObjects[i] = sorted[i].Item2; } //Add objects to the renderer World.RegisterAll(); }
public void LoadFontsFromGameData(GameDataManager gd) { infocardFonts = new Dictionary <int, FontDescription>(); var v = new FontDescription() { FontName = "Agency FB", FontSize = 16 }; infocardFonts.Add(-1, v); foreach (var f in gd.GetRichFonts()) { var desc = new FontDescription() { FontName = f.Name, FontSize = f.Size }; infocardFonts.Add(f.Index, desc); } _loaded = true; }
public static NetCharacter FromDb(ServerCharacter character, GameDataManager gameData) { var nc = new NetCharacter(); nc.Name = character.Name; nc.gData = gameData; nc.Base = character.Base; nc.Ship = gameData.GetShip(character.Ship); nc.Credits = character.Credits; nc.Equipment = new List <NetEquipment>(character.Equipment.Count); foreach (var equip in character.Equipment) { nc.Equipment.Add(new NetEquipment() { Hardpoint = equip.Hardpoint, Equipment = gameData.GetEquipment(equip.Equipment), Health = equip.Health }); } return(nc); }
public void SetGameData(GameDataManager data) { this.data = data; }
protected override void Load() { Thread.CurrentThread.Name = "FreelancerGame UIThread"; //Move to stop _TSGetMainThread error on OSX MinimumWindowSize = new Point(640, 480); SetVSync(Config.Settings.VSync); Config.Settings.RenderContext = RenderContext; new IdentityCamera(this); uithread = Thread.CurrentThread.ManagedThreadId; useintromovies = _cfg.IntroMovies; FLLog.Info("Platform", Platform.RunningOS.ToString() + (IntPtr.Size == 4 ? " 32-bit" : " 64-bit")); FLLog.Info("Available Threads", Environment.ProcessorCount.ToString()); //Cache ResourceManager = new GameResourceManager(this); //Init Audio FLLog.Info("Audio", "Initialising Audio"); Audio = new AudioManager(this); Audio.WaitReady(); Audio.MasterVolume = _cfg.Settings.MasterVolume; Audio.Music.Volume = _cfg.Settings.MusicVolume; //Load data FLLog.Info("Game", "Loading game data"); GameData = new GameDataManager(_cfg.FreelancerPath, ResourceManager); IntroMovies = GameData.GetIntroMovies(); MpvOverride = _cfg.MpvOverride; Saves = new SaveGameFolder(); var saveLoadTask = Task.Run(() => Saves.Load(GetSaveFolder())); Thread GameDataLoaderThread = new Thread(() => { GameData.LoadData(this, () => { Sound = new SoundManager(GameData, Audio, this); Services.Add(Sound); InisLoaded = true; }); FLLog.Info("Game", "Finished loading game data"); saveLoadTask.Wait(); Saves.Infocards = GameData.Ini.Infocards; InitialLoadComplete = true; }); GameDataLoaderThread.Name = "GamedataLoader"; GameDataLoaderThread.Start(); // Fonts = new FontManager(); Billboards = new Billboards(); Nebulae = new NebulaVertices(); RenderContext.PushViewport(0, 0, Width, Height); Screenshots = new ScreenshotManager(this); Typewriter = new Typewriter(this); Services.Add(Billboards); Services.Add(Nebulae); Services.Add(ResourceManager); Services.Add(Config); Services.Add(Fonts); Services.Add(GameData); Services.Add(Sound); Services.Add(Typewriter); Debug = new DebugView(this); if (useintromovies && IntroMovies.Count > 0) { ChangeState(new IntroMovie(this, 0)); } else { ChangeState(new LoadingDataState(this)); } }
public GameServer(string fldir) { Resources = new ServerResourceManager(); GameData = new GameDataManager(fldir, Resources); }
public GameServer(string fldir) { GameData = new GameDataManager(fldir, null); }
public EmbeddedServer(GameDataManager gameData) { Client = new LocalPacketClient(); Server = new GameServer(gameData); Server.LocalPlayer = new Player(Client, Server, Guid.Empty); }
public GameServer(GameDataManager gameData) { Resources = new ServerResourceManager(); GameData = gameData; needLoadData = false; }
public void LoadFontsFromGameData(GameDataManager gd) { LoadFonts(gd.Ini.Fonts, gd.Ini.RichFonts, gd.VFS, gd.Ini.Freelancer.DataPath); }
public SoundManager(GameDataManager gameData, AudioManager audio) { data = gameData; this.audio = audio; }
public ServerDatabase(string connectionString, GameDataManager gameData) { //FLLog.Info("MySQL", "Connecting to database"); //connection = new MySqlConnection(connectionString); //connection.Open(); }