void OnPerkEnter(PointerEventData data) { PerkHolder clickedEvent = data.pointerCurrentRaycast.gameObject.GetComponent <PerkHolder>(); mousedOver = clickedEvent.perkInfo; descText.text = mousedOver.Desc + "\n\n"; skillTitle.text = mousedOver.Name; spriteImage.sprite = mousedOver.sprite; foreach (PerkStatEntry stat in mousedOver.Stats) { descText.text = descText.text + stat.StatInst.Name + ": " + stat.StatInst.Value + "\n"; } selected = true; }
void OnPerkClick(PointerEventData data) { PerkHolder clickedEvent = data.pointerCurrentRaycast.gameObject.GetComponent <PerkHolder>(); bool taken = playerClass.TakePerk(clickedEvent.perkInfo); if (taken) { for (int i = 0; i < content.transform.childCount; i++) { PerkHolder test = content.transform.GetChild(i).gameObject.GetComponent <PerkHolder>(); if (test) { test.recheck(clickedEvent.perkInfo); } } } }
private void Update() { for (int i = 0; i < content.transform.childCount; i++) { PerkHolder test = content.transform.GetChild(i).gameObject.GetComponent <PerkHolder>(); Image colorEdit = content.transform.GetChild(i).gameObject.GetComponent <Image>(); perkPointsText.text = playerClass.PlayerLevelExp.PerkPoints.ToString(); if (test) { if (!selected) { statsBlock.transform.localPosition = Vector3.MoveTowards(statsBlock.transform.localPosition, hiddenLoc, 350 * Time.deltaTime); if (test.taken) { colorEdit.color = Color.green; } else if (test.blocked) { colorEdit.color = Color.red; } else if (test.available) { colorEdit.color = Color.yellow; } else { colorEdit.color = Color.white; } } else { colorEdit.color = test.precheck(mousedOver); statsBlock.transform.localPosition = Vector3.MoveTowards(statsBlock.transform.localPosition, visibleLoc, 350 * Time.deltaTime); } } } }
public void reloadGraph() { if (!loaded) { loaded = true; foreach (PerkPrototype proto in playerClass.allPerks) { Vector3 position = new Vector3(proto.uiCoords.x * 3, -proto.uiCoords.y * 3, 0); foreach (PerkPrototype req in proto.Require) { Vector3 other = new Vector3(req.uiCoords.x * 3, -req.uiCoords.y * 3, 0); Vector3 direction = other - position; GameObject line = new GameObject(); Image l = line.AddComponent <Image>(); line.transform.parent = content.transform; RectTransform rect = line.GetComponent <RectTransform>(); line.name = proto.Name + " requires " + req.Name; rect.pivot = new Vector2(0, 0.5f); line.transform.localPosition = position; float angle = Mathf.Atan2(direction.y, direction.x) * Mathf.Rad2Deg; rect.sizeDelta = new Vector3(direction.magnitude, 2f, 1); rect.Rotate(new Vector3(0, 0, angle)); line.transform.localScale = new Vector3(1.0f, line.transform.localScale.y, line.transform.localScale.z); if (proto.RequireAll) { l.color = Color.black; } else { l.color = Color.grey; } } foreach (PerkPrototype req in proto.BlockedBy) { Vector3 other = new Vector3(req.uiCoords.x * 3, -req.uiCoords.y * 3, 0); Vector3 direction = other - position; GameObject line = new GameObject(); Image l = line.AddComponent <Image>(); line.transform.parent = content.transform; RectTransform rect = line.GetComponent <RectTransform>(); line.name = proto.Name + " is blocked by " + req.Name; rect.pivot = new Vector2(0, 0.5f); line.transform.localPosition = position; float angle = Mathf.Atan2(direction.y, direction.x) * Mathf.Rad2Deg; rect.sizeDelta = new Vector3(direction.magnitude, 2.0f, 1); line.transform.localScale = new Vector3(1.0f, line.transform.localScale.y, line.transform.localScale.z); rect.Rotate(new Vector3(0, 0, angle)); l.color = Color.red; } } foreach (PerkPrototype proto in playerClass.allPerks) { GameObject image = new GameObject(); PerkHolder perkHolder = image.AddComponent <PerkHolder>(); perkHolder.perkInfo = proto; perkHolder.playerClass = playerClass; perkHolder.recheck(); if (proto.Require.Count == 0) { perkHolder.available = true; } image.transform.parent = content.transform; image.name = proto.Name; //RectTransform rect = image.GetComponent<RectTransform>(); image.transform.localScale = new Vector3(0.75f, 0.75f, 0.75f); Image spr = image.AddComponent <Image>(); spr.sprite = proto.sprite; //image.GetComponent<Image>.sprite = proto.sprite; image.transform.localPosition = new Vector3(proto.uiCoords.x * 3, -proto.uiCoords.y * 3, 0); EventTrigger ev = image.AddComponent <EventTrigger>(); EventTrigger.Entry entry = new EventTrigger.Entry(); entry.eventID = EventTriggerType.PointerClick; entry.callback.AddListener((eventData) => { OnPerkClick((PointerEventData)eventData); }); ev.triggers.Add(entry); EventTrigger.Entry entry2 = new EventTrigger.Entry(); entry2.eventID = EventTriggerType.PointerEnter; entry2.callback.AddListener((eventData) => { OnPerkEnter((PointerEventData)eventData); }); ev.triggers.Add(entry2); EventTrigger.Entry entry3 = new EventTrigger.Entry(); entry3.eventID = EventTriggerType.PointerExit; entry3.callback.AddListener((eventData) => { OnPerkExit((PointerEventData)eventData); }); ev.triggers.Add(entry3); } } }