public override void OnInspectorGUI()
    {
        WeaponContainer weaponContainer = (WeaponContainer)target;

        weaponContainer.weaponType = (WeaponContainer.WeaponType)EditorGUILayout.EnumPopup("Weapon Type", weaponContainer.weaponType);
        if (weaponContainer.weaponType == WeaponContainer.WeaponType.Sword)
        {
            weaponContainer.weaponLevel  = EditorGUILayout.IntField("Weapon Damage", weaponContainer.weaponLevel);
            weaponContainer.rarity       = (Weapon.Rarity)EditorGUILayout.EnumPopup("Rarity", weaponContainer.rarity);
            weaponContainer.weaponWeight = EditorGUILayout.IntField("Weight", weaponContainer.weaponWeight);
            weaponContainer.attackRate   = EditorGUILayout.FloatField("Attack rate", weaponContainer.attackRate);
        }
        if (weaponContainer.weaponType == WeaponContainer.WeaponType.Bow)
        {
            weaponContainer.projectileHandler = (GameObject)EditorGUILayout.ObjectField("Projectile handler", weaponContainer.projectileHandler, typeof(GameObject), true);
            weaponContainer.ammoType          = (GameObject)EditorGUILayout.ObjectField("Ammo", weaponContainer.ammoType, typeof(GameObject), false);
            weaponContainer.rarity            = (Weapon.Rarity)EditorGUILayout.EnumPopup("Rarity", weaponContainer.rarity);
            weaponContainer.weaponLevel       = EditorGUILayout.IntField("Weapon damage", weaponContainer.weaponLevel);
            weaponContainer.attackRate        = EditorGUILayout.FloatField("Firerate", weaponContainer.attackRate);
            weaponContainer.weaponWeight      = EditorGUILayout.IntField("Weight", weaponContainer.weaponWeight);
            weaponContainer.weaponRange       = EditorGUILayout.IntField("Weapon range", weaponContainer.weaponRange);
        }
        if (GUI.changed)
        {
            EditorUtility.SetDirty(weaponContainer);
        }
    }
Exemple #2
0
    private void SetDistancesItems()
    {
        LayerMask itemMask = 1 << 8;

        Collider[]             nearbyCol   = Physics.OverlapSphere(this.gameObject.transform.position, searchRadius, itemMask); // an array of nearby colliders
        List <WeaponContainer> nearbyItems = new List <WeaponContainer>();

        for (int col = 0; col < nearbyCol.Length; col++)
        {
            WeaponContainer wc = GameManager.linkedWeapons[nearbyCol[col].gameObject];
            if (wc != null && wc.isOut == false)
            {
                nearbyItems.Add(wc);
            }
            if (debugging)
            {
                print("nearby items size " + nearbyItems.Count);
            }
            float closest = -1f;
            for (int ic = 0; ic < nearbyItems.Count; ic++)
            {
                float thisDistance = Vector3.Distance(nearbyItems[ic].gameObject.transform.position, gameObject.transform.position);
                if (closest == -1 | thisDistance < closest)
                {
                    closest       = thisDistance;
                    closestWeapon = nearbyItems[ic];
                }
            }
        }
    }
Exemple #3
0
    public Weapon GetWeapon()
    {
        Weapon          w  = null;
        WeaponContainer wc = (WeaponContainer)equippedItemGameobject.GetComponent <ItemContainer>();

        w = wc.weapon;
        return(w); // this needs to be re-wrote. This is trash.
    }
Exemple #4
0
        public void OnWeaponChanged(IWeapon w)
        {
            _weapon = null;

            Game.Player.OnWeaponChanged -= OnWeaponChanged;
            NextState = Game._accState;
            (Game._accState as AccState).ExitState = PowerupIndex == 0 ? Game._blockadesAndEnemiesState : Game._aliensFinalState;
            PowerupIndex++;
        }
    public void TryReload(Actor a, WeaponContainer container)
    {
        if (magazineFill == magazineSize || reloading)
        {
            return;
        }

        reloading = true;
        StartCoroutine(Reload(a, container));
    }
