예제 #1
0
 public void OnTriggerExit(Collider collision)
 {
     if (collision.gameObject.tag == "AtkSpd")
     {
         AbstractWeapon.GetWeaponCooldownHolder(this.gameObject).SetCooldownMultiplier(1.0f);
     }
 }
    private void EquipWeapons()
    {
        if (frontWeaponObject != null)
        {
            frontWeaponObject.gameObject.SetActive(false);
        }
        if (backWeaponObject != null)
        {
            backWeaponObject.gameObject.SetActive(false);
        }

        RobotWeaponsManager weaponsManager = RobotWeaponsManager.Instance;
        RobotWeapon         frontWeapon    = weaponsManager.FrontWeapon;

        if (frontWeapon != null)
        {
            frontWeaponObject = Instantiate(weaponsManager.FrontWeapon.prefab, configuration.FrontWeaponPosition.position, Quaternion.identity, transform);
            frontWeaponObject.EquipToPlayer(gameObject);
        }
        else
        {
            Debug.Log("no front weapon equipped, not instantiating");
        }
        RobotWeapon backWeapon = weaponsManager.BackWeapon;

        if (backWeapon != null)
        {
            backWeaponObject = Instantiate(weaponsManager.BackWeapon.prefab, configuration.BackWeaponPosition.position, Quaternion.identity, transform);
            backWeaponObject.EquipToPlayer(gameObject);
        }
        else
        {
            Debug.Log("no back weapon equipped, not instantiating");
        }
    }
예제 #3
0
    private void HandleWeapon(AbstractWeapon weapon, bool idle, int direction)
    {
        if (weapon)
        {
            if (!idle || forceIdleWeapon)
            {
                switch (direction)
                {
                case 0:
                    weapon.transform.SetParent(transform.Find("HandForwards"), false);
                    break;

                case 1:
                    weapon.transform.SetParent(transform.Find("HandLeft"), false);
                    break;

                case 2:
                    weapon.transform.SetParent(transform.Find("HandBackwards"), false);
                    break;

                case 3:
                    weapon.transform.SetParent(transform.Find("HandRight"), false);
                    break;
                }
            }

            forceIdleWeapon = false;
        }
    }
예제 #4
0
    void Start()
    {
        equippedWeapon = primaryWeapon;
        equippedSlot   = "Primary";

        refillAmmunition();
    }
 private void Start()
 {
     gameManager = GameObject.Find("GameManager").GetComponent <GameManager>();
     weapon      = gameManager.weapon.GetWeapon(WeaponType.Shotgun);
     weapon.Create(transform);
     Assert.IsTrue(gameManager != null);
 }
예제 #6
0
    public void AddWeapon(AbstractWeapon weapon)
    {
        bool alreadyExists = false;

        foreach (AbstractAbilityCooldown aac in weaponHolders)
        {
            if (aac.GetAbility() == weapon as AbstractAbility)
            {
                alreadyExists = true;
            }
        }

        if (!alreadyExists)
        {
            if (weapon.cdString == "OnHold")
            {
                weaponHolders.Add(this.transform.gameObject.AddComponent <OnHoldAbilityCooldown>());
            }
            if (weapon.cdString == "OnRelease")
            {
                weaponHolders.Add(this.transform.gameObject.AddComponent <OnReleaseAbilityCooldown>());
            }
            if (weapon.cdString == "QuickCast")
            {
                weaponHolders.Add(this.transform.gameObject.AddComponent <QuickCastAbilityCooldown>());
            }

            CreateWeaponGameObject(weapon);

            weaponHolders[weaponHolders.Count - 1].Initialise(weapon, this.transform.gameObject);
            weaponHolders[weaponHolders.Count - 1].SetKeyCode(KeyCode.Mouse0);
            weaponHolders[weaponHolders.Count - 1].enabled = false;
        }
    }
예제 #7
0
 public AbstractSolder(string unitCode, string rank, AbstractWeapon gun, AbstractGadgets gadgets)
 {
     UnitСode = unitCode;
     Rank     = rank;
     Weapon   = gun;
     Gadgets  = gadgets;
 }
