Beispiel #1
0
        public SkillsManager(ILogger <SkillsManager> logger, IGameDefinitionsPreloder definitionsPreloder, IDatabase database, IHealthManager healthManager, IAttackManager attackManager, IBuffsManager buffsManager, IStatsManager statsManager, IElementProvider elementProvider, ICountryProvider countryProvider, ICharacterConfiguration characterConfig, ILevelProvider levelProvider, IAdditionalInfoManager additionalInfoManager, IMapProvider mapProvider, ITeleportationManager teleportationManager, IMovementManager movementManager, IShapeManager shapeManager, IPartyManager partyManager, IGamePacketFactory packetFactory)
        {
            _logger = logger;
            _definitionsPreloder      = definitionsPreloder;
            _database                 = database;
            _healthManager            = healthManager;
            _attackManager            = attackManager;
            _buffsManager             = buffsManager;
            _statsManager             = statsManager;
            _elementProvider          = elementProvider;
            _countryProvider          = countryProvider;
            _characterConfig          = characterConfig;
            _levelProvider            = levelProvider;
            _additionalInfoManager    = additionalInfoManager;
            _mapProvider              = mapProvider;
            _teleportationManager     = teleportationManager;
            _movementManager          = movementManager;
            _shapeManager             = shapeManager;
            _partyManager             = partyManager;
            _packetFactory            = packetFactory;
            _levelProvider.OnLevelUp += OnLevelUp;

#if DEBUG
            _logger.LogDebug("SkillsManager {hashcode} created", GetHashCode());
#endif
        }
Beispiel #2
0
 // Use this for initialization
 void Start()
 {
     healthManager = characterObject.GetComponent <IHealthManager> ();
     if (healthManager == null)
     {
         Debug.Log("Invelid Health Manager Object");
     }
 }
    //************
    //**  MONO  **
    //************

    void Start()
    {
        mDefaultDirection = new Vector2(0, 1);
        mGunHinge         = transform.GetChild(0);
        mMovementHandler  = GetComponent <IMoveable>();
        mHealthManager    = GetComponent <IHealthManager>();
        mInventory        = GetComponent <IInventory>();
        mWeaponHandler    = GetComponent <IWeaponSystem>();
        mAudioSource      = GetComponent <AudioSource>();
    }
 protected void OnTriggerEnter2D(Collider2D other)
 {
     if (other.tag.Equals(Tags.ENEMY))
     {
         IHealthManager hpMan = other.GetComponent <IHealthManager>();
         // todo change for real dmg value
         hpMan.LoseHealth(mBulletDamage);
         DestroyWithDelay();
     }
 }
Beispiel #5
0
 private void OnTriggerEnter2D(Collider2D other)
 {
     if (other.tag.Equals(Tags.ENEMY))
     {
         IHealthManager hm = other.GetComponent <IHealthManager>();
         if (hm != null)
         {
             hm.LoseHealth(explosionDamage);
         }
     }
 }
 public RebirthHandler(IGamePacketFactory packetFactory, IGameSession gameSession, IMapProvider mapProvider, IGameWorld gameWorld, IHealthManager healthManager, ITeleportationManager teleportationManager, IMovementManager movementManager, IBuffsManager buffsManager, IInventoryManager inventoryManager, IGameDefinitionsPreloder definitionsPreloder) : base(packetFactory, gameSession)
 {
     _mapProvider          = mapProvider;
     _gameWorld            = gameWorld;
     _healthManager        = healthManager;
     _teleportationManager = teleportationManager;
     _movementManager      = movementManager;
     _buffsManager         = buffsManager;
     _inventoryManager     = inventoryManager;
     _definitionsPreloder  = definitionsPreloder;
 }
Beispiel #7
0
 public BaseKillable(IDatabasePreloader databasePreloader, ICountryProvider countryProvider, IStatsManager statsManager, IHealthManager healthManager, ILevelProvider levelProvider, IBuffsManager buffsManager, IElementProvider elementProvider, IMovementManager movementManager, IUntouchableManager untouchableManager, IMapProvider mapProvider)
 {
     _databasePreloader = databasePreloader;
     CountryProvider    = countryProvider;
     StatsManager       = statsManager;
     HealthManager      = healthManager;
     LevelProvider      = levelProvider;
     BuffsManager       = buffsManager;
     ElementProvider    = elementProvider;
     MovementManager    = movementManager;
     UntouchableManager = untouchableManager;
     MapProvider        = mapProvider;
 }
