示例#1
0
    /*public void fireFromRandomSpawner(){
     *
     *      //grab total number of spawners
     *      upperBound = spawnerContainerScript.numberOfSpawnersDesired - 1;
     *
     *      //grab a spawner from the list of spawners
     *      int randomedSpawner = Mathf.FloorToInt(Random.Range(0.0f, upperBound));
     *
     *      //spawn projectile from random spawner
     *
     *      //grab script of selected spawner
     *      SpawnProjectile fireProjectileScript =
     *              spawnerContainerScript.spawnerList[randomedSpawner].GetComponent<SpawnProjectile>();
     *
     *      //fire projectile
     *      fireProjectileScript.fireProjectile();
     * }*/

    IEnumerator fireFromRandomSpawner()
    {
        //grab total number of spawners
        upperBound = spawnerContainerScript.numberOfSpawnersDesired - 1;

        //grab a spawner from the list of spawners
        int randomedSpawner = Mathf.FloorToInt(Random.Range(0.0f, upperBound));

        //spawn projectile from random spawner

        //grab script of selected spawner
        SpawnProjectile fireProjectileScript =
            spawnerContainerScript.spawnerList[randomedSpawner].GetComponent <SpawnProjectile>();

        //fire projectile
        fireProjectileScript.fireProjectile();

        //wait n seconds according to parameter
        yield return(new WaitForSeconds(timeBetweenProjectiles));


        //if game still in play
        //recursively launch a projectile every n seconds
        if (playingGame == true)
        {
            //recursively launch another
            StartCoroutine(fireFromRandomSpawner());
        }
    }
示例#2
0
    public void OnCollisionEnter(Collision collision)
    {
        spawnProjectile = collision.gameObject.GetComponentInChildren <SpawnProjectile>();
        if (spawnProjectile != null)
        {
            spawnProjectile.SetBullets(5);
        }

        spawnProjectile.SetAmmoIconFalse();

        spawnProjectile = null;
    }
示例#3
0
    private void OnTriggerEnter(Collider other)
    {
        FindObjectOfType <AudioManager>().Play("Recharge");
        spawnProjectile = other.gameObject.GetComponentInChildren <SpawnProjectile>();

        if (spawnProjectile != null)
        {
            spawnProjectile.SetBullets(5);
        }

        spawnProjectile.SetAmmoIconFalse();
        spawnProjectile = null;
    }
示例#4
0
    //public override TaskStatus MonitorFailWhenFalse()
    //{
    //    Debug.Log("MonitorCompleteWhenTrue");
    //    return TaskStatus.SUSPENDED;
    //}
    //public void AmmoAdquired() //
    //{
    //    spawnProjectile.OutofAmmo -= Recharge; //Unsubscribe event
    //    EndMonitorWithSuccess(); //End condition
    //}
    //public override TaskStatus MonitorCompleteWhenTrue()
    //{
    //    if (Check())
    //        return TaskStatus.COMPLETED; //There is ammo right now
    //    else
    //    {
    //        if(spawnProjectile != null)
    //        {
    //            spawnProjectile.OutofAmmo += Recharge; //subcrive to the event
    //        }
    //        return TaskStatus.SUSPENDED;

    //    }
    //    // return base.MonitorCompleteWhenTrue();
    //}


    private bool SearchAmmo()
    {
        if (spawnProjectile != null)
        {
            return(true);
        }
        if (tank_turret != null)
        {
            spawnProjectile = tank_turret.GetComponent <SpawnProjectile>();
        }

        if (spawnProjectile == null)
        {
            return(false);
        }

        //spawnProjectile = gam
        return(spawnProjectile != null);
    }
示例#5
0
    // private GameObject exclamation_UI;
    public override void OnStart()
    {
        if (exclamation_UI != null)
        {
            exclamation_UI.SetActive(true);
        }

        if (tank != null)
        {
            spawner = tank.GetComponentInChildren <SpawnProjectile>();
            seek    = tank.GetComponent <AgentPatrol>();
            // seek.enabled = true;
            //if(spawner.isInSight)
            //    wander.DeleteAgenPath();
            //wander.ChangeTarget();
        }

        base.OnStart();
    }
