コード例 #1
0
    void Update()
    {
        if (!leaderDead && !friendly)
        {
            transform.LookAt(PlayerMovement.player.transform);
            transform.position += transform.forward * speed;
        }
        else if (!friendly)
        {
            if (waypoint == Vector3.zero)
            {
                waypoint = (Random.insideUnitSphere * 30) + transform.position;
                transform.LookAt(waypoint);
            }

            transform.position += (transform.forward * slothSpeed);
        }

        if (friendly)
        {
            target = Utilts.FindTarget(gameObject.transform);
            transform.LookAt(target.transform);

            if (attackTimer < Time.timeSinceLevelLoad)
            {
                attackTimer = Time.timeSinceLevelLoad + attackRate;
                Instantiate(bullet, transform.position + transform.forward * 3, transform.rotation);
            }
        }
    }
コード例 #2
0
    public void UpdateCraftableRecipes()
    {
        foreach (Button btn in flavBtns)
        {
            Flavor flav            = btn.GetComponent <FlavGetter>().associatedFlav;
            int    amountCanBeMade = Utilts.CanMakeRecipe(flav);

            Dropdown dp = btn.GetComponentInChildren <Dropdown>();

            if (amountCanBeMade == 0)
            {
                btn.enabled = false;
                btn.GetComponent <Image>().color = Color.red;
                if (dp != null)
                {
                    dp.gameObject.SetActive(false);
                }
            }
            else
            {
                dp.gameObject.SetActive(true);
                btn.GetComponent <Image>().color = Color.white;
                dp.ClearOptions();
                List <string> num = new List <string>();

                for (int i = 0; i < amountCanBeMade; i++)
                {
                    num.Add((i + 1).ToString());
                }

                dp.AddOptions(num);
            }
        }
    }
コード例 #3
0
 // Update is called once per frame
 void Update()
 {
     if (attackTimer < Time.timeSinceLevelLoad)
     {
         Utilts.FireLaser(transform, prefab_laser);
         attackTimer = Time.timeSinceLevelLoad + attackRate;
     }
 }
コード例 #4
0
    void UpdateOptions(GameObject parent, Dropdown dp)
    {
        Dropdown[] menus = parent.GetComponentsInChildren <Dropdown>();

        Dictionary <ResourceType, int> tempResDict = CharacterManager.Instance.pData.resources;

        foreach (Dropdown drop in menus)
        {
            if (drop.value > 0)
            {
                ItemInfo itemInfo = drop.transform.GetComponent <ItemInfo>();

                foreach (ResourceType rType in itemInfo.itemCost.Keys)
                {
                    Debug.Log(itemInfo);
                    tempResDict[rType] -= (drop.value * itemInfo.itemCost[rType]);

                    if (tempResDict[rType] == 0)
                    {
                        tempResDict.Remove(rType);
                    }
                }
            }
        }

        foreach (Dropdown drop in menus)
        {
            if (dp != null && drop == dp)
            {
                continue;
            }

            ItemInfo itemInfo = drop.transform.parent.GetComponent <ItemInfo>();

            int           amountCanAfford = Utilts.DictionaryMod(tempResDict, itemInfo.itemCost);
            List <string> num             = new List <string>();
            drop.ClearOptions();

            if (amountCanAfford <= 0)
            {
                drop.transform.parent.GetComponent <Image>().color = Color.red;
                drop.enabled = false;
                continue;
            }

            for (int i = 0; i < amountCanAfford; i++)
            {
                num.Add((i + 1).ToString());
            }

            drop.AddOptions(num);
        }
    }
