コード例 #1
0
        void PlayScript(StoryCutsceneIni ct, CutsceneState state)
        {
            ui.Visible = false;
            cState     = CutsceneState.Regular;
            string scName = ct.Encounters[0].Action;

            if (!string.IsNullOrEmpty(ct.Encounters[0].Offer))
            {
                scName = ct.Encounters[0].Offer;
                cState = CutsceneState.Offer;
            }
            switch (state)
            {
            case CutsceneState.Decision:
                scName = ct.Encounters[0].Decision;
                cState = state;
                break;

            case CutsceneState.Accept:
                scName = ct.Encounters[0].Accept;
                cState = state;
                break;

            case CutsceneState.Reject:
                scName = ct.Encounters[0].Reject;
                cState = state;
                break;
            }
            var script = new ThnScript(session.Game.GameData.ResolveDataPath(scName));

            currentCutscene = ct;
            RoomDoSceneScript(script, ScriptState.Cutscene);
        }
コード例 #2
0
 public void FinishCutscene(StoryCutsceneIni cutscene)
 {
     ActiveCutscenes.Remove(cutscene);
     connection.SendPacket(new RTCCompletePacket()
     {
         RTC = cutscene.RefPath
     },
                           NetDeliveryMethod.ReliableSequenced);
 }
コード例 #3
0
 public void AddRTC(string[] paths)
 {
     ActiveCutscenes = new List <StoryCutsceneIni>();
     foreach (var path in paths)
     {
         var rtc = new StoryCutsceneIni(Game.GameData.Ini.Freelancer.DataPath + path, Game.GameData.VFS);
         rtc.RefPath = path;
         ActiveCutscenes.Add(rtc);
     }
 }
コード例 #4
0
 private void SceneOnScriptFinished(ThnScript obj)
 {
     if (waitingForFinish != null && obj == waitingForFinish)
     {
         if (currentCutscene != null)
         {
             if (cState == CutsceneState.Decision)
             {
                 return;
             }
             FadeOut(0.25, () =>
             {
                 RoomDoSceneScript(null, ScriptState.None);
                 ui.Visible = true;
                 FLLog.Info("Thn", "Finished cutscene");
                 if (cState == CutsceneState.Regular)
                 {
                     session.FinishCutscene(currentCutscene);
                     currentCutscene = null;
                     if (toPlay.Count > 0)
                     {
                         ProcessNextCutscene();
                     }
                 }
                 else if (cState == CutsceneState.Offer)
                 {
                     PlayScript(currentCutscene, CutsceneState.Decision);
                     ui.Event("MissionOffer", currentCutscene.Encounters[0].MissionTextId);
                 }
                 FadeIn(0.2, 0.25);
             });
         }
         else if (currentState == ScriptState.Launch)
         {
             SendLaunch();
         }
         else
         {
             currentState = ScriptState.None;
             SetRoomCameraAndShip();
             animatingLetterbox = true;
         }
     }
 }
コード例 #5
0
 public void FinishCutscene(StoryCutsceneIni cutscene)
 {
     ActiveCutscenes.Remove(cutscene);
     rpcServer.RTCComplete(cutscene.RefPath);
 }