Exemple #1
0
    protected override void Update()
    {
        base.Update();

        if (Toolbox.Player)
        {
            if (navMeshAgent.enabled)
            {
                navMeshAgent.Resume();
                navMeshAgent.SetDestination(Toolbox.Player.transform.position);
            }

            if (EquippedWeapon)
            {
                if (EquippedWeapon.AIShouldAttack(Toolbox.Player.transform.position))
                {
                    EquippedWeapon.StartAttack();
                }
                else
                {
                    EquippedWeapon.EndAttack();
                }
            }
        }

        desiredVelocity = Vector3.MoveTowards(desiredVelocity, navMeshAgent.desiredVelocity, navMeshAgent.acceleration * Time.deltaTime);
        var input = transform.InverseTransformDirection(desiredVelocity);

        Animator.SetFloat("Horizontal", input.x);
        Animator.SetFloat("Vertical", input.z);
        Animator.speed = navMeshAgent.speed;
    }
    public void EquipWeapon(Item itemToEquip)
    {
        if (EquippedWeapon != null)
        {
            InventoryController.Instance.GiveItem(currentlyEquippedItem.ObjectSlug);
            charactersStats.RemoveBonusStats(EquippedWeapon.GetComponent <IWeapon>().Stats); //Remove current weapon's stats from player
            Destroy(playerHand.transform.GetChild(0).gameObject);                            //Destroy the current weapon on player's hand
        }

        EquippedWeapon = (GameObject)Instantiate(Resources.Load <GameObject>("Weapons/" + itemToEquip.ObjectSlug), playerHand.transform.position, playerHand.transform.rotation);
        //Get the prefab named "Sword" from the "Resources" folder and set the weapon to the player's hand
        //The item is named "Sword" in InventoryController and this line will get the exact prefab for it

        equippedWeapon = EquippedWeapon.GetComponent <IWeapon>();

        if (EquippedWeapon.GetComponent <IProjectileWeapon>() != null) //Sword can't cast fireball
        {
            EquippedWeapon.GetComponent <IProjectileWeapon>().ProjectileSpawn = spawnProjectile;
        }

        EquippedWeapon.transform.SetParent(playerHand.transform); //Parent to the player's hand

        equippedWeapon.Stats = itemToEquip.Stats;                 //EquippedWeapon.GetComponent<IWeapon>().Stats; //Get stats from the weapon

        currentlyEquippedItem = itemToEquip;

        charactersStats.AddBonusStats(itemToEquip.Stats);

        UIEventHandler.ItemEquipped(itemToEquip);
        UIEventHandler.StatsChanged();
    }
Exemple #3
0
    public void equipWeapon()
    {
        GameObject     equippedWeaponObject = GameObject.Find("EquippedWeapon");
        EquippedWeapon equipped             = equippedWeaponObject.GetComponent <EquippedWeapon>();

        if (equipped.equippedWeapon != null && (equipped.equippedWeapon.getWeaponName() == weapon.getWeaponName()))
        {
            freezeRigidbody();
            return;
        }
        else
        {
            if (equipped.equippedWeapon != null)
            {
                dropWeapon();
            }
        }


        //remove components
        Destroy(GetComponent <Rigidbody>());
        Destroy(GetComponent <MeshCollider>());

        //set weapon position to parents
        Transform equippedWeaponTransform = equippedWeaponObject.GetComponent <Transform>();
        Transform groundWeaponTransform   = GetComponent <Transform>();

        groundWeaponTransform.SetPositionAndRotation(equippedWeaponTransform.position, equippedWeaponTransform.rotation);
        groundWeaponTransform.parent = equippedWeaponTransform;

        //assign the equipped weapon
        equipped.equippedWeapon = weapon;
        equipped.playPickUpSound();
    }