コード例 #5
0
    public void BuyItem()
    {
        GameObject go = EventSystem.current.currentSelectedGameObject;
        ///
        /// Find a better way to get the correct sec when there are multiple in scene
        ///

        Secretariat sec = GameObject.FindGameObjectWithTag("Secretariat").GetComponent <Secretariat>();

        Dropdown[] lst = go.transform.parent.GetComponentsInChildren <Dropdown>(true);

        foreach (Dropdown dp in lst)
        {
            if (dp.enabled)
            {
                int      amount   = Utilts.GetDropDownVal(dp);
                ItemInfo itemInfo = dp.gameObject.GetComponent <ItemInfo>();

                foreach (ResourceType rType in itemInfo.itemCost.Keys)
                {
                    CharacterManager.Instance.pData.resources[rType] -= itemInfo.itemCost[rType];
                }

                if (itemInfo.ingredient != Ingredient.NULL)
                {
                    if (CharacterManager.Instance.pData.ingredientsHeld.ContainsKey(itemInfo.ingredient))
                    {
                        CharacterManager.Instance.pData.ingredientsHeld[itemInfo.ingredient] += amount;
                    }
                    else
                    {
                        CharacterManager.Instance.pData.ingredientsHeld.Add(itemInfo.ingredient, amount);
                    }
                }
                else if (itemInfo.weapon != null)
                {
                    if (CharacterManager.Instance.pData.weapons.ContainsKey(itemInfo.weapon.name))
                    {
                        CharacterManager.Instance.pData.weapons[itemInfo.weapon.name].Add(itemInfo.weapon);
                    }
                    else
                    {
                        List <GameObject> temp = new List <GameObject>();
                        temp.Add(itemInfo.weapon);
                        CharacterManager.Instance.pData.weapons.Add(itemInfo.weapon.name, temp);
                    }
                }
            }
        }

        GelatoCanon.Instance.ResetCounter(true);
        UpdateOptions(go);
    }
コード例 #6
0
    void CreateStoreItem(Dictionary <ResourceType, int> cost, string itemName)
    {
        RectTransform temp = Instantiate(storeItem as RectTransform);

        temp.GetComponent <RectTransform>().SetParent(storePanel.transform, false);
        temp.GetComponent <RectTransform>().anchoredPosition = new Vector2(xCoord * 175, yCoord * 100) + padding;

        temp.GetComponentInChildren <Text>().text = itemName;
        temp.gameObject.name = itemName;

        int amountCanAfford = Utilts.DictionaryMod(CharacterManager.Instance.pData.resources, cost);

        if (xCoord < 1)
        {
            xCoord++;
        }
        else
        {
            xCoord = -2;
            yCoord++;
        }

        Dropdown dp = temp.GetComponentInChildren <Dropdown>();

        dp.onValueChanged.AddListener(delegate { UpdateOptions(dp.transform.parent.parent.gameObject, dp); });

        dp.gameObject.AddComponent <ItemInfo>();
        dp.gameObject.GetComponent <ItemInfo>().itemCost = cost;

        if (amountCanAfford == 0)
        {
            temp.GetComponent <Image>().color = Color.red;
            dp.enabled = false;
        }
        else
        {
            dp.enabled = true;
            dp.ClearOptions();

            List <string> num = new List <string>();

            for (int i = 0; i < amountCanAfford; i++)
            {
                num.Add((i + 1).ToString());
            }

            dp.AddOptions(num);
        }
    }
コード例 #7
0
    public void MakeReceipe()
    {
        GameObject go   = EventSystem.current.currentSelectedGameObject;
        string     name = go.name;

        Flavors flav;

        int amount = Utilts.GetDropDownVal(go);

        try
        {
            flav = (Flavors)System.Enum.Parse(typeof(Flavors), name);

            if (CharacterManager.Instance.pData.gelato_inventory.ContainsKey(flav))
            {
                CharacterManager.Instance.pData.gelato_inventory[flav] += amount;
            }
            else
            {
                CharacterManager.Instance.pData.gelato_inventory.Add(flav, amount);
            }
        } catch
        {
            throw new System.Exception("Gelato Flavor Mismatch");
        }

        Flavor flavClass = go.GetComponent <FlavGetter>().associatedFlav;

        Ingredient[] ingredients = flavClass.ingredientsNeeded.Keys.ToArray();

        foreach (Ingredient ing in ingredients)
        {
            int removeAmount = flavClass.ingredientsNeeded[ing] * amount;
            int amountHeld   = CharacterManager.Instance.pData.ingredientsHeld[ing];

            if (amountHeld - removeAmount == 0)
            {
                CharacterManager.Instance.pData.ingredientsHeld.Remove(ing);
            }
            else
            {
                CharacterManager.Instance.pData.ingredientsHeld[ing] -= removeAmount;
            }
        }

        UpdateCraftableRecipes();
        UpdateGelatoMenu();
    }
