public bool HandleAttachment(RocketPart rocketPart) { var type = InstantiatePart(rocketPart, out var rocketPartInstance); var hasDetached = false; if (type == PartType.THRUSTER) { hasDetached = toggleDetach(attachedRocketParts.Find((p) => rocketPart.type.Equals(p.part.type))); attachMainThruster(rocketPartInstance); } else if (type == PartType.RCS) { attachRCSThruster(rocketPartInstance); } else if (type == PartType.FUEL) { attachFuelTank(rocketPartInstance); } else if (type == PartType.FINS) { attachFins(rocketPartInstance); } // RocketPartsDatabase.Instance.rocketPartInventory.Remove(rocketPart); return(hasDetached); }
private void SetupInventoryItem(GameObject newUIElement, RocketPart part) { var itemInstance = newUIElement.GetComponent <InventoryItem>(); itemInstance.rocketPart = part; itemInstance.AddEventListener(OnItemClick); }
public async Task Seed() { kerbalStoreContext.Database.EnsureCreated(); // Create development user var user = await userManager.FindByNameAsync("jay"); if (user == null) { user = new ShopUser() { UserName = "******", Email = "*****@*****.**" }; var result = await userManager.CreateAsync(user, "P@ssw0rd!"); if (!result.Succeeded) { throw new InvalidOperationException("failed to create test user"); } } if (!kerbalStoreContext.RocketParts.Any()) { // Seed data var rocketParts = new RocketPart[] { new RocketPart() { PartName = "Rocket Engine", Price = 500000 }, new RocketPart() { PartName = "Command capsule", Price = 200000 } }; // Seed with initial rocket parts kerbalStoreContext.RocketParts.AddRange(rocketParts); // Seed data var order = new Order() { OrderReference = "ABC123", //OrderCreated = DateTime.Now, OrderItems = new[] { new OrderItem() { RocketPart = rocketParts.First(), UnitPrice = rocketParts.First().Price, Quantity = 1 } } }; // Seed order item kerbalStoreContext.Orders.Add(order); kerbalStoreContext.SaveChanges(); } }
private static PartType InstantiatePart(RocketPart rocketPart, out RocketPartController rocketPartInstance) { var type = rocketPart.type; var instance = Instantiate(rocketPart.model); instance.AddComponent <RocketPartController>(); rocketPartInstance = instance.GetComponent <RocketPartController>(); rocketPartInstance.part = rocketPart; return(type); }
// Given a part, displays it above the rocket public void CollectPart(RocketPart part) { var bleg = pieces[part.partNum]; bleg.gameObject.SetActive(true); collectedPieces++; part.transform.position = bleg.position; part.transform.parent = bleg; part.gameObject.SetActive(false); }
private GameObject CreateInventoryItem(RocketPart part) { var newUIElement = Instantiate(inventoryItemPrefab, Vector3.zero, Quaternion.identity, inventoryUIContainer.transform); newUIElement.GetComponent <RectTransform>().localPosition = Vector3.zero; newUIElement.GetComponent <Image>().sprite = part.icon; newUIElement.GetComponentInChildren <TextMeshProUGUI>() .SetText(Math.Round(part.weight * massFactor) + " kg"); SetupInventoryItem(newUIElement, part); return(newUIElement); }
private void RemoveFromInventory(RocketPart rocketPart) { var foundIndex = uiInventoryItems .FindIndex((uiElement) => uiElement.GetComponent <InventoryItem>().rocketPart == rocketPart); if (foundIndex != -1) { Destroy(uiInventoryItems[foundIndex]); uiInventoryItems.RemoveAt(foundIndex); } }
private void OnItemClick(RocketPart part) { var hasDetached = attachmentScript.HandleAttachment(part); if (hasDetached) { AddToInventory(part, CreateInventoryItem(part)); } else { RemoveFromInventory(part); } }
IEnumerator EatItem(RocketPart part) { while (part.transform.localPosition.y > 0) { part.transform.localPosition += Vector3.down * Time.deltaTime * 10; yield return(null); } LevelUp(); part.gameObject.SetActive(false); if (constructionStage >= ConstructionStage.Stage3 && constructionStage < ConstructionStage.Fuel6) { Invoke("SpawnFuel", 2f); } }
RocketPart SpawnPart(RocketPartData data) { RocketPart part = ItemManager.Instance.SpawnItem(data.itemName) as RocketPart; part.SetInteractable(false); part.SetPlanetInfluence(false); part.GetComponent <Rigidbody>().isKinematic = true; part.transform.parent = partsOffset; part.transform.localPosition = new Vector3(0f, rocketPartHeight * parts.Count, 0f); part.transform.localRotation = Quaternion.identity; return(part); }
public void Die() { if (!gameObject.activeSelf) { return; } if (playerNum == PlayerNum.PlayerOne) { GameManager.instance.p1Lives--; } else { GameManager.instance.p2Lives--; } if (rocketPart != null) { rocketPart.Drop(); } rocketPart = null; gameObject.SetActive(false); GameManager.instance.dieSound.Play(); if (GameManager.instance.p1Lives == -1 && GameManager.instance.p2Lives == -1) { Invoke("GameOver", 1); } else { if (GameManager.instance.sessionPlayers == PlayerNum.PlayerOne) { GameManager.instance.StartCoroutine(RespawnPlayers()); } else if (!p1.gameObject.activeSelf && !p2.gameObject.activeSelf) { GameManager.instance.StartCoroutine(RespawnPlayers()); } } }
private RocketPart getRandomNextPart(RocketPart part) { RocketPart[] possibleNextParts = possibleTransitions [part]; return possibleNextParts[Random.Range(0, possibleNextParts.Length)]; }
private void AddToInventory(RocketPart part, GameObject newUIElement) { RocketPartsDatabase.Instance.uiInventory.Add(part); uiInventoryItems.Add(newUIElement); }
public void CollectedPart(RocketPart part) { this.partsCollected++; this.rocket.CollectPart(part); }