示例#6
0
文件: Attacker.cs 项目: ersim53/IE
    public virtual void Start()
    {
#endif
        current_time_between_throws = 0;
        players_initialized         = false;
        spawner = new SpawnProjectile(transform, random, projectil, movement_speed, area_of_effect, base_damage,
                                      damage_distance_factor, platform);
        rotation = new AttackerRotation(transform, random);
        if (random)
        {
            throw_point.y = platform.transform.position.y;
            RandomCoordinate();
            triggered = false;
            if (trigger_with_platform)
            {
                move_to = platform.GetComponent <MoveTo>();
            }
            current_throw_amount = 0;
            current_throw_time   = MORTAR_TIME_BETWEEN_THROWS;
        }
        else
        {
            if (!attack_player)
            {
                foreach (Transform child in transform)
                {
                    if (child.tag == "Target")
                    {
                        coordinates_list.Add(child.position);
                    }
                }
            }
            throw_point_index     = 0;
            current_time_interval = 0;
        }
    }
示例#7
0
        public void NotifyProjectileSpawn(IProjectile p)
        {
            var sp = new SpawnProjectile(_navGrid, p);

            _packetHandlerManager.BroadcastPacket(sp, Channel.CHL_S2C);
        }
示例#8
0
        public void NotifyProjectileSpawn(int userId, IProjectile projectile)
        {
            var spawnProjectilePacket = new SpawnProjectile(_navGrid, projectile);

            _packetHandlerManager.SendPacket(userId, spawnProjectilePacket, Channel.CHL_S2C);
        }