Beispiel #8
0
        public override void OnStart()
        {
            base.OnStart();
            m_CurrentStatus = TaskStatus.Inactive;

            if (IsDirty)
            {
                m_TargetHealthManager = currentTarget.GetComponent <IHealthManager>();
                m_AiCharacter         = currentAiAgent.GetComponent <IAiCharacter>();
                m_AiAnimator          = currentAiAgent.GetComponent <Animator>();
                IsDirty = false;
            }
        }
Beispiel #9
0
 private new void OnTriggerEnter2D(Collider2D other)
 {
     if (other.tag.Equals(Tags.ENEMY))
     {
         IHealthManager hpMan = other.GetComponent <IHealthManager>();
         // todo change for real dmg value
         hpMan.LoseHealth(mBulletDamage);
         if (!mIsAboutToBeDestroyed)
         {
             StartCoroutine(DestoryOfterDelay());
         }
     }
 }
Beispiel #10
0
        public Mob(ushort mobId,
                   bool shouldRebirth,
                   MoveArea moveArea,
                   ILogger <Mob> logger,
                   IDatabasePreloader databasePreloader,
                   IAIManager aiManager,
                   IItemEnchantConfiguration enchantConfig,
                   IItemCreateConfiguration itemCreateConfig,
                   ICountryProvider countryProvider,
                   IStatsManager statsManager,
                   IHealthManager healthManager,
                   ILevelProvider levelProvider,
                   ISpeedManager speedManager,
                   IAttackManager attackManager,
                   ISkillsManager skillsManager,
                   IBuffsManager buffsManager,
                   IElementProvider elementProvider,
                   IMovementManager movementManager,
                   IUntouchableManager untouchableManager,
                   IMapProvider mapProvider) : base(databasePreloader, countryProvider, statsManager, healthManager, levelProvider, buffsManager, elementProvider, movementManager, untouchableManager, mapProvider)
        {
            _logger           = logger;
            _enchantConfig    = enchantConfig;
            _itemCreateConfig = itemCreateConfig;
            _dbMob            = databasePreloader.Mobs[mobId];
            _moveArea         = moveArea;

            AIManager = aiManager;

            Exp           = _dbMob.Exp;
            ShouldRebirth = shouldRebirth;

            SpeedManager  = speedManager;
            AttackManager = attackManager;
            SkillsManager = skillsManager;

            ElementProvider.ConstAttackElement  = _dbMob.Element;
            ElementProvider.ConstDefenceElement = _dbMob.Element;

            if (ShouldRebirth)
            {
                _rebirthTimer.Interval = RespawnTimeInMilliseconds;
                _rebirthTimer.Elapsed += RebirthTimer_Elapsed;

                HealthManager.OnDead += MobRebirth_OnDead;
            }

            HealthManager.OnGotDamage += OnDecreaseHP;
            AIManager.OnStateChanged  += AIManager_OnStateChanged;
        }
Beispiel #11
0
 public HealthMonitor(CancellationToken token, INameService namesvc, CloudIndex idx, IHealthManager healthmgr, int redundancy)
 {
     m_cancel          = token;
     m_namesvc         = namesvc;
     m_healthmgr       = healthmgr;
     m_idx             = idx;
     m_redundancy      = redundancy;
     m_mc              = DynamicMemoryCloud.Instance;
     m_part_ev         = new AsyncManualResetEvent(false);
     m_cloud_ev        = new AsyncManualResetEvent(false);
     m_parthealthproc  = Utils.Daemon(m_cancel, "PartitionHealthMonitor", 20000, PartitionHealthMonitorProc);
     m_rephealthproc   = Utils.Daemon(m_cancel, "ReplicaHealthMonitor", 20000, ReplicaHealthMonitorProc);
     m_cloudhealthproc = Utils.Daemon(m_cancel, "MemoryCloudHealthMonitor", 20000, MemoryCloudHealthMonitorProc);
 }