Exemple #6
0
 // Update is called once per frame
 void Update()
 {
     SetDistances();
     if (myActor.equippedItemGameobject == null)
     {
         if (closestWeapon == null || closestWeapon.isOut)
         {
             agent.SetDestination(this.transform.position); //no weapons avail
             return;
         }
         if (Vector3.Distance(closestWeapon.gameObject.transform.position, gameObject.transform.position) < 1.2)
         {
             myActor.PickupItem(closestWeapon.gameObject);
             equippedWeapon = myActor.equippedItemGameobject.GetComponent <WeaponContainer>();
             return;
         }
         else
         {
             agent.SetDestination(closestWeapon.gameObject.transform.position);
         }
     }
     else
     {
         //we should have a weapon
         if (foe == null)
         {
             if (debugging)
             {
                 print("no enemy found");
             }
             agent.SetDestination(this.transform.position);
             return;
         }
         if (Vector3.Distance(foe.gameObject.transform.position, this.gameObject.transform.position) < myActor.GetWeapon().range)
         {
             gameObject.transform.LookAt(foe.gameObject.transform.position);
             agent.SetDestination(this.transform.position); //done moving
             RaycastHit hit;
             if (Physics.Raycast(this.transform.position, this.gameObject.transform.forward, out hit, myActor.GetWeapon().range, 1 << 9))
             {
                 if (hit.collider.gameObject == foe.GetComponent <Collider>().gameObject)
                 {
                     equippedWeapon.Use();
                 }
             }
         }
         else
         {
             gameObject.transform.LookAt(foe.gameObject.transform.position);
             this.agent.SetDestination(foe.gameObject.transform.position);
         }
     }
 }
    public IEnumerator Reload(Actor a, WeaponContainer container)
    {
        container.Lock();
        PlayReload();
        a.Animator().SetBool("Reloading", true);
        yield return(reloadWait);

        magazineFill = magazineSize;
        container.UpdateSelected();
        reloading = false;
        container.Unlock();
        a.Animator().SetBool("Reloading", false);
    }
Exemple #8
0
        public override void Update()
        {
            base.Update();
            Game.RelativeSpeed = Mathf.Lerp(Game.RelativeSpeed, 0, Time.deltaTime);

            if (Game.RelativeSpeed < 0.1f && _weapon == null)
            {
                _weapon = WeaponContainer.Instantiate(Game.PlayerWeapons[PowerupIndex]);
                _weapon.gameObject.SetActive(true);
                _weapon.transform.position   = new Vector2(0, CameraController.Bounds.y);
                Game.Player.OnWeaponChanged += OnWeaponChanged;
            }
        }
Exemple #9
0
    // Use this for initialization
    void Start()
    {
        var    serializer = new XmlSerializer(typeof(WeaponContainer));
        string path       = Application.dataPath + "/Resources/Definitions/Definitions.xml";
        var    stream     = new FileStream(path, FileMode.Open);

        container = serializer.Deserialize(stream) as WeaponContainer;

        Debug.Log("Loaded " + container.Weapons.Count.ToString() + " weapon definitions.");

        foreach (WeaponDefinition wd in container.Weapons)
        {
            Debug.Log(wd.ToString());
        }

        stream.Close();


        serializer = new XmlSerializer(typeof(BonusContainer));
        path       = Application.dataPath + "/Resources/Definitions/Definitions.xml";
        stream     = new FileStream(path, FileMode.Open);

        bonusContainer = serializer.Deserialize(stream) as BonusContainer;

        Debug.Log("Loaded " + bonusContainer.Bonuses.Count.ToString() + " bonuses.");

        foreach (BonusDefinition wd in bonusContainer.Bonuses)
        {
            Debug.Log(wd.ToString());
        }

        stream.Close();

        serializer = new XmlSerializer(typeof(SoundContainer));
        path       = Application.dataPath + "/Resources/Definitions/Definitions.xml";
        stream     = new FileStream(path, FileMode.Open);

        sounds = serializer.Deserialize(stream) as SoundContainer;

        Debug.Log("Loaded " + sounds.Sounds.Count.ToString() + " sounds");

        SoundDefinition sd = sounds.Sounds[1];

        Debug.Log("S: Name: " + sd.SoundName + " path: " + sd.Path + " type: " + sd.Type);

        stream.Close();

        FindObjectOfType <SoundController>().Init();
    }
    public void AddAmmunition()
    {
        container       = GameObject.Find("WeaponContainer");
        weaponContainer = container.GetComponent <WeaponContainer>();

        //if (weaponContainer != null)
        //{
        //    for (int wp = 0; wp < weaponContainer.weapons.Count; wp++)
        //    {
        //        if (id == weaponContainer.weapons[wp].id)
        //            weaponContainer.weapons[wp].ChangeValue(ammoClips);
        //        return;
        //    }
        //}
    }
