Ejemplo n.º 1
0
    public void MoveOrTarget()
    {
        RaycastHit[] raycastArray = Physics.RaycastAll(MainCamera.ScreenPointToRay(m_lastClickPosition), Mathf.Infinity, GameManager.instance.Mask);
        Vector2      floorPoint   = Vector2.zero;
        bool         floorHit     = false;

        foreach (RaycastHit ray in raycastArray)
        {
            MobaEntity entity = ray.transform.GetComponent <MobaEntity>();
            if (entity)
            {
                //If the player clicks on any hostile entity, send auto attack command to the server
                if (m_characterEntity.GetTargetAllegiance(entity) == EAllegiance.Hostile)
                {
                    Debug.Log("Entity Clicked: " + entity.name);
                    CmdAttackEntityOnServer(entity.InstanceId);
                    return;
                }
            }
            //If the player clicks on the floor, send move command to the server
            if (ray.transform.tag == "Floor")
            {
                floorPoint = new Vector2(ray.point.x, ray.point.z);
                floorHit   = true;
            }
        }
        if (floorHit)
        {
            CmdCalculatePathOnServer(floorPoint);
        }
    }
Ejemplo n.º 2
0
    protected virtual void ProjectileHit(MobaEntity target)
    {
        if (onProjectileExpended != null)
        {
            onProjectileExpended(this, true);
        }
        m_expended = true;
        if (m_attacker.isClient)
        {
            return;
        }
        switch (m_ability.AbilityBase.DamageLogic)
        {
        case EDamageLogic.DamageTargetLogic:
            if (target != null)
            {
                DamageDirect(target);
            }
            break;

        case EDamageLogic.DamageAoeLogic:
            DamageAOE();
            break;

        case EDamageLogic.DamageCustomLogic:
            DamageCustom(m_ability, target);
            break;

        default:
            break;
        }
    }
Ejemplo n.º 3
0
 public void CharacterDataChanged(MobaEntity entity)
 {
     m_healthImage.fillAmount = (float)(entity.Health) / (float)(entity.HealthMax);
     m_manaImage.fillAmount   = (float)(entity.Mana) / (float)(entity.ManaMax);
     m_healthText.text        = (int)entity.Health + " / " + (int)entity.HealthMax;
     m_manaText.text          = (int)entity.Mana + " / " + (int)entity.ManaMax;
 }
Ejemplo n.º 4
0
    public static object CreateGenericInstance(string FullyQualifiedNameOfClass, MobaEntity entity)
    {
        object[] args = new object[] { entity };
        Type     t    = Type.GetType(FullyQualifiedNameOfClass);

        return(Activator.CreateInstance(t, args));
    }
Ejemplo n.º 5
0
    /// <summary>
    /// Virtual Method  that Initializes a MobaEntity and load all configuration from the MobaEntity data
    /// This Method can be override by custom entities to load custom entity data
    /// </summary>
    /// <param name="data">MobaEntity Data</param>
    /// <param name="instanceId">Unique Instance Identifier for this Entity</param>
    public virtual void InitializeEntity(MobaEntityData data, string instanceId)
    {
        m_entityData     = data;
        m_dataIdentifier = data.m_dataIdentifier;
        //GENERAL VARIABLES
        m_instanceId = instanceId;
        m_goldBonus  = data.m_goldBonus;

        //OFFENSIVE VARIABLES
        EntityAbilities.BaseAttackDamage = data.m_baseAttackDamage;
        EntityAbilities.BaseMagicDamage  = data.m_baseMagicDamage;

        //DEFENSIVE VARIABLES
        EntityAbilities.Armor    = data.m_armor;
        EntityAbilities.MagicRes = data.m_magicRes;

        //HEALTH VARIABLES
        m_healthMax        = data.m_healthMax;
        m_health           = m_healthMax;
        m_healthRegenerate = data.m_healthRegenerate;

        //MANA VARIABLES
        m_manaMax          = data.m_manaMax;
        m_mana             = m_manaMax;
        m_manaRegeneration = data.m_manaRegeneration;

        m_dead   = false;
        m_target = null;
    }