Beispiel #12
0
        public VehicleManager(ILogger <VehicleManager> logger, IStealthManager stealthManager, ISpeedManager speedManager, IHealthManager healthManager, IGameWorld gameWorld)
        {
            _logger         = logger;
            _stealthManager = stealthManager;
            _speedManager   = speedManager;
            _healthManager  = healthManager;
            _gameWorld      = gameWorld;

            _healthManager.OnGotDamage  += HealthManager_OnGotDamage;
            _summonVehicleTimer.Elapsed += SummonVehicleTimer_Elapsed;
#if DEBUG
            _logger.LogDebug("VehicleManager {hashcode} created", GetHashCode());
#endif
        }
Beispiel #13
0
        public PartyManager(ILogger <PartyManager> logger, IGamePacketFactory packetFactory, IGameWorld gameWorld, IMapProvider mapProvider, IHealthManager healthManager)
        {
            _logger        = logger;
            _packetFactory = packetFactory;
            _gameWorld     = gameWorld;
            _mapProvider   = mapProvider;
            _healthManager = healthManager;

            _summonTimer.Elapsed       += OnSummonningFinished;
            _healthManager.OnGotDamage += CancelSummon;

#if DEBUG
            _logger.LogDebug("PartyManager {hashcode} created", GetHashCode());
#endif
        }
        void Initialise()
        {
            // Damage the player health
            m_HealthManager = GetComponentInParent <IHealthManager>();

            // Get character head kicker
            var character = GetComponent <ICharacter>();

            if (character != null)
            {
                m_HeadKicker = character.headTransformHandler.GetComponent <AdditiveKicker>();
            }

            m_Initialised = true;
        }
Beispiel #15
0
    public void SetHealthManager(IHealthManager healthManager)
    {
        if (this.healthManager != null)
        {
            this.healthManager.OnHealthChange -= OnHealthChange;
            this.healthManager.OnHealtZero    -= OnHealthZero;
        }
        this.healthManager = healthManager;

        this.healthManager.OnHealthChange += OnHealthChange;
        this.healthManager.OnHealtZero    += OnHealthZero;

        sliderHealth.minValue = 0;
        sliderHealth.maxValue = this.healthManager.GetMaxHealth();
        sliderHealth.value    = this.healthManager.GetHealth();
    }
Beispiel #16
0
        public AttackManager(ILogger <AttackManager> logger, IStatsManager statsManager, ILevelProvider levelProvider, IElementProvider elementManager, ICountryProvider countryProvider, ISpeedManager speedManager, IStealthManager stealthManager, IHealthManager healthManager, IShapeManager shapeManager)
        {
            _logger          = logger;
            _statsManager    = statsManager;
            _levelProvider   = levelProvider;
            _elementManager  = elementManager;
            _countryProvider = countryProvider;
            _speedManager    = speedManager;
            _stealthManager  = stealthManager;
            _healthManager   = healthManager;
            _shapeManager    = shapeManager;

#if DEBUG
            _logger.LogDebug("AttackManager {hashcode} created", GetHashCode());
#endif
        }
Beispiel #17
0
        public override void OnStart()
        {
            GameObject currentGameObject = GetDefaultGameObject(targetGameObject.Value);

            if (currentGameObject != prevGameObject)
            {
                if (currentGameObject != null)
                {
                    healthManager = currentGameObject.GetComponent <IHealthManager>();
                }
                else
                {
                    healthManager = null;
                }
            }
        }