Exemple #4
0
    public void dropWeapon()
    {
        GameObject equippedWeaponObject = GameObject.Find("EquippedWeapon");
        GameObject playerObject         = GameObject.Find("PlayerCharacter");

        //should only ever have 1 child so fetching 0 is fine
        Transform  child       = equippedWeaponObject.transform.GetChild(0);
        GameObject childObject = child.gameObject;

        //add mesh collider
        childObject.AddComponent <MeshCollider>();
        childObject.GetComponent <MeshCollider>().convex = true;

        //set drop position
        child.SetPositionAndRotation(child.transform.position + (-playerObject.transform.forward * 5), child.transform.rotation);

        //assign new parent
        GameObject objects = GameObject.Find("Objects");

        childObject.transform.parent = objects.transform;

        //remove the equpped weapon
        EquippedWeapon equipped = equippedWeaponObject.GetComponent <EquippedWeapon>();

        if (equipped.equippedWeapon.getDurability() <= 0)
        {
            Destroy(childObject);
        }
        equipped.equippedWeapon = null;
        // Debug.Log(equippedWeaponObject.transform.GetChild(0));
        //Destroy(childObject);
    }
Exemple #5
0
 void FireWeapon()
 {
     if (EquippedWeapon.Fire())
     {
         _animator.SetTrigger("Fired");
     }
 }
    protected virtual void OnWeaponsChanged(string value)
    {
        selectWeapons = value;
        // Changes weapon list, equip first weapon equipped position
        if (isServer)
        {
            var splitedData = selectWeapons.Split('|');
            var minEquipPos = int.MaxValue;
            for (var i = 0; i < splitedData.Length; ++i)
            {
                var singleData = splitedData[i];
                var weaponData = GameInstance.GetWeapon(singleData);

                if (weaponData == null)
                {
                    continue;
                }

                var equipPos = weaponData.equipPosition;
                if (minEquipPos > equipPos)
                {
                    defaultWeaponIndex = equipPos;
                    minEquipPos        = equipPos;
                }

                var equippedWeapon = new EquippedWeapon();
                equippedWeapon.defaultId = weaponData.GetId();
                equippedWeapon.weaponId  = weaponData.GetId();
                equippedWeapon.SetMaxAmmo();
                equippedWeapons[equipPos] = equippedWeapon;
                equippedWeapons.Dirty(equipPos);
            }
            selectWeaponIndex = defaultWeaponIndex;
        }
    }
Exemple #7
0
    private float damage = 0;                 // Damage to deal on the next hit

    /// <summary>
    /// Initialize this <c>Sword</c>'s values.
    /// </summary>
    /// <param name="wep">The <c>EquippedWeapon</c> that represents this <c>CQC</c>.</param>
    /// <param name="source">The Source character.</param>
    /// <param name="layer">The layer to use for collision detection.</param>
    public override void Initialize(EquippedWeapon wep, MovementController source, int layer)
    {
        mom              = wep;
        this.source      = source;
        hitter.enabled   = false;
        gameObject.layer = layer;
    }
 public override IEnumerator Shoot(EquippedWeapon equipped)
 {
     while (!equipped.RequestStopFire && equipped.HasBulletsLeft)
     {
         equipped.Weapon.BulletSpawnModel.Shoot(equipped);
         yield return(new WaitForSeconds(timeBetweenShots));
     }
 }
Exemple #9
0
 void Start()
 {
     childrenWeapon = Instantiate(weaponPrefab, transform.position, Quaternion.identity);
     childrenWeapon.transform.parent = transform;
     equippedWeapon = EquippedWeapon.ak47;
     GetComponent <BoxCollider2D>().size   = childrenWeapon.transform.GetChild(0).GetComponent <SpriteRenderer>().size;
     GetComponent <BoxCollider2D>().offset = new Vector2(0.5f, -0.1f);
 }
Exemple #10
0
 private void OnTriggerEnter2D(Collider2D collision)
 {
     if (collision.tag == "WeaponItem")
     {
         EquippedWeapon equippedWeaponValue = collision.GetComponent <WeaponItem>().equippedWeapon;
         CmdPickUpWeapon(equippedWeaponValue);
     }
 }
Exemple #11
0
 protected Character copyWeapon(Character copy)
 {
     if (EquippedWeapon != null)
     {
         copy.EquipWeapon(EquippedWeapon.Copy());
     }
     return(copy);
 }
Exemple #12
0
 // Start is called before the first frame update
 // Update is called once per frame
 void OnTriggerEnter(Collider col)
 {
     if (col.gameObject.tag == "PlayerChar")
     {
         EquippedWeapon EW = col.gameObject.GetComponent <EquippedWeapon>();
         EW.pickUp = WD;
         EW.Equip();
     }
 }
 private void ObserveCoolTime(EquippedWeapon equippedWeapon)
 {
     equippedWeapon.CoolTimeSeconds
     .SubscribeWithState2(this, equippedWeapon, (_, _this, e) =>
     {
         _this.UpdateCoolTimeSlider(e.CoolTimeRate);
     })
     .AddTo(this);
 }