Exemple #11
0
    public override void Initialize()
    {
        tag = Game.PLAYER_TAG;

        UIObject = GameObject.Find("GameUI");
        stats    = UIObject.transform.GetChild(UI_STATS_INDEX).gameObject.AddComponent <PlayerStats>();
        stats.Assign(this);
        weapons = UIObject.transform.GetChild(UI_WEAPON_INDEX).gameObject.AddComponent <WeaponContainer>();
        weapons.Assign(this);

        leftHand  = transform.Find("Body").Find("Sleeve_Left").Find("Hand_Left").gameObject;
        rightHand = transform.Find("Body").Find("Sleeve_Right").Find("Hand_Right").gameObject;

        gameObject.AddComponent <PlayerMovement>().Assign(this);
        animator = GetComponentInChildren <Animator>();
    }
Exemple #12
0
    public override bool canAttack(Actor a, WeaponContainer container)
    {
        if (reloading)
        {
            return(false);
        }

        magazineFill--;

        if (magazineFill < 0)
        {
            TryReload(a, container);
            return(false);
        }

        return(true);
    }
Exemple #13
0
    void Update()                   // update is used for logic control. Such as if the AI doesn't have a weapon.
    {
        if (Enemy().Contains(null)) // If there is a null in the list then something has happened (Probably a death)
        {                           // we will reiterate through the list to grab a closest enemy.
            Enemy().Remove(null);
            SearchForEnemy();
        }


        if (actor.equippedItemGameobject == null)  // if we have nothing out, then we need a weapon
        {
            hasWeapon = false;
            SearchForItems();
        }
        else // If the equipped item isn't null, then we have something, we don't need a weapon.
        {
            hasWeapon = true;
        }
        if (needsWeapon) // if we need a weapon then we'll pick one up from the search for items script
        {
            float weaponDistance = Vector3.Distance(this.gameObject.transform.position, theClosestItem.gameObject.transform.position);
            if (weaponDistance <= pickupDistance)
            {
                ItemContainer gameItem = theClosestItem.GetComponent <ItemContainer>();
                if (gameItem.isOut == false)
                {
                    actor.PickupItem(theClosestItem.gameObject);
                    weaponContainer = this.actor.equippedItemGameobject.GetComponent <WeaponContainer>();
                }
                needsWeapon = false;
            }
        }



        if (hasWeapon && Enemy() != null) // If we have our weapon and their is an enemy to be had, chase
        {
            ChasePlayer();
            if (Enemy().Count == 0)
            {
                agent.SetDestination(idolPos);
            }
        }
    }
