void Ores(AllData allData) { if (allData.ore != null) { string[] data = allData.ore.stats; bool[] eternals = allData.ore.eternalMounted; int num = allData.ore.numStats; int amount = data.Length / num;//because every n'th element starts a new item for (int i = 0; i < amount; i++) { OreController o = Instantiate(StaticFunctions.GetOreFromString(data[(i * num) + 4]), Vector3.zero, Quaternion.identity); o.transform.position = new Vector3(float.Parse(data[(i * num)]), float.Parse(data[(i * num) + 1]), 0); o.transform.rotation = Quaternion.Euler(0, 0, float.Parse(data[(i * num) + 2])); o.currentQuantity = int.Parse(data[(i * num) + 3]); o.quantity = int.Parse(data[(i * num) + 3]); //string[] color = data[(i * num) + 4].Split(','); //o.oreColor = new Color(float.Parse(color[0]), float.Parse(color[1]), float.Parse(color[2])); //o.product = StaticFunctions.GetItemFromString(data[(i * num) + 5]); //eternaliser if (eternals?[i] == true) { Instantiate(moed, o.transform.position, Quaternion.identity).goThru = false; } o.transform.localScale = new Vector2(float.Parse(data[(i * num) + 5]), float.Parse(data[(i * num) + 6])); } } }
public void Landed() { cons?.AddLine("MOED has been mounted"); bool foundOre = false; Collider2D[] possibilities = Physics2D.OverlapCircleAll(transform.position, 0.1f); foreach (Collider2D p in possibilities) { if (p.GetComponent <OreController>()) { foundOre = true; mountedOre = p.GetComponent <OreController>(); } } if (foundOre) { print("ore found"); mountedOre.eternal = true; } else { print("exit"); Leave(); } }
public OreData(SaveMaster mast) { numStats = 7; //posx, y, rot, count of remaining items, color r, g, b //actually, its just the product lol //actually, thats wrong too lol eternalMounted = new bool[mast.ores.Length]; stats = new string[mast.ores.Length * numStats]; for (int i = 0; i < mast.ores.Length; i++) { OreController ore = mast.ores[i]; eternalMounted[i] = ore.eternal; // now mount eternalizer based on this stats[(i * numStats)] = ore.transform.position.x.ToString(); stats[(i * numStats) + 1] = ore.transform.position.y.ToString(); stats[(i * numStats) + 2] = ore.transform.rotation.eulerAngles.z.ToString(); //numitems stats[(i * numStats) + 3] = ore.currentQuantity.ToString(); //item type stats[(i * numStats) + 4] = ore.product.GetComponent <Item>().typeOfItem;//for getting the prefab later //scale mod stats[(i * numStats) + 5] = ore.transform.localScale.x.ToString(); stats[(i * numStats) + 6] = ore.transform.localScale.y.ToString(); } }
public static OreController GetOreFromString(string input) { OreController[] allOres = Resources.LoadAll <OreController>("Ores"); OreController nullOre = Resources.Load <OreController>("Ores/NullOre"); for (int i = 0; i < allOres.Length; i++) { //Debug.Log(allItems[i].name + ":" + input); if (allOres[i].product.typeOfItem == input) { return(allOres[i]); } } Debug.Log("RETURNING NULL ORE BECAUSE F**K yoU THATS WHY"); return(nullOre); }
void Start() { //get the timer tim = GameObject.FindObjectOfType <Timer>(); tim.miners.Add(gameObject.GetComponent <Miner>()); //StartCoroutine(LaunchItem()); sp = gameObject.GetComponent <SpriteRenderer>(); //make sure you dont add shit behind this, because it will error out and fail if the miner isnt on a patch if (Physics2D.OverlapCircle(transform.position, 1, layerMask)) { orePatch = Physics2D.OverlapCircle(transform.position, 1, layerMask).gameObject.GetComponent <OreController>(); hasHadOrePatch = true; product = orePatch.product.GetComponent <Rigidbody2D>(); hardnessMultiplier = orePatch.hardness; } //draw line renderer to nearby ore if (!StaticFunctions.lowGraphics) { UpdateConnections(); } }
IEnumerator LaunchItem() { ///I think that any launcher which does not start with an item is failing rn because it errors and then stops ///I need it to only launch if there is an item in it. This is vital. Otherwise it stops the loop //yield return new WaitForSeconds(coolDown * hardnessMultiplier); yield return(new WaitForEndOfFrame()); if (!orePatch) { if (hasHadOrePatch) { //since you used to but dont anymore, the patch must have faded. Remove miner from ticker tim.miners.Remove(this); UpdateConnections();//also remove line } //product = null; sp.color = new Color(0.2f, 0.2f, 0.2f, 1); if (Physics2D.OverlapCircle(transform.position, 1, layerMask)) { orePatch = Physics2D.OverlapCircle(transform.position, 1, layerMask).gameObject.GetComponent <OreController>(); } if (orePatch) { hasHadOrePatch = true; hardnessMultiplier = orePatch.hardness; UpdateConnections(); product = orePatch.product.GetComponent <Rigidbody2D>(); } //StartCoroutine(LaunchItem()); } else { Rigidbody2D p = Instantiate(product, launchPoint.position, launchPoint.rotation); p.gameObject.SetActive(true); p.AddForce(launchPoint.up * launchForce); orePatch.currentQuantity -= 1; sp.color = Color.white; //StartCoroutine(LaunchItem()); } }
public void OpenEditor(GameObject editable) { //break out? gameInfo = GameObject.FindObjectOfType <GameInfo>(); if (gameInfo.currentlyMouseAiming) { Close(); return; } if (!metaInventory) { metaInventory = GameObject.FindObjectOfType <MetaInventory>(); } //activate cursor Cursor.visible = true; //get editable obj = editable.transform.parent.gameObject; if (editable.GetComponent <EditRotation>()) { //activate mouseaim if... mouseAimButton.SetActive(true); eRot = editable.GetComponent <EditRotation>(); elements[4].SetActive(true); } else { mouseAimButton.SetActive(false); eRot = null; //so that you never end up doing it for something else } //make the title of the ui the obj name string objName = obj.name; //if it has a (, remove everything after that ( if (objName.Contains("(")) { int loc = objName.IndexOf("("); //substring does the trick objName = objName.Substring(0, loc); name.text = objName; } else { name.text = objName; } if (obj.GetComponent <Miner>()) { //set type typeSelected = 1; //set up layout for miner obj miner = obj.GetComponent <Miner>(); s1.gameObject.SetActive(true); s1.maxValue = 1000; s1.value = miner.launchForce; s1T.text = "Launch Force: " + s1.value.ToString(); } if (obj.GetComponent <LauncherController>()) { //set type typeSelected = 2; //set up layout for launcher obj launcher = obj.GetComponent <LauncherController>(); s1.gameObject.SetActive(true); s1.maxValue = 1000; s1.value = launcher.launchForce; s1T.text = "Launch Force: " + s1.value.ToString(); //set up second slider for interval s2.gameObject.SetActive(true); s2.maxValue = 2; s2.minValue = 0.25f; s2.value = launcher.coolDown; s2T.text = "Fire Interval: " + s2.value.ToString(); } if (obj.GetComponent <OreController>()) { typeSelected = 3; ore = obj.GetComponent <OreController>(); MidInfoT.gameObject.SetActive(true); if (ore.eternal) { MidInfoT.text = "Quantity: Eternal" + " Hardness: " + ore.hardness; } else { MidInfoT.text = "Quantity: " + ore.currentQuantity.ToString() + System.Environment.NewLine + "Hardness: " + ore.hardness; } MidInfoT.color = ore.GetComponent <SpriteRenderer>().color; bottomButton.gameObject.SetActive(true); if (ore.eternal) { print("ore is eternal"); bottomButton.interactable = true; bottomButtonText.text = "Destroy Ore"; } else if (metaInventory.eternalizers > 0) { bottomButton.interactable = true; bottomButtonText.text = "Mount MOED"; } else { bottomButton.interactable = false; bottomButtonText.text = "No MOED's"; } } if (obj.GetComponent <Crafting>()) { //set up crafter ui typeSelected = 4; crafterPanel.SetActive(true); craft = obj.GetComponent <Crafting>(); MidInfoT.gameObject.SetActive(true); UIButtonArray car = crafterPanel.GetComponent <UIButtonArray>(); foreach (Button b in car.buttons) { ///THIS ///MEANS ///THAT ///ALL ///BUTTONS ///MUST BE NAMED ///P R O P E R L Y !!! //print(b.name + " : " + craft.recipe.name); if (b.name == craft.recipe.name) { car.BClick(b); } } } if (obj.GetComponent <UnPackager>()) { typeSelected = 5; } if (obj.GetComponent <Packager>()) { Packager pack = obj.GetComponent <Packager>(); typeSelected = 6; s1.gameObject.SetActive(true); s1.maxValue = 100; s1.minValue = 10; s1.value = pack.maxItems; s1T.text = "Maximum Items: " + Mathf.RoundToInt(s1.value).ToString(); } else if (obj.GetComponent <Splitter>()) { split = obj.GetComponent <Splitter>(); typeSelected = 7; MidInfoT.gameObject.SetActive(true); MidInfoT.text = "Set a filter ->"; MidInfoT.color = new Color(0, 255, 255, 255); filterPanel.gameObject.SetActive(true); //setup filter panel UIButtonArray ar = filterPanel.GetComponent <UIButtonArray>(); foreach (Button b in ar.buttons) { ///THIS ///MEANS ///THAT ///ALL ///BUTTONS ///MUST BE NAMED ///P R O P E R L Y !!! if (b.name == split.typeName) { ar.BClick(b); } else { if (b.name == "Empty filter" && split.typeName == "") { ar.BClick(b); } } } } else if (obj.GetComponent <Pump>()) { pump = obj.GetComponent <Pump>(); MidInfoT.gameObject.SetActive(true); typeSelected = 8; } else if (obj.GetComponent <Core>()) { typeSelected = 9; core = obj.GetComponent <Core>(); int lv = core.level; MidInfoT.gameObject.SetActive(true); MidInfoT.text = "Level " + lv.ToString(); } else if (obj.GetComponent <RocketBase>()) { typeSelected = 10; rocket = obj.GetComponent <RocketBase>(); MidInfoT.gameObject.SetActive(true); rocketPanel.SetActive(true); rIronSlider.slider.maxValue = rocket.maxIron; rCopSlider.slider.maxValue = rocket.maxCopper; rFuelSlider.slider.maxValue = rocket.maxFuel; MidInfoT.text = "Needs rocket fuel"; //set max rIronSlider.SetSliderParameters(rocket.maxIron); rCopSlider.SetSliderParameters(rocket.maxCopper); rFuelSlider.SetSliderParameters(rocket.maxFuel); } }