Map<Object, Object> out = Maps.newHashMapWithExpectedSize(5); out.put("species1", mutation.getAllele0().getUID()); out.put("species2", mutation.getAllele1().getUID()); out.put("chance", mutation.getBaseChance()); IChromosomeType[] karyotype = mutation.getRoot().getKaryotype(); Map<String, Object> results = Maps.newHashMapWithExpectedSize(karyotype.length); for (IAllele allele : mutation.getTemplate()) { if (chromosome.getAlleleClass().isInstance(allele)) { results.put(chromosome.getName(), MetaGenome.getAlleleMeta(allele)); Map<Integer, String> conditions = Maps.newHashMapWithExpectedSize(mutation.getSpecialConditions().size()); int i = 0; for (String condition : mutation.getSpecialConditions()) { conditions.put(++i, condition);
@Nullable public IElementGroup createMutation(int x, int y, int width, int height, IMutation mutation, IAllele species, IBreedingTracker breedingTracker) { if (breedingTracker.isDiscovered(mutation)) { PaneLayout element = new PaneLayout(x, y, width, height); ISpeciesRoot speciesRoot = mutation.getRoot(); int speciesIndex = speciesRoot.getSpeciesChromosomeType().ordinal(); IDatabasePlugin plugin = mutation.getRoot().getSpeciesPlugin(); Map<String, ItemStack> iconStacks = plugin.getIndividualStacks(); ItemStack partner = iconStacks.get(mutation.getPartner(species).getUID()); IAllele resultAllele = mutation.getTemplate()[speciesIndex]; ItemStack result = iconStacks.get(resultAllele.getUID()); element.add(new ItemElement(0, 0, partner), new ItemElement(33, 0, result)); createProbabilityArrow(element, mutation, 18, 4, breedingTracker); return element; } // Do not display secret undiscovered mutations. if (mutation.isSecret()) { return null; } return createUnknownMutationGroup(x, y, width, height, mutation, breedingTracker); }
private static String getMutationString(IMutation mutation) { String species0 = mutation.getAllele0().getUID(); String species1 = mutation.getAllele1().getUID(); String resultSpecies = mutation.getTemplate()[0].getUID(); return String.format(MUTATION_FORMAT, species0, species1, resultSpecies); }
@Override public List<IMutation> getCombinations(IAlleleSpecies parentSpecies0, IAlleleSpecies parentSpecies1, boolean shuffle) { List<IMutation> combinations = new ArrayList<>(); String parentSpecies1UID = parentSpecies1.getUID(); for (IMutation mutation : getMutations(shuffle)) { if (mutation.isPartner(parentSpecies0)) { IAllele partner = mutation.getPartner(parentSpecies0); if (partner.getUID().equals(parentSpecies1UID)) { combinations.add(mutation); } } } return combinations; }
public static ResearchNote createMutationNote(GameProfile researcher, IMutation mutation) { NBTTagCompound compound = new NBTTagCompound(); compound.setString("ROT", mutation.getRoot().getUID()); compound.setString("AL0", mutation.getAllele0().getUID()); compound.setString("AL1", mutation.getAllele1().getUID()); compound.setString("RST", mutation.getTemplate()[0].getUID()); return new ResearchNote(researcher, MUTATION, compound); }
new ControlUnknownMutation(this, ox + dx, y, 44, 16); } else { new ControlResultantMutation(this, ox + dx, y, mutation, specificChance, system, mutation.getAllele0(), mutation.getAllele1()); y += 10; for (IMutation mutation : further) { IAllele speciesComb = mutation.getPartner(speciesCurrent); float specificChance = getSpecificChance(ind, mutation, system); if (!isMaster && !isKnown(system, mutation)) { new ControlUnknownMutation(this, ox + dx, y, 44, 16); } else { new ControlFurtherMutation(this, ox + dx, y, mutation, specificChance, system, speciesCurrent, (IAlleleSpecies) speciesComb, (IAlleleSpecies) mutation.getTemplate()[0]);
@Nullable public IElementGroup createMutationResultant(int x, int y, int width, int height, IMutation mutation, IBreedingTracker breedingTracker) { if (breedingTracker.isDiscovered(mutation)) { IElementGroup element = new PaneLayout(x, y, width, height); IAlyzerPlugin plugin = mutation.getRoot().getAlyzerPlugin(); Map<String, ItemStack> iconStacks = plugin.getIconStacks(); ItemStack firstPartner = iconStacks.get(mutation.getAllele0().getUID()); ItemStack secondPartner = iconStacks.get(mutation.getAllele1().getUID()); element.add(new ItemElement(0, 0, firstPartner), createProbabilityAdd(mutation, 21, 4), new ItemElement(33, 0, secondPartner)); return element; } // Do not display secret undiscovered mutations. if (mutation.isSecret()) { return null; } return createUnknownMutationGroup(x, y, width, height, mutation); }
@Override public void getTooltip(final Tooltip tooltip, ITooltipFlag tooltipFlag) { if (this.type == 1 && this.discovered) { final IAlleleSpecies species1 = this.value.getAllele0(); final IAlleleSpecies species2 = this.value.getAllele1(); final IBreedingSystem system = ((WindowAbstractDatabase) this.getTopParent()).getBreedingSystem(); final float chance = system.getChance(this.value, Window.get(this).getPlayer(), species1, species2); tooltip.add(I18N.localise(DatabaseConstants.CONTROL_KEY + ".chance", chance)); for (final String string : this.value.getSpecialConditions()) { tooltip.add(string); } } } }
private float getSpecificChance(IIndividual ind, IMutation mutation, IBreedingSystem system) { return system.getChance(mutation, getWindow().getPlayer(), mutation.getAllele0(), mutation.getAllele1()); }
public ControlResultantMutation(IWidget parent, int x, int y, IMutation mutation, float specificChance, IBreedingSystem system, IAlleleSpecies firstSpecies, IAlleleSpecies secondSpecies) { super(parent, x, y, mutation, specificChance, system, firstSpecies, secondSpecies); String comb = firstSpecies.getAlleleName() + " + " + secondSpecies.getAlleleName(); addTooltip(comb); String chance = getMutationColour(mutation.getBaseChance()).getCode() + (int) mutation.getBaseChance() + "% " + I18N.localise(AnalystConstants.MUTATIONS_KEY + ".chance"); if (specificChance != mutation.getBaseChance()) { chance = chance + getMutationColour(specificChance).getCode() + " (" + (int) specificChance + "% " + I18N.localise(AnalystConstants.MUTATIONS_KEY + ".currently") + ')'; } addTooltip(chance); for (String condition : mutation.getSpecialConditions()) { addTooltip(condition); } }
public void drawMutationInfo(IMutation combination, IAllele species, int x, IBreedingTracker breedingTracker) { Map<String, ItemStack> iconStacks = combination.getRoot().getAlyzerPlugin().getIconStacks(); ItemStack partnerBee = iconStacks.get(combination.getPartner(species).getUID()); widgetManager.add(new ItemStackWidget(widgetManager, x, textLayout.getLineY(), partnerBee)); drawProbabilityArrow(combination, guiLeft + x + 18, guiTop + textLayout.getLineY() + 4, breedingTracker); IAllele result = combination.getTemplate()[EnumBeeChromosome.SPECIES.ordinal()]; ItemStack resultBee = iconStacks.get(result.getUID()); widgetManager.add(new ItemStackWidget(widgetManager, x + 33, textLayout.getLineY(), resultBee)); }
@Override public float getChance(IMutation mutation, EntityPlayer player, IAlleleSpecies firstSpecies, IAlleleSpecies secondSpecies) { return mutation.getBaseChance(); }
@Override public Collection<? extends IMutation> getPaths(IAllele result, IChromosomeType chromosomeType) { ArrayList<IMutation> paths = new ArrayList<>(); for (IMutation mutation : getMutations(false)) { if (mutation.getTemplate()[chromosomeType.ordinal()] == result) { paths.add(mutation); } } return paths; }
private void drawMutationIcon(IMutation combination, IAlleleSpecies species, int x) { GuiUtil.drawItemStack(this, iconStacks.get(combination.getPartner(species).getUID()), guiLeft + x, guiTop + textLayout.getLineY()); int line = 48; int column; EnumMutateChance chance = EnumMutateChance.rateChance(combination.getBaseChance()); if (chance == EnumMutateChance.HIGHEST) { line += 16; column = 228; } else if (chance == EnumMutateChance.HIGHER) { line += 16; column = 212; } else if (chance == EnumMutateChance.HIGH) { line += 16; column = 196; } else if (chance == EnumMutateChance.NORMAL) { line += 0; column = 228; } else if (chance == EnumMutateChance.LOW) { line += 0; column = 212; } else { line += 0; column = 196; } bindTexture(textureFile); drawTexturedModalRect(guiLeft + x, guiTop + textLayout.getLineY(), column, line, 16, 16); }
@Nullable private static IMutation getEncodedMutation(ISpeciesRoot root, NBTTagCompound compound) { IAllele allele0 = AlleleManager.alleleRegistry.getAllele(compound.getString("AL0")); IAllele allele1 = AlleleManager.alleleRegistry.getAllele(compound.getString("AL1")); if (allele0 == null || allele1 == null) { return null; } IAllele result = null; if (compound.hasKey("RST")) { result = AlleleManager.alleleRegistry.getAllele(compound.getString("RST")); } IMutation encoded = null; for (IMutation mutation : root.getCombinations(allele0)) { if (mutation.isPartner(allele1)) { if (result == null || mutation.getTemplate()[0].getUID().equals(result.getUID())) { encoded = mutation; break; } } } return encoded; }
@ModuleContainerObjectMethod.Inject( module = IntegrationForestry.analyzerMod, worldThread = false, modId = Constants.MOD_ID, doc = "function(root:string):table -- Get a list of all mutations in the given species root" ) public static Object[] getMutationsList(IContext<IModuleContainer> context, Object[] args) throws LuaException { String uid = ArgumentHelper.getString(args, 0); ISpeciesRoot root = getSpeciesRoot(uid); LuaList<Map<Object, Object>> mutations = root.getMutations(false).stream() .filter(s -> !s.isSecret()) .map(m -> context.makePartialChild(m).getMeta()) .collect(LuaList.toLuaList()); return new Object[]{mutations.asMap()}; } }
@Override public void registerMutation(IMutation mutation) { if (AlleleManager.alleleRegistry.isBlacklisted(mutation.getTemplate()[0].getUID())) { return; } if (AlleleManager.alleleRegistry.isBlacklisted(mutation.getAllele0().getUID())) { return; } if (AlleleManager.alleleRegistry.isBlacklisted(mutation.getAllele1().getUID())) { return; } butterflyMutations.add((IButterflyMutation) mutation); }
IBreedingTracker tracker = encoded.getRoot().getBreedingTracker(world, player.getGameProfile()); if (tracker.isResearched(encoded)) { player.sendMessage(new TextComponentTranslation("for.chat.cannotmemorizeagain")); IAlleleSpecies species0 = encoded.getAllele0(); IAlleleSpecies species1 = encoded.getAllele1(); IAlleleSpecies speciesResult = (IAlleleSpecies) encoded.getTemplate()[root.getSpeciesChromosomeType().ordinal()];
private static int getGeneticAdvancement(IAlleleSpecies species, Set<IAlleleSpecies> exclude, IChromosomeType speciesChromosome) { int highest = 0; exclude.add(species); for (IMutation mutation : species.getRoot().getPaths(species, speciesChromosome)) { highest = getHighestAdvancement(mutation.getAllele0(), highest, exclude, speciesChromosome); highest = getHighestAdvancement(mutation.getAllele1(), highest, exclude, speciesChromosome); } return 1 + highest; }
public ControlFurtherMutation(IWidget parent, int x, int y, IMutation mutation, float specificChance, IBreedingSystem system, IAlleleSpecies firstSpecies, IAlleleSpecies secondSpecies, IAlleleSpecies resolute) { super(parent, x, y, mutation, specificChance, system, firstSpecies, secondSpecies); this.resolute = resolute; addTooltip(resolute.getAlleleName()); String comb = firstSpecies.getAlleleName() + " + " + secondSpecies.getAlleleName(); addTooltip(comb); String chance = getMutationColour(mutation.getBaseChance()).getCode() + (int) mutation.getBaseChance() + "% " + I18N.localise(AnalystConstants.MUTATIONS_KEY + ".chance"); if (specificChance != mutation.getBaseChance()) { chance = chance + getMutationColour(specificChance).getCode() + " (" + (int) specificChance + "% " + I18N.localise(AnalystConstants.MUTATIONS_KEY + ".currently") + ')'; } addTooltip(chance); for (String condition : mutation.getSpecialConditions()) { addTooltip(condition); } }