예제 #8
0
    public void Awake()
    {
        referenceWeapon = weaponPrefab.GetComponent<AbstractWeapon>();
        if (referenceWeapon.transform.GetComponent<TrailRenderer>()) {
            hasTrail = true;
            trailTime = referenceWeapon.transform.GetComponent<TrailRenderer>().time;
        }
        Register(referenceWeapon.Name, this);
        weaponPool = new GameObjectPool(weaponPrefab, maxPoolSize, initialPoolSize, transform);

        if (impactPrefabs != null && impactPrefabs.Length > 0) {
            impactPools = new GameObjectPool[impactPrefabs.Length];
            for (int i = 0; i < impactPrefabs.Length; i++) {
                impactPools[i] = new GameObjectPool(impactPrefabs[i], maxImpactPoolSize, initialImpactPoolSize, transform);
            }
        }

        if (muzzleFlashPrefabs != null && muzzleFlashPrefabs.Length > 0) {
            muzzlePools = new GameObjectPool[muzzleFlashPrefabs.Length];

            for (int i = 0; i < muzzleFlashPrefabs.Length; i++) {
                muzzlePools[i] = new GameObjectPool(muzzleFlashPrefabs[i], maxMuzzleFlashPoolSize, initialMuzzleFlashPoolSize, transform);
            }
        }
        impactIdx = 0;
        muzzleIdx = 0;
    }
예제 #9
0
        /// <summary>
        /// Swaps current weapon with new one and returns the old one. If the current weapon is null,
        /// null is returned.
        ///
        /// Use this method when picking up new weapon.
        /// </summary>
        /// <param name="newWeapon">New weapon.</param>
        /// <returns>New weapon or null if no weapon was equipped.</returns>
        public AbstractWeapon SwapWeapon(AbstractWeapon newWeapon)
        {
            AbstractWeapon oldWeapon = Weapon;

            Weapon = newWeapon;
            return(oldWeapon);
        }
예제 #10
0
    public override void EquipItem(AbstractWeapon weapon)
    {
        if (currentWeapon != null)
        {
            currentWeapon.Drop();
        }

        var weaponHolder = transform.Find("Weapon");

        weaponHolder.transform.rotation = new Quaternion(0, 0, 0, 0);

        currentWeapon = weapon;
        currentWeapon.Pickup(this);
        currentWeapon.transform.parent     = weaponHolder;
        currentWeapon.transform.localScale = new Vector3(1, 1, 1);

        if (currentWeapon.weaponType == WeaponType.PROJECTILE)
        {
            gameObject.GetComponentInChildren <UtilityLookAtMouse>().enabled = true;
        }
        else
        {
            gameObject.GetComponentInChildren <UtilityLookAtMouse>().enabled = false;
        }
    }
 public override void SwitchWeapon(AbstractWeapon weapon)
 {
     base.SwitchWeapon(weapon);
     if (weapon is RangeWeapon && projectileGuide != null)
     {
         ((RangeWeapon)weapon).projectileGuide = projectileGuide;
     }
 }
예제 #12
0
 public void OnTriggerEnter(Collider collision)
 {
     if (collision.gameObject.tag == "AtkSpd")
     {
         // Change GetFirstWeapon to apply attack speed to all weapons?
         AbstractWeapon.GetWeaponCooldownHolder(this.gameObject).SetCooldownMultiplier(1.0f / attackSpeedMultiplier);
     }
 }
예제 #13
0
    // Workaround for unity bug where OnTriggerExit is not called if the object tracking entry
    // or exit is destroyed.
    IEnumerator DestroyObject(GameObject gameObject)
    {
        yield return(new WaitForSeconds(despawnTimer));

        Destroy(gameObject);

        AbstractWeapon.GetWeaponCooldownHolder(this.gameObject).SetCooldownMultiplier(1.0f);
    }
예제 #14
0
 // this will be called after the object is instatiated by SetWeapon on the weapon (if aim assist is on)
 public void Initialize(AbstractWeapon setWeapon)
 {
     weapon                  = setWeapon;
     transform.position      = weapon.transform.position;
     transform.localPosition = Vector3.zero;
     weaponRange             = weapon.weaponRange;
     weaponArc               = weapon.weaponArc;
     WeaponTargettingState   = TargettingState.Setup;
 }
    IEnumerator EquipWeaponUI(AbstractWeapon weapon)
    {
        yield return(new WaitForEndOfFrame());

        UIManager.instance.EquipAmmo(weapon.ammoType);
        //load the clip, maybe is changed (new weapon for example)
        UIManager.instance.ReloadAmmo(weapon.ammoType, weapon.maxClip, weapon.ammo, weapon.perfectAmmo);

        UIManager.instance.SetEquipedWeapon(weapon.weaponType);
    }