Exemple #14
0
 private void Start()
 {
     EquippedWeapon = EquippedWeapon.Hands;
     Ammo           = 0;
     PlayerTrans    = GameObject.FindGameObjectWithTag("Player").transform;
     SliceRot       = 0;
     IsSlicing      = false;
     IsPunching     = false;
     PunchTimer     = 0;
 }
Exemple #15
0
    protected override void AI()
    {
        if (!HasControl || Interacting)
        {
            return;
        }

        Vector3 Vel = Vector3.zero;

        Vector3 Forward = CamTr.forward;

        Forward.y = 0.0f;
        Forward.Normalize();

        Vector3 Right = Vector3.Cross(Forward, Vector3.up);

        Vel -= Right * Motor.movement.maxSidewaysSpeed * Input.GetAxis("Horizontal");
        Vel += Forward * Motor.movement.maxForwardSpeed * Input.GetAxis("Vertical");

        if (Interactables.Count > 0 && Input.GetKey(KeyInteract))
        {
            Interacting = true;

            foreach (GameObject GI in Interactables)
            {
                foreach (Interactable I in GI.GetComponents <Interactable>())
                {
                    I.OnInteract(this);
                }
            }
        }

        if (Input.GetKey(KeyDodge) && PlayAnim("Dodge"))
        {
            float Length = Vel.magnitude;

            if (Length <= 0.0f)
            {
                Vel = Forward * Motor.movement.maxForwardSpeed;
            }
            else
            {
                Vel = Vel / Length * Motor.movement.maxForwardSpeed;
            }
        }

        if (Input.GetMouseButton(MouseAttack) && PlayAnim("Attack"))
        {
            EquippedWeapon.ResetHits();
        }

        Motor.movement.velocity = Vel;

        Interactables.Clear();
    }
Exemple #16
0
    // Update is called once per frame
    protected override void Update()
    {
        base.Update();

        if (Toolbox.GameManager.Paused)
        {
            return;
        }

        /// <summary>
        /// Deals with the player input and gives it to the animator
        /// </summary>
        var input = new Vector3(Input.GetAxis("Horizontal"), 0.0f, Input.GetAxis("Vertical"));

        input = transform.InverseTransformDirection(input);
        Animator.SetFloat("Horizontal", input.x);
        Animator.SetFloat("Vertical", input.z);

        // Rotation
        var   plane = new Plane(Vector3.up, transform.position);
        var   ray   = Camera.main.ScreenPointToRay(Input.mousePosition);
        float distance;

        if (plane.Raycast(ray, out distance))
        {
            transform.LookAt(ray.GetPoint(distance), Vector3.up);
        }

        // Actions
        if (Input.GetKeyDown(KeyCode.Space))
        {
            Animator.SetTrigger("Jump");
        }

        if (Input.GetKey(KeyCode.C))
        {
            Animator.SetBool("Crouch", true);
        }
        else
        {
            Animator.SetBool("Crouch", false);
        }

        if (EquippedWeapon)
        {
            if (Input.GetButtonDown("Attack"))
            {
                EquippedWeapon.StartAttack();
            }
            if (Input.GetButtonUp("Attack"))
            {
                EquippedWeapon.EndAttack();
            }
        }
    }
Exemple #17
0
 public void ResetToDefault()
 {
     EquippedWeapon.Swap(null, false);
     for (int i = Inventory.Items.Count - 1; i >= 0; i--)
     {
         Inventory.CmdDropItem(Inventory.Items[i], false);
     }
     Inventory.money = 0;
     Health.Init(Health.Max);
     StatusEffectList.Clear();
 }
Exemple #18
0
 private void finishEquipment()
 {
     if (EquippedShield != null)
     {
         EquippedShield.Finish();
     }
     if (EquippedWeapon != null)
     {
         EquippedWeapon.Finish();
     }
 }
