public void Process(RMResourceProcessor resProc) { foreach (var resource in resources.Keys) { resProc(this, resource); } }
List <BuildResource> PartResources(Part p) { Debug.Log(String.Format("[EL RSM] PartResources: {0} {1}", p.name, p.CrewCapacity)); var bc = new BuildCost(); bc.addPart(p); var rd = new BuildResourceSet(); bool xfer = true; RMResourceProcessor process = delegate(RMResourceSet vr, string res) { ProcessResource(vr, res, rd, xfer); }; bc.resources.Process(process); var reslist = rd.Values; rd.Clear(); bc.container.Process(process); reslist.AddRange(rd.Values); rd.Clear(); xfer = false; bc.hullResoures.Process(process); reslist.AddRange(rd.Values); if (p.CrewCapacity > 0 && !p.name.Contains("kerbalEVA")) { rd.Clear(); for (int i = 0; i < p.protoModuleCrew.Count; i++) { var crew = p.protoModuleCrew[i]; ProcessKerbal(crew, rd); } reslist.AddRange(rd.Values); } return(reslist); }