aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/gregtech/common/misc/spaceprojects/enums/SolarSystem.java
blob: 70dee3269d531b5d9cc25e860137abd2d7e20e0b (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
package gregtech.common.misc.spaceprojects.enums;

import static gregtech.api.enums.Mods.GregTech;
import static gregtech.common.misc.spaceprojects.enums.SpaceBodyType.AsteroidBelt;
import static gregtech.common.misc.spaceprojects.enums.SpaceBodyType.DwarfPlanet;
import static gregtech.common.misc.spaceprojects.enums.SpaceBodyType.GasGiant;
import static gregtech.common.misc.spaceprojects.enums.SpaceBodyType.IceGiant;
import static gregtech.common.misc.spaceprojects.enums.SpaceBodyType.NaturalSatellite;
import static gregtech.common.misc.spaceprojects.enums.SpaceBodyType.Planet;
import static gregtech.common.misc.spaceprojects.enums.SpaceBodyType.Star;
import static gregtech.common.misc.spaceprojects.enums.StarType.GClass;
import static gregtech.common.misc.spaceprojects.enums.StarType.NotAStar;

import com.gtnewhorizons.modularui.api.drawable.UITexture;

import gregtech.common.misc.spaceprojects.SpaceProjectManager;
import gregtech.common.misc.spaceprojects.interfaces.ISpaceBody;

/**
 * An enum of all space bodies in the Sol Solar System. Or to be exact the more important ones
 *
 * @author BlueWeabo
 */
public enum SolarSystem implements ISpaceBody {

    Sol(Star, GClass),
    Overworld(Planet),
    Moon(NaturalSatellite),
    Mars(Planet),
    Deimos(NaturalSatellite),
    Phobos(NaturalSatellite),
    Mercury(Planet),
    Venus(Planet),
    Jupiter(GasGiant),
    Io(NaturalSatellite),
    Ganymede(NaturalSatellite),
    Europa(NaturalSatellite),
    Callisto(NaturalSatellite),
    Saturn(GasGiant),
    Mimas(NaturalSatellite),
    Enceladus(NaturalSatellite),
    Tethys(NaturalSatellite),
    Rhea(NaturalSatellite),
    Titan(NaturalSatellite),
    Hyperion(NaturalSatellite),
    Iapetus(NaturalSatellite),
    Phoebe(NaturalSatellite),
    Uranus(IceGiant),
    Miranda(NaturalSatellite),
    Ariel(NaturalSatellite),
    Umbriel(NaturalSatellite),
    Titania(NaturalSatellite),
    Oberon(NaturalSatellite),
    Neptune(IceGiant),
    Proteus(NaturalSatellite),
    Triton(NaturalSatellite),
    Nereid(NaturalSatellite),
    Ceres(DwarfPlanet),
    Pluto(DwarfPlanet),
    Arrokoth(DwarfPlanet),
    MakeMake(DwarfPlanet),
    KuiperBelt(AsteroidBelt),
    NONE(SpaceBodyType.NONE);

    private final SpaceBodyType spaceBody;
    private final StarType star;
    private final UITexture texture;

    SolarSystem(SpaceBodyType aType) {
        this(aType, NotAStar);
    }

    SolarSystem(SpaceBodyType aType, StarType aStarType) {
        star = aStarType;
        spaceBody = aType;
        texture = UITexture.fullImage(GregTech.ID, "solarsystem/" + getName());
        SpaceProjectManager.addLocation(this);
    }

    @Override
    public StarType getStarType() {
        return star;
    }

    @Override
    public SpaceBodyType getType() {
        return spaceBody;
    }

    @Override
    public String getName() {
        return name();
    }

    @Override
    public UITexture getTexture() {
        return texture;
    }

    @Override
    public String getUnlocalizedName() {
        return "gt.solar.system." + getName().toLowerCase();
    }
}