public AlienTorsoLimb(TorsoLimbType in_Limb) { Limb = in_Limb; }
public void Randomize() { //Work out the max foreach (var ele in headLimbs) { if (ele.LocationID != 0) { if (!VisibilityTable.ContainsKey(ele.LocationID)) { VisibilityTable.Add(ele.LocationID, false); } } if (!HeadMaxes.ContainsKey(ele.Limb)) { HeadMaxes.Add(ele.Limb, 0); } HeadMaxes[ele.Limb]++; } foreach (var ele in armLimbs) { if (ele.LocationID != 0) { if (!VisibilityTable.ContainsKey(ele.LocationID)) { VisibilityTable.Add(ele.LocationID, false); } } if (!ArmMaxes.ContainsKey(ele.Limb)) { ArmMaxes.Add(ele.Limb, 0); } ArmMaxes[ele.Limb]++; } int seed = System.DateTime.Now.Millisecond + System.DateTime.Now.Minute + System.DateTime.Now.Hour; Random.InitState(seed); RegenerateRacialName(); //Randomize the home, effecting language and audio GalacticHome = (AlienGalacticHome)Random.Range((int)0, (int)TorsoLimbType.MAX_TYPES); //Randomize the skin color var previous = TorsoColor; while (TorsoColor == previous) { TorsoColor = (TorsoLimbType)Random.Range((int)1, (int)TorsoLimbType.MAX_TYPES); } switch (TorsoColor) { case TorsoLimbType.Blue: AlienSkinMaterial.color = SkinBlue; break; case TorsoLimbType.Green: AlienSkinMaterial.color = SkinGreen; break; case TorsoLimbType.Red: AlienSkinMaterial.color = SkinRed; break; } HeadLimbCount.Clear(); ArmLimbCount.Clear(); HeadLimbCount.Add(HeadLimbType.Eye_Stalk, Random.Range(0, HeadMaxes[HeadLimbType.Eye_Stalk])); HeadLimbCount.Add(HeadLimbType.EyeBalls, Random.Range(0, HeadMaxes[HeadLimbType.EyeBalls])); HeadLimbCount.Add(HeadLimbType.Ears, Random.Range(0, HeadMaxes[HeadLimbType.Ears])); HeadLimbCount.Add(HeadLimbType.Warts, Random.Range(0, HeadMaxes[HeadLimbType.Warts])); HeadLimbCount.Add(HeadLimbType.Mouth, Random.Range(0, HeadMaxes[HeadLimbType.Mouth])); HeadLimbCount.Add(HeadLimbType.Antennae, Random.Range(0, HeadMaxes[HeadLimbType.Antennae])); ArmLimbCount.Add(ArmLimbType.Robot, Random.Range(0, ArmMaxes[ArmLimbType.Robot])); ArmLimbCount.Add(ArmLimbType.Tentacle, Random.Range(0, ArmMaxes[ArmLimbType.Tentacle])); //Now we set up the rendering of the alien to match! foreach (var ele in armLimbs) { if (!ele.gameObject.active) { continue; } if (ele.LocationID != 0) { if (VisibilityTable[(ele.LocationID)]) { ele.gameObject.SetActive(false); continue; } } if (ArmLimbCount[ele.Limb] <= 0) { ele.gameObject.SetActive(false); } else { //Disable any arms occupying the same slot if (ele.LocationID != 0) { VisibilityTable[ele.LocationID] = true; } ArmLimbCount[ele.Limb]--; } } foreach (var ele in headLimbs) { if (!ele.gameObject.active) { continue; } if (ele.LocationID != 0) { if (VisibilityTable.ContainsKey(ele.LocationID)) { ele.gameObject.SetActive(false); continue; } } switch (ele.Limb) { default: if (HeadLimbCount[ele.Limb] <= 0) { ele.gameObject.SetActive(false); } else { HeadLimbCount[ele.Limb]--; } break; case HeadLimbType.EyeBalls: if (HeadLimbCount[ele.Limb] <= 0) { ele.gameObject.SetActive(false); } else { //Disable any eye stalks occupying the same slot if (ele.LocationID != 0) { VisibilityTable.Add(ele.LocationID, true); } } HeadLimbCount[ele.Limb]--; break; case HeadLimbType.Eye_Stalk: if (HeadLimbCount[ele.Limb] <= 0) { ele.gameObject.SetActive(false); } else { //Disable any eye balls occupying the same slot if (ele.LocationID != 0) { VisibilityTable.Add(ele.LocationID, true); } HeadLimbCount[ele.Limb]--; } break; } } }