diff --git a/.gitignore b/.gitignore
index e54c63e7e8..3197c384b7 100644
--- a/.gitignore
+++ b/.gitignore
@@ -61,7 +61,8 @@ core
!/Script
/Script/*
!/Script/ProjectApollo
-/Textures/
+!/Textures/
+/Textures/*
!/Textures/ProjectApollo/
/Scenarios
!/Scenarios/Project Apollo - NASSP/
diff --git a/Meshes/ProjectApollo/CueCards/A15LM_CDR_LMP_BUS_LOST.msh b/Meshes/ProjectApollo/CueCards/A15LM_CDR_LMP_BUS_LOST.msh
new file mode 100644
index 0000000000..3c7fca7d50
--- /dev/null
+++ b/Meshes/ProjectApollo/CueCards/A15LM_CDR_LMP_BUS_LOST.msh
@@ -0,0 +1,22 @@
+MSHX1
+GROUPS 1
+LABEL A15LM_CDR_LMP_BUS_LOST
+MATERIAL 1
+TEXTURE 1
+FLAG 0
+GEOM 4 2
+0.0444 0.1079 1.5333 0.0000 0.5771 -0.8167 0.0000 1.0000
+0.1937 0.1079 1.5333 0.0000 0.5771 -0.8167 1.0000 1.0000
+0.0444 0.1420 1.5573 0.0000 0.5771 -0.8167
+0.1937 0.1420 1.5573 0.0000 0.5771 -0.8167 1.0000 0.0000
+0 3 1
+0 2 3
+MATERIALS 1
+A15LM_CDR_LMP_BUS_LOST
+MATERIAL A15LM_CDR_LMP_BUS_LOST
+0.800 0.800 0.800 1.000
+1.000 1.000 1.000 1.000
+0.000 0.000 0.000 1.000 0.000
+0.700 0.700 0.700 1.000
+TEXTURES 1
+ProjectApollo\VC\CueCards\A15LM_CDR_LMP_BUS_LOST.dds
diff --git a/Meshes/ProjectApollo/CueCards/A15LM_DPS_APS_RCS.msh b/Meshes/ProjectApollo/CueCards/A15LM_DPS_APS_RCS.msh
new file mode 100644
index 0000000000..7b49a23ac0
--- /dev/null
+++ b/Meshes/ProjectApollo/CueCards/A15LM_DPS_APS_RCS.msh
@@ -0,0 +1,22 @@
+MSHX1
+GROUPS 1
+LABEL A15LM_DPS_APS_RCS
+MATERIAL 1
+TEXTURE 1
+FLAG 0
+GEOM 4 2
+-0.0895 0.2765 1.6558 0.0000 0.2157 -0.9764 0.0000 1.0000
+0.1974 0.2765 1.6558 0.0000 0.2157 -0.9764 1.0000 1.0000
+-0.0895 0.3300 1.6676 0.0000 0.2157 -0.9764
+0.1974 0.3300 1.6676 0.0000 0.2157 -0.9764 1.0000 0.0000
+0 3 1
+0 2 3
+MATERIALS 1
+A15LM_DPS_APS_RCS
+MATERIAL A15LM_DPS_APS_RCS
+0.800 0.800 0.800 1.000
+1.000 1.000 1.000 1.000
+0.000 0.000 0.000 1.000 0.000
+0.700 0.700 0.700 1.000
+TEXTURES 1
+ProjectApollo\VC\CueCards\A15LM_DPS_APS_RCS.dds
diff --git a/Meshes/ProjectApollo/CueCards/A15LM_DPS_ASCENT.msh b/Meshes/ProjectApollo/CueCards/A15LM_DPS_ASCENT.msh
new file mode 100644
index 0000000000..775e3bcb8a
--- /dev/null
+++ b/Meshes/ProjectApollo/CueCards/A15LM_DPS_ASCENT.msh
@@ -0,0 +1,68 @@
+MSHX1
+GROUPS 1
+LABEL A15LM_DPS_ASCENT
+MATERIAL 1
+TEXTURE 1
+FLAG 0
+GEOM 24 28
+-0.2568 0.1831 1.5806 0.0000 0.7649 -0.6441 0.0000 1.0000
+-0.1160 0.1831 1.5806 0.0000 0.7649 -0.6441 1.0000 1.0000
+-0.2568 0.2986 1.6643 -0.0003 0.4376 -0.8992
+-0.1160 0.2986 1.6643 -0.0054 0.4420 -0.8970 1.0000 0.0000
+-0.2568 0.2637 1.6456 -0.0055 0.5517 -0.8340 0.0000 0.2760
+-0.2568 0.2813 1.6559 -0.0021 0.4823 -0.8760 0.0000 0.1341
+-0.1160 0.2814 1.6558 -0.0160 0.4968 -0.8677 1.0000 0.1341
+-0.1160 0.2645 1.6445 -0.0343 0.5631 -0.8257 1.0000 0.2760
+-0.1160 0.2084 1.6065 -0.0105 0.5971 -0.8021 1.0000 0.7468
+-0.1160 0.1926 1.5920 0.0000 0.7404 -0.6722 1.0000 0.8968
+-0.1160 0.2001 1.5997 0.0000 0.6765 -0.7364 1.0000 0.8218
+-0.2568 0.1926 1.5920 0.0000 0.7404 -0.6722 0.0000 0.8968
+-0.2568 0.2084 1.6065 -0.0018 0.6031 -0.7977 0.0000 0.7468
+-0.2568 0.2001 1.5997 0.0000 0.6765 -0.7364 0.0000 0.8218
+-0.1259 0.1831 1.5806 0.0000 0.7649 -0.6441 0.9298 1.0000
+-0.1259 0.2986 1.6643 -0.0029 0.4398 -0.8981 0.9298 0.0000
+-0.1259 0.2813 1.6559 -0.0090 0.4896 -0.8719 0.9298 0.1341
+-0.1259 0.2643 1.6448 -0.0199 0.5575 -0.8299 0.9298 0.2760
+-0.1259 0.2084 1.6065 -0.0062 0.6001 -0.7999 0.9298 0.7468
+-0.1259 0.2001 1.5997 0.0000 0.6765 -0.7364 0.9298 0.8218
+-0.1259 0.1926 1.5920 0.0000 0.7404 -0.6722 0.9298 0.8968
+-0.2568 0.2455 1.6327 -0.0053 0.5729 -0.8196 0.0000 0.4314
+-0.1160 0.2462 1.6316 -0.0316 0.5665 -0.8235 1.0000 0.4314
+-0.1259 0.2460 1.6319 -0.0185 0.5697 -0.8216 0.9298 0.4314
+23 7 22
+23 17 7
+16 3 6
+16 15 3
+16 4 5
+16 17 4
+18 13 12
+18 19 13
+19 11 13
+19 20 11
+14 9 1
+14 20 9
+0 20 14
+0 11 20
+10 20 19
+10 9 20
+8 19 18
+8 10 19
+6 17 16
+6 7 17
+5 15 16
+5 2 15
+21 17 23
+21 4 17
+12 23 18
+12 21 23
+18 22 8
+18 23 22
+MATERIALS 1
+A15LM_DPS_ASCENT
+MATERIAL A15LM_DPS_ASCENT
+0.800 0.800 0.800 1.000
+1.000 1.000 1.000 1.000
+0.000 0.000 0.000 1.000 0.000
+0.700 0.700 0.700 1.000
+TEXTURES 1
+ProjectApollo\VC\CueCards\A15LM_DPS_ASCENT.dds
diff --git a/Meshes/ProjectApollo/CueCards/A15LM_DPS_PROCEDURE.msh b/Meshes/ProjectApollo/CueCards/A15LM_DPS_PROCEDURE.msh
new file mode 100644
index 0000000000..413839474f
--- /dev/null
+++ b/Meshes/ProjectApollo/CueCards/A15LM_DPS_PROCEDURE.msh
@@ -0,0 +1,22 @@
+MSHX1
+GROUPS 1
+LABEL A15LM_DPS_PROCEDURE
+MATERIAL 1
+TEXTURE 1
+FLAG 0
+GEOM 4 2
+-0.4230 0.6215 1.7027 0.0000 0.1442 -0.9895 0.0000 1.0000
+-0.1948 0.6215 1.7027 0.0000 0.1442 -0.9895 1.0000 1.0000
+-0.4230 0.7983 1.7284 0.0000 0.1442 -0.9895
+-0.1948 0.7983 1.7284 0.0000 0.1442 -0.9895 1.0000 0.0000
+0 3 1
+0 2 3
+MATERIALS 1
+A15LM_DPS_PROCEDURE
+MATERIAL A15LM_DPS_PROCEDURE
+0.800 0.800 0.800 1.000
+1.000 1.000 1.000 1.000
+0.000 0.000 0.000 1.000 0.000
+0.700 0.700 0.700 1.000
+TEXTURES 1
+ProjectApollo\VC\CueCards\A15LM_DPS_PROCEDURE.dds
diff --git a/Meshes/ProjectApollo/CueCards/A15LM_FT_NM.msh b/Meshes/ProjectApollo/CueCards/A15LM_FT_NM.msh
new file mode 100644
index 0000000000..71b7edc990
--- /dev/null
+++ b/Meshes/ProjectApollo/CueCards/A15LM_FT_NM.msh
@@ -0,0 +1,22 @@
+MSHX1
+GROUPS 1
+LABEL A15LM_FT_NM
+MATERIAL 1
+TEXTURE 1
+FLAG 0
+GEOM 4 2
+0.1941 0.1166 1.5425 0.0000 0.5771 -0.8167 0.0000 1.0000
+0.2347 0.1166 1.5425 0.0000 0.5771 -0.8167 1.0000 1.0000
+0.1941 0.2129 1.6105 0.0000 0.5771 -0.8167
+0.2347 0.2129 1.6105 0.0000 0.5771 -0.8167 1.0000 0.0000
+0 3 1
+0 2 3
+MATERIALS 1
+A15LM_FT_NM
+MATERIAL A15LM_FT_NM
+0.800 0.800 0.800 1.000
+1.000 1.000 1.000 1.000
+0.000 0.000 0.000 1.000 0.000
+0.700 0.700 0.700 1.000
+TEXTURES 1
+ProjectApollo\VC\CueCards\A15LM_FT_NM.dds
diff --git a/Orbitersdk/samples/ProjectApollo/Build/VC2017/LEM.vcxproj b/Orbitersdk/samples/ProjectApollo/Build/VC2017/LEM.vcxproj
index fbe893a2df..29111c6602 100644
--- a/Orbitersdk/samples/ProjectApollo/Build/VC2017/LEM.vcxproj
+++ b/Orbitersdk/samples/ProjectApollo/Build/VC2017/LEM.vcxproj
@@ -154,6 +154,9 @@
ProgramDatabase
+
+
+
ProgramDatabase
@@ -371,6 +374,9 @@
+
+
+
diff --git a/Orbitersdk/samples/ProjectApollo/Build/VC2017/LEM.vcxproj.filters b/Orbitersdk/samples/ProjectApollo/Build/VC2017/LEM.vcxproj.filters
index 3d0bd45df9..ceeab52f56 100644
--- a/Orbitersdk/samples/ProjectApollo/Build/VC2017/LEM.vcxproj.filters
+++ b/Orbitersdk/samples/ProjectApollo/Build/VC2017/LEM.vcxproj.filters
@@ -234,6 +234,15 @@
Source Files
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
@@ -455,6 +464,15 @@
Header Files
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
diff --git a/Orbitersdk/samples/ProjectApollo/src_aux/CueCardManager.cpp b/Orbitersdk/samples/ProjectApollo/src_aux/CueCardManager.cpp
index 5d3179adb7..487f5e6233 100644
--- a/Orbitersdk/samples/ProjectApollo/src_aux/CueCardManager.cpp
+++ b/Orbitersdk/samples/ProjectApollo/src_aux/CueCardManager.cpp
@@ -24,7 +24,7 @@ See http://nassp.sourceforge.net/license/ for more details.
#include "CueCardManager.h"
-CueCardManager::CueCardManager(int &vcidx, VESSEL *v, unsigned num) : vc(vcidx)
+CueCardManager::CueCardManager(UINT &vcidx, VESSEL *v, unsigned num) : vc(vcidx)
{
vessel = v;
CueCardLocations.resize(num, CueCardLocation(this));
diff --git a/Orbitersdk/samples/ProjectApollo/src_aux/CueCardManager.h b/Orbitersdk/samples/ProjectApollo/src_aux/CueCardManager.h
index 95d137190a..868227367a 100644
--- a/Orbitersdk/samples/ProjectApollo/src_aux/CueCardManager.h
+++ b/Orbitersdk/samples/ProjectApollo/src_aux/CueCardManager.h
@@ -30,7 +30,7 @@ See http://nassp.sourceforge.net/license/ for more details.
class CueCardManager
{
public:
- CueCardManager(int &vcidx, VESSEL *v, unsigned num);
+ CueCardManager(UINT &vcidx, VESSEL *v, unsigned num);
//Creates cue card, should be called in vessel constructor or clbkPostStep
void CreateCueCard(unsigned location, std::string name, VECTOR3 offs = _V(0, 0, 0));
@@ -49,7 +49,7 @@ class CueCardManager
VESSEL *V() { return vessel; }
VECTOR3 GetVCOffset();
protected:
- int &vc;
+ UINT &vc;
VESSEL *vessel;
std::vector CueCardLocations;
};
diff --git a/Orbitersdk/samples/ProjectApollo/src_aux/Mission.cpp b/Orbitersdk/samples/ProjectApollo/src_aux/Mission.cpp
index e998740d17..e1ff48f60b 100644
--- a/Orbitersdk/samples/ProjectApollo/src_aux/Mission.cpp
+++ b/Orbitersdk/samples/ProjectApollo/src_aux/Mission.cpp
@@ -160,6 +160,11 @@ namespace mission {
AddCSMCueCard(8, "LMP_BOOST-ABORTS");
AddCSMCueCard(9, "LOI_LIMITS");
AddCSMCueCard(10, "CSM_ANTENNA_LOCATIONS");
+ AddLMCueCard(0, "A15LM_DPS_PROCEDURE");
+ AddLMCueCard(1, "A15LM_CDR_LMP_BUS_LOST");
+ AddLMCueCard(2, "A15LM_DPS_APS_RCS");
+ AddLMCueCard(3, "A15LM_DPS_ASCENT");
+ AddLMCueCard(4, "A15LM_FT_NM");
}
bool Mission::LoadMission(const int iMission)
@@ -630,9 +635,14 @@ namespace mission {
return GetCueCards(CSMCueCards, counter, loc, meshname, ofs);
}
+ bool Mission::GetLMCueCards(unsigned &counter, unsigned &loc, std::string &meshname, VECTOR3 &ofs)
+ {
+ return GetCueCards(LMCueCards, counter, loc, meshname, ofs);
+ }
+
bool Mission::GetCueCards(const std::vector &cue, unsigned &counter, unsigned &loc, std::string &meshname, VECTOR3 &ofs)
{
- while (counter < CSMCueCards.size())
+ while (counter < cue.size())
{
if (cue[counter].meshname != "" && cue[counter].meshname != "None")
{
diff --git a/Orbitersdk/samples/ProjectApollo/src_aux/Mission.h b/Orbitersdk/samples/ProjectApollo/src_aux/Mission.h
index 0ad27f0eaf..0c4d56b4bc 100644
--- a/Orbitersdk/samples/ProjectApollo/src_aux/Mission.h
+++ b/Orbitersdk/samples/ProjectApollo/src_aux/Mission.h
@@ -146,6 +146,7 @@ namespace mission
int GetLMNumber() const;
//Get cue cards
bool GetCSMCueCards(unsigned &counter, unsigned &loc, std::string &meshname, VECTOR3 &ofs);
+ bool GetLMCueCards(unsigned &counter, unsigned &loc, std::string &meshname, VECTOR3 &ofs);
//Name of CDR
virtual const std::string& GetCDRName() const;
//Name of CMP
diff --git a/Orbitersdk/samples/ProjectApollo/src_csm/saturn.h b/Orbitersdk/samples/ProjectApollo/src_csm/saturn.h
index 201e0659e4..2cf0a5e314 100644
--- a/Orbitersdk/samples/ProjectApollo/src_csm/saturn.h
+++ b/Orbitersdk/samples/ProjectApollo/src_csm/saturn.h
@@ -4014,7 +4014,7 @@ class Saturn: public ProjectApolloConnectorVessel, public PanelSwitchListener {
int opticscoveridx;
int cmdocktgtidx;
int simbaypanelidx;
- int vcidx;
+ UINT vcidx;
int seatsfoldedidx;
int seatsunfoldedidx;
int coascdridx;
diff --git a/Orbitersdk/samples/ProjectApollo/src_lm/LEM.cpp b/Orbitersdk/samples/ProjectApollo/src_lm/LEM.cpp
index 120b37f93b..8d36c3aca3 100644
--- a/Orbitersdk/samples/ProjectApollo/src_lm/LEM.cpp
+++ b/Orbitersdk/samples/ProjectApollo/src_lm/LEM.cpp
@@ -458,8 +458,8 @@ LEM::LEM(OBJHANDLE hObj, int fmodel) : Payload (hObj, fmodel),
AscentECAMainFeeder("Ascent-ECA-Main-Feeder", Panelsdk),
AscentECAContFeeder("Ascent-ECA-Cont-Feeder", Panelsdk),
vesim(&cbLMVesim, this),
- Failures(this)
-
+ Failures(this),
+ CueCards(vcidx, this, 5)
{
dllhandle = g_Param.hDLL; // DS20060413 Save for later
InitLEMCalled = false;
@@ -1999,7 +1999,10 @@ void LEM::GetScenarioState(FILEHANDLE scn, void *vs)
// the simulation is started in pause mode.
}
- }
+ }
+ else if (!strnicmp(line, CUECARDS_START_STRING, sizeof(CUECARDS_START_STRING))) {
+ CueCards.LoadState(scn);
+ }
else if (!strnicmp(line, "", 11)) { //INTERNALS signals the PanelSDK part of the scenario
Panelsdk.Load(scn); //send the loading to the Panelsdk
}
@@ -2362,6 +2365,7 @@ void LEM::clbkSaveState (FILEHANDLE scn)
aea.SaveState(scn, "AEA_START", "AEA_END");
asa.SaveState(scn, "ASA_START", "ASA_END");
}
+ CueCards.SaveState(scn);
//
// Save the Panel SDK state.
diff --git a/Orbitersdk/samples/ProjectApollo/src_lm/LEM.h b/Orbitersdk/samples/ProjectApollo/src_lm/LEM.h
index 5b8fcd225e..e754b1f281 100644
--- a/Orbitersdk/samples/ProjectApollo/src_lm/LEM.h
+++ b/Orbitersdk/samples/ProjectApollo/src_lm/LEM.h
@@ -71,6 +71,7 @@
#include "checklistController.h"
#include "payload.h"
#include "LMMalfunctionSimulation.h"
+#include "CueCardManager.h"
enum LMRCSThrusters
{
@@ -780,6 +781,7 @@ class LEM : public Payload, public PanelSwitchListener {
PanelSwitches MainPanel;
PanelSwitchesVC MainPanelVC;
PanelSwitchScenarioHandler PSH;
+ CueCardManager CueCards;
SwitchRow AbortSwitchesRow;
diff --git a/Orbitersdk/samples/ProjectApollo/src_lm/lemsystems.cpp b/Orbitersdk/samples/ProjectApollo/src_lm/lemsystems.cpp
index 2bd914a2cc..40574da0e9 100644
--- a/Orbitersdk/samples/ProjectApollo/src_lm/lemsystems.cpp
+++ b/Orbitersdk/samples/ProjectApollo/src_lm/lemsystems.cpp
@@ -2478,6 +2478,15 @@ void LEM::CreateMissionSpecificSystems()
aeaa = new LEM_AEAA();
}
EventTimerDisplay.SetReverseAtZero(pMission->IsLMEventTimerReversingAtZero());
+
+ //Create cue cards
+ unsigned loc, counter = 0;
+ std::string meshname;
+ VECTOR3 ofs;
+ while (pMission->GetLMCueCards(counter, loc, meshname, ofs) == false)
+ {
+ CueCards.CreateCueCard(loc, meshname, ofs);
+ }
}
// SYSTEMS COMPONENTS
diff --git a/Orbitersdk/samples/ProjectApollo/src_lm/lemvc.cpp b/Orbitersdk/samples/ProjectApollo/src_lm/lemvc.cpp
index 3396e7471b..c264fc7044 100644
--- a/Orbitersdk/samples/ProjectApollo/src_lm/lemvc.cpp
+++ b/Orbitersdk/samples/ProjectApollo/src_lm/lemvc.cpp
@@ -1483,6 +1483,33 @@ void LEM::RegisterActiveAreas()
oapiVCRegisterArea(AID_VC_COAS1, PANEL_REDRAW_NEVER, PANEL_MOUSE_LBDOWN);
oapiVCSetAreaClickmode_Spherical(AID_VC_COAS1, COAS1Location + ofs, 0.05);
+ // Cue Cards
+
+ // Below mission and event timer, descent procedures
+ oapiVCRegisterArea(AID_VC_CUE_CARD_LOCATION_1, PANEL_REDRAW_NEVER, PANEL_MOUSE_LBDOWN);
+ oapiVCSetAreaClickmode_Quadrilateral(AID_VC_CUE_CARD_LOCATION_1, _V(-0.311226, 0.662860, 1.708660) + ofs, _V(-0.291192, 0.662860, 1.708660) + ofs,
+ _V(-0.311226, 0.777780, 1.725430) + ofs, _V(-0.291192, 0.777780, 1.725430) + ofs);
+
+ // Below RCS heater switches, CDR/LMP bus lost
+ oapiVCRegisterArea(AID_VC_CUE_CARD_LOCATION_2, PANEL_REDRAW_NEVER, PANEL_MOUSE_LBDOWN);
+ oapiVCSetAreaClickmode_Quadrilateral(AID_VC_CUE_CARD_LOCATION_2, _V(0.113078, 0.116084, 1.539060) + ofs, _V(0.154882, 0.116084, 1.539060) + ofs,
+ _V(0.113078, 0.138590, 1.554900) + ofs, _V(0.154882, 0.138590, 1.554900) + ofs);
+
+ // Below RCS controls, DPS/APS/RCS monitor
+ oapiVCRegisterArea(AID_VC_CUE_CARD_LOCATION_3, PANEL_REDRAW_NEVER, PANEL_MOUSE_LBDOWN);
+ oapiVCSetAreaClickmode_Quadrilateral(AID_VC_CUE_CARD_LOCATION_3, _V(-0.089500, 0.276500, 1.655800) + ofs, _V(0.197400, 0.276500, 1.655800) + ofs,
+ _V(-0.089500, 0.330000, 1.667600) + ofs, _V(0.197400, 0.330000, 1.667600) + ofs);
+
+ // Around RR No Track light, DPS Ascent
+ oapiVCRegisterArea(AID_VC_CUE_CARD_LOCATION_4, PANEL_REDRAW_NEVER, PANEL_MOUSE_LBDOWN);
+ oapiVCSetAreaClickmode_Quadrilateral(AID_VC_CUE_CARD_LOCATION_4, _V(-0.246735, 0.235775, 1.623300) + ofs, _V(-0.179550, 0.235775, 1.623300) + ofs,
+ _V(-0.246735, 0.278400, 1.653300) + ofs, _V(-0.179550, 0.278400, 1.653300) + ofs);
+
+ // Left of lamp test switch, feet to NM conversion
+ oapiVCRegisterArea(AID_VC_CUE_CARD_LOCATION_5, PANEL_REDRAW_NEVER, PANEL_MOUSE_LBDOWN);
+ oapiVCSetAreaClickmode_Quadrilateral(AID_VC_CUE_CARD_LOCATION_5, _V(0.198160, 0.150305, 1.566300) + ofs, _V(0.232670, 0.150305, 1.566300) + ofs,
+ _V(0.198160, 0.198455, 1.600300) + ofs, _V(0.232670, 0.198455, 1.600300) + ofs);
+
//
// Initialize surfaces and switches
//
@@ -1599,6 +1626,13 @@ bool LEM::clbkVCMouseEvent(int id, int event, VECTOR3 &p)
SwitchClick();
SetCOAS();
return true;
+ case AID_VC_CUE_CARD_LOCATION_1:
+ case AID_VC_CUE_CARD_LOCATION_2:
+ case AID_VC_CUE_CARD_LOCATION_3:
+ case AID_VC_CUE_CARD_LOCATION_4:
+ case AID_VC_CUE_CARD_LOCATION_5:
+ CueCards.CycleCueCard(id - AID_VC_CUE_CARD_LOCATION_1);
+ return true;
}
return MainPanelVC.VCMouseEvent(id, event, p);
//return false;
diff --git a/Orbitersdk/samples/ProjectApollo/src_lm/lmresource.h b/Orbitersdk/samples/ProjectApollo/src_lm/lmresource.h
index 0086710f2c..fb35bfc4b6 100644
--- a/Orbitersdk/samples/ProjectApollo/src_lm/lmresource.h
+++ b/Orbitersdk/samples/ProjectApollo/src_lm/lmresource.h
@@ -1360,6 +1360,13 @@
#define AID_VC_EVA_Ant_Handle 5100
+// Cue Cards
+#define AID_VC_CUE_CARD_LOCATION_1 6000
+#define AID_VC_CUE_CARD_LOCATION_2 6001
+#define AID_VC_CUE_CARD_LOCATION_3 6002
+#define AID_VC_CUE_CARD_LOCATION_4 6003
+#define AID_VC_CUE_CARD_LOCATION_5 6004
+
#define IDB_LEM_FDAI_ROLL 10006
// Next default values for new objects
diff --git a/Textures/ProjectApollo/VC/CueCards/A15LM_CDR_LMP_BUS_LOST.dds b/Textures/ProjectApollo/VC/CueCards/A15LM_CDR_LMP_BUS_LOST.dds
new file mode 100644
index 0000000000..c7f1b6714b
Binary files /dev/null and b/Textures/ProjectApollo/VC/CueCards/A15LM_CDR_LMP_BUS_LOST.dds differ
diff --git a/Textures/ProjectApollo/VC/CueCards/A15LM_DPS_APS_RCS.dds b/Textures/ProjectApollo/VC/CueCards/A15LM_DPS_APS_RCS.dds
new file mode 100644
index 0000000000..1f8727d633
Binary files /dev/null and b/Textures/ProjectApollo/VC/CueCards/A15LM_DPS_APS_RCS.dds differ
diff --git a/Textures/ProjectApollo/VC/CueCards/A15LM_DPS_ASCENT.dds b/Textures/ProjectApollo/VC/CueCards/A15LM_DPS_ASCENT.dds
new file mode 100644
index 0000000000..8ffab6d037
Binary files /dev/null and b/Textures/ProjectApollo/VC/CueCards/A15LM_DPS_ASCENT.dds differ
diff --git a/Textures/ProjectApollo/VC/CueCards/A15LM_DPS_PROCEDURE.dds b/Textures/ProjectApollo/VC/CueCards/A15LM_DPS_PROCEDURE.dds
new file mode 100644
index 0000000000..799bf3de04
Binary files /dev/null and b/Textures/ProjectApollo/VC/CueCards/A15LM_DPS_PROCEDURE.dds differ
diff --git a/Textures/ProjectApollo/VC/CueCards/A15LM_FT_NM.dds b/Textures/ProjectApollo/VC/CueCards/A15LM_FT_NM.dds
new file mode 100644
index 0000000000..fed157d1fc
Binary files /dev/null and b/Textures/ProjectApollo/VC/CueCards/A15LM_FT_NM.dds differ