コード例 #8
0
        public ActionResult Confrim(int?id)
        {
            IEnumerable <ApplicationUser> them = unitOfWork.UserRepository.Get().Where(s => s.RoleName.Equals(RolesConst.PROJECT_MANAGER));
            Order ord = unitOfWork.OrderRepository.GetByID(id);

            ViewBag.pm = them;
            Project proj = new Project();

            proj.costs         = ord.Total;
            proj.projectStatus = ProjectStatus.Initial;
            proj.order         = ord;
            List <WorkItem>        wkItems   = new List <WorkItem>();
            string                 listItems = ord.orderItemsIds;
            IDictionary <int, int> prItems   = new Dictionary <int, int>();

            string[] wkitem = listItems.Split(';');
            foreach (string k in wkitem)
            {
                string[] u = k.Split(':');
                if (u.Length > 1)
                {
                    int key   = int.Parse(u[0]);
                    int value = int.Parse(u[1]);
                    prItems.Add(key, value);
                }
            }
            foreach (KeyValuePair <int, int> kvp in prItems)
            {
                ProductItem     pr = unitOfWork.ProductItemRepository.GetByID(kvp.Key);
                List <WorkItem> wk = Utilts.GenericTasks(pr.Categorie).ToList();
                for (int i = 0; i < kvp.Value; i++)
                {
                    wkItems.AddRange(wk);
                }
            }

            proj.tasks = wkItems;

            return(View(proj));
        }
コード例 #9
0
        public ActionResult Confrim(Project pro)
        {
            if (ModelState.IsValid)
            {
                Order ord = unitOfWork.OrderRepository.GetByID(pro.id);

                pro.order = ord;
                pro.costs = ord.Total;
                IEnumerable <ApplicationUser> them = unitOfWork.UserRepository.Get().Where(s => s.RoleName.Equals(RolesConst.PROJECT_MANAGER));
                foreach (ApplicationUser manager in them)
                {
                    if (manager.UserName.Equals(pro.nameProjectManager))
                    {
                        pro.projectManager = manager;
                    }
                }

                pro.projectStatus = ProjectStatus.Initial;



                List <WorkItem>        wkItems   = new List <WorkItem>();
                string                 listItems = ord.orderItemsIds;
                IDictionary <int, int> prItems   = new Dictionary <int, int>();

                string[] wkitem = listItems.Split(';');
                foreach (string k in wkitem)
                {
                    string[] u = k.Split(':');
                    if (u.Length > 1)
                    {
                        int key   = int.Parse(u[0]);
                        int value = int.Parse(u[1]);
                        prItems.Add(key, value);
                    }
                }
                foreach (KeyValuePair <int, int> kvp in prItems)
                {
                    ProductItem     pr = unitOfWork.ProductItemRepository.GetByID(kvp.Key);
                    List <WorkItem> wk = Utilts.GenericTasks(pr.Categorie).ToList();
                    for (int i = 0; i < kvp.Value; i++)
                    {
                        wkItems.AddRange(wk);
                    }
                }
                unitOfWork.ProjectRepository.Insert(pro);
                unitOfWork.Save();

                foreach (WorkItem wk in wkItems)
                {
                    wk.assignedProject = pro;
                    wk.DueDate         = DateTime.Now.AddMonths(1).Date;
                    wk.DateCreated     = DateTime.Now.Date;
                    unitOfWork.WorkItemRepository.Insert(wk);
                    unitOfWork.Save();
                }

                pro.tasks = wkItems;

                unitOfWork.ProjectRepository.Update(pro);
                ord.orderStartus = OrderStatus.InProgress;
                unitOfWork.OrderRepository.Update(ord);

                Finance last = unitOfWork.FinancesRepository.Get().Last();
                decimal cost = 0 - ord.Total * 0.05m;
                Finance fin  = new Finance()
                {
                    TransactionName = "salary",
                    From            = "company",
                    To = "orderManager",
                    itemDescription = "advance",
                    Date            = DateTime.Now,
                    Cost            = cost,
                    Balance         = last.Balance + cost
                };

                unitOfWork.FinancesRepository.Insert(fin);

                unitOfWork.Save();


                Finance last1 = unitOfWork.FinancesRepository.Get().Last();
                Finance fin1  = new Finance()
                {
                    TransactionName = "income",
                    From            = ord.customer.UserName,
                    To = "company",
                    itemDescription = "item_bought",
                    Date            = DateTime.Now,
                    Cost            = ord.Total,
                    Balance         = last1.Balance + ord.Total
                };

                unitOfWork.FinancesRepository.Insert(fin1);

                unitOfWork.Save();

                return(RedirectToAction("Index"));
            }
            return(View());
        }