Exemple #19
0
 public void Update(Delta delta)
 {
     if (EquippedWeapon != null)
     {
         EquippedWeapon.Update(delta);
     }
     else if (EquippedShield != null)
     {
         EquippedShield.Update(delta);
     }
 }
 public WeaponСharacteristics(GameObject BulletPrefab,
                              float Weight, float FireRate, float FiringSpread, float BulletSpeed, int Magazine, float ReloadTime, EquippedWeapon equippedWeapon)
 {
     this.bulletPrefab   = BulletPrefab;
     this.weight         = Weight;
     this.fireRate       = FireRate;
     this.firingSpread   = FiringSpread;
     this.bulletSpeed    = BulletSpeed;
     this.magazine       = Magazine;
     this.reloadTime     = ReloadTime;
     this.equippedWeapon = equippedWeapon;
 }
Exemple #21
0
    protected override void InnerShoot(EquippedWeapon weapon)
    {
        float currPelletArc = sprayArc * -0.5f;

        for (int i = 0; i < pelletAmount; i++)
        {
            Vector2 vec = Quaternion.AngleAxis(currPelletArc + GetAccuracyAngle(weapon.Weapon.Accuracy), Vector3.forward) * weapon.LocalDirection;
            weapon.SpawnNew(vec);

            currPelletArc += sprayArc / pelletAmount;
        }
    }
Exemple #22
0
        private void zdjecie_Click(object sender, EventArgs e)
        {
            if (EquippedArmor.Items.Count > 0 && EquippedArmor.Items[0].Selected == true)
            {
                Przedmiot P = postac.getZalozonaZbroja() as Przedmiot;
                if (P != null)
                {
                    EquippedArmor.Items[0].Selected = false;

                    if (EquippedWeapon.Items.Count > 0 && EquippedWeapon.Items[0].Selected == true)
                    {
                        EquippedWeapon.Items[0].Selected = false;
                    }

                    listBox1.Items.Add(postac.getZalozonaZbroja().getNazwa().ToString() + " - " + postac.getZalozonaZbroja().getIlosc().ToString());
                    postac.Ekwipunek.Add(postac.getZalozonaZbroja());
                    EquippedArmor.Clear();
                    imageList1.Images.RemoveAt(0);
                    postac.ZalozZbroje(null);

                    Sound.PlaySound(Sound.Sound_weararmor);
                }

                P = null;
            }
            else if (EquippedWeapon.Items.Count > 0 && EquippedWeapon.Items[0].Selected == true)
            {
                Przedmiot P = postac.getZalozonaBron() as Przedmiot;
                if (P != null)
                {
                    EquippedWeapon.SelectedItems[0].Selected = false;

                    if (EquippedArmor.Items.Count > 0 && EquippedArmor.Items[0].Selected == true)
                    {
                        EquippedArmor.Items[0].Selected = false;
                    }

                    listBox1.Items.Add(postac.getZalozonaBron().getNazwa().ToString() + " - " + postac.getZalozonaBron().getIlosc().ToString());
                    postac.Ekwipunek.Add(postac.getZalozonaBron());
                    postac.addStrenght(-1 * postac.getZalozonaBron().getItemStrength());
                    EquippedWeapon.Clear();
                    imageList2.Images.RemoveAt(0);
                    postac.ZalozBron(null);

                    Sound.PlaySound(Sound.Sound_wearweapon);
                }

                P = null;
            }

            UpdateEquipment(postac);
        }
Exemple #23
0
    public void Collect(Item item)
    {
        switch (item.ItemType)
        {
        case Item.EItemType.Health:
            Heal(item.value);
            break;

        case Item.EItemType.Ammo:
            EquippedWeapon.GiveAmmo(item.value);
            break;
        }
    }
Exemple #24
0
 //Display information about this character
 public void DisplayStatus()
 {
     Console.WriteLine("Name: " + Gender);
     Console.WriteLine("Gender: " + Name);
     Console.WriteLine("Health: " + Health);
     Console.WriteLine("Base Attack: " + BaseAttack);
     Console.WriteLine("Accuracy: " + Accuracy);
     Console.WriteLine("Status Effect: " + StatusEffect);
     if (equippedWeapon != null)
     {
         EquippedWeapon.DisplayStatus();
     }
 }