Ejemplo n.º 6
0
    public override void Initialize(MobaEntity entity, Ability ability, EAttackType attackType)
    {
        base.Initialize(entity, ability, attackType);
        //Ability holder = m_entity.EntityAbilities.GetAbility(ability.AttackType);
        switch (m_ability.AbilityBase.TargetType)
        {
        case ETargetType.EntityTarget:
            m_rangueImageIndicator = CreateImageIndicator(m_ability.AbilityBase.RangeImageIndicator, new Vector3(ability.Range * 2, 1, ability.Range * 2));
            break;

        case ETargetType.PositionTarget:
            m_rangueImageIndicator = CreateImageIndicator(m_ability.AbilityBase.RangeImageIndicator, new Vector3(ability.Range * 2, 1, ability.Range * 2));
            if (m_ability.AbilityBase.SkillShotType == ESkillShotType.FloorSkill)
            {
                m_targetImageIndicator = CreateImageIndicator(m_ability.AbilityBase.TargetImageIndicator, new Vector3(ability.AbilityBase.AoeRange, 1, ability.AbilityBase.AoeRange));
            }
            else
            {
                m_targetImageIndicator = CreateImageIndicator(m_ability.AbilityBase.TargetImageIndicator, Vector3.one);
            }
            break;

        case ETargetType.SelfTarget:
            break;

        case ETargetType.RandomTarget:
            break;

        case ETargetType.AllTarget:
            break;

        default:
            break;
        }
    }
Ejemplo n.º 7
0
    public Node GeNearestNeighboursInRange(MobaEntity entity, Vector2 targetPos, float range)
    {
        //sw = new Stopwatch();
        //sw.Start();
        Node        fromNode           = GetNode(targetPos);
        List <Node> neighbours         = new List <Node>();
        Node        nearestNeighbour   = null;
        float       curentNodeDistance = 100;

        for (int x = -5; x <= 5; x++)
        {
            for (int y = -5; y <= 5; y++)
            {
                if (x == 0 && y == 0)
                {
                    continue;
                }

                int checkX = fromNode.gridX + x;
                int checkY = fromNode.gridY + y;

                if (checkX >= 0 && checkX < grid.gridSizeX && checkY >= 0 && checkY < grid.gridSizeY)
                {
                    Node nodeToCheck = grid.grid[checkX, checkY];
                    if (nodeToCheck.walkable)
                    {
                        if (nodeToCheck.Resident)
                        {
                            if (nodeToCheck.Resident == entity)
                            {
                            }
                        }
                        else
                        {
                            neighbours.Add(nodeToCheck);
                        }
                    }
                }
            }
        }

        //Find the nearest node from the list
        foreach (Node currentNode in neighbours)
        {
            float distanceFromOrigin = Vector2.Distance(currentNode.m_position, entity.Position);
            float distanceToTarget   = Vector2.Distance(currentNode.m_position, targetPos);
            if (distanceFromOrigin < curentNodeDistance && distanceToTarget <= range)
            {
                curentNodeDistance = distanceFromOrigin;
                nearestNeighbour   = currentNode;
            }
        }
        //Let multiple minions overlap on the same node
        if (nearestNeighbour == null)
        {
            nearestNeighbour = neighbours[0];
        }
        nearestNeighbour.Resident = entity;
        return(nearestNeighbour);
    }
Ejemplo n.º 8
0
 public void ApplyAbilityEffects(Ability ability, MobaEntity attacker)
 {
     foreach (SideEffect effect in ability.AbilityBase.SideEffects)
     {
         TryApplySideEffect(ability, effect, attacker, false);
     }
 }
Ejemplo n.º 9
0
    public SideEffect TryApplySideEffect(Ability ability, SideEffect effect, MobaEntity attacker, bool isPasive)
    {
        //TODO: Check here if the effects can be stacked or not
        //for (int i = 0; i < m_appliedEffects.Count; i++)
        //{
        //    if (m_appliedEffects[i].GetType() == effect.GetType())
        //    {
        //        RemoveSideEffect(m_appliedEffects[i]);
        //        break;
        //    }
        //}

        SideEffect newEffect = effect.Clone();

        newEffect.ApplyEffect(ability, attacker, m_mobaEntity);
        if (isPasive)
        {
            m_passiveEffects.Add(newEffect);
        }
        else
        {
            m_appliedEffects.Add(newEffect);
        }
        return(newEffect);
    }
Ejemplo n.º 10
0
    public Node CloseNode(Vector2 pos, MobaEntity entity)
    {
        Node node = grid.NodeFromWorldPoint(pos);

        node.walkable = false;
        node.Resident = entity;
        return(node);
    }
Ejemplo n.º 11
0
    public void RpcEnqueueSlainEvent(string killerEntity, string deadEntity)
    {
        MobaEntity killer  = GameManager.instance.GetMobaEntity(killerEntity);
        MobaEntity dead    = GameManager.instance.GetMobaEntity(deadEntity);
        SlainEvent capture = new SlainEvent(killer, dead);

        slainEventList.Enqueue(capture);
    }