コード例 #10
0
    public static void FireLaser(Transform obj, LineRenderer prefab_laser)
    {
        Ray ray = new Ray(obj.transform.position, obj.transform.forward);

        RaycastHit[] hits  = Physics.RaycastAll(ray);
        LineRenderer laser = UnityEngine.MonoBehaviour.Instantiate(prefab_laser);

        laser.transform.SetParent(obj);

        bool foundTarget = false;

        foreach (RaycastHit hit in hits)
        {
            if (hit.transform.gameObject == obj.gameObject)
            {
                continue;
            }

            Transform parent = hit.transform.parent;
            if (parent != null && obj == parent)
            {
                continue;
            }

            laser.enabled = true;
            foundTarget   = true;

            string hTag = hit.transform.tag;
            laser.SetPosition(0, obj.position);
            laser.SetPosition(1, hit.point);
            if (hTag == "Player")
            {
                PlayerMovement.player.TakeDamge(1);
                foundTarget = true;
                break;
            }
            else
            {
                if (hTag == "Astro" || hTag == "StationWeapons")
                {
                    AudioManager.Instance.AstroCrack();
                    break;
                }

                IDamageable _IDamage = hit.transform.GetComponent <IDamageable>();
                if (_IDamage == null)
                {
                    Debug.Log(hit.transform);
                    _IDamage = hit.transform.parent.GetComponent <IDamageable>();
                }

                if (_IDamage != null)
                {
                    _IDamage.TakeDamage(1);
                }

                if (hTag == "Astro")
                {
                    UnityEngine.MonoBehaviour.Destroy(hit.transform.gameObject, Time.deltaTime * 5);
                    Utilts.GetResources(hit.transform.gameObject);
                    break;
                }
            }
        }

        if (!foundTarget)
        {
            laser.SetPosition(0, obj.position);
            laser.SetPosition(1, ray.GetPoint(10000));
        }
    }
