コード例 #1
0
 private IEnumerator <YieldInstruction> start_task_in_all_workshops(IWorkshopTask task)
 {
     foreach (var ws in Workshops.Values.ToList())
     {
         yield return(StartCoroutine(ws.StartTask(task)));
     }
 }
コード例 #2
0
 private void Update()
 {
     if (sync_task != null && sync_task.Valid)
     {
         StartCoroutine(start_task_in_all_workshops(sync_task));
     }
     sync_task = null;
 }
コード例 #3
0
        public void Draw()
        {
            GUILayout.BeginVertical();
            if (IsActive)
            {
                GUILayout.Label(VesselName, Styles.enabled, GUILayout.ExpandWidth(true));
            }
            else if (GUILayout.Button(new GUIContent(VesselName, "Press to focus on Map"),
                                      Styles.white, GUILayout.ExpandWidth(true)))
            {
                focusVessel();
            }
            IWorkshopTask sync_task = null;

            foreach (var item in DisplayOrder)
            {
                var pw = ProtoWorkshops[item.Value];
                if (!pw.isOperable)
                {
                    continue;
                }
                GUILayout.BeginHorizontal();
                pw.Draw();
                if (IsActive && ProtoWorkshops.Count > 1)
                {
                    var task = Workshops[item.Value].GetCurrentTask();
                    if (!task.Valid)
                    {
                        GUILayout.Label(new GUIContent("⇶", "Workshop is idle"),
                                        Styles.inactive, GUILayout.Width(25));
                    }
                    else if (GUILayout.Button(new GUIContent("⇶", "Construct this Kit using all workshops"),
                                              Styles.enabled_button, GUILayout.Width(25)))
                    {
                        sync_task = task;
                    }
                }
                GUILayout.EndHorizontal();
            }
            if (sync_task != null && sync_task.Valid)
            {
                Workshops.Values.ForEach(ws => ws.StartTask(sync_task));
            }
            GUILayout.EndVertical();
        }
コード例 #4
0
 public void Draw()
 {
     GUILayout.BeginVertical();
     if (IsActive)
     {
         GUILayout.Label(VesselName, Styles.enabled, GUILayout.ExpandWidth(true));
     }
     else if (GUILayout.Button(new GUIContent(VesselName, "Press to focus on Map"),
                               Styles.white,
                               GUILayout.ExpandWidth(true)))
     {
         focusVessel();
     }
     foreach (var item in ProtoWorkshops)
     {
         var pw = item.Value;
         if (!pw.isOperable)
         {
             continue;
         }
         GUILayout.BeginHorizontal();
         pw.Draw();
         if (IsActive && ProtoWorkshops.Count > 1)
         {
             if (Workshops.TryGetValue(item.Key, out var ws))
             {
                 var task = ws.GetCurrentTask();
                 if (!task.Valid)
                 {
                     GUILayout.Label(new GUIContent("⇶", "Workshop is idle"),
                                     Styles.inactive,
                                     GUILayout.Width(25));
                 }
                 else if (GUILayout.Button(new GUIContent("⇶", "Construct this Kit using all workshops"),
                                           Styles.enabled_button,
                                           GUILayout.Width(25)))
                 {
                     sync_task = task;
                 }
             }
         }
         GUILayout.EndHorizontal();
     }
     GUILayout.EndVertical();
 }
コード例 #5
0
 public abstract void StartTask(IWorkshopTask task);
コード例 #6
0
 public abstract IEnumerator <YieldInstruction> StartTask(IWorkshopTask task);