Ejemplo n.º 12
0
 public Ability(AbilityBase abilityBase, EAttackType type, MobaEntity entity)
 {
     m_abilityBase = abilityBase;
     m_mobaEntity  = entity;
     //Only basic abilities starts at level 1
     m_attackType = type;
     Level        = m_attackType == EAttackType.Basic ? 1 : 0;
 }
Ejemplo n.º 13
0
 public void OnInstantiate()
 {
     m_attacker        = null;
     m_target          = null;
     m_targetPos       = Vector3.zero;
     m_targetTransform = null;
     m_ability         = null;
     m_expended        = false;
 }
Ejemplo n.º 14
0
 public PositionAbilityTask(MobaEntity attacker, Quaternion entityRotation, string projectileIdentifier, string instanceId, string abilityIdentifier, Vector3 targetPos, int time) : base(time)
 {
     m_attacker             = attacker;
     m_projectileIdentifier = projectileIdentifier;
     m_entityRotation       = entityRotation;
     m_instanceId           = instanceId;
     m_abilityIdentifier    = abilityIdentifier;
     m_targetPos            = targetPos;
 }
Ejemplo n.º 15
0
    /// <summary>
    /// Get an ability from its Identifier
    /// </summary>
    /// <param name="identifier">Ability Identifier</param>
    /// <returns>AbilityBase</returns>
    public Ability GenerateEntityAbility(string identifier, EAttackType type, MobaEntity entity)
    {
        if (m_abilitiesDic.ContainsKey(identifier))
        {
            return(new Ability(m_abilitiesDic[identifier], type, entity));
        }

        return(null);
    }
Ejemplo n.º 16
0
 public CalculatePathTask(MobaEntity entity, Vector2 startPos, Vector2 destinationPos, int time) : base(time)
 {
     m_startPos = startPos;
     m_entity   = entity;
     if (Pathfinding.instance != null)
     {
         path = Pathfinding.instance.FindPath(startPos, destinationPos);
     }
 }
Ejemplo n.º 17
0
 public AbilitySimpleTarget(MobaEntity attacker, MobaEntity target, Ability ability)
 {
     m_ability  = ability;
     m_attacker = attacker;
     m_attacker.StopAgent(false);
     m_attackerAbilities = m_attacker.GetComponent <EntityAbilities>();
     m_attackerAnimator  = m_attacker.GetComponent <EntityAnimator>();
     Target = target;
 }
Ejemplo n.º 18
0
 public void CharacterDataChanged(MobaEntity entity)
 {
     m_expBar.fillAmount = (float)(entity.CurrentExperience - entity.CurentLevelExp) / (float)(entity.NextLevelExp - entity.CurentLevelExp);
     m_expText.text      = (entity.CurrentExperience - entity.CurentLevelExp) + " / " + (entity.NextLevelExp - entity.CurentLevelExp);
     m_baseAdText.text   = ((int)entity.EntityAbilities.BaseAttackDamage).ToString() + " + " + ((int)entity.EntityAbilities.AttackDamageMod).ToString();
     m_baseApText.text   = ((int)entity.EntityAbilities.BaseMagicDamage).ToString() + " + " + ((int)entity.EntityAbilities.MagicDamageMod).ToString();
     m_armorText.text    = ((int)entity.EntityAbilities.Armor).ToString() + " + " + ((int)entity.EntityAbilities.ArmorMod).ToString() + " % " + ((int)entity.EntityAbilities.ArmorResPercentMod).ToString();
     m_magicResText.text = ((int)entity.EntityAbilities.MagicRes).ToString() + " + " + ((int)entity.EntityAbilities.MagicResMod).ToString() + " % " + ((int)entity.EntityAbilities.MagicResPercentMod).ToString();
     m_speedText.text    = ((int)entity.Speed).ToString();
 }
Ejemplo n.º 19
0
 public AbilitySimpleTarget(MobaEntity attacker, MobaEntity[] targets, Ability ability)
 {
     m_targets  = targets;
     m_ability  = ability;
     m_attacker = attacker;
     m_attacker.StopAgent(false);
     m_attackerAbilities = m_attacker.GetComponent <EntityAbilities>();
     m_attackerAnimator  = m_attacker.GetComponent <EntityAnimator>();
     //m_attacker.EntityAbilities.IsCasting = true;
 }
Ejemplo n.º 20
0
 public AbilitySimplePosition(MobaEntity attacker, Vector2 targetPos, Ability ability)
 {
     m_targetPos = targetPos;
     m_ability   = ability;
     m_attacker  = attacker;
     m_attacker.StopAgent(false);
     m_attackerAbilities = m_attacker.GetComponent <EntityAbilities>();
     m_attackerAnimator  = m_attacker.GetComponent <EntityAnimator>();
     m_attacker.EntityAbilities.IsCasting = true;
 }
