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); } }
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]; } } } }
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. }
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)); }
// 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); }
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; } }
// 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; // } //} }
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>(); }
public override bool canAttack(Actor a, WeaponContainer container) { if (reloading) { return(false); } magazineFill--; if (magazineFill < 0) { TryReload(a, container); return(false); } return(true); }
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); } } }
} // 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; } } } } }
public void Setup(WeaponContainer container, int index) { this.container = container; this.index = index; }
void Awake() { collection = WeaponContainer.Load(Path.Combine(Application.dataPath, "weapons.xml")); weapons = collection.weapons; GiveWeapon(weapons[0]); }
public static void Reset() { _instance = null; }
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); }
} public void Init() { XElement wc = WeaponContainer.Load(path); WeaponInfos = wc.Element("Weapons").Elements("Weapon").Select(c => new Weapon().Set(c)).ToDictionary(info => info.id); }
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); } }
// private void Start() { container = GameObject.Find("WeaponContainer"); weaponContainer = container.GetComponent <WeaponContainer>(); }
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; }
public abstract bool canAttack(Actor a, WeaponContainer container);
// 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(); }