예제 #16
0
        public int RollDamage(AbstractWeapon weapon, int criticalMultiplier)
        {
            var rolledDamage = 0;

            for (int i = 0; i < criticalMultiplier; i++)
            {
                rolledDamage += weapon.DamageDie.Roll();
            }
            return(rolledDamage);
        }
 void ConfigReloadBar(AbstractWeapon weapon)
 {
     weapon.reloadBar    = reloadBar;
     weapon.slider       = slider;
     weapon.perfectImage = perfectRange;
     weapon.activeImage  = activeRange;
     weapon.startBar     = startBar;
     weapon.endBar       = endBar;
     weapon.ConfigWeapon();
 }
예제 #18
0
 /// <summary>
 /// Red gem weapon decorator
 /// </summary>
 /// <param name="weapon"> Accepts a weapon to decorate </param>
 public RedGem(AbstractWeapon weapon)
 {
     Weight      += weapon.Weight;
     Value       += (weapon.Value / 2) + 30;
     Name         = "Flamming " + weapon.Name;
     Damage       = weapon.Damage;
     MagicDamage += weapon.MagicDamage + 10;
     Decorated    = true;
     inEngineName = "flamming" + weapon.inEngineName;
 }
예제 #19
0
 /// <summary>
 /// Red gem weapon decorator
 /// </summary>
 /// <param name="weapon"> Accepts a weapon to decorate </param>
 public BlueGem(AbstractWeapon weapon)
 {
     Weight      += weapon.Weight;
     Value       += (weapon.Value / 2) + 30;
     Name         = "Shock " + weapon.Name;
     Damage       = weapon.Damage + 5;
     MagicDamage += weapon.MagicDamage + 8;
     Decorated    = true;
     inEngineName = "shock" + weapon.inEngineName;
 }
예제 #20
0
 /// <summary>
 /// Red gem weapon decorator
 /// </summary>
 /// <param name="weapon"> Accepts a weapon to decorate </param>
 public GreenGem(AbstractWeapon weapon)
 {
     Weight      += weapon.Weight;
     Value       += (weapon.Value / 2) + 30;
     Name         = "Deluged " + weapon.Name;
     Damage      += weapon.Damage + 5;
     MagicDamage += weapon.MagicDamage + 5;
     Decorated    = true;
     inEngineName = "deluged" + weapon.inEngineName;
 }
 /*
  * Add a weapon to your inventory
  * Remove the currently held weapon if necessary to make room
  */
 public void addWeapon(AbstractWeapon weapon)
 {
     if(weaponList.Count < maxWeaponCapacity) {
         DropWeapon(currentWeapon);
         weaponList.Add(weapon);
         currentWeapon = weapon;
     } else {
         // Add the weapon
     }
 }
    public void DropWeapon(AbstractWeapon weapon)
    {
        if(weaponList.Count > 0) {
            // TODO: Drop the current weapon infront of the player

            weaponList.Remove(currentWeapon);
            currentWeapon = weaponList.ToArray()[0];

        }
    }
예제 #23
0
 /// <summary>
 /// Initializes Monster to also have a state and health, inventory, armor, weapons and location.
 /// </summary>
 /// <param name="health"></param>
 /// <param name="inventory"></param>
 /// <param name="location"></param>
 /// <param name="armor"></param>
 /// <param name="weapon"></param>
 /// <param name="name"></param>
 /// <param name="description"></param>
 /// <param name="state"></param>
 public Monster(int health, List <AbstractItem> inventory, Room location, AbstractArmor armor,
                AbstractWeapon weapon, string name, string description, CreatureState state) : base(health, inventory,
                                                                                                    armor, weapon)
 {
     Location    = location;
     Behavior    = NpcBehavior.WARY;
     State       = state;
     Description = description;
     Name        = name;
 }
예제 #24
0
    public void DropWeapon(AbstractWeapon weapon)
    {
        if (weaponList.Count > 0)
        {
            // TODO: Drop the current weapon infront of the player

            weaponList.Remove(currentWeapon);
            currentWeapon = weaponList.ToArray()[0];
        }
    }
예제 #25
0
    public void ShowWeaponInfo(AbstractWeapon weapon)
    {
        ItemName.text          = weapon.ItemName;
        ItemDamage.text        = weapon.attackDamage.ToString();
        ItemSpeed.text         = weapon.attackSpeed.ToString();
        ItemAbilityDamage.text = weapon.secondaryAttackDamage.ToString();
        ItemManaCost.text      = weapon.secondaryAttackManaCost.ToString();

        transform.position = new Vector3(Input.mousePosition.x, Input.mousePosition.y + 100, 0);
        ClampToWindow();
    }
 private void Weapon_StatusChanged(AbstractWeapon sender, bool isActive)
 {
     if (Attacking && isActive)
     {
         OnAttacking();
     }
     else if (Attacking)
     {
         OnAttackStopped();
     }
 }
