public bool Update(MyPlayer player, MyEntity entity) //returns if lost
        {
            //MySessionComponentMission.Static.TryCreateFromDefault(Id);

            //if (IsLocal(player.Id))
            //    UpdateLocal(player.Id);

            if (!Sync.IsServer)
            {
                return(false);
            }

            MyMissionTriggers mtrig;

            if (!MissionTriggers.TryGetValue(player.Id, out mtrig))
            {
                //Debug.Assert(false,"Bad ID for update in missionTriggers");
                mtrig = TryCreateFromDefault(player.Id, false);
            }
            mtrig.UpdateWin(player, entity);
            if (!mtrig.Won)
            {
                mtrig.UpdateLose(player, entity);
            }
            else
            {
                m_someoneWon = true;
                MyAnalyticsHelper.ReportTutorialEnd();
                MyTutorialHelper.MissionSuccess();
            }
            return(mtrig.Lost);
        }
        public override bool Update(bool hasFocus)
        {
            var ret = base.Update(hasFocus);

            if (m_okButton.Enabled && !MyTutorialHelper.IsUnlocked(((Tuple <string, MyWorldInfo>)m_scenarioTable.SelectedRow.UserData).Item2.SessionName) && !MyFakes.DEVELOPMENT_PRESET)
            {
                m_okButton.Enabled = false;
            }
            return(ret);
        }
        protected void RefreshGameList(bool tutorials = false)
        {
            int selectedIndex = m_scenarioTable.SelectedRowIndex ?? -1;

            m_scenarioTable.Clear();
            Color?color = null;

            for (int index = 0; index < m_availableSaves.Count; index++)
            {
                var checkpoint = m_availableSaves[index].Item2;
                var name       = new StringBuilder(checkpoint.SessionName);
                if (tutorials)
                {
                    if (MyTutorialHelper.IsUnlocked(checkpoint.SessionName) || MyFakes.DEVELOPMENT_PRESET)
                    {
                        color = null;
                    }
                    else
                    {
                        color = Color.Gray;
                    }
                }
                var row = new MyGuiControlTable.Row(m_availableSaves[index]);
                row.AddCell(new MyGuiControlTable.Cell(text: String.Empty, textColor: color, icon: GetIcon(m_availableSaves[index])));
                row.AddCell(new MyGuiControlTable.Cell(text: name, textColor: color, userData: name));
                m_scenarioTable.Add(row);

                // Select row with same world ID as we had before refresh.
                if (index == selectedIndex)
                {
                    m_selectedRow = index;
                    m_scenarioTable.SelectedRow = row;
                }
            }

            m_scenarioTable.SelectedRowIndex = m_selectedRow;
            m_scenarioTable.ScrollToSelection();
            FillRight();
        }