Exemple #14
0
    } // used for initilization

    void SearchForItems()
    {
        LayerMask layerMask = 1 << 8;                                                                                           // Ignore all colliders except for colliders on layer 8

        Collider[] nearbyInteractable     = Physics.OverlapSphere(this.gameObject.transform.position, searchRadius, layerMask); // an array of nearby colliders
        var        nearbyInteractableList = nearbyInteractable.ToList();                                                        // a list of the arrays

        foreach (Collider item in nearbyInteractableList)
        {
            WeaponContainer gameItem = item.gameObject.GetComponent <WeaponContainer>();
            if (gameItem == null)
            {
                //   There are no nearby weapons. RUN!!! Still need to work on this
            }
            else
            {
                if (gameItem.isOut == false) // If we DO find an item and the AI isn't already holding an item, he will path find towards it after finding the closest.
                {
                    for (int i = 0; i < nearbyInteractableList.Count; i++)
                    {
                        float distance = Vector3.Distance(nearbyInteractableList[i].gameObject.transform.position, this.gameObject.transform.position);
                        if (distance < smallestDistance | smallestDistance == -1)
                        {
                            smallestDistance = distance;
                            closestItem      = i;
                        }
                    }
                    if (closestItem != -1) // There is a weapon nearby.
                    {
                        theClosestItem = nearbyInteractableList[closestItem];
                        agent.SetDestination(theClosestItem.gameObject.transform.position);
                        needsWeapon = true;
                    }
                }
            }
        }
    }
Exemple #15
0
 public void Setup(WeaponContainer container, int index)
 {
     this.container = container;
     this.index     = index;
 }
Exemple #16
0
 void Awake()
 {
     collection = WeaponContainer.Load(Path.Combine(Application.dataPath, "weapons.xml"));
     weapons    = collection.weapons;
     GiveWeapon(weapons[0]);
 }
 public static void Reset()
 {
     _instance = null;
 }
Exemple #18
0
 public Dictionary <int, Weapon> GetDict() 

 {
     
 XElement wc = WeaponContainer.Load(path); 

 WeaponInfos = wc.Element("Weapons").Elements("Weapon").Select(c => new Weapon().Set(c)).ToDictionary(info => info.id); 

        return(WeaponInfos); 

 }
Exemple #19
0
 } 

 public void Init() 

 {
     
 XElement wc = WeaponContainer.Load(path); 

 WeaponInfos = wc.Element("Weapons").Elements("Weapon").Select(c => new Weapon().Set(c)).ToDictionary(info => info.id); 


 }
Exemple #20
0
    private void SetDistances()
    {
        LayerMask layerMask  = 1 << 9;
        LayerMask layerMask2 = 1 << 8;
        LayerMask toUse      = layerMask | layerMask2;

        Collider[]             nearbyCol     = Physics.OverlapSphere(this.gameObject.transform.position, searchRadius, toUse); // an array of nearby colliders
        List <Actor>           nearbyEnemies = new List <Actor>();
        List <WeaponContainer> nearbyItems   = new List <WeaponContainer>();

        for (int col = 0; col < nearbyCol.Length; col++)
        {
            Actor           a  = nearbyCol[col].gameObject.GetComponent <Actor>();
            WeaponContainer wc = nearbyCol[col].gameObject.GetComponent <WeaponContainer>();
            if (a != null)
            {
                if (debugging)
                {
                    print("found an actor of team " + a.team);
                }
                if (a.team != 0 && a.team != myActor.team)
                {
                    nearbyEnemies.Add(a);
                }
            }
            if (wc != null && wc.isOut == false)
            {
                nearbyItems.Add(wc);
            }
        }
        if (debugging)
        {
            print("nearby enemies size " + nearbyEnemies.Count);
        }
        if (debugging)
        {
            print("nearby items size " + nearbyItems.Count);
        }
        float closest = -1f;

        foreach (WeaponContainer ic in nearbyItems)
        {
            float thisDistance = Vector3.Distance(ic.gameObject.transform.position, gameObject.transform.position);
            if (closest == -1 | thisDistance < closest)
            {
                closest       = thisDistance;
                closestWeapon = ic;
            }
        }
        closest = -1f;
        foreach (Actor a in nearbyEnemies)
        {
            float thisDistance = Vector3.Distance(a.gameObject.transform.position, gameObject.transform.position);
            if (closest == -1 | thisDistance < closest)
            {
                closest = thisDistance;
                foe     = a;
            }
        }
        if (debugging)
        {
            print("END OF SETDIST, FOE IS  " + foe + " and closestWeapon is " + closestWeapon);
        }
    }
