public void Init(MySqlConnection connection) { using (var command = connection.CreateCommand()) { command.CommandText = "SELECT * FROM character_skillbars WHERE char_id=@char_id"; command.Parameters.AddWithValue("@char_id", _character.DbId); command.Prepare(); using (var reader = command.ExecuteReader()) { while (reader.Read()) { var template = new Skillbar { Slot = reader.GetByte("slot"), SlotId = reader.GetUInt16("slot_id"), SlotType = (BarSlotType)reader.GetByte("slot_type"), }; switch (template.SlotType) { case BarSlotType.Skill: template.SkillData = _character.Skills.GetSkill(template.SlotId); if (template.SkillData != null) { _skillBars.Add(template.Slot, template); } break; case BarSlotType.Item: // TODO break; } } } } }
private void OnTriggerEnter(Collider other) { if (other.tag == "Player" || other.tag == "Party") { hasPlayer = true; player = other; Skillbar.SilenceAllExcept(other.gameObject.name); } }
public void UpdateSkillBar(byte slot, BarSlotType slotType, ushort id) { var isOk = true; if (id == 0) { _skillBars[slot] = null; if (!_removedSlots.Contains(slot)) { _removedSlots.Add(slot); } } else { switch (slotType) { case BarSlotType.Skill: { var skillData = _character.Skills.GetSkillx(id); if (skillData == null) { return; } var template = new Skillbar { Slot = slot, SlotId = skillData.SkillId, SlotType = BarSlotType.Skill, SkillData = skillData }; _skillBars[slot] = template; if (_removedSlots.Contains(slot)) { _removedSlots.Remove(slot); } } break; case BarSlotType.Item: // TODO - Implement item isOk = false; break; default: isOk = false; break; } } if (!isOk) { return; } _character.SendPacket(new UpdateSkillBar(_character.Connection.Id, slot, slotType, id)); _character.Save(SaveType.SkillBars); }
private void OnTriggerExit(Collider other) { if (player == other) { hasPlayer = false; retracting = true; player = null; Skillbar.RestoreAllVolume(); } }
public Character(string name, Profession prof) : base(name, prof) { Name = name; Gender = prof.Gender ?? "Male"; Profession = prof; Attributes = new Attributes(this, prof.StartingAttributesDict); Talents = new Talents(this, prof.StartingTalentsDict); Inventory = new Inventory(this, prof.StartingInventoryList); Equipment = new Equipment(this, prof.StartingEquipmentDict); Skillbar = new Skillbar(this, prof.StartingSkills); HP = new Health(this); SP = new Stamina(this); HP.AdjustHP(9999); // Start off at full health (account for equip mods). SP.AdjustSP(999); // Start off at full stamina (account for equip mods). XP = new Experience(this, 1); }
public override void CheckIfDitched() { if (toBeDitched) { if (party.IndexOf(gameObject) == 0) { GameObject.Find("PlayerPivot").GetComponent <PlayerMovement>().nextInParty = null; party.RemoveAt(0); } else { party[party.IndexOf(gameObject) - 1].GetComponent <PartyMovement>().nextInParty = null; party.RemoveAt(party.IndexOf(gameObject)); } toBeDitched = false; Skillbar.DeactivateSkill(gameObject.name); } }
/* --- Methods --- */ void Start() { healthSystem = Player.GetComponent <HealthSystem>(); s1 = new Skill(transform, "1"); s1.SetAlpha(KeyDownAlpha); s1KeyUp = false; s2 = new Skill(transform, "2"); s2.SetAlpha(KeyDownAlpha); s2KeyUp = false; s3 = new Skill(transform, "3"); s3.SetAlpha(KeyDownAlpha); s3KeyUp = false; s4 = new Skill(transform, "4"); s4.SetAlpha(KeyDownAlpha); s4KeyUp = false; boopASrc = GetComponent <AudioSource>(); previousTime = 0; pressedSkills = new List <SkillPress>(); inst = this; }
private void checkSurroundings() // Checks all surrounding blocks and adds party members to party { Vector3[] directions = { Vector3.forward, Vector3.left, Vector3.back, Vector3.right }; RaycastHit hit; GameObject obstacle = null; //Vector3 raycastPosition = new Vector3(transform.position.x, transform.position.y - 0.5f, transform.position.z); foreach (Vector3 direction in directions) { if (Physics.Raycast(transform.position, direction, out hit, 1)) { Debug.DrawRay(transform.position, transform.TransformDirection(direction) * hit.distance, Color.red); obstacle = hit.transform.gameObject; if (obstacle.tag == "Party") { if (!party.Contains(obstacle)) { foundParty = true; party.Add(obstacle); if (party.Count == 1) { nextInParty = obstacle; } else { party[party.IndexOf(obstacle) - 1].GetComponent <PartyMovement>().nextInParty = obstacle; } // play sound BGM.FoundInst(obstacle.name); // activate skill Skillbar.ActivateSkill(obstacle.name); } } } } }
void Update() { GameObject player = Player.player; panel.SetActive(player != null); // hide while not in the game world if (!player) { return; } // get components Skillbar skillbar = player.GetComponent <Skillbar>(); PlayerSkills skills = player.GetComponent <PlayerSkills>(); PlayerInventory inventory = player.GetComponent <PlayerInventory>(); PlayerEquipment equipment = player.GetComponent <PlayerEquipment>(); PlayerLook look = player.GetComponent <PlayerLook>(); // instantiate/destroy enough slots UIUtils.BalancePrefabs(slotPrefab.gameObject, skillbar.slots.Length, content); // refresh all for (int i = 0; i < skillbar.slots.Length; ++i) { UISkillbarSlot slot = content.GetChild(i).GetComponent <UISkillbarSlot>(); slot.dragAndDropable.name = i.ToString(); // drag and drop index // hotkey overlay (without 'Alpha' etc.) string pretty = skillbar.slots[i].hotKey.ToString().Replace("Alpha", ""); slot.hotkeyText.text = pretty; // skill, inventory item or equipment item? int skillIndex = skills.GetSkillIndexByName(skillbar.slots[i].reference); int inventoryIndex = inventory.GetItemIndexByName(skillbar.slots[i].reference); int equipmentIndex = equipment.GetItemIndexByName(skillbar.slots[i].reference); if (skillIndex != -1) { Skill skill = skills.skills[skillIndex]; bool canUse = skill.CanCast(player) && !look.IsFreeLooking(); // hotkey pressed and not typing in any input right now? if (Input.GetKeyDown(skillbar.slots[i].hotKey) && !UIUtils.AnyInputActive() && canUse) { skills.StartCast(skillIndex); } // refresh skill slot slot.button.interactable = canUse; slot.button.onClick.SetListener(() => { skills.StartCast(skillIndex); }); slot.tooltip.enabled = true; slot.tooltip.text = skill.ToolTip(); slot.dragAndDropable.dragable = true; slot.image.color = Color.white; slot.image.sprite = skill.image; float cooldown = skill.CooldownRemaining(); slot.cooldownOverlay.SetActive(cooldown > 0); slot.cooldownText.text = cooldown.ToString("F0"); slot.cooldownCircle.fillAmount = skill.cooldown > 0 ? cooldown / skill.cooldown : 0; slot.amountOverlay.SetActive(false); } else if (inventoryIndex != -1) { ItemSlot itemSlot = inventory.slots[inventoryIndex]; // hotkey pressed and not typing in any input right now? if (Input.GetKeyDown(skillbar.slots[i].hotKey) && !UIUtils.AnyInputActive()) { inventory.UseItem(inventoryIndex); } // refresh inventory slot slot.button.onClick.SetListener(() => { inventory.UseItem(inventoryIndex); }); slot.tooltip.enabled = true; slot.tooltip.text = itemSlot.ToolTip(); slot.dragAndDropable.dragable = true; slot.image.color = Color.white; slot.image.sprite = itemSlot.item.image; slot.cooldownOverlay.SetActive(false); slot.cooldownCircle.fillAmount = 0; slot.amountOverlay.SetActive(itemSlot.amount > 1); slot.amountText.text = itemSlot.amount.ToString(); } else if (equipmentIndex != -1) { ItemSlot itemSlot = equipment.slots[equipmentIndex]; // refresh equipment slot slot.button.onClick.RemoveAllListeners(); slot.tooltip.enabled = true; slot.tooltip.text = itemSlot.ToolTip(); slot.dragAndDropable.dragable = true; slot.image.color = Color.white; slot.image.sprite = itemSlot.item.image; slot.cooldownOverlay.SetActive(false); slot.cooldownCircle.fillAmount = 0; slot.amountOverlay.SetActive(itemSlot.amount > 1); slot.amountText.text = itemSlot.amount.ToString(); } else { // clear the outdated reference skillbar.slots[i].reference = ""; // refresh empty slot slot.button.onClick.RemoveAllListeners(); slot.tooltip.enabled = false; slot.dragAndDropable.dragable = false; slot.image.color = Color.clear; slot.image.sprite = null; slot.cooldownOverlay.SetActive(false); slot.cooldownCircle.fillAmount = 0; slot.amountOverlay.SetActive(false); } } }