/**********************************************************************************/ // устанавливаем компоненты для башни // /**********************************************************************************/ protected override void BuildComponents() { // создаем и настраиваем компоненты m_effectMaster = new EffectMaster(); m_weaponMaster = new WeaponMaster(this); m_weaponMaster.SetWeapon(WeaponMaster.WeaponSlot.CLOSE_WEAPON, CloseWeapon); m_weaponMaster.SetWeapon(WeaponMaster.WeaponSlot.MAIN_WEAPON, Weapon); Weapon.SetOwner((PLAYER)m_ownerID); Weapon.SetUnitID(m_unitID); m_drive = new TowerDrive(this); m_armor = new BaseArmor(); LineRadar radar = new LineRadar(this); radar.SetRadarRadius(SearchRadius); radar.SetTargetCheckRate(SearchRate); m_radars.Add(radar); // настраиваем разрушаемость m_armor.UnitIsDown += OnDead; // передача местоположения юнита m_drive.PositionUpdate += radar.PositionUpdate; // передача данных о целях для стрельбы radar.RadarUpdate += m_weaponMaster.UpdateMainRadarData; SetDefaultParameter(); SetEffectsCollection(); }
void Start() { m_state = UNIT_STATE.ACTIVE; Weapon.SetUnitID(ID); Weapon.SetOwner(PLAYER.NEUTRAL); Grenade.SetUnitID(ID); Grenade.SetOwner(PLAYER.NEUTRAL); // создаем компоненты m_effectMaster = new EffectMaster(); m_weaponMaster = new WeaponMaster(this); m_drive = new WanderingDrive(this); m_armor = new BaseArmor(); // основной стрелковый радар LineRadar radar = new LineRadar(this); radar.SetRadarRadius(SearchingRadius); m_radars.Add(radar); // дополнительный радар для гранат GrenadeRadar gRadar = new GrenadeRadar(this); // считаем дистанцию полёта гранаты, это необходимо для настройки гранатного радара GameObject grenade = ObjectLibrary.GetInstance().GetPrefab(Grenade.BulletType); GrenadeCtr gCtr = grenade.GetComponent <GrenadeCtr>(); int range = (int)(gCtr.FlyDistance / Base.SIZE_OF_CELL); gRadar.SetRadarRadius(range); gRadar.SetScaningArea(gCtr.ExplosionRadius); m_radars.Add(gRadar); InitializeUnit(); m_weaponMaster.SetWeapon(WeaponMaster.WeaponSlot.CLOSE_WEAPON, CloseWeapon); m_weaponMaster.SetWeapon(WeaponMaster.WeaponSlot.MAIN_WEAPON, Weapon); m_weaponMaster.SetWeapon(WeaponMaster.WeaponSlot.ADDITIONAL_WEAPON, Grenade); // настраиваем подключения компонент: // передача координат радару m_drive.PositionUpdate += radar.PositionUpdate; m_drive.PositionUpdate += gRadar.PositionUpdate; // передача данных о целях для стрельбы radar.RadarUpdate += m_weaponMaster.UpdateMainRadarData; // передача данных о целях для метания гранат gRadar.RadarUpdate += m_weaponMaster.UpdateAdditionalRadarData; // контроль движения при стрельбе m_weaponMaster.PauseDrive += m_drive.StopMoving; m_weaponMaster.ResumeDrive += m_drive.StartMoving; // событие смерти юнита m_armor.UnitIsDown += this.OnDead; // устанавливаем дефолтные значения SetDefaultParameter(); SetEffectsCollection(); }
void Start() { InitializeUnit(); m_state = UNIT_STATE.ACTIVE; Weapon.SetUnitID(ID); Weapon.SetOwner((PLAYER)m_ownerID); // создаем компоненты m_effectMaster = new EffectMaster(); m_weaponMaster = new WeaponMaster(this); m_drive = new BaseDrive(this); m_armor = new BaseArmor(); LineRadar radar = new LineRadar(this); radar.SetRadarRadius(SearchingRadius); StalkerRadar stRadar = new StalkerRadar((PLAYER)m_ownerID); m_radars.Add(radar); m_radars.Add(stRadar); InitializeUnit(); m_weaponMaster.SetWeapon(WeaponMaster.WeaponSlot.CLOSE_WEAPON, CloseWeapon); m_weaponMaster.SetWeapon(WeaponMaster.WeaponSlot.MAIN_WEAPON, Weapon); // настраиваем подключения компонент: // передача координат радару m_drive.PositionUpdate += radar.PositionUpdate; // настраиваем преследование stRadar.TargetToMove += m_drive.SetTargetToMove; // передача данных о целях для стрельбы radar.RadarUpdate += m_weaponMaster.UpdateMainRadarData; // контроль движения при стрельбе m_weaponMaster.PauseDrive += m_drive.StopMoving; m_weaponMaster.ResumeDrive += m_drive.StartMoving; // событие смерти юнита m_armor.UnitIsDown += this.OnDead; // устанавливаем дефолтные значения SetDefaultParameter(); SetEffectsCollection(); }