Exemple #25
0
    void Start()
    {
        OnGround  = true;
        rb        = GetComponent <Rigidbody> ();
        coll      = GetComponent <CapsuleCollider> ();
        iniHeight = coll.height;
        eqWep     = transform.Find("WeaponSlot").GetComponent <EquippedWeapon> ();

        /*if(rb == null)
         * {
         *  rb = gameObject.AddComponent<Rigidbody> ();
         * }*/
    }
        public void CheckContinueAttack()
        {
            if (_state == CharacterStates.Attack)
            {
                if (EquippedWeapon.AttackFinished)
                {
                    SetStateToPreAttack();
                    EquippedWeapon.FinishAttack();
                    return;
                }

                EquippedWeapon.ContinueAttack();
            }
        }
Exemple #27
0
    public void ServerPickup(GameObject pickup)
    {
        if (!pickup.TryGetComponent(out PickableInWorld piw) || piw.Available == false)
        {
            return;
        }

        piw.PickedUp();
        Pickable pickable = piw.Pickable;

        if (piw.IsBuyable)
        {
            if (Inventory.money < pickable.Costs)
            {
                return;
            }

            Inventory.money -= (int)pickable.Costs;

            if (CurrentRoom is ShopRoom sr)
            {
                sr.RemovePriceTag(piw.transform.position);
            }
        }

        switch (pickable.PickableType)
        {
        case PickableType.Consumable:
            ((Consumable)pickable).Affect(this);
            break;

        case PickableType.Item:
            Inventory.PickUp((Item)pickable);
            break;

        case PickableType.Weapon:
            EquippedWeapon.Swap((Weapon)pickable);
            break;

        case PickableType.StatusEffect:
            Debug.LogError("Status Effect should not be on the ground... " + pickable.Id);
            break;

        default:
            Debug.LogError("Type " + pickable.PickableType + " not implemented!");
            break;
        }

        RpcItemPickedUp(pickable);
    }
Exemple #28
0
 public static void NextPlayer()
 {
     // TODO Skip bunny's turn if they're dead
     currentPlayer = currentPlayer + 1;
     currentPlayer = currentPlayer % numberOfPlayers;
     while (!players[currentPlayer].IsAlive)
     {
         currentPlayer = ++currentPlayer % numberOfPlayers;
     }
     players[currentPlayer].WeaponFuse = 5.0f;
     players[currentPlayer].Angle      = 0;
     players[currentPlayer].Power      = 0;
     equippedWeapon = EquippedWeapon.NoWeapon;
     canShoot       = false;
 }
Exemple #29
0
        private void CreateGimmick(EquippedWeapon equippedWeapon)
        {
            var weaponRecord = equippedWeapon.InstanceWeapon.WeaponRecord;
            var gimmick      = weaponRecord.Gimmick.Rent();
            var parent       = this.owner.TransformHolder.GetWeaponOrigin(this.owner.StatusController.Direction);

            gimmick.transform.position = parent.position;
            gimmick.transform.rotation = parent.rotation;
            gimmick.Activate(this.owner);
            foreach (var giveDamage in gimmick.GetComponentsInChildren <IGiveDamage>())
            {
                giveDamage.InstanceWeapon = equippedWeapon.InstanceWeapon;
            }
            equippedWeapon.ResetCoolTime();
        }
Exemple #30
0
    public void SetSpellUI(EquippedWeapon weapon)
    {
        int i = 0;
        int j;

        switch (weapon)
        {
        case EquippedWeapon.Melee:
            j = 0;
            for (; i < SkillButtonsImages.Length; i++)
            {
                if (skills[j].Unlocked)
                {
                    SkillButtonsImages[i].sprite = SkillsImgs[j];
                }
                else
                {
                    SkillButtonsImages[i].sprite = UnavaliableSkill;
                }
                j++;
            }
            break;

        case EquippedWeapon.Bow:
            j = 4;
            for (; i < SkillButtonsImages.Length; i++)
            {
                if (skills[j].Unlocked)
                {
                    SkillButtonsImages[i].sprite = SkillsImgs[j];
                }
                else
                {
                    SkillButtonsImages[i].sprite = UnavaliableSkill;
                }
                j++;
            }
            break;

        case EquippedWeapon.None:
            for (; i < SkillButtonsImages.Length; i++)
            {
                SkillButtonsImages[i].sprite = UnavaliableSkill;
            }
            break;
        }
        SpellUIState();
    }