Example #1
0
        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;
                        }
                    }
                }
            }
        }
Example #2
0
 private void OnTriggerEnter(Collider other)
 {
     if (other.tag == "Player" || other.tag == "Party")
     {
         hasPlayer = true;
         player    = other;
         Skillbar.SilenceAllExcept(other.gameObject.name);
     }
 }
Example #3
0
        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);
        }
Example #4
0
 private void OnTriggerExit(Collider other)
 {
     if (player == other)
     {
         hasPlayer  = false;
         retracting = true;
         player     = null;
         Skillbar.RestoreAllVolume();
     }
 }
Example #5
0
        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);
        }
Example #6
0
 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);
     }
 }
Example #7
0
    /* --- 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;
    }
Example #8
0
    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);
                    }
                }
            }
        }
    }
Example #9
0
    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);
            }
        }
    }