コード例 #1
0
    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);
    }
コード例 #2
0
    private void SetupInventoryItem(GameObject newUIElement, RocketPart part)
    {
        var itemInstance = newUIElement.GetComponent <InventoryItem>();

        itemInstance.rocketPart = part;
        itemInstance.AddEventListener(OnItemClick);
    }
コード例 #3
0
        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();
            }
        }
コード例 #4
0
    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);
    }
コード例 #5
0
ファイル: Rocket.cs プロジェクト: RetroSpecter/LDJam47
    // 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);
    }
コード例 #6
0
    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);
    }
コード例 #7
0
    private void RemoveFromInventory(RocketPart rocketPart)
    {
        var foundIndex = uiInventoryItems
                         .FindIndex((uiElement) => uiElement.GetComponent <InventoryItem>().rocketPart == rocketPart);

        if (foundIndex != -1)
        {
            Destroy(uiInventoryItems[foundIndex]);
            uiInventoryItems.RemoveAt(foundIndex);
        }
    }
コード例 #8
0
    private void OnItemClick(RocketPart part)
    {
        var hasDetached = attachmentScript.HandleAttachment(part);

        if (hasDetached)
        {
            AddToInventory(part, CreateInventoryItem(part));
        }
        else
        {
            RemoveFromInventory(part);
        }
    }
コード例 #9
0
ファイル: Rocket.cs プロジェクト: Siccity/JETPAC
 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);
     }
 }
コード例 #10
0
    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);
    }
コード例 #11
0
ファイル: Player.cs プロジェクト: Siccity/JETPAC
    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());
            }
        }
    }
コード例 #12
0
 private RocketPart getRandomNextPart(RocketPart part)
 {
     RocketPart[] possibleNextParts = possibleTransitions [part];
     return possibleNextParts[Random.Range(0, possibleNextParts.Length)];
 }
コード例 #13
0
 private void AddToInventory(RocketPart part, GameObject newUIElement)
 {
     RocketPartsDatabase.Instance.uiInventory.Add(part);
     uiInventoryItems.Add(newUIElement);
 }
コード例 #14
0
 public void CollectedPart(RocketPart part)
 {
     this.partsCollected++;
     this.rocket.CollectPart(part);
 }