Beispiel #18
0
        public LinkingManager(ILogger <LinkingManager> logger, IDatabasePreloader databasePreloader, IInventoryManager inventoryManager, IStatsManager statsManager, IHealthManager healthManager, ISpeedManager speedManager, IGuildManager guildManager, IMapProvider mapProvider, IItemEnchantConfiguration itemEnchantConfig, IItemCreateConfiguration itemCreateConfig)
        {
            _logger            = logger;
            _databasePreloader = databasePreloader;
            _inventoryManager  = inventoryManager;
            _statsManager      = statsManager;
            _healthManager     = healthManager;
            _speedManager      = speedManager;
            _guildManager      = guildManager;
            _mapProvider       = mapProvider;
            _itemEnchantConfig = itemEnchantConfig;
            _itemCreateConfig  = itemCreateConfig;

#if DEBUG
            _logger.LogDebug("LinkingManager {hashcode} created", GetHashCode());
#endif
        }
        public TeleportationManager(ILogger <TeleportationManager> logger, IMovementManager movementManager, IMapProvider mapProvider, IDatabase database, ICountryProvider countryProvider, ILevelProvider levelProvider, IGameWorld gameWorld, IHealthManager healthManager)
        {
            _logger                     = logger;
            _movementManager            = movementManager;
            _mapProvider                = mapProvider;
            _database                   = database;
            _countryProvider            = countryProvider;
            _levelProvider              = levelProvider;
            _gameWorld                  = gameWorld;
            _healthManager              = healthManager;
            _castingTimer.Elapsed      += OnCastingTimer_Elapsed;
            _healthManager.OnGotDamage += HealthManager_OnGotDamage;
            _movementManager.OnMove    += MovementManager_OnMove;
#if DEBUG
            _logger.LogDebug("TeleportationManager {hashcode} created", GetHashCode());
#endif

            SavedPositions = new ReadOnlyDictionary <byte, (ushort MapId, float X, float Y, float Z)>(_savedPositions);
        }
    private void checkHitEnemy(Vector2 direction, float damage)
    {
        RaycastHit2D hit = Physics2D.Raycast(transform.position, direction);

        mLine.SetPosition(0, transform.position);

        if (hit && hit.transform.tag.Equals(Tags.ENEMY))
        {
            IHealthManager enemyHp = hit.transform.GetComponent <IHealthManager>();
            enemyHp.LoseHealth(damage);

            float   distance = Vector2.Distance(transform.position, hit.transform.position);
            Vector2 enemyPos = new Vector2(hit.transform.position.x, hit.transform.position.y);
            mLine.SetPosition(1, calculateEvenEnemyHitPoint(direction, enemyPos));
        }
        else
        {
            mLine.SetPosition(1, calculateEvenEndPoint(direction));
        }
    }
Beispiel #21
0
        public override bool Open(ClusterConfig config, bool nonblocking)
        {
            this.m_cluster_config = config;
            m_cancelSrc           = new CancellationTokenSource();
            m_nameservice         = AssemblyUtility.GetAllClassInstances <INameService>().First();
            Log.WriteLine(LogLevel.Info, $"{nameof(DynamicMemoryCloud)}: using name service provided by '{m_nameservice.GetType().FullName}'");
            m_chunktable = AssemblyUtility.GetAllClassInstances <IChunkTable>().First();
            Log.WriteLine(LogLevel.Info, $"{nameof(DynamicMemoryCloud)}: using chunk table provided by '{m_chunktable.GetType().FullName}'");
            m_taskqueue = AssemblyUtility.GetAllClassInstances <ITaskQueue>().First();
            Log.WriteLine(LogLevel.Info, $"{nameof(DynamicMemoryCloud)}: using task queue provided by '{m_taskqueue.GetType().FullName}'");
            m_healthmanager = AssemblyUtility.GetAllClassInstances <IHealthManager>().First();
            Log.WriteLine(LogLevel.Info, $"{nameof(DynamicMemoryCloud)}: using health manager provided by '{m_healthmanager.GetType().FullName}'");
            m_backupmgr = AssemblyUtility.GetAllClassInstances <IBackupManager>().First();
            Log.WriteLine(LogLevel.Info, $"{nameof(DynamicMemoryCloud)}: using backup manager provided by '{m_backupmgr.GetType().FullName}'");
            m_persistent_storage = AssemblyUtility.GetAllClassInstances <IPersistentStorage>().First();
            Log.WriteLine(LogLevel.Info, $"{nameof(DynamicMemoryCloud)}: using persistent storage provided by '{m_persistent_storage.GetType().FullName}'");

            m_nameservice.Start(m_cancelSrc.Token);
            m_taskqueue.Start(m_cancelSrc.Token);
            m_chunktable.Start(m_cancelSrc.Token);
            m_healthmanager.Start(m_cancelSrc.Token);
            m_backupmgr.Start(m_cancelSrc.Token);

            m_myid                 = GetInstanceId(InstanceGuid);
            m_storageTable         = new DynamicStorageTable(PartitionCount);
            m_storageTable[m_myid] = Global.LocalStorage;
            NickName               = GenerateNickName(InstanceGuid);

            int redundancy = DynamicClusterConfig.Instance.MinimumReplica;

            m_cloudidx    = new CloudIndex(m_cancelSrc.Token, m_nameservice, m_chunktable, this, NickName, PartitionTable);
            m_healthmon   = new HealthMonitor(m_cancelSrc.Token, m_nameservice, m_cloudidx, m_healthmanager, redundancy);
            m_partitioner = new Partitioner(m_cancelSrc.Token, m_cloudidx, m_nameservice, m_taskqueue, DynamicClusterConfig.Instance.ReplicationMode, redundancy);
            m_taskexec    = new Executor(m_cancelSrc.Token, m_nameservice, m_taskqueue);
            m_backupctl   = new BackupController(m_cancelSrc.Token, m_backupmgr, m_nameservice, m_persistent_storage, m_taskqueue);

            Log.WriteLine($"{nameof(DynamicMemoryCloud)}: Partition {MyPartitionId}: Instance '{NickName}' {InstanceGuid} opened.");
            Global.CommunicationInstance.Started += InitModule;

            return(true);
        }
        public SkillCastingManager(ILogger <SkillCastingManager> logger, IMovementManager movementManager, ITeleportationManager teleportationManager, IHealthManager healthManager, ISkillsManager skillsManager, IBuffsManager buffsManager, IGameWorld gameWorld, ICastProtectionManager castProtectionManager)
        {
            _logger                = logger;
            _movementManager       = movementManager;
            _teleportationManager  = teleportationManager;
            _healthManager         = healthManager;
            _skillsManager         = skillsManager;
            _buffsManager          = buffsManager;
            _gameWorld             = gameWorld;
            _castProtectionManager = castProtectionManager;

            _castTimer.Elapsed                  += CastTimer_Elapsed;
            _movementManager.OnMove             += MovementManager_OnMove;
            _healthManager.OnGotDamage          += HealthManager_OnGotDamage;
            _buffsManager.OnBuffAdded           += BuffsManager_OnBuffAdded;
            _teleportationManager.OnTeleporting += TeleportationManager_OnTeleporting;

#if DEBUG
            _logger.LogDebug("SkillCastingManager {hashcode} created", GetHashCode());
#endif
        }
