private IEnumerator <YieldInstruction> start_task_in_all_workshops(IWorkshopTask task) { foreach (var ws in Workshops.Values.ToList()) { yield return(StartCoroutine(ws.StartTask(task))); } }
private void Update() { if (sync_task != null && sync_task.Valid) { StartCoroutine(start_task_in_all_workshops(sync_task)); } sync_task = null; }
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(); }
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(); }
public abstract void StartTask(IWorkshopTask task);
public abstract IEnumerator <YieldInstruction> StartTask(IWorkshopTask task);