コード例 #11
0
    private void Update()
    {
        base.Update();
        if (!isEnabled)
        {
            return;
        }
        if (target != null)
        {
            difAngle = Vector3.Angle(transform.forward, target.transform.forward);
            side     = Utilts.AngleDir(transform.forward, target.transform.forward, transform.up);

            Vector3 oldPos = transform.position;

            if (difAngle > 142)
            {
                if (side == -1)
                {
                    modPos = transform.right * moveSpeed * Time.deltaTime;
                }
                else
                {
                    modPos = -transform.right * moveSpeed * Time.deltaTime;
                }
            }
            else if (difAngle > 60)
            {
                dist = Vector3.Distance(transform.position, target.transform.position);
                if (dist <= 500)
                {
                    if (side == -1)
                    {
                        modPos = transform.right * 10 * moveSpeed * Time.deltaTime;
                    }
                    else
                    {
                        modPos = transform.right * -10 * moveSpeed * Time.deltaTime;
                    }
                }
            }
            else
            {
                modPos    = transform.forward * moveSpeed * Time.deltaTime;
                heightMod = Vector3.zero;
            }

            if (posTimer < Time.timeSinceLevelLoad)
            {
                posTimer   = Time.timeSinceLevelLoad + 5;
                heightMod *= -1;
            }

            Collider[] hits = Physics.OverlapSphere(transform.position, 75);

            foreach (Collider col in hits)
            {
                if (col.tag == "SpaceStation")
                {
                    collided      = true;
                    dir           = col.ClosestPoint(transform.position);
                    collidedTimer = Time.timeSinceLevelLoad + 3;
                    break;
                }
            }

            if (!collided)
            {
                transform.position += (modPos + heightMod);
            }

            if (collidedTimer > Time.timeSinceLevelLoad)
            {
                transform.position -= dir.normalized * (moveSpeed * 2) * Time.deltaTime;
            }
            else
            {
                collided = false;
            }

            targetRot          = Quaternion.LookRotation(target.transform.position - transform.position);
            transform.rotation = Quaternion.Slerp(transform.rotation, targetRot, rotationSpeed);
        }
    }
コード例 #12
0
    void Update()
    {
        if (Input.GetAxis("Fire") != 0)
        {
            if (!pressed && timer < Time.timeSinceLevelLoad)
            {
                AudioManager.Instance.Laser();
                LineRenderer laser = Instantiate(prefab_laser);
                laser.transform.SetParent(transform);
                Ray        ray = new Ray(transform.position, transform.forward);
                RaycastHit hit;
                if (Physics.Raycast(ray, out hit))
                {
                    string hTag = hit.transform.tag;

                    if (hTag == "SpaceStation")
                    {
                        if (Vector3.Distance(transform.position, hit.transform.position) < stationRange)
                        {
                            canHitStation = true;
                        }
                        else
                        {
                            canHitStation = false;
                        }
                    }

                    AudioManager.Instance.ChangeVolume(Vector3.Distance(hit.transform.position, transform.position));
                    laser.SetPosition(0, origin.position);
                    laser.SetPosition(1, hit.point);
                    if (hTag == "Bandito")
                    {
                        AudioManager.Instance.BanditoSplat();
                        hit.transform.GetComponent <Flocking>().Death();
                    }
                    else if (!(hTag == "SpaceStation" && !canHitStation))
                    {
                        if (hTag == "Astro" || hTag == "StationWeapons")
                        {
                            AudioManager.Instance.AstroCrack();
                        }

                        IDamageable Idamage = hit.transform.gameObject.GetComponent <IDamageable>();

                        if (Idamage == null && hit.transform.parent != null)
                        {
                            Idamage = hit.transform.parent.gameObject.GetComponent <IDamageable>();
                        }

                        if (Idamage != null)
                        {
                            Idamage.TakeDamage(1);
                        }

                        if (hTag == "Astro")
                        {
                            Destroy(hit.transform.gameObject, Time.deltaTime * 5);
                            Utilts.GetResources(hit.transform.gameObject);
                        }
                    }

                    laser.enabled = true;
                }
                else
                {
                    laser.SetPosition(0, origin.position);
                    laser.SetPosition(1, ray.GetPoint(10000));
                }

                timer = Time.timeSinceLevelLoad + fire_cooldown;
            }
            pressed = true;
        }
        else
        {
            pressed = false;
        }
    }
コード例 #13
0
    void GiveGelato()
    {
        Collider[] colls = Physics.OverlapSphere(transform.position + (transform.forward * 2), 5);

        if (colls.Length > 0)
        {
            foreach (Collider col in colls)
            {
                if (col.tag == "Basket")
                {
                    CharacterManager.Instance.pData.standings[FactionManager.factionAffil] += Utilts.ChangeInStanding(inHand, FactionManager.factionAffil);
                    int len = toGive.Count;

                    for (int i = 0; i < len; i++)
                    {
                        Destroy(toGive[i]);
                    }

                    toGive.Clear();
                }
            }
        }
    }