Ejemplo n.º 21
0
 public DamageProcess(MobaEntity attacker, MobaEntity target, Ability ability)
 {
     m_attacker = attacker;
     m_target   = target;
     m_ability  = ability;
     if (m_attacker != null && m_target != null && m_ability != null)
     {
         RunProcess();
     }
 }
Ejemplo n.º 22
0
    public override void Initialize(MobaEntity entity)
    {
        m_characterEntity = entity as CharacterEntity;

        if (GameManager.instance.LocalPlayer != null && m_characterEntity.InstanceId == GameManager.instance.LocalPlayer.PlayerName)
        {
            InputManager.instance.OnGetKeyDown += GetKeyDownEvent;
            InputManager.instance.OnTap        += OnTapEvent;
        }
        Initialized = true;
    }
Ejemplo n.º 23
0
    public Particle ClientSpawnParticle(MobaEntity entity, string particlePrefab, EEntityTransform position)
    {
        EntityTransform entityTransform      = entity.GetTransformPosition(position);
        GameObject      sideEffectObj        = SpawnManager.instance.InstantiatePool(particlePrefab, entityTransform.transform.position, entityTransform.transform.rotation);
        int             projectileInstanceID = sideEffectObj.GetInstanceID();
        Particle        prefab = sideEffectObj.GetComponent <Particle>();

        prefab.Initialize(particlePrefab + "_" + projectileInstanceID, entity);
        m_particles.Add(prefab.ServerInstanceId, prefab);
        return(prefab);
    }
Ejemplo n.º 24
0
    public void Initialize(MobaEntity entity)
    {
        if (m_entity == null)
        {
            m_entity = entity;
            m_entity.OnDataChanged += UpdateCanvas;
        }

        m_canvasInfoHolder.SetActive(true);
        UpdateCanvas(m_entity);
    }
Ejemplo n.º 25
0
 public void Initialize(MobaEntity attacker, MobaEntity target, Ability ability, OnProjectileExpended expendedCallback = null)
 {
     m_expended           = false;
     m_attacker           = attacker;
     m_target             = target;
     m_targetTransform    = target.GetTransformPosition(EEntityTransform.Center);
     m_ability            = ability;
     onProjectileExpended = expendedCallback;
     m_targetTeam         = m_attacker.GetAbilityTargetTeam(m_ability.AbilityBase.Allegiance);
     OnStart();
 }
Ejemplo n.º 26
0
    public void Initialize(MobaEntity attacker, Vector3 targetPos, Ability ability, OnProjectileExpended expendedCallback = null)
    {
        m_expended           = false;
        m_attacker           = attacker;
        m_targetPos          = targetPos;
        m_ability            = ability;
        onProjectileExpended = expendedCallback;
        m_targetTeam         = m_attacker.GetAbilityTargetTeam(m_ability.AbilityBase.Allegiance);

        OnStart();
    }
Ejemplo n.º 27
0
 public void Initialize(string serverInstanceId, MobaEntity entity, CustomAudioSource audiosource = null, bool isNetworkParticle = false)
 {
     m_isNetworkedParticle = isNetworkParticle;
     m_entity           = entity;
     m_serverInstanceId = serverInstanceId;
     m_audioSource      = audiosource;
     if (m_followEntity)
     {
         transform.SetParent(m_entity.transform);
     }
 }
Ejemplo n.º 28
0
    public bool IsOnRange(MobaEntity attacker, Vector2 targetPos)
    {
        float distanceToTarget = Vector2.Distance(attacker.Position, targetPos);

        //
        if (distanceToTarget < m_range)
        {
            return(true);
        }
        return(false);
    }
Ejemplo n.º 29
0
 void Awake()
 {
     m_entity = GetComponent <MobaEntity>();
     if (m_animation == null)
     {
         m_animation = GetComponentInChildren <Animation>();
     }
     if (m_animator == null)
     {
         m_animator = GetComponentInChildren <Animator>();
     }
 }
Ejemplo n.º 30
0
    public static LineRenderer CreateLineRendererObject(MobaEntity entity, bool useWorldSpace)
    {
        GameObject   obj          = new GameObject("Debug Renderer");
        LineRenderer lineRenderer = obj.AddComponent <LineRenderer>();

        lineRenderer.startWidth    = 0.01f;
        lineRenderer.endWidth      = 0.01f;
        lineRenderer.useWorldSpace = useWorldSpace;
        obj.transform.position     = entity.transform.position;
        obj.transform.SetParent(entity.transform);
        return(lineRenderer);
    }