public override void ReadDataXML(XElement ele, ElderScrollsPlugin master) { XElement subEle; if (ele.TryPathTo("EditorID", false, out subEle)) { if (EditorID == null) { EditorID = new SimpleSubrecord <String>(); } EditorID.ReadXML(subEle, master); } if (ele.TryPathTo("ObjectBounds", false, out subEle)) { if (ObjectBounds == null) { ObjectBounds = new ObjectBounds(); } ObjectBounds.ReadXML(subEle, master); } if (ele.TryPathTo("Name", false, out subEle)) { if (Name == null) { Name = new SimpleSubrecord <String>(); } Name.ReadXML(subEle, master); } if (ele.TryPathTo("Model", false, out subEle)) { if (Model == null) { Model = new Model(); } Model.ReadXML(subEle, master); } if (ele.TryPathTo("Icon/Large", false, out subEle)) { if (LargeIcon == null) { LargeIcon = new SimpleSubrecord <String>(); } LargeIcon.ReadXML(subEle, master); } if (ele.TryPathTo("Icon/Small", false, out subEle)) { if (SmallIcon == null) { SmallIcon = new SimpleSubrecord <String>(); } SmallIcon.ReadXML(subEle, master); } if (ele.TryPathTo("Script", false, out subEle)) { if (Script == null) { Script = new RecordReference(); } Script.ReadXML(subEle, master); } if (ele.TryPathTo("Destructable", false, out subEle)) { if (Destructable == null) { Destructable = new Destructable(); } Destructable.ReadXML(subEle, master); } if (ele.TryPathTo("PickUpSound", false, out subEle)) { if (PickUpSound == null) { PickUpSound = new RecordReference(); } PickUpSound.ReadXML(subEle, master); } if (ele.TryPathTo("DropSound", false, out subEle)) { if (DropSound == null) { DropSound = new RecordReference(); } DropSound.ReadXML(subEle, master); } if (ele.TryPathTo("Data", false, out subEle)) { if (Data == null) { Data = new AmmoData(); } Data.ReadXML(subEle, master); } if (ele.TryPathTo("ExtraData", false, out subEle)) { if (ExtraData == null) { ExtraData = new AmmoExtraData(); } ExtraData.ReadXML(subEle, master); } if (ele.TryPathTo("ShortName", false, out subEle)) { if (ShortName == null) { ShortName = new SimpleSubrecord <String>(); } ShortName.ReadXML(subEle, master); } if (ele.TryPathTo("Abbreviation", false, out subEle)) { if (Abbreviation == null) { Abbreviation = new SimpleSubrecord <String>(); } Abbreviation.ReadXML(subEle, master); } if (ele.TryPathTo("AmmoEffects", false, out subEle)) { if (AmmoEffects == null) { AmmoEffects = new List <RecordReference>(); } foreach (XElement e in subEle.Elements()) { RecordReference tempRCIL = new RecordReference(); tempRCIL.ReadXML(e, master); AmmoEffects.Add(tempRCIL); } } }
public void UpdateAmmoType(AmmoData ammoType) { AmmoRenderer.sprite = ammoType.Icon; }
public void SwitchAmmo(AmmoData NewAmmo, bool AutoFire) { _shootComp.SwitchAmmo(NewAmmo, AutoFire); }
public virtual void Setup(Vector3 targetPos, float targetSpread, AmmoData ammoData, int range, GameObject source, string targetTag) { }
void TeamAttack(Team team, Team targetTeam, float deltaTime) { Piece attackPiece; Piece pieceToHit; int i; for (i = 0; i < team.Pieces.Count; i++) { attackPiece = team.Pieces[i]; if (attackPiece.Status == PieceStatus.NORMAL && attackPiece.Ammo.AmmoCount() > 0 && !attackPiece.HasFlag) { if (attackPiece.CoolDownTimer <= 0.0f) { AmmoData ammoData = AmmoManager.Instance.GetAmmoData((int)attackPiece.Ammo.GetNextAmmoType()); pieceToHit = targetTeam.FindClosestPiece(attackPiece.Position, attackPiece.RangeCalc, ammoData.RangeBonus); if (pieceToHit != null) { AmmoType ammoType = attackPiece.Throw(); ThrowBalloon(attackPiece.GetTeam.GetColor, attackPiece.transform.localPosition, pieceToHit.transform.localPosition, ammoType); if (pieceToHit.GetHit(ammoData.Damage)) { // if flag was dropped (true for GetHit), set status of flag if (team.GetColor == TeamColor.RED) { _redFlag.Status = FlagStatus.DROPPED; } else { _blueFlag.Status = FlagStatus.DROPPED; } } // increment takedowns if (pieceToHit.Status == PieceStatus.OUT) { attackPiece.Takedowns++; } //DataRecorder.AddHitToTurnData(attackPiece.ID, pieceToHit.ID); attackPiece.CoolDownTimer = attackPiece.CoolDownTime; // check the ranged damage if (ammoData.SplashDamage != 0) { for (int j = 0; j < targetTeam.Pieces.Count; j++) { Piece pieceToCheck = targetTeam.Pieces[j]; if (pieceToCheck.Status == PieceStatus.NORMAL && pieceToCheck != pieceToHit) { float distance = (pieceToHit.Position - pieceToCheck.Position).magnitude; if (distance <= ammoData.SplashRadius) { bool hasFlag = pieceToCheck.GetHit(ammoData.SplashDamage); if (pieceToCheck.Status == PieceStatus.OUT) { if (hasFlag) { if (team.GetColor == TeamColor.RED) { _redFlag.Status = FlagStatus.DROPPED; } else { _blueFlag.Status = FlagStatus.DROPPED; } } } } } } } } } else { attackPiece.CoolDownTimer -= deltaTime; if (attackPiece.CoolDownTimer <= 0.0f) { attackPiece.CoolDownTimer = 0.0f; } //Debug.Log("now timer = " + attackPlayer.CoolDownTimer); } } } }