private void onTargetMMOItemChanged(CPMMOItem obj)
    {
        IslandTargetMMOItem islandTargetMMOItem = obj as IslandTargetMMOItem;

        if (islandTargetMMOItem == null || !gameObjectIdToIslandTargetComponentMap.ContainsKey(islandTargetMMOItem.Id.Id))
        {
            return;
        }
        IslandTarget islandTarget = gameObjectIdToIslandTargetComponentMap[islandTargetMMOItem.Id.Id];

        if (!(islandTarget != null))
        {
            return;
        }
        if (islandTargetMMOItem.IsAnnihilated())
        {
            islandTarget.CueDestroyTargetByServer();
            TargetsRemaining--;
            dispatcher.DispatchEvent(new IslandTargetsEvents.TargetsRemainingUpdated(TargetsRemaining, TotalTargets));
            if (TargetsRemaining == 0)
            {
                dispatcher.DispatchEvent(default(IslandTargetsEvents.GameRoundEnded));
                LogWaveComplete();
                currentGameMMOItemId = -1L;
            }
        }
        else
        {
            islandTarget.DamageCapacity    = islandTargetMMOItem.HitCapacity;
            islandTarget.ServerDamageCount = islandTargetMMOItem.HitCount;
            islandTarget.UpdateDamageSlider();
            dispatcher.DispatchEvent(new IslandTargetsEvents.TargetHit(islandTargetMMOItem.HitCapacity, islandTargetMMOItem.HitCount));
        }
    }
    private void onIslandTargetMMOItemAdded(DataEntityHandle handle, ServerObjectItemData serverObjectItemData, IslandTargetMMOItem islandTargetMmoItem)
    {
        if (dataModelHandleListenersMap.ContainsKey(handle) || !childrenPaths.Contains(islandTargetMmoItem.Path))
        {
            return;
        }
        Transform transform = base.gameObject.transform.Find(islandTargetMmoItem.Path);

        if (!(transform != null))
        {
            return;
        }
        transform.gameObject.SetActive(value: true);
        dataModelHandleListenersMap[handle] = serverObjectItemData;
        IslandTarget component = transform.gameObject.GetComponent <IslandTarget>();

        if (component != null)
        {
            gameObjectIdToIslandTargetComponentMap[islandTargetMmoItem.Id.Id] = component;
            if (!islandTargetMmoItem.IsAnnihilated())
            {
                serverObjectItemData.ItemChanged += onTargetMMOItemChanged;
                component.DamageCapacity          = islandTargetMmoItem.HitCapacity;
                component.ServerDamageCount       = islandTargetMmoItem.HitCount;
                CoroutineRunner.Start(DelayTargetAppearance(delayBetweenRounds, component, islandTargetMmoItem), this, "DelayTargetAppearanceBetweenRounds");
                TargetsRemaining++;
                dispatcher.DispatchEvent(new IslandTargetsEvents.TargetsRemainingUpdated(TargetsRemaining, TotalTargets));
            }
        }
    }
示例#3
0
 public void Init(IslandTarget islandTarget)
 {
     _islandTarget  = islandTarget;
     _startPosition = base.transform.localPosition;
     _startEuler    = base.transform.localEulerAngles;
     PlayModifierEffect();
 }
    private IEnumerator DelayTargetAppearance(float waitTime, IslandTarget targetComponent, IslandTargetMMOItem islandTargetMmoItem)
    {
        yield return(new WaitForSeconds(waitTime));

        targetComponent.Initialize(islandTargetMmoItem.HitCount, islandTargetMmoItem.HitCapacity, this);
    }
示例#5
0
 public LocalPlayerHitTargetEvent(IslandTarget target)
 {
     Target = target;
 }
示例#6
0
 public void Awake()
 {
     target = base.transform.parent.GetComponentInChildren <IslandTarget>();
     Assert.IsNotNull(target, "The target component could not be found.");
 }