Beispiel #23
0
        public DuelManager(ILogger <DuelManager> logger, IGameWorld gameWorld, ITradeManager tradeManager, IMovementManager movementManager, IHealthManager healthManager, IKillsManager killsManager, IMapProvider mapProvider, IInventoryManager inventoryManager, ITeleportationManager teleportationManager)
        {
            _logger                     = logger;
            _gameWorld                  = gameWorld;
            _tradeManager               = tradeManager;
            _movementManager            = movementManager;
            _healthManager              = healthManager;
            _killsManager               = killsManager;
            _mapProvider                = mapProvider;
            _inventoryManager           = inventoryManager;
            _teleportationManager       = teleportationManager;
            _duelRequestTimer.Interval  = 10000; // 10 seconds.
            _duelRequestTimer.Elapsed  += DuelRequestTimer_Elapsed;
            _duelRequestTimer.AutoReset = false;

            _duelStartTimer.Interval  = 5000; // 5 seconds.
            _duelStartTimer.Elapsed  += DuelStartTimer_Elapsed;
            _duelStartTimer.AutoReset = false;
#if DEBUG
            _logger.LogDebug("DuelManager {hashcode} created", GetHashCode());
#endif
        }
Beispiel #24
0
        public Character(ILogger <Character> logger,
                         IDatabasePreloader databasePreloader,
                         IGuildManager guildManager,
                         ICountryProvider countryProvider,
                         ISpeedManager speedManager,
                         IStatsManager statsManager,
                         IAdditionalInfoManager additionalInfoManager,
                         IHealthManager healthManager,
                         ILevelProvider levelProvider,
                         ILevelingManager levelingManager,
                         IInventoryManager inventoryManager,
                         IStealthManager stealthManager,
                         IAttackManager attackManager,
                         ISkillsManager skillsManager,
                         IBuffsManager buffsManager,
                         IElementProvider elementProvider,
                         IKillsManager killsManager,
                         IVehicleManager vehicleManager,
                         IShapeManager shapeManager,
                         IMovementManager movementManager,
                         ILinkingManager linkinManager,
                         IMapProvider mapProvider,
                         ITeleportationManager teleportationManager,
                         IPartyManager partyManager,
                         ITradeManager tradeManager,
                         IFriendsManager friendsManager,
                         IDuelManager duelManager,
                         IBankManager bankManager,
                         IQuestsManager questsManager,
                         IUntouchableManager untouchableManager,
                         IWarehouseManager warehouseManager,
                         IShopManager shopManager,
                         ISkillCastingManager skillCastingManager,
                         ICastProtectionManager castProtectionManager,
                         IGameSession gameSession,
                         IGamePacketFactory packetFactory) : base(databasePreloader, countryProvider, statsManager, healthManager, levelProvider, buffsManager, elementProvider, movementManager, untouchableManager, mapProvider)
        {
            _logger        = logger;
            _packetFactory = packetFactory;

            AdditionalInfoManager = additionalInfoManager;
            InventoryManager      = inventoryManager;
            StealthManager        = stealthManager;
            LevelingManager       = levelingManager;
            SpeedManager          = speedManager;
            AttackManager         = attackManager;
            SkillsManager         = skillsManager;
            KillsManager          = killsManager;
            VehicleManager        = vehicleManager;
            ShapeManager          = shapeManager;
            LinkingManager        = linkinManager;
            TeleportationManager  = teleportationManager;
            PartyManager          = partyManager;
            TradeManager          = tradeManager;
            FriendsManager        = friendsManager;
            DuelManager           = duelManager;
            GuildManager          = guildManager;
            BankManager           = bankManager;
            QuestsManager         = questsManager;
            WarehouseManager      = warehouseManager;
            ShopManager           = shopManager;
            SkillCastingManager   = skillCastingManager;
            CastProtectionManager = castProtectionManager;
            GameSession           = gameSession;

            HealthManager.MP_SP_Used += SendUseMPSP;
            HealthManager.OnCurrentHitpointsChanged += SendCurrentHitpoints;
            StatsManager.OnAdditionalStatsUpdate    += SendAdditionalStats;
            StatsManager.OnResetStats         += SendResetStats;
            BuffsManager.OnBuffAdded          += SendAddBuff;
            BuffsManager.OnBuffRemoved        += SendRemoveBuff;
            AttackManager.OnStartAttack       += SendAttackStart;
            VehicleManager.OnUsedVehicle      += SendUseVehicle;
            SkillsManager.OnResetSkills       += SendResetSkills;
            InventoryManager.OnAddItem        += SendAddItemToInventory;
            InventoryManager.OnRemoveItem     += SendRemoveItemFromInventory;
            InventoryManager.OnItemExpired    += SendItemExpired;
            AttackManager.TargetOnBuffAdded   += SendTargetAddBuff;
            AttackManager.TargetOnBuffRemoved += SendTargetRemoveBuff;
            DuelManager.OnDuelResponse        += SendDuelResponse;
            DuelManager.OnStart                   += SendDuelStart;
            DuelManager.OnCanceled                += SendDuelCancel;
            DuelManager.OnFinish                  += SendDuelFinish;
            LevelingManager.OnExpChanged          += SendExperienceGain;
            QuestsManager.OnQuestMobCountChanged  += SendQuestCountUpdate;
            QuestsManager.OnQuestFinished         += SendQuestFinished;
            ShopManager.OnUseShopClosed           += SendUseShopClosed;
            ShopManager.OnUseShopItemCountChanged += SendUseShopItemCountChanged;
            ShopManager.OnSoldItem                += SendSoldItem;

            Bless.Instance.OnDarkBlessChanged  += OnDarkBlessChanged;
            Bless.Instance.OnLightBlessChanged += OnLightBlessChanged;
        }
