Наследование: ScriptableObject
Пример #1
0
    private void Start()
    {
        // Get the catManager
        if (GameObject.Find("CatManager") != null)
        {
            catManager = GameObject.Find("CatManager").GetComponent <UICatSelect>();

            // Set the correct cat
            switch (this.gameObject.tag)
            {
            case "playerOne":
                catData = catManager.playerOne;
                break;

            case "playerTwo":
                catData = catManager.playerTwo;
                break;
            }
        }

        // Get the sprite renderer
        spriteRenderer = this.gameObject.GetComponent <SpriteRenderer>();

        // Set the sprite
        spriteRenderer.sprite = catData.sprite;

        // Set the scale
        transform.localScale = catData.size;

        // Add the collider
        // Unity automatically sets the collider to equal the sprite
        this.gameObject.AddComponent <PolygonCollider2D>();
    }
Пример #2
0
    static public CatData Create()
    {
        CatData data = new CatData();

        data.InitDefault();
        return(data);
    }
Пример #3
0
    public void randomSelectCat()
    {
        switch (playerSelecting)
        {
        case 1:
            playerOne = catDatas[Random.Range(0, catDatas.Count)];
            // Create the cat preview
            playerOneObject = GameObject.FindGameObjectWithTag("playerOne");
            playerOneObject.GetComponent <SpriteRenderer>().sprite = questionMark;
            playerOneObject.transform.localScale    = new Vector3(0.5f, 0.5f, 1);
            playerOneObject.transform.localRotation = Quaternion.Euler(0f, 0f, Random.Range(0f, 360f));
            Destroy(playerOneObject.GetComponent <PolygonCollider2D>());
            playerOneObject.AddComponent <PolygonCollider2D>();
            playerOneObject.transform.localPosition = new Vector3(-6.595f, 3f, 0f);

            playerSelecting = 2;
            break;

        case 2:
            playerTwo = catDatas[Random.Range(0, catDatas.Count)];
            // Create the cat preview
            playerTwoObject = GameObject.FindGameObjectWithTag("playerTwo");
            playerTwoObject.GetComponent <SpriteRenderer>().sprite = questionMark;
            playerTwoObject.transform.localScale    = new Vector3(0.5f, 0.5f, 1);
            playerTwoObject.transform.localRotation = Quaternion.Euler(0f, 0f, Random.Range(0f, 360f));
            Destroy(playerTwoObject.GetComponent <PolygonCollider2D>());
            playerTwoObject.AddComponent <PolygonCollider2D>();
            playerTwoObject.transform.localPosition = new Vector3(6.595f, 3f, 0f);

            playerSelecting = 0;
            break;
        }
    }
Пример #4
0
 public void resetCatSelect()
 {
     playerSelecting = 1;
     playerOne       = null;
     playerTwo       = null;
     playerOneObject.GetComponent <SpriteRenderer>().sprite = null;
     playerTwoObject.GetComponent <SpriteRenderer>().sprite = null;
 }
Пример #5
0
 public void MarkFound(CatData cat)
 {
     if (!statuses[cat].Found)
     {
         statuses[cat].LastGift = new TimeSpan(DateTime.UtcNow.Ticks);
         statuses[cat].Found    = true;
         statusDirty            = true;
     }
 }
Пример #6
0
 public void AddCat(CatData cat)
 {
     if (currentCats.Contains(cat))
     {
         return;
     }
     currentCats.Add(cat);
     CheckCatProgress();
 }
Пример #7
0
        public async Task <ActionResult> DeleteConfirmed(int id)
        {
            CatData catData = await db.CatDatas.FindAsync(id);

            db.CatDatas.Remove(catData);
            await db.SaveChangesAsync();

            return(RedirectToAction("Index"));
        }
Пример #8
0
 public void UpdateMood(CatData cat, float value)
 {
     if (statuses[cat].Mood < MoodColors.Length / 2)
     {
         statuses[cat].LastGift = new TimeSpan(DateTime.UtcNow.Ticks);
     }
     statuses[cat].MoodValue = value;
     statuses[cat].Mood      = Mathf.RoundToInt(value * (MoodColors.Length - 1));
     statusDirty             = true;
 }
Пример #9
0
    //init state
    public void InitState_1()
    {
        _gameData    = new GameDataManager();
        _playRoutine = new PlayRoutine();

        _gameData.Add(CatData.Create());
        _gameData.Add(CatData.Create());
        _gameData.Add(CatData.Create());
        _gameData.Add(CatData.Create());
    }
