Esempio n. 1
0
        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);
            }
        }
Esempio n. 2
0
    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;
    }
Esempio n. 3
0
        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++;
            }
        }
Esempio n. 4
0
    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);
    }
Esempio n. 5
0
 void Start()
 {
     _instance = this;
 }
Esempio n. 6
0
 public override void Fire(GameState state, Queries queries)
 {
     HUDBehaviour.ShowMessage("Hold the points!");
 }