예제 #27
0
    public static void ShowWeaponInfo(AbstractWeapon weapon)
    {
        if (itemInfo == null)
        {
            Debug.LogError(TAG + "No item hover info has been attatched");
            return;
        }

        itemInfo.gameObject.SetActive(true);
        itemInfo.ShowWeaponInfo(weapon);
    }
예제 #28
0
 /// <summary>
 /// Inserta un arma al inventrio
 /// </summary>
 /// <param name="w">Arma a insertar</param>
 public void InsertWeapon(AbstractWeapon w)
 {
     if (Weapons.ContainsKey(w.ItemName))
     {
         Weapons[w.ItemName].Second++;
     }
     else
     {
         Weapons[w.ItemName] = new Tuple <AbstractWeapon, int>(w, 1);
     }
 }
예제 #29
0
 public override bool Equals(AbstractWeapon other)
 {
     if (this._name.Equals(other.Name) && other.GetType() == this.GetType())
     {
         return true;
     }
     else
     {
         return false;
     }
 }
예제 #30
0
        }                                      // Set to true when the player consumes an agility potion

        public AbstractCreature(int health, List <AbstractItem> inventory, AbstractArmor armor, AbstractWeapon weapon)
        {
            Id        = String.Format("CR{0}", creaturesCreated++);
            Health    = health;
            MaxHealth = health;
            Inventory = inventory;
            Weapon    = weapon;
            Armor     = armor;

            Inventory.Add(Weapon);
            Inventory.Add(Armor);
        }
예제 #31
0
    /// <summary>
    /// Retorna el lista de armas y su cantidad en el inventorio
    /// </summary>
    /// <returns></returns>
    public List <Tuple <AbstractWeapon, int> > GetWeapons()
    {
        List <Tuple <AbstractWeapon, int> > returnList = new List <Tuple <AbstractWeapon, int> >();

        foreach (string key in Weapons.Keys)
        {
            AbstractWeapon i    = Weapons[key].First;
            int            cant = Weapons[key].Second;
            returnList.Add(new Tuple <AbstractWeapon, int>(i, cant));
        }
        return(returnList);
    }
예제 #32
0
    public override void EquipItem(AbstractWeapon weapon)
    {
        if (currentWeapon != null)
        {
            currentWeapon.Drop();
        }

        currentWeapon = weapon;
        currentWeapon.Pickup(this);
        currentWeapon.transform.parent     = transform.Find("Weapon");
        currentWeapon.transform.localScale = new Vector3(1, 1, 1);
    }
예제 #33
0
 /*
  * Add a weapon to your inventory
  * Remove the currently held weapon if necessary to make room
  */
 public void addWeapon(AbstractWeapon weapon)
 {
     if (weaponList.Count < maxWeaponCapacity)
     {
         DropWeapon(currentWeapon);
         weaponList.Add(weapon);
         currentWeapon = weapon;
     }
     else
     {
         // Add the weapon
     }
 }
예제 #34
0
 public AbstractActor()
 {
     RemoveStates = new Dictionary <string, Dictionary <string, AbstractState> >();
     Stats        = new Attribute();
     MainHand     = new AbstractWeapon();
     Helmet       = new AbstractArmor();
     Body         = new AbstractArmor();
     Feet         = new AbstractArmor();
     Ring         = new AbstractArmor();
     Necklace     = new AbstractArmor();
     Job          = new AbstractJob();
     AbstractAbility aux = new AbstractAbility();
 }
예제 #35
0
 public void IscarriableTest()
 {
     _abstractWeapon = new Knife();
     Assert.AreEqual(_abstractWeapon.Carriable, true);
 }
예제 #36
0
 // Use this for initialization
 void Start()
 {
     Vector3 pos = transform.position;
     pos.y += sumToY;
     weapon = Instantiate(weapon, pos, transform.rotation) as AbstractWeapon;
     unitManager = GameObject.FindWithTag("UnitManager").GetComponent<UnitManager>();
 }
예제 #37
0
 public void IsOnTest()
 {
     _abstractWeapon = new Knife();
     Assert.AreEqual(_abstractWeapon.IsOn, false);
 }
예제 #38
0
 public void NameTest()
 {
     _abstractWeapon = new Knife();
     Assert.AreEqual(_abstractWeapon.Name, "Hunting Knife");
 }
예제 #39
0
 void SetWeapon(AbstractWeapon weap)
 {
     //maybe cache these? idk. doesn't seem like too much overhead at the moment.
     this.action = new AttackAction(weap);
 }