Beispiel #25
0
 public CharacterFactory(ILogger <ICharacterFactory> logger,
                         IDatabase database,
                         ILogger <Character> characterLogger,
                         IGameWorld gameWorld,
                         IDatabasePreloader databasePreloader,
                         IGameDefinitionsPreloder definitionsPreloder,
                         ICountryProvider countryProvider,
                         ISpeedManager speedManager,
                         IStatsManager statsManager,
                         IHealthManager healthManager,
                         ILevelProvider levelProvider,
                         ILevelingManager levelingManager,
                         IInventoryManager inventoryManager,
                         ILinkingManager linkingManager,
                         IGuildManager guildManager,
                         IGameSession gameSession,
                         IStealthManager stealthManager,
                         IAttackManager attackManager,
                         ISkillsManager skillsManager,
                         IBuffsManager buffsManager,
                         IElementProvider elementProvider,
                         IKillsManager killsManager,
                         IVehicleManager vehicleManager,
                         IShapeManager shapeManager,
                         IMovementManager movementManager,
                         IAdditionalInfoManager additionalInfoManager,
                         IMapProvider mapProvider,
                         ITeleportationManager teleportationManager,
                         IPartyManager partyManager,
                         ITradeManager tradeManager,
                         IFriendsManager friendsManager,
                         IDuelManager duelManager,
                         IBankManager bankManager,
                         IQuestsManager questsManager,
                         IUntouchableManager untouchableManager,
                         IWarehouseManager warehouseManager,
                         IShopManager shopManager,
                         ISkillCastingManager skillCastingManager,
                         ICastProtectionManager castProtectionManager,
                         IGamePacketFactory packetFactory,
                         UserManager <DbUser> userManager)
 {
     _logger                = logger;
     _database              = database;
     _characterLogger       = characterLogger;
     _gameWorld             = gameWorld;
     _databasePreloader     = databasePreloader;
     _definitionsPreloder   = definitionsPreloder;
     _countryProvider       = countryProvider;
     _speedManager          = speedManager;
     _statsManager          = statsManager;
     _healthManager         = healthManager;
     _levelProvider         = levelProvider;
     _levelingManager       = levelingManager;
     _inventoryManager      = inventoryManager;
     _linkingManager        = linkingManager;
     _guildManager          = guildManager;
     _gameSession           = gameSession;
     _stealthManager        = stealthManager;
     _attackManager         = attackManager;
     _skillsManager         = skillsManager;
     _buffsManager          = buffsManager;
     _elementProvider       = elementProvider;
     _killsManager          = killsManager;
     _vehicleManager        = vehicleManager;
     _shapeManager          = shapeManager;
     _movementManager       = movementManager;
     _additionalInfoManager = additionalInfoManager;
     _mapProvider           = mapProvider;
     _teleportationManager  = teleportationManager;
     _partyManager          = partyManager;
     _tradeManager          = tradeManager;
     _friendsManager        = friendsManager;
     _duelManager           = duelManager;
     _bankManager           = bankManager;
     _questsManager         = questsManager;
     _untouchableManager    = untouchableManager;
     _warehouseManager      = warehouseManager;
     _shopManager           = shopManager;
     _skillCastingManager   = skillCastingManager;
     _castProtectionManager = castProtectionManager;
     _packetFactory         = packetFactory;
     _userManager           = userManager;
 }
        /// <summary>
        /// Test each of the combatants to determine if an impact occured.
        ///
        /// FIXME: A Neo FPS character
        /// has multiple possible hit zones, therefore we should have a way of determining
        /// which is actually hit. Right now we just hit the first found. This might be
        /// enough depending on how they are ordered coming into this method.
        /// </summary>
        /// <param name="rCombatTargets">Targets who we may be impacting</param>
        /// <param name="rAttackStyle">ICombatStyle that details the combat style being used.</param>
        /// <returns>The number of impacts that occurred</returns>
        public override int TestImpact(List <CombatTarget> rCombatTargets, ICombatStyle rAttackStyle = null)
        {
            mImpactCount = 0;

            float lMaxReach = 0f;

            if (mOwner != null)
            {
                ICombatant lCombatant = mOwner.GetComponent <ICombatant>();
                if (lCombatant != null)
                {
                    lMaxReach = lCombatant.MaxMeleeReach;
                }
            }

            for (int i = 0; i < rCombatTargets.Count; i++)
            {
                CombatTarget lTarget = rCombatTargets[i];

                // Stop if we don't have a valid target
                if (lTarget == CombatTarget.EMPTY)
                {
                    continue;
                }

                // Stop if we already hit the Neo FPS Character
                IHealthManager lHealthManager = lTarget.Collider.gameObject.GetComponentInParent <IHealthManager>();
                if (lHealthManager == null)
                {
                    Debug.LogError("Testing for weapon impact impact on " + lTarget.Collider + " but cannot find an IHealthManager in parents. Ignoring.");
                    continue;
                }
                GameObject go = ((MonoBehaviour)lHealthManager).gameObject;
                if (mDefenders.Contains(go))
                {
                    continue;
                }

                // Stop if we're out of range
                float lDistance = Vector3.Distance(lTarget.ClosestPoint, mTransform.position);
                if (lDistance > _MaxRange + lMaxReach)
                {
                    continue;
                }

                Vector3 lVector = (mTransform.position - mLastPosition).normalized;
                if (lVector.sqrMagnitude == 0 && mOwner != null)
                {
                    lVector = mOwner.transform.forward;
                }

                mLastHit.Collider = lTarget.Collider;
                mLastHit.Point    = lTarget.ClosestPoint;
                mLastHit.Normal   = -lVector;
                mLastHit.Vector   = lVector;
                mLastHit.Distance = lTarget.Distance;
                mLastHit.Index    = mImpactCount;

                OnImpact(mLastHit, rAttackStyle);
            }

            return(mImpactCount);
        }