Пример #10
0
 public void AddRandomLetter(CatData cat)
 {
     AddLetter(new Letter(cat,
                          new Dictionary <PlacableData, int>()
     {
         { DataManager.Instance.TowerComponents[Random.Range(0, DataManager.Instance.TowerComponents.Length)], Random.Range(1, 4) },
         { DataManager.Instance.ToyComponents[Random.Range(0, DataManager.Instance.ToyComponents.Length)], Random.Range(1, 4) },
         { DataManager.Instance.TreatComponents[Random.Range(0, DataManager.Instance.TreatComponents.Length)], Random.Range(1, 4) }
     }));
 }
Пример #11
0
        public async Task CatCommandAsnyc(CommandContext ctx, params string[] args)
        {
            CatData cat        = default;
            bool    skipRandom = false;

            foreach (var arg in args)
            {
                if (arg.StartsWith("id="))
                {
                    cat = await Cats.GetCatByIdAsync(arg[3..]);
Пример #12
0
        public async Task <ActionResult> Edit([Bind(Include = "CatID,CategoryName")] CatData catData)
        {
            if (ModelState.IsValid)
            {
                db.Entry(catData).State = EntityState.Modified;
                await db.SaveChangesAsync();

                return(RedirectToAction("Index"));
            }
            return(View(catData));
        }
Пример #13
0
        public async Task <ActionResult> Create([Bind(Include = "CatID,CategoryName")] CatData catData)
        {
            if (ModelState.IsValid)
            {
                db.CatDatas.Add(catData);
                await db.SaveChangesAsync();

                return(RedirectToAction("Index"));
            }

            return(View(catData));
        }
Пример #14
0
 public void CheckForCats()
 {
     if (/*GetInArea(PlacableDataType.Cat).Count < 2 &&*/ waitingCat == null)
     {
         UpdateValidCats();
         if (validCats.Count > 0)
         {
             waitingCat = validCats[Random.Range(0, validCats.Count)];
             StartCoroutine(WaitToSpawnCat());
         }
     }
 }
Пример #15
0
    bool HasRequ(CatData cat)
    {
        if (CatManager.Instance.TimeSinceLeave(cat) < cat.Prefab.GetComponent <CatController>().AwayLength[CatManager.Instance.GetMood(cat)])
        {
            return(false);
        }

        List <Placable> towers   = GetInArea(PlacableDataType.Tower);
        bool            hasTower = false;

        for (int i = 0; i < towers.Count; i++)
        {
            if ((towers[i].Data as UpgradableData).MaterialType == cat.RequiredTowerType &&
                (towers[i].Data as UpgradableData).Level >= cat.RequiredTowerLevel)
            {
                hasTower = true;
                break;
            }
        }
        if (!hasTower)
        {
            return(false);
        }

        for (int i = 0; i < cat.OtherRequirements.Length; i++)
        {
            bool hasRequ = false;
            if (PlacementManager.Instance.CurrentAttached != null && PlacementManager.Instance.CurrentAttached.Data == cat.OtherRequirements[i])
            {
                hasRequ = true;
            }
            else
            {
                for (int j = 0; j < placedInArea.Count; j++)
                {
                    if (placedInArea[j].Data == cat.OtherRequirements[i] &&
                        (placedInArea[i].GetComponent <ItemController>() == null || placedInArea[i].GetComponent <ItemController>().AnyLeft()))
                    {
                        hasRequ = true;
                        break;
                    }
                }
            }
            if (!hasRequ)
            {
                return(false);
            }
        }

        return(true);
    }
Пример #16
0
    private bool canUpdateCat()
    {
        if (cat != null)
        {
            CatData  monsterData = cat.GetComponent <CatData>();
            CatLevel nextLevel   = monsterData.getNextLevel();
            if (null != nextLevel) //更高的等级存在
            {
                return(gameManager.Gold >= nextLevel.cost);
            }
        }

        return(false);
    }
Пример #17
0
        // GET: CatDatas/Delete/5
        public async Task <ActionResult> Delete(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            CatData catData = await db.CatDatas.FindAsync(id);

            if (catData == null)
            {
                return(HttpNotFound());
            }
            return(View(catData));
        }
Пример #18
0
 void Load()
 {
     if (File.Exists(Application.persistentDataPath + "/cats_" + DataManager.saveVersion + ".txt"))
     {
         string[] catsData = File.ReadAllLines(Application.persistentDataPath + "/cats_" + DataManager.saveVersion + ".txt");
         for (int i = 0; i < catsData.Length; i += 6)
         {
             CatData cat = DataManager.Instance.GetData(catsData[i]) as CatData;
             statuses[cat].Found     = bool.Parse(catsData[i + 1]);
             statuses[cat].MoodValue = float.Parse(catsData[i + 2]);
             statuses[cat].LastGift  = new TimeSpan(long.Parse(catsData[i + 3]));
             statuses[cat].LastLeave = new TimeSpan(long.Parse(catsData[i + 4]));
             statuses[cat].LastEnter = new TimeSpan(long.Parse(catsData[i + 5]));
             statuses[cat].Mood      = Mathf.RoundToInt(statuses[cat].MoodValue * (MoodColors.Length - 1));
         }
     }
 }
Пример #19
0
    protected virtual void Start()
    {
        playArea = GetComponentInParent <PlayArea>();
        catData  = Data as CatData;

        AddState <SitState>();
        AddState <WalkState>();
        AddState <TutorialSitState>();
        AddState <TutorialWalkState>();
        AddState <EatState>();
        AddState <PetState>();
        AddState <PlayState>();
        AddState <ChaseState>();
        AddState <ChasePlayState>();

        CatManager.Instance.MarkFound(catData);
        moodValue     = CatManager.Instance.GetMoodValue(catData);
        mood          = CatManager.Instance.GetMood(catData);
        moodMat.color = CatManager.Instance.MoodColors[mood];

        if (HelpManager.Instance.CurrentStep == TutorialStep.Start)
        {
            targetPos = Vector3.zero;
            SetState <TutorialWalkState>();
        }
        else if (HelpManager.Instance.CurrentStep == TutorialStep.Mail)
        {
            targetPos = MailboxManager.Instance.transform.localPosition;
            SetState <TutorialWalkState>();
        }
        else if (HelpManager.Instance.CurrentStep == TutorialStep.GrabBook)
        {
            targetPos = BookController.Instance.transform.localPosition;
            SetState <TutorialWalkState>();
        }
        else
        {
            SetState <SitState>();
        }

        if (StayForever)
        {
            HelpManager.Instance.onCompleteTutorialStep += OnCompleteTutorialStep;
        }
    }
Пример #20
0
 public void CheckWaitingCat()
 {
     if (waitingCat != null)
     {
         UpdateValidCats();
         if (!validCats.Contains(waitingCat))
         {
             if (validCats.Count > 0)
             {
                 waitingCat = validCats[Random.Range(0, validCats.Count)];
             }
             else
             {
                 StopAllCoroutines();
             }
         }
     }
 }
Пример #21
0
    IEnumerator WaitToSpawnCat()
    {
        if (HelpManager.Instance.CurrentStep == TutorialStep.PlaceToy)
        {
            yield return(new WaitForSeconds(1f));
        }
        else
        {
            yield return(new WaitForSeconds(waitingCat.Prefab.GetComponent <CatController>().SpawnWait[CatManager.Instance.GetMood(waitingCat)]));
        }

        Placable cat = PlacementManager.Instance.PlaceAt(this, waitingCat, CatSpawnPoint.localPosition, true);

        CatManager.Instance.EnterArea(waitingCat);
        cat.GetComponent <CatController>().EnterArea();
        waitingCat = null;
        CheckForCats();
    }
Пример #22
0
        /// <summary>
        /// 获取商品的所有分类
        /// </summary>
        /// <returns></returns>
        public async Task <List <CatData> > findAll()
        {
            List <Cat> cats = await db.Cat.ToListAsync();

            List <CatData> catDatas = new List <CatData>();
            CatData        catdata  = null;

            cats.ForEach((n) => {
                if (n.parentId.Equals(0))
                {
                    catdata       = new CatData();
                    catdata.cat   = n;
                    catdata.child = this.findChild(cats, n.id);
                    catDatas.Add(catdata);
                }
            });
            return(catDatas);
        }
Пример #23
0
 public float GetMoodValue(CatData cat)
 {
     return(statuses[cat].MoodValue);
 }
Пример #24
0
 public void LeaveArea(CatData cat)
 {
     statuses[cat].LastLeave = new TimeSpan(DateTime.UtcNow.Ticks);
     statusDirty             = true;
 }
Пример #25
0
    public void AddWeightedRandomLetter(CatData cat)
    {
        List <CatData> unfoundCats = new List <CatData>();

        for (int i = 0; i < DataManager.Instance.Cats.Length; i++)
        {
            if (!CatManager.Instance.IsFound(DataManager.Instance.Cats[i]))
            {
                unfoundCats.Add(DataManager.Instance.Cats[i]);
            }
        }
        Dictionary <PlacableData, int> weights = new Dictionary <PlacableData, int>();
        int totalWeight = 0;

        for (int i = 0; i < DataManager.Instance.Cats.Length; i++)
        {
            int weight = 1;
            if (unfoundCats.Count > 0 && DataManager.Instance.Cats[i] == unfoundCats[0])
            {
                weight = 20;
            }
            else if (unfoundCats.Count > 1 && DataManager.Instance.Cats[i] == unfoundCats[1])
            {
                weight = 7;
            }
            else if (unfoundCats.Count > 2 && DataManager.Instance.Cats[i] == unfoundCats[2])
            {
                weight = 2;
            }
            AddWeight(weights, DataManager.Instance.TowerComponents[(int)DataManager.Instance.Cats[i].RequiredTowerType], weight * DataManager.Instance.GetTowerMatAmount(DataManager.Instance.Cats[i].RequiredTowerType, DataManager.Instance.Cats[i].RequiredTowerLevel) / 2, ref totalWeight);
            for (int j = 0; j < DataManager.Instance.Cats[i].OtherRequirements.Length; j++)
            {
                BuildableData buildable = DataManager.Instance.Cats[i].OtherRequirements[j] as BuildableData;
                if (!buildable.Unlimited)
                {
                    if (!PlayerManager.Instance.HasRecipe(buildable) && !HasRecipe(buildable))
                    {
                        for (int k = 0; k < DataManager.Instance.ToyRecipes.Length; k++)
                        {
                            if (DataManager.Instance.ToyRecipes[k].Product == buildable)
                            {
                                AddWeight(weights, DataManager.Instance.ToyRecipes[k], weight, ref totalWeight);
                                break;
                            }
                        }
                        for (int k = 0; k < DataManager.Instance.TreatRecipes.Length; k++)
                        {
                            if (DataManager.Instance.TreatRecipes[k].Product == buildable)
                            {
                                AddWeight(weights, DataManager.Instance.TreatRecipes[k], weight, ref totalWeight);
                                break;
                            }
                        }
                    }
                    for (int k = 0; k < buildable.BuildRequirements.Length; k++)
                    {
                        AddWeight(weights, buildable.BuildRequirements[k], weight, ref totalWeight);
                    }
                }
            }
        }
        Dictionary <PlacableData, int> gifts = new Dictionary <PlacableData, int>();

        for (int i = 0; i < 4; i++)
        {
            int randWeight = Random.Range(0, totalWeight);
            int currWeight = 0;
            foreach (KeyValuePair <PlacableData, int> pair in weights)
            {
                currWeight += pair.Value;
                if (currWeight > randWeight)
                {
                    if (gifts.ContainsKey(pair.Key))
                    {
                        if (pair.Key.DataType != PlacableDataType.ToyRecipe && pair.Key.DataType != PlacableDataType.TreatRecipe)
                        {
                            gifts[pair.Key]++;
                        }
                    }
                    else
                    {
                        gifts.Add(pair.Key, 1);
                    }
                    break;
                }
            }
        }
        AddLetter(new Letter(cat, gifts));
    }
Пример #26
0
 public void LeftAreaAfter(CatData cat, float length)
 {
     statuses[cat].LastLeave = statuses[cat].LastEnter.Add(TimeSpan.FromSeconds(length));
     statusDirty             = true;
 }
Пример #27
0
 public void EnterArea(CatData cat)
 {
     statuses[cat].LastEnter = new TimeSpan(DateTime.UtcNow.Ticks);
     statusDirty             = true;
 }
Пример #28
0
 public float TimeSinceEnter(CatData cat)
 {
     return((float)(new TimeSpan(DateTime.UtcNow.Ticks).Subtract(statuses[cat].LastEnter).TotalSeconds));
 }
Пример #29
0
 public int GetMood(CatData cat)
 {
     return(statuses[cat].Mood);
 }
Пример #30
0
 public bool IsFound(CatData cat)
 {
     return(statuses[cat].Found);
 }