Exemple #21
0
 //
 private void Start()
 {
     container       = GameObject.Find("WeaponContainer");
     weaponContainer = container.GetComponent <WeaponContainer>();
 }
        public void OnWeaponChanged(IWeapon w)
        {
            _weapon = null;

            Game.Player.OnWeaponChanged -= OnWeaponChanged;
            NextState = Game._accState;
            (Game._accState as AccState).ExitState = PowerupIndex == 0 ? Game._blockadesAndEnemiesState : Game._aliensFinalState;
            PowerupIndex++;
        }
        public override void Update()
        {
            base.Update();
            Game.RelativeSpeed = Mathf.Lerp(Game.RelativeSpeed, 0, Time.deltaTime);

            if(Game.RelativeSpeed < 0.1f && _weapon == null)
            {
                _weapon = WeaponContainer.Instantiate(Game.PlayerWeapons[PowerupIndex]);
                _weapon.gameObject.SetActive(true);
                _weapon.transform.position = new Vector2(0, CameraController.Bounds.y);
                Game.Player.OnWeaponChanged += OnWeaponChanged;

            }
        }
 /************************************************************
  * Event Handlers
  ************************************************************/
 private void Awake()
 {
     _captureController = global::CaptureController.Instance;
     _spawnController = global::SpawnController.Instance;
     _teamMenuManager = global::TeamMenuManager.Instance;
     _userController = global::UserController.Instance;
     _weaponContainer = global::WeaponContainer.Instance;
 }
Exemple #25
0
 public abstract bool canAttack(Actor a, WeaponContainer container);
Exemple #26
0
    // Update is called once per frame
    void Update()
    {
        if (myActor.equippedItemGameobject == null)
        {
            SetDistancesItems();
            if (closestWeapon == null || closestWeapon.isOut)
            {
                agent.SetDestination(this.transform.position); //no weapons avail
                return;
            }
            if (Vector3.Distance(closestWeapon.gameObject.transform.position, gameObject.transform.position) < 1.2 && myActor.health > 0)
            {
                myActor.PickupItem(closestWeapon.gameObject);
                equippedWeapon = GameManager.linkedWeapons[myActor.equippedItemGameobject];
                return;
            }
            else
            {
                agent.SetDestination(closestWeapon.gameObject.transform.position);
            }
        }
        else
        {
            SetDistancesEnemies();
            //we should have a weapon
            if (foe == null)
            {
                if (debugging)
                {
                    print("no enemy found");
                }
                agent.SetDestination(this.transform.position);
                return;
            }
            if (Vector3.Distance(foe.gameObject.transform.position, this.gameObject.transform.position) < myActor.GetWeapon().range)
            {
                Vector3 targetPosition = new Vector3(foe.transform.position.x,
                                                     this.transform.position.y,
                                                     foe.transform.position.z);

                gameObject.transform.LookAt(targetPosition);
                agent.SetDestination(this.transform.position); //done moving
                RaycastHit hit;
                if (Physics.Raycast(this.transform.position, this.gameObject.transform.forward, out hit, myActor.GetWeapon().range, 1 << 9))
                {
                    if (hit.collider.gameObject == foe.gameObject)
                    {
                        equippedWeapon.Use();
                    }
                }
            }
            else
            {
                Vector3 targetPosition = new Vector3(foe.transform.position.x,
                                                     this.transform.position.y,
                                                     foe.transform.position.z);

                gameObject.transform.LookAt(targetPosition);
                this.agent.SetDestination(foe.gameObject.transform.position);
            }
        }
    }
 void Start()
 {
     player    = GetComponentInParent <Player>();
     container = player.Weapons();
 }