1package com.fs.starfarer.api.impl.campaign.missions.academy;
3import java.util.ArrayList;
4import java.util.Arrays;
5import java.util.Collection;
6import java.util.HashSet;
8import java.util.Random;
11import com.fs.starfarer.api.impl.campaign.missions.hub.ReqMode;
12import com.fs.starfarer.api.util.WeightedRandomPicker;
16 public static String
SOCIAL =
"social";
20 public static String
WEIRD =
"weird";
23 public static class Department {
25 public Set<String> tags =
new HashSet<String>();
27 public Department(String name, String ... tags) {
29 for (String tag : tags) {
35 public static List<Department>
departments =
new ArrayList<Department>();
36 public static void add(String name, String ... tags) {
73 add(
"Templeman Hyperwave Theory",
WEIRD);
79 public static String
pick(Random random, ReqMode mode, String ... tags) {
80 WeightedRandomPicker<Department> picker =
new WeightedRandomPicker<Department>(random);
82 Set<String> tagSet =
new HashSet<String>();
83 tagSet.addAll(Arrays.asList(tags));
93 Department d = picker.pick();
99 protected static boolean matchesTags(ReqMode mode, Collection<String> tags, Collection<String>
set) {
102 for (String tag : tags)
if (!
set.contains(tag))
return false;
105 for (String tag : tags)
if (
set.contains(tag))
return true;
108 for (String tag : tags)
if (!
set.contains(tag))
return true;
111 for (String tag : tags)
if (
set.contains(tag))
return false;
117 public static String
pick(Random random, String ... tags) {
118 WeightedRandomPicker<Department> picker =
new WeightedRandomPicker<Department>(random);
121 for (String tag : tags) {
122 if (d.tags.contains(tag)) {
129 Department d = picker.pick();
136 WeightedRandomPicker<Department> picker =
new WeightedRandomPicker<Department>(random);
139 for (String tag : tags) {
140 if (!d.tags.contains(tag)) {
147 Department d = picker.pick();
static boolean matchesTags(ReqMode mode, Collection< String > tags, Collection< String > set)
static void add(String name, String ... tags)
static String pick(Random random, ReqMode mode, String ... tags)
static String pickWithAllTags(Random random, String ... tags)
static List< Department > departments
static String pick(Random random, String ... tags)