示例#9
0
        public override bool HandlePacket(Peer peer, byte[] data)
        {
            var start = new StatePacket2(PacketCmd.PKT_S2C_StartSpawn);

            _game.PacketHandlerManager.sendPacket(peer, start, Channel.CHL_S2C);
            _logger.LogCoreInfo("Spawning map");

            int playerId = 0;

            foreach (var p in _playerManager.GetPlayers())
            {
                var spawn = new HeroSpawn(p.Item2, playerId++);
                _game.PacketHandlerManager.sendPacket(peer, spawn, Channel.CHL_S2C);

                var info = new AvatarInfo(p.Item2);
                _game.PacketHandlerManager.sendPacket(peer, info, Channel.CHL_S2C);
            }

            var peerInfo     = _playerManager.GetPeerInfo(peer);
            var bluePill     = _itemManager.GetItemType(_game.Map.MapGameScript.BluePillId);
            var itemInstance = peerInfo.Champion.getInventory().SetExtraItem(7, bluePill);
            var buyItem      = new BuyItemResponse(peerInfo.Champion, itemInstance);

            _game.PacketHandlerManager.sendPacket(peer, buyItem, Channel.CHL_S2C);

            // Runes
            byte runeItemSlot = 14;

            foreach (var rune in peerInfo.Champion.RuneList._runes)
            {
                var runeItem = _itemManager.GetItemType(rune.Value);
                var newRune  = peerInfo.Champion.getInventory().SetExtraItem(runeItemSlot, runeItem);
                _playerManager.GetPeerInfo(peer).Champion.GetStats().AddModifier(runeItem);
                runeItemSlot++;
            }

            // Not sure why both 7 and 14 skill slot, but it does not seem to work without it
            var skillUp = new SkillUpResponse(peerInfo.Champion.NetId, 7, 1, (byte)peerInfo.Champion.getSkillPoints());

            _game.PacketHandlerManager.sendPacket(peer, skillUp, Channel.CHL_GAMEPLAY);
            skillUp = new SkillUpResponse(peerInfo.Champion.NetId, 14, 1, (byte)peerInfo.Champion.getSkillPoints());
            _game.PacketHandlerManager.sendPacket(peer, skillUp, Channel.CHL_GAMEPLAY);

            peerInfo.Champion.GetStats().setSpellEnabled(7, true);
            peerInfo.Champion.GetStats().setSpellEnabled(14, true);
            peerInfo.Champion.GetStats().setSummonerSpellEnabled(0, true);
            peerInfo.Champion.GetStats().setSummonerSpellEnabled(1, true);

            var objects = _game.ObjectManager.GetObjects();

            foreach (var kv in objects)
            {
                if (kv.Value is LaneTurret)
                {
                    var turret      = kv.Value as LaneTurret;
                    var turretSpawn = new TurretSpawn(turret);
                    _game.PacketHandlerManager.sendPacket(peer, turretSpawn, Channel.CHL_S2C);

                    // Fog Of War
                    var fogOfWarPacket = new FogUpdate2(turret, _networkIdManager);
                    _game.PacketHandlerManager.broadcastPacketTeam(turret.Team, fogOfWarPacket, Channel.CHL_S2C);

                    // To suppress game HP-related errors for enemy turrets out of vision
                    var setHealthPacket = new SetHealth(turret);
                    _game.PacketHandlerManager.sendPacket(peer, setHealthPacket, Channel.CHL_S2C);

                    foreach (var item in turret.Inventory)
                    {
                        if (item == null)
                        {
                            continue;
                        }
                        _game.PacketNotifier.NotifyItemBought(turret, item as Item);
                    }

                    continue;
                }
                else if (kv.Value is LevelProp)
                {
                    var levelProp = kv.Value as LevelProp;

                    var levelPropSpawnPacket = new LevelPropSpawn(levelProp);
                    _game.PacketHandlerManager.sendPacket(peer, levelPropSpawnPacket, Channel.CHL_S2C);

                    continue;
                }
                else if (kv.Value is Champion)
                {
                    var champion = kv.Value as Champion;
                    if (champion.IsVisibleByTeam(peerInfo.Champion.Team))
                    {
                        var enterVisionPacket = new EnterVisionAgain(champion);
                        _game.PacketHandlerManager.sendPacket(peer, enterVisionPacket, Channel.CHL_S2C);
                    }
                }
                else if (kv.Value is Inhibitor || kv.Value is Nexus)
                {
                    var inhibtor = kv.Value as AttackableUnit;

                    var minionSpawnPacket = new MinionSpawn2(inhibtor.NetId);
                    _game.PacketHandlerManager.sendPacket(peer, minionSpawnPacket, Channel.CHL_S2C);
                    var setHealthPacket = new SetHealth(inhibtor.NetId);
                    _game.PacketHandlerManager.sendPacket(peer, setHealthPacket, Channel.CHL_S2C);

                    continue;
                }
                else if (kv.Value is Projectile)
                {
                    var projectile = kv.Value as Projectile;
                    if (projectile.IsVisibleByTeam(peerInfo.Champion.Team))
                    {
                        var spawnProjectilePacket = new SpawnProjectile(projectile);
                        _game.PacketHandlerManager.sendPacket(peer, spawnProjectilePacket, Channel.CHL_S2C);
                    }

                    continue;
                }
                else
                {
                    _logger.LogCoreWarning("Object of type: " + kv.Value.GetType() + " not handled in HandleSpawn.");
                }
            }

            // TODO shop map specific?
            // Level props are just models, we need button-object minions to allow the client to interact with it
            if (peerInfo != null && peerInfo.Team == TeamId.TEAM_BLUE)
            {
                // Shop (blue team)
                var minionSpawnPacket = new MinionSpawn2(0xff10c6db);
                _game.PacketHandlerManager.sendPacket(peer, minionSpawnPacket, Channel.CHL_S2C);
                var setHealthPacket = new SetHealth(0xff10c6db);
                _game.PacketHandlerManager.sendPacket(peer, setHealthPacket, Channel.CHL_S2C);
            }
            else if (peerInfo != null && peerInfo.Team == TeamId.TEAM_PURPLE)
            {
                // Shop (purple team)
                var minionSpawnPacket = new MinionSpawn2(0xffa6170e);
                _game.PacketHandlerManager.sendPacket(peer, minionSpawnPacket, Channel.CHL_S2C);
                var setHealthPacket = new SetHealth(0xffa6170e);
                _game.PacketHandlerManager.sendPacket(peer, setHealthPacket, Channel.CHL_S2C);
            }

            var endSpawnPacket = new StatePacket(PacketCmd.PKT_S2C_EndSpawn);

            return(_game.PacketHandlerManager.sendPacket(peer, endSpawnPacket, Channel.CHL_S2C));
        }
示例#10
0
        public void notifyProjectileSpawn(Projectile p)
        {
            var sp = new SpawnProjectile(p);

            _game.PacketHandlerManager.broadcastPacket(sp, Channel.CHL_S2C);
        }
示例#11
0
        public static void notifyProjectileSpawn(Projectile p)
        {
            var sp = new SpawnProjectile(p);

            PacketHandlerManager.getInstace().broadcastPacket(sp, Channel.CHL_S2C);
        }
 public override void Init(SpawnProjectile sp)
 {
     myColor = sp.GetInfoCurrentAmmo().myColor;
     this.GetComponent <Renderer>().material = materialsColor[(int)myColor];
     base.Init(sp);
 }
示例#13
0
 private void Awake()
 {
     myProjectile = GetComponent <SpawnProjectile>();
 }
 public virtual void Init(SpawnProjectile spawnProjectile)
 {
     sp = spawnProjectile;
 }