public static void ToggleSelectedAccessoryForKitty(
        KittyModel kitty,
        AccessoryModel accessory
        )
    {
        var kittyAccessoriesForKitty = KittyAccessoryService.GetModelsByKittyId(
            kitty.id
            );

        // mutate the kittyAccessory objects to ensure only one in the
        // group+subgroup is selected and save
        foreach (var kittyAccessoryModel in kittyAccessoriesForKitty)
        {
            if (
                kittyAccessoryModel.accessoryGroup == accessory.accessoryGroup &&
                kittyAccessoryModel.accessorySubGroup == accessory.accessorySubGroup
                )
            {
                if (kittyAccessoryModel.accessoryId == accessory.id)
                {
                    kittyAccessoryModel.isSelected = !kittyAccessoryModel.isSelected;
                }
                else
                {
                    kittyAccessoryModel.isSelected = false;
                }
            }
        }
        KittyAccessoryService.SaveMultiple(KittyAccessoryService.GetAll());
    }
Пример #2
0
    private void DefautKittySelection()
    {
        var        kitties       = KittyService.GetAll();
        bool       kittySelected = false;
        KittyModel kittyUnlocked = null;

        foreach (var kitty in kitties)
        {
            if (kitty.isSelected)
            {
                kittySelected = true;
            }
            if (kittyUnlocked == null && kitty.isUnlocked)
            {
                kittyUnlocked = kitty;
            }
        }
        if (!kittySelected)
        {
            if (kittyUnlocked != null)
            {
                // set first kitty found that's unlocked to selected status
                kittyUnlocked.isSelected = true;
            }
            else
            {
                // set random kitty to unlocked and selected
                int randomKittyIndex = Random.Range(0, kitties.Count);
                var randomKitty      = kitties[randomKittyIndex];
                randomKitty.isUnlocked = true;
                randomKitty.isSelected = true;
            }
        }
        KittyService.SaveMultiple(kitties);
    }
 public string GetFormattedKeyFromKittyAndAccessoryCombination(
     KittyModel kittyModel,
     AccessoryModel accessoryModel
     )
 {
     return(kittyModel.id + "_" + accessoryModel.id);
 }
Пример #4
0
    private void FetchAccessoryImages()
    {
        // deactivate all accessory game objects
        foreach (var partDict in this.displayLookup.Values)
        {
            foreach (var image in partDict.Values)
            {
                image.gameObject.SetActive(false);
            }
        }
        // TODO: implementation of this method is unoptimized, utilize lookup batching in a future refactor
        KittyModel kittyModel = KittyService.GetSelected();

        foreach (var kittyAccessoryModel in KittyAccessoryService.GetModelsByKittyId(kittyModel.id))
        {
            if (kittyAccessoryModel.isSelected)
            {
                // lookup accessory model
                var accessoryModel = AccessoryService.GetModelsByIds(new List <string> {
                    kittyAccessoryModel.accessoryId
                })[0];
                // lookup sprite
                Sprite accessorySprite = AssetService.GetSprite(accessoryModel.primaryAssetAddress);
                // lookup display object image and assign sprite
                Image displayImage = this.displayLookup[kittyAccessoryModel.accessoryGroup][kittyAccessoryModel.accessorySubGroup];
                displayImage.sprite = accessorySprite;
                displayImage.gameObject.SetActive(true);
            }
        }
    }
Пример #5
0
    // INTERFACE METHODS

    // IMPLEMENTATION METHODS

    private void FetchKittyImage()
    {
        KittyModel kittyModel  = KittyService.GetSelected();
        Sprite     kittySprite = AssetService.GetSprite(kittyModel.primaryAssetAddress);

        kittyImage.sprite = kittySprite;
    }
