aboutsummaryrefslogtreecommitdiff
path: root/src/Java/binnie/core/genetics/IBreedingMessage.java
blob: fdd815c1220b846da2bcdd7cf1e9ed75ce38fd3e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
package binnie.core.genetics;

import binnie.Binnie;
import binnie.core.BinnieCore;
import binnie.core.language.ManagerLanguage;
import forestry.api.genetics.AlleleManager;
import forestry.api.genetics.IAlleleRegistry;
import forestry.api.genetics.IAlleleSpecies;
import forestry.api.genetics.IChromosomeType;
import forestry.api.genetics.IClassification;
import forestry.api.genetics.ISpeciesRoot;
import java.util.Map;
import net.minecraft.item.ItemStack;

abstract interface IBreedingMessage
{
  public abstract String getTitle();
  
  public abstract String getBody();
  
  public abstract ItemStack getIcon();
  
  public static class MessageSpeciesDiscovered
    implements IBreedingMessage
  {
    IAlleleSpecies species;
    ItemStack stack;
    
    public MessageSpeciesDiscovered(IAlleleSpecies species)
    {
      this.species = species;
      ISpeciesRoot root = null;
      for (ISpeciesRoot sRoot : AlleleManager.alleleRegistry.getSpeciesRoot().values()) {
        if (sRoot.getKaryotype()[0].getAlleleClass().isInstance(species)) {
          root = sRoot;
        }
      }
      if (root != null) {
        this.stack = root.getMemberStack(root.templateAsIndividual(root.getTemplate(species.getUID())), 0);
      }
    }
    
    public String getTitle()
    {
      return Binnie.Language.localise(BinnieCore.instance, "gui.breedingmessage.species");
    }
    
    public String getBody()
    {
      return this.species.getName();
    }
    
    public ItemStack getIcon()
    {
      return this.stack;
    }
  }
  
  public static class BranchDiscovered
    implements IBreedingMessage
  {
    IAlleleSpecies species;
    IClassification classification;
    ItemStack stack;
    
    public BranchDiscovered(IAlleleSpecies species, IClassification classification)
    {
      this.species = species;
      this.classification = classification;
      ISpeciesRoot root = null;
      for (ISpeciesRoot sRoot : AlleleManager.alleleRegistry.getSpeciesRoot().values()) {
        if (sRoot.getKaryotype()[0].getAlleleClass().isInstance(species)) {
          root = sRoot;
        }
      }
      if (root != null) {
        this.stack = root.getMemberStack(root.templateAsIndividual(root.getTemplate(species.getUID())), 0);
      }
    }
    
    public String getTitle()
    {
      return Binnie.Language.localise(BinnieCore.instance, "gui.breedingmessage.branch");
    }
    
    public String getBody()
    {
      return this.classification.getScientific();
    }
    
    public ItemStack getIcon()
    {
      return this.stack;
    }
  }
  
  public static class EpithetGained
    implements IBreedingMessage
  {
    String epithet;
    ItemStack stack;
    
    public EpithetGained(String epithet, ISpeciesRoot root)
    {
      this.epithet = epithet;
      this.stack = root.getMemberStack(root.templateAsIndividual(root.getDefaultTemplate()), 0);
    }
    
    public String getTitle()
    {
      return Binnie.Language.localise(BinnieCore.instance, "gui.breedingmessage.epithet");
    }
    
    public String getBody()
    {
      return this.epithet;
    }
    
    public ItemStack getIcon()
    {
      return this.stack;
    }
  }
}