Beispiel #27
0
 public GMAttackHandler(IGamePacketFactory packetFactory, IGameSession gameSession, IHealthManager healthManager) : base(packetFactory, gameSession)
 {
     _healthManager = healthManager;
 }
        /// <summary>
        /// Raised when the impact occurs
        /// </summary>
        /// <param name="rHitInfo">CombatHit structure detailing the hit information.</param>
        /// <param name="rAttackStyle">ICombatStyle that details the combat style being used.</param>
        protected override void OnImpact(CombatHit rHitInfo, ICombatStyle rAttackStyle = null)
        {
            // Test impact is now rolling up to the parent object but this means we are trying to apply the damage to the actorcore rather than the collider actually hit
            // see Test impact below
            IHealthManager lHealthManager = rHitInfo.Collider.gameObject.GetComponentInParent <IHealthManager>();
            GameObject     defender       = ((MonoBehaviour)lHealthManager).gameObject;

            mDefenders.Add(defender);

            mImpactCount++;

            Transform lHitTransform = GetClosestTransform(rHitInfo.Point, rHitInfo.Collider.transform);
            Vector3   lHitDirection = Quaternion.Inverse(lHitTransform.rotation) * (rHitInfo.Point - lHitTransform.position).normalized;

            CombatMessage lMessage = CombatMessage.Allocate();

            lMessage.Attacker     = mOwner;
            lMessage.Defender     = rHitInfo.Collider.gameObject;
            lMessage.Weapon       = this;
            lMessage.Damage       = GetAttackDamage(Random.value, (rAttackStyle != null ? rAttackStyle.DamageModifier : 1f));
            lMessage.ImpactPower  = GetAttackImpactPower();
            lMessage.HitPoint     = rHitInfo.Point;
            lMessage.HitDirection = lHitDirection;
            lMessage.HitVector    = rHitInfo.Vector;
            lMessage.HitTransform = lHitTransform;
            lMessage.AttackIndex  = mAttackStyleIndex;
            lMessage.CombatStyle  = rAttackStyle;

            ActorCore lAttackerCore = (mOwner != null ? mOwner.GetComponentInParent <ActorCore>() : null);
            ActorCore lDefenderCore = defender.gameObject.GetComponentInParent <ActorCore>();

            lMessage.ID = CombatMessage.MSG_ATTACKER_ATTACKED;

            if (lAttackerCore != null)
            {
                lAttackerCore.SendMessage(lMessage);
            }

#if USE_MESSAGE_DISPATCHER || OOTII_MD
            MessageDispatcher.SendMessage(lMessage);
#endif

            lMessage.ID = CombatMessage.MSG_DEFENDER_ATTACKED;

            if (lDefenderCore != null)
            {
                lDefenderCore.SendMessage(lMessage);

#if USE_MESSAGE_DISPATCHER || OOTII_MD
                MessageDispatcher.SendMessage(lMessage);
#endif
            }

            if (lAttackerCore != null)
            {
                lAttackerCore.SendMessage(lMessage);

#if USE_MESSAGE_DISPATCHER || OOTII_MD
                MessageDispatcher.SendMessage(lMessage);
#endif
            }

            OnImpactComplete(lMessage);

            CombatMessage.Release(lMessage);
        }
 protected virtual void Awake()
 {
     m_HealthManager = GetComponent <IHealthManager>();
 }
 public UpdateStatsHandler(IGamePacketFactory packetFactory, IGameSession gameSession, IStatsManager statsManager, IHealthManager healthManager) : base(packetFactory, gameSession)
 {
     _statsManager  = statsManager;
     _healthManager = healthManager;
 }