private void die() { foreach (DeathCallback callback in this.OnDeathCallbacks) callback(this); if (this.GibsPoolKey != null && this.GibsPoolKey != "") { GameObject gibs = ObjectPools.GetPooledObject(this.GibsPoolKey); gibs.transform.position = this.transform.position; gibs.transform.rotation = this.transform.rotation; GibsBehavior gibsBehavior = gibs.GetComponent<GibsBehavior>(); gibsBehavior.Knockback = _deathKnockback; gibsBehavior.ImpactVector = _deathImpactVector; AllegianceColorizer colorizer = this.GetComponent<AllegianceColorizer>(); if (colorizer != null) { gibsBehavior.AllegianceInfo = colorizer.AllegianceInfo; } } if (this.ShakeMagnitudeOnDeath > 0.0f) Camera.main.GetComponent<ShakeHandler>().ApplyImpact(this.ShakeMagnitudeOnDeath); Destroy(this.gameObject); }
void Start() { _acceleration = this.AccelerationDuration > 0 ? this.MaxSpeed / this.AccelerationDuration : this.MaxSpeed * 1000; _weapon = this.GetComponent <Weapon>(); _weapon.ShotFiredCallback = shotFired; _aimAxis = Vector2.zero; this.ControllerAimerSpeed = PlayerPrefs.GetFloat(OptionsMenu.CONTROLLER_AIM_SPEED_KEY, OptionsMenu.DEFAULT_CONTROLLER_AIM_SPEED); if (PlayerPrefs.GetInt(OptionsMenu.CONTROLLER_AIM_LAST_DIR_KEY, OptionsMenu.DEFAULT_CONTROLLER_AIM_LAST_DIR) == 0) { this.ControllerMinAimAmt = 0.0f; } this.Reticle.PlayerIndex = this.PlayerIndex; _damagable = this.GetComponent <Damagable>(); _damagable.OnDeathCallbacks.Add(died); this.localNotifier.Listen(CollisionEvent.NAME, this, this.OnCollide); updateSlots(); if (this.PlayerIndex != 0) { AllegianceColorizer colorizer = this.GetComponent <AllegianceColorizer>(); AllegianceInfo info = colorizer.AllegianceInfo; info.MemberId = this.PlayerIndex; colorizer.UpdateVisual(info); _weapon.AllegianceInfo = info; this.spriteRenderer.sprite = this.SpriteAtlas.GetSprites()["player_body_" + this.PlayerIndex]; } if (_initialHealth > 0) { _damagable.DirectSetHealth(_initialHealth); } }
void Update() { if (!_setup) { for (int i = 0; i < DynamicData.MAX_PLAYERS; ++i) { SessionPlayer p = DynamicData.GetSessionPlayer(i); if (p.HasJoined) { if (ReInput.players.GetPlayer(p.RewiredId).controllers.hasMouse) { _player = p; AllegianceColorizer colorizer = this.GetComponent <AllegianceColorizer>(); AllegianceInfo info = colorizer.AllegianceInfo; info.MemberId = i; colorizer.UpdateVisual(info); break; } } } _setup = true; } if (_player != null) { if (PauseController.IsPaused()) { _rectTransform.position = new Vector3(-99999, -99999, _rectTransform.position.z); } else { Player rewiredP = ReInput.players.GetPlayer(_player.RewiredId); Vector2 screenPos = rewiredP.controllers.Mouse.screenPosition; _rectTransform.position = new Vector3(screenPos.x, screenPos.y, _rectTransform.position.z); } } }
public void LaunchWithWeaponType(Vector2 direction, WeaponType weaponType, AllegianceInfo allegianceInfo, bool ignoreExplosion = false) { this.WeaponType = weaponType; _ignoreExplosion = ignoreExplosion; this.Velocity = weaponType.TravelType == WeaponType.TRAVEL_TYPE_LASER ? Vector2.zero : new Vector2(direction.x * weaponType.ShotSpeed, direction.y * weaponType.ShotSpeed); _allegianceInfo = allegianceInfo; AllegianceColorizer allegianceColorizer = this.GetComponent <AllegianceColorizer>(); if (allegianceColorizer != null) { allegianceColorizer.UpdateVisual(allegianceInfo); } _bouncesRemaining = weaponType.MaximumBounces; if (!_listeningToCollisions) { _listeningToCollisions = true; this.localNotifier.Listen(CollisionEvent.NAME, this, this.OnCollide); } string allegianceString = allegianceInfo.LayerString; int ourLayer = LayerMask.NameToLayer(allegianceString + " Missile"); this.gameObject.layer = ourLayer; LayerMask alliedVulnerable = (1 << LayerMask.NameToLayer(allegianceString + " Vulnerable")); LayerMask levelGeometryMask = (1 << LayerMask.NameToLayer("Level Geometry")); LayerMask nothing = 0; if (_damager == null) { _damager = this.GetComponent <Damager>(); } _damager.DamagableLayers = (~alliedVulnerable) & GetVulnerableLayers(); _damager.Damage = weaponType.Damage; _damager.Knockback = weaponType.Knockback; _damager.HitInvincibilityDuration = weaponType.HitInvincibilityDuration; //TODO - Only do this in campaign mode!! if (_allegianceInfo.Allegiance == Allegiance.Player) { _damager.AddAttackLandedCallback(landedAttack); } this.BounceLayerMask = weaponType.MaximumBounces > 0 ? levelGeometryMask : nothing; this.CollisionMask = _damager.DamagableLayers | levelGeometryMask; this.HaltMovementMask = weaponType.TravelType == WeaponType.TRAVEL_TYPE_LASER ? levelGeometryMask : this.CollisionMask; _explosionRemaining = this.WeaponType.SpecialEffect == WeaponType.SPECIAL_EXPLOSION; _isLaser = weaponType.TravelType == WeaponType.TRAVEL_TYPE_LASER; if (_collider == null) { _collider = this.GetComponent <IntegerCollider>(); } else { _collider.AddToCollisionPool(); } if (_isLaser) { handleLaserCast(direction); } }