/** * when clicked on itemBG (a button) it calls this function and passes itself as parameter * */ public void setItemSelected(GameObject itemBG) { Button bgBtn = itemBG.GetComponent <Button>(); bgBtn.Select(); Color col = itemBG.GetComponent <Image>().color; col.a = 230; itemBG.GetComponent <Image>().color = col; //"selected highlight" string id = itemBG.GetComponent <identifier>().id; if (prevSelected != null) { string prevId = prevSelected.GetComponent <identifier>().id; if (id != prevId) { Color c = prevSelected.GetComponent <Image>().color; c.a = 0.5f; prevSelected.GetComponent <Image>().color = c; //"selected highlight" } } prevSelected = itemBG; if (itemBG.transform.childCount > 0) { GameObject item = itemBG.transform.GetChild(0).gameObject; //the only child is the item itself ItemBehav itemBehav = item.GetComponent <ItemBehav>(); itemName.text = itemBehav.itemName; itemDescription.text = itemBehav.description; float s = item.GetComponent <ItemBehav>().sizeScale; selectedItem.GetComponent <RectTransform>().localScale = new Vector3(s, s, s) * (backpack.fullScreenMode? 2:1); selectedItem.GetComponent <SpriteRenderer>().sprite = item.GetComponent <SpriteRenderer>().sprite; } else //empty bg { itemName.text = ""; itemDescription.text = ""; selectedItem.GetComponent <SpriteRenderer>().sprite = null; } }
/** this function should only be called by ItemSpawner, as it deals with base level data * * returns instance of instantiated item based on what type it is */ public GameObject getItemInstance(int eCode) { GameObject i = null; switch (itemType[eCode]) { case 0: //inanimate if (itemMold == null) { Debug.LogError("itemMold is null... Can't create item instance"); return(null); } i = Instantiate(itemMold) as GameObject; //duplicate SpriteRenderer sr = i.GetComponent <SpriteRenderer>(); sr.sprite = S0_SPRITE[eCode]; ItemBehav item = i.GetComponent <ItemBehav>(); item.itemName = itemName[eCode]; item.description = itemDescriptions[eCode]; item.setSizeScale(sizeScale[eCode]); //what we need is the setting of sizeScale variable here item.setType(itemType[eCode]); //TODO break; case 1: //items that have an animator & will use animations if (inGameItemMold == null) { Debug.LogError("(in-game)itemMold is null... Can't create item instance"); return(null); } i = Instantiate(inGameItemMold) as GameObject; //duplicate Animator animator = i.GetComponent <Animator>(); AnimatorOverrideController animatorOverrideController = new AnimatorOverrideController(animator.runtimeAnimatorController); if (S0_ANIM[eCode] != null) { animatorOverrideController["State0anim"] = S0_ANIM[eCode]; } if (S1_ANIM[eCode] != null) { animatorOverrideController["State1anim"] = S1_ANIM[eCode]; } if (S2_ANIM[eCode] != null) { animatorOverrideController["State2anim"] = S2_ANIM[eCode]; } animator.runtimeAnimatorController = animatorOverrideController; animator.Update(0.0f); ItemBehav itemG = i.GetComponent <ItemBehav>(); itemG.itemName = itemName[eCode]; itemG.setSizeScale(sizeScale[eCode]); itemG.setColliderScale(colliderScale[eCode]); itemG.setType(itemType[eCode]); //TODO movement break; default: Debug.LogError("can't find itemType: " + itemType[eCode]); break; } return(i); }