Пример #6
0
    // chose, at random, one item among the
    // locked accessories and locked kitties for unlock
    private void UnlockRandomKittyOrAccessory()
    {
        // chance list for calculating selection of kitty or accessory for unlock
        var selectBetweenList = new List <int>();
        // gather objects
        var allKitties          = KittyService.GetAll();
        var selectedKitty       = KittyService.GetSelected();
        var accessoriesForKitty = AccessoryService.GetAccessoriesForKitty(selectedKitty);
        // filter for locked kitties and accessories
        var lockedKitties = new List <KittyModel>();

        foreach (var kitty in allKitties)
        {
            if (!kitty.isUnlocked)
            {
                lockedKitties.Add(kitty);
                selectBetweenList.Add(1);
            }
        }
        var lockedAccessoriesForKitty = new List <AccessoryModel>();

        foreach (var accessory in accessoriesForKitty)
        {
            var kittyAccessory = KittyAccessoryService.GetModelByKittyAndAccessoryCombination(
                selectedKitty,
                accessory
                );
            if (!kittyAccessory.isUnlocked)
            {
                lockedAccessoriesForKitty.Add(accessory);
                selectBetweenList.Add(2);
            }
        }
        // select whether kitty or accessory will be unlocked
        int randomSelectionIndex = Random.Range(0, selectBetweenList.Count);
        int selectedType         = selectBetweenList[randomSelectionIndex];

        if (selectedType == 1)
        {
            // unlock random locked kitty
            randomSelectionIndex               = Random.Range(0, lockedKitties.Count);
            this.unlockedKittyModel            = lockedKitties[randomSelectionIndex];
            this.unlockedKittyModel.isUnlocked = true;
            KittyService.Save(this.unlockedKittyModel);
        }
        else
        {
            // unlock random accessory for kitty
            randomSelectionIndex        = Random.Range(0, lockedAccessoriesForKitty.Count);
            this.unlockedAccessoryModel = lockedAccessoriesForKitty[randomSelectionIndex];
            var kittyAccessoryToUnlock = KittyAccessoryService.GetModelByKittyAndAccessoryCombination(
                selectedKitty,
                this.unlockedAccessoryModel
                );
            kittyAccessoryToUnlock.isUnlocked = true;
            KittyAccessoryService.Save(kittyAccessoryToUnlock);
        }
    }
Пример #7
0
    public static void Save(KittyModel model)
    {
        var modelsToSave = new List <KittyModel>()
        {
            model
        };

        KittyService.SaveMultiple(modelsToSave);
    }
Пример #8
0
    // IMPLEMENTATION METHODS

    private void KittyStartupProcesses()
    {
        List <Sprite> kittySprites =
            Resources.LoadAll("Kitty", typeof(Sprite))
            .Cast <Sprite>()
            .ToList();
        var kittiesToSave = new List <KittyModel>();

        foreach (var kittySprite in kittySprites)
        {
            // create kitty model if it doesn't yet exist
            var kittyModel = KittyService.GetModelByAssetName(kittySprite.name);
            if (kittyModel == null)
            {
                kittyModel = new KittyModel(
                    System.Guid.NewGuid().ToString(),
                    kittySprite.name,
                    KittyService.GetFormattedAssetAddress(kittySprite.name),
                    KittyService.GetFormattedThumbAssetAddress(kittySprite.name),
                    false,
                    false
                    );
                kittiesToSave.Add(kittyModel);
            }
            // register assets
            AssetService.SetSprite(
                KittyService.GetFormattedAssetAddress(kittySprite.name),
                kittySprite
                );
        }
        // save thumb kitty sprites to Asset service
        List <Sprite> kittyThumbSprites =
            Resources.LoadAll("KittyThumb", typeof(Sprite))
            .Cast <Sprite>()
            .ToList();

        foreach (var kittyThumbSprite in kittyThumbSprites)
        {
            string thumbAddress = KittyService.GetFormattedThumbAssetAddress(
                kittyThumbSprite.name,
                true
                );
            AssetService.SetSprite(
                thumbAddress,
                kittyThumbSprite
                );
        }
        // insert kitties to be saved
        KittyService.SaveMultiple(kittiesToSave);
    }
    public static List <AccessoryModel> GetAccessoriesForKitty(
        KittyModel kittyModel
        )
    {
        var selectedAccessoryIds = new List <string>();

        foreach (var kittyAccessoryModel in KittyAccessoryService.GetAll())
        {
            if (kittyAccessoryModel.kittyId == kittyModel.id)
            {
                selectedAccessoryIds.Add(kittyAccessoryModel.accessoryId);
            }
        }
        return(AccessoryService.GetModelsByIds(selectedAccessoryIds));
    }
Пример #10
0
    // SERVICE FOR KITTY -> ACCESSORY RELATIONSHIPS


    public static KittyAccessoryModel GetModelByKittyAndAccessoryCombination(
        KittyModel kittyModel,
        AccessoryModel accessoryModel
        )
    {
        KittyAccessoryData kittyAccessoryData = GameManager.instance.kittyAccessoryData;
        string             key = kittyAccessoryData.GetFormattedKeyFromKittyAndAccessoryCombination(
            kittyModel,
            accessoryModel
            );
        var keyToModel = kittyAccessoryData.GetKeyToModel();

        if (keyToModel.ContainsKey(key))
        {
            return(keyToModel[key]);
        }
        return(null);
    }
Пример #11
0
    public static void SetSelected(KittyModel model)
    {
        // deselect currently selected
        var previouslySelectedKitty = KittyService.GetSelected();

        if (model.id == previouslySelectedKitty.id)
        {
            // Debug.Log("attempting to select already selected kitty: " + model.primaryAssetAddress);
            return;
        }
        previouslySelectedKitty.isSelected = false;
        // set selected
        model.isSelected = true;
        // batch save models
        KittyService.SaveMultiple(
            new List <KittyModel>()
        {
            previouslySelectedKitty, model
        }
            );
    }