public override void Fire(GameState state, Queries queries) { var turret = queries.GetUnitById(SourceId); var pos = turret.Position; var decal = new SpawnEvent(pos, ObjectType.DecalExplosion); var blood = new SpawnEvent(pos, ObjectType.ParticleBlood); Factory.Spawn(decal, state); Factory.Spawn(blood, state); var message = String.Format("{0} base destroyed!", turret.Side == Side.Player ? "Player" : "Enemy"); HUDBehaviour.ShowMessage(message); var lanes = F.Range(0, BalanceConsts.Lanes); var metrics = F.Map(i => queries.GetLaneMetrics(i.ToString()), lanes); var playerHasBase = metrics.Any(m => m.PlayerBaseHealthPercentage > 0f); var enemyHasBase = metrics.Any(m => m.EnemyBaseHealthPercentage > 0f); if (!playerHasBase) { state.Winner = Side.Enemy; HUDBehaviour.ShowLoseMessage("The enemy has won!"); AudioPlayerBehaviour.PlaySound(SoundType.Defeat); } else if (!enemyHasBase) { state.Winner = Side.Player; HUDBehaviour.ShowWinMessage("You have won!"); AudioPlayerBehaviour.PlaySound(SoundType.Victory); } }
void Start() { instance = this; GameObject _bulletHoleRepository = new GameObject("Bullet Hole Repository"); GameObject _bulletHolePrefab = (GameObject)Resources.Load("Prefabs/Particles/BulletHole"); for (int i = 0; i < maxBulletHolesInScene; i++) { GameObject _hole = Instantiate(_bulletHolePrefab, _bulletHoleRepository.transform.position, Quaternion.identity) as GameObject; _hole.SetActive(false); _hole.transform.parent = _bulletHoleRepository.transform; bulletHoles.Add(_hole); } pB = GetComponent <PlayerBehaviour>(); pB.OnWeaponSwitch += GetWeaponSprites; }
public override void Fire(GameState state, Queries queries) { var point = queries.GetUnitById(SourceId); if (point == null) { Debug.Log("cant find unit: " + SourceId); return; } if (point.Side == Side.Player) { state.PlayerResources++; HUDBehaviour.AnimateMoneyCounter(); } else if (point.Side == Side.Enemy) { state.EnemyResources++; } }
private static void UseSkill(ISkill skill, HUDBehaviour hud, PlayerBehaviour playerBehaviour) { if (hud == null) { return; } var distance = hud.TargetGameObject != null ? Utils.Distance(playerBehaviour.PlayerGameObject, hud.TargetGameObject) : 0; var angle = hud.TargetGameObject != null // TODO: не всегда правильно считается ? Vector3.Angle(playerBehaviour.PlayerGameObject.transform.forward, hud.TargetGameObject.transform.forward) / 180 : 0; var skillContext = new SkillContext(hud.Target, distance, angle); playerBehaviour.Player.Use(skill, skillContext); }
void Start() { _instance = this; }
public override void Fire(GameState state, Queries queries) { HUDBehaviour.ShowMessage("Hold the points!"); }