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 void GameplayUpdate(SpaceGameplay gp) { UpdateAudio(); while (gameplayActions.TryDequeue(out var act)) { act(gp); } }
public void Update(SpaceGameplay gameplay, TimeSpan elapsed) { foreach (var t in timers) { t.Value.T += elapsed.TotalSeconds; } CheckMissionScript(gameplay); }
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 bool Update(SpaceGameplay gameplay, TimeSpan elapsed) { forcedLand = null; if (msnrun != null) { msnrun.Update(gameplay, elapsed); } if (forcedLand != null) { Game.ChangeState(new RoomGameplay(Game, this, forcedLand)); return(true); } return(false); }
void SceneChangeRequired() { if (PlayerBase != null) { Game.ChangeState(new RoomGameplay(Game, this, PlayerBase)); hasChanged = true; } else { worldReady = false; toAdd = new List <GameObject>(); gp = new SpaceGameplay(Game, this); Game.ChangeState(gp); hasChanged = true; } }
void SceneChangeRequired() { gameplayActions.Clear(); objects = new Dictionary <int, GameObject>(); if (PlayerBase != null) { Game.ChangeState(new RoomGameplay(Game, this, PlayerBase)); hasChanged = true; } else { gp = new SpaceGameplay(Game, this); Game.ChangeState(gp); hasChanged = true; } }
public void GameplayUpdate(SpaceGameplay gp) { UpdateAudio(); while (gameplayActions.TryDequeue(out var act)) { act(); } var player = gp.world.GetObject("player"); var tr = player.GetTransform(); var pos = Vector3.Transform(Vector3.Zero, tr); var orient = tr.ExtractRotation(); connection.SendPacket(new PositionUpdatePacket() { Position = pos, Orientation = orient }, PacketDeliveryMethod.SequenceB); }
public void Start() { if (MissionNum != 0 && (MissionNum - 1) < Game.GameData.Ini.Missions.Count) { msnrun = new MissionRuntime(Game.GameData.Ini.Missions[MissionNum - 1], this); } if (PlayerBase != null) { Game.ChangeState(new RoomGameplay(Game, this, PlayerBase)); } else { worldReady = false; toAdd = new List <GameObject>(); gp = new SpaceGameplay(Game, this); Game.ChangeState(gp); } }
public void GameplayUpdate(SpaceGameplay gp) { UpdateAudio(); while (gameplayActions.TryDequeue(out var act)) { act(); } var player = gp.player; var tr = player.WorldTransform; var pos = Vector3.Transform(Vector3.Zero, tr); var orient = tr.ExtractRotation(); connection.SendPacket(new PositionUpdatePacket() { Position = pos, Orientation = orient, Speed = player.GetComponent <CEngineComponent>()?.Speed ?? 0 }, PacketDeliveryMethod.SequenceB); }
void CheckMissionScript(SpaceGameplay gameplay) { for (int i = 0; i < msn.Triggers.Count; i++) { if (triggered[i]) { continue; } var tr = msn.Triggers[i]; if (!active[i] && tr.InitState != Data.Missions.TriggerInitState.ACTIVE) { continue; } active[i] = true; if (CheckConditions(tr)) { DoTrigger(i, gameplay); } } }
public bool Update(SpaceGameplay gameplay, TimeSpan elapsed) { forcedLand = null; if (msnrun != null) { msnrun.Update(gameplay, elapsed); } if (forcedLand != null) { Game.ChangeState(new RoomGameplay(Game, this, forcedLand)); return(true); } if (Client != null) { var gt = gp.player.GetTransform(); Client.SendPositionUpdate(gt.Transform(Vector3.Zero), gt.ExtractRotation()); } return(false); }
public LuaAPI(SpaceGameplay gameplay) { this.g = gameplay; }
void DoTrigger(int i, SpaceGameplay gameplay) { active[i] = true; var tr = msn.Triggers[i]; if (!CheckConditions(tr)) { return; } FLLog.Debug("Mission", "Running trigger " + tr.Nickname); if (timers.ContainsKey(tr.Nickname)) { timers.Remove(tr.Nickname); } triggered[i] = true; foreach (var act in tr.Actions) { switch (act.Type) { case TriggerActions.Act_ActTrig: var trname = act.Entry[0].ToString(); for (int j = 0; j < msn.Triggers.Count; j++) { if (trname.Equals(msn.Triggers[j].Nickname, StringComparison.OrdinalIgnoreCase)) { DoTrigger(j, gameplay); break; } } break; case TriggerActions.Act_PlaySoundEffect: session.Game.Sound.PlaySound(act.Entry[0].ToString()); break; case TriggerActions.Act_ForceLand: session.ForceLand(act.Entry[0].ToString()); break; case TriggerActions.Act_AdjAcct: session.Credits += act.Entry[0].ToInt32(); break; case TriggerActions.Act_SpawnSolar: SpawnSolar(act.Entry[0].ToString(), gameplay.world); break; case TriggerActions.Act_StartDialog: RunDialog(msn.Dialogs.First((x) => x.Nickname.Equals(act.Entry[0].ToString(), StringComparison.OrdinalIgnoreCase))); break; case TriggerActions.Act_MovePlayer: gameplay.player.Transform = Matrix4.CreateTranslation(act.Entry[0].ToSingle(), act.Entry[1].ToSingle(), act.Entry[2].ToSingle()); //last param seems to always be one? break; case TriggerActions.Act_LightFuse: var fuse = session.Game.GameData.GetFuse(act.Entry[1].ToString()); var gameObj = gameplay.world.GetObject(act.Entry[0].ToString()); var fzr = new FuseRunnerComponent(gameObj) { Fuse = fuse }; gameObj.Components.Add(fzr); fzr.Run(); break; case TriggerActions.Act_PlayMusic: session.Game.Sound.PlayMusic(act.Entry[3].ToString()); break; case TriggerActions.Act_CallThorn: var thn = new ThnScript(gameplay.FlGame.GameData.ResolveDataPath(act.Entry[0].ToString())); gameplay.Thn = new Cutscene(new ThnScript[] { thn }, gameplay); break; case TriggerActions.Act_SetShipAndLoadout: if (!act.Entry[0].ToString().Equals("none", StringComparison.OrdinalIgnoreCase)) { var loadout = session.Game.GameData.Ini.Loadouts.FindLoadout(act.Entry[1].ToString()); if (loadout != null) { session.PlayerShip = act.Entry[0].ToString(); session.Mounts = new List <EquipMount>(); foreach (var equip in loadout.Equip) { if (equip.Value == null) { continue; } var hp = equip.Key.StartsWith("__noHardpoint") ? null : equip.Key; session.Mounts.Add(new EquipMount(hp, equip.Value)); } } } break; } } }