| 
									
										
										
										
											2021-04-24 01:16:49 +02:00
										 |  |  | function filter_ingredients(ingredients, ingredient_filter) | 
					
						
							| 
									
										
										
										
											2021-04-07 01:55:53 +02:00
										 |  |  |     local new_ingredient_list = {} | 
					
						
							|  |  |  |     for _, ingredient_table in pairs(ingredients) do | 
					
						
							| 
									
										
										
										
											2021-04-24 01:16:49 +02:00
										 |  |  |         if ingredient_filter[ingredient_table[1]] then -- name of ingredient_table | 
					
						
							| 
									
										
										
										
											2021-04-07 01:55:53 +02:00
										 |  |  |             table.insert(new_ingredient_list, ingredient_table) | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     return new_ingredient_list | 
					
						
							|  |  |  | end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-10-14 10:20:56 -07:00
										 |  |  | function add_ingredients(ingredients, added_ingredients) | 
					
						
							|  |  |  |     local new_ingredient_list = table.deepcopy(ingredients) | 
					
						
							|  |  |  |     for new_ingredient, count in pairs(added_ingredients) do | 
					
						
							|  |  |  |         local found = false | 
					
						
							|  |  |  |         for _, old_ingredient in pairs(ingredients) do | 
					
						
							|  |  |  |             if old_ingredient[1] == new_ingredient then | 
					
						
							|  |  |  |                 found = true | 
					
						
							|  |  |  |                 break | 
					
						
							|  |  |  |             end | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  |         if not found then | 
					
						
							|  |  |  |             table.insert(new_ingredient_list, {new_ingredient, count}) | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     return new_ingredient_list | 
					
						
							|  |  |  | end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-04-07 01:55:53 +02:00
										 |  |  | function get_any_stack_size(name) | 
					
						
							|  |  |  |     local item = game.item_prototypes[name] | 
					
						
							|  |  |  |     if item ~= nil then | 
					
						
							|  |  |  |         return item.stack_size | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  |     item = game.equipment_prototypes[name] | 
					
						
							|  |  |  |     if item ~= nil then | 
					
						
							|  |  |  |         return item.stack_size | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  |     -- failsafe | 
					
						
							|  |  |  |     return 1 | 
					
						
							| 
									
										
										
										
											2021-07-04 15:25:56 +02:00
										 |  |  | end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | -- from https://stackoverflow.com/a/40180465 | 
					
						
							|  |  |  | -- split("a,b,c", ",") => {"a", "b", "c"} | 
					
						
							|  |  |  | function split(s, sep) | 
					
						
							|  |  |  |     local fields = {} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     sep = sep or " " | 
					
						
							|  |  |  |     local pattern = string.format("([^%s]+)", sep) | 
					
						
							|  |  |  |     string.gsub(s, pattern, function(c) fields[#fields + 1] = c end) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     return fields | 
					
						
							| 
									
										
										
										
											2021-04-07 01:55:53 +02:00
										 |  |  | end |