예제 #1
0
    private void TimeTickSystem_OnTick(object sender, TimeTickSystem.OnTickEventArgs e)
    {
        switch (t)
        {
        case 32:
        case 40:
        case 48:
            spriteRenderer.sprite = shouldDamage ? redTile : greenTile;
            break;

        case 36:
        case 44:
        case 52:
            spriteRenderer.sprite = originalTile;
            break;

        case 56:
            spriteRenderer.sprite = shouldDamage ? redTile : greenTile;
            collider2d.enabled    = shouldDamage;
            break;

        case 63:
            collider2d.enabled = false;
            break;

        case 64:
            spriteRenderer.sprite = originalTile;
            t            = 0;
            shouldDamage = Random.Range(0, 2) == 0;
            didDamage    = false;
            break;
        }

        t++;
    }
예제 #2
0
    void UpdateTarget(object sender, TimeTickSystem.OnTickEventArgs e)
    {
        if (stats != null)
        {
            if (stats.targetableTags != null)
            {
                List <GameObject> enemies = new List <GameObject>();
                for (int i = 0; i < stats.targetableTags.Length; i++)
                {
                    enemies.AddRange(GameObject.FindGameObjectsWithTag(stats.targetableTags[i]));
                }

                float      shortestDistance = Mathf.Infinity;
                GameObject nearestEnemy     = null;
                foreach (GameObject enemy in enemies)
                {
                    float distanceToEnemy = Vector3.Distance(transform.position, enemy.transform.position);
                    if (distanceToEnemy < shortestDistance)
                    {
                        shortestDistance = distanceToEnemy;
                        nearestEnemy     = enemy;
                    }
                }

                if (nearestEnemy != null && shortestDistance <= stats.range)
                {
                    target = nearestEnemy.transform;
                }
                else
                {
                    target = null;
                }
            }
        }
    }
예제 #3
0
    private void TimeTickSystem_OnTick(object sender, TimeTickSystem.OnTickEventArgs e)
    {
        if (!CanFire())
        {
            return;
        }

        foreach (PlayerWeapon w in weapons)
        {
            if (w != null)
            {
                w.WeaponTick(e.tick);
            }
        }

        if (e.tick % 4 == 0)
        {
            ticksTillCooldown--;
            if (ticksTillCooldown <= 0)
            {
                if (weapons[currMountIndex] != null)
                {
                    weapons[currMountIndex].Attack(); // test CanAttack() => Attack() maybe
                }
                if (weapons[(currMountIndex + 2) % 4] != null)
                {
                    weapons[(currMountIndex + 2) % 4].Attack(); // test CanAttack() => Attack() maybe
                }
                currMountIndex = (currMountIndex + 1) % weapons.Length;

                ticksTillCooldown = shotCooldown;
            }
        }
    }
예제 #4
0
    protected virtual void TimeTickSystem_OnTick(object sender, TimeTickSystem.OnTickEventArgs e)
    {
        if (e.tick % 4 == 0)
        {
            if (!isTileEnabled)
            {
                return;
            }

            ticksTillShot -= 1;

            if (ticksTillShot == 5)
            {
                //animator.SetTrigger("prep");
                Instantiate(prepParticles, bulletSpawn.position, Quaternion.identity, transform);
            }

            if (ticksTillShot <= 0)
            {
                // AudioManager.PlaySound("");
                Instantiate(attackParticles, bulletSpawn.position, Quaternion.identity, transform);

                AudioManager.Play("dungeon_turret_projectile");

                Shoot();

                ticksTillShot = fireRate;
            }
        }
    }
예제 #5
0
 private void TimeTickSystem_OnTick(object sender, TimeTickSystem.OnTickEventArgs e)
 {
     //Debug.Log("TICK: " + e.ticks);
     UpdateState();
     WindCorrection();
     SpreadFire();
 }
예제 #6
0
 public void OnTick(object sender, TimeTickSystem.OnTickEventArgs e)
 {
     if (trainingQueue.Count != 0)
     {
         TryTrainNextUnit();
     }
 }
예제 #7
0
 private void TimeTickSystem_OnTick(object sender, TimeTickSystem.OnTickEventArgs e)
 {
     ticks++;
     if (ticks >= idleTimer)
     {
         anim.SetBool("HasArrived", false);
     }
 }
예제 #8
0
    private void TimeTickSystem_OnTick(object sender, TimeTickSystem.OnTickEventArgs e)
    {
        // resources achterlaten bij building en dan weer naar returnTarget toe.
        unit.player.AddResource(gather.hasResourceType, (int)gather.hasResourceAmount);
        gather.hasResourceAmount = 0;

        unit.animator.SetBool("HasResources", false);
        unit.animator.SetBool("HasArrived", false);
    }
예제 #9
0
 private void TimeTickSystem_OnTick(object sender, TimeTickSystem.OnTickEventArgs e)
 {
     Debug.Log("attack tick");
     //aanroepen van gather mechanic
     targetResource.ChangeHealth(-fightController.meleeAtack);
     if (targetResource.available)
     {
         anim.SetBool("IsAttacking", false);
     }
 }
예제 #10
0
    public override void OnTick(object sender, TimeTickSystem.OnTickEventArgs e)
    {
        if (e.tick % ticksPerSecond == 0)
        {
            IncreaseBySecond();
            // Update view
            UpdateTimerView();

            Debug.Log(string.Format("{0}:{1}", minutes, seconds));
        }
    }
 private void TimeTickSystem_OnTick(object sender, TimeTickSystem.OnTickEventArgs e)
 {
     if (!playerIsGone && state == State.patrolling)
     {
         waitedTicks += 1;
         if (waitedTicks > ticksToWait)
         {
             playerIsGone = true;
             waitedTicks  = 0;
         }
     }
 }
예제 #12
0
    private void TimeTickSystem_OnTick(object sender, TimeTickSystem.OnTickEventArgs e)
    {
        //Debug.Log("Curse: " + curseTicks);

        curseTicks = Mathf.Min(curseTicks + 1, curseMax);

        if (!isCursed)
        {
            CheckCursed();
        }

        UpdatePostProcessing((float)curseTicks / curseMax);
    }
예제 #13
0
 // TimeTickSystem.OnTick event handler
 public void WaitForTicks(object sender, TimeTickSystem.OnTickEventArgs e)
 {
     if (waitedTicks < waitingForTicks)
     {
         waitedTicks++;
     }
     else
     {
         waiting = false;
         Unsubscribe_WaitForTicks();
         Debug.Log("AI: wait stopped.");
     }
 }
예제 #14
0
 private void TimeTickSystem_OnTick(object sender, TimeTickSystem.OnTickEventArgs e)
 {
     if (e.tick % 4 == 0)
     {
         if (isPrimed && !didExplode)
         {
             if (primedTick != e.tick)
             {
                 Explode();
             }
         }
     }
 }
예제 #15
0
        void OnTick(object sender, TimeTickSystem.OnTickEventArgs args)
        {
            if (movement == null || pathGetter == null)
            {
                return;
            }
            currentNavigationTick += 1;

            if (currentNavigationTick > baseData.navigationTickRate)
            {
                movement.Move(path, ref currentPathTarget, baseData.moveSpeed);
                currentNavigationTick = 0;
            }
        }
    // event handler for gathering resources
    public void OnTick(object sender, TimeTickSystem.OnTickEventArgs e)
    {
        //Debug.Log(String.Format("event handler called {0}", e.tick));
        // TODO: See if using OnTick5 makes sense
        if (e.tick % resourceTicks == 0)
        {
            Debug.Log(GetWorkerStatusString());
            // send resources to store
            ResourceTransaction transaction = GeneratePayOutTransaction();

            Debug.Log(transaction.FormattedStatusString());
            SendResourcesToStore(transaction);
        }
    }
예제 #17
0
 private void TimeTickSystem_OnTick(object sender, TimeTickSystem.OnTickEventArgs e)
 {
     foreach (List <GameObject> enemyList in activeEnemies.Values)
     {
         foreach (GameObject g in enemyList)
         {
             Enemy enemy = g.GetComponent <Enemy>();
             if (enemy != null && enemy.doTick && g.activeSelf)
             {
                 enemy.EnemyTick(e.tick);
             }
         }
     }
 }
예제 #18
0
 // Update is called once per frame
 private void TimeTickSystem_OnTick(object sender, TimeTickSystem.OnTickEventArgs e)
 {
     if (e.tick % delay == 0)
     {
         if (explosions > 0)
         {
             GameObject expGO = Instantiate(explodePrefab, pos, Quaternion.identity, transform.parent);
             expGO.GetComponent <Explosion>().defaultTarget = Entity.fullHeightEntitiesMask;
             pos = transform.position + new Vector3(Random.Range(-1, 2), Random.Range(-1, 2), 0);
             explosions--;
         }
         else
         {
             Die();
         }
     }
 }
예제 #19
0
 private void TimeTickSystem_OnTickMicro(object sender, TimeTickSystem.OnTickEventArgs e)
 {
     if (currentTick >= currentCharacterAnimation.microTicksToNewFrame)
     {
         frameNumber++;
         if (frameNumber >= currentCharacterAnimation.animation.Length)
         {
             frameNumber = 0;
         }
         spriteRenderer.sprite = currentCharacterAnimation.animation[frameNumber];
         currentTick           = 0;
     }
     else
     {
         currentTick++;
     }
 }
예제 #20
0
    public override void OnTick(object sender, TimeTickSystem.OnTickEventArgs e)
    {
        if (e.tick % ticksPerSecond == 0)
        {
            DecreaseBySecond();

            if (IsTimerFinished())
            {
                Unsubscribe();
                OnTimerFinish();
            }
            // Update view
            UpdateTimerView();

            Debug.Log(string.Format("{0}:{1}", minutes, seconds));
        }
    }
예제 #21
0
 private void TimeTickSystem_OnTick_5(object sender, TimeTickSystem.OnTickEventArgs e)
 {
     foreach (TemporaryMessage temporaryMessage in temporaryMessages)
     {
         if (temporaryMessage.showingMessage && temporaryMessage.messageTick5Max > 0)
         {
             if (temporaryMessage.messageTick5Cur >= temporaryMessage.messageTick5Max)
             {
                 temporaryMessage.messageObject.SetActive(false);
                 temporaryMessage.messageBar.SetText("");
                 temporaryMessage.showingMessage  = false;
                 temporaryMessage.messageTick5Cur = 0;
             }
         }
         temporaryMessage.messageTick5Cur++;
     }
 }
예제 #22
0
파일: Spike.cs 프로젝트: bzhai155/gunsnake
    private void TimeTickSystem_OnTick(object sender, TimeTickSystem.OnTickEventArgs e)
    {
        if (e.tick % 4 == 0)
        {
            ticksTillChange -= 1;

            if (ticksTillChange == 4 && !isActive)
            {
                animator.SetTrigger("prep");
            }

            if (ticksTillChange <= 0)
            {
                ToggleActive();

                ticksTillChange = isActive ? numTicksOn : numTicksOff;
            }
        }
    }
예제 #23
0
    public void OnTickEventHandler(object sender, TimeTickSystem.OnTickEventArgs e)
    {
        if (constructedTicks < constructionTime)
        {
            constructedTicks++;
        }
        else
        {
            isUnderConstruction = false;
            Unsubscribe();

            // log
            Debug.Log("command succesfully executed.");
            GetGameLog().Log(string.Format("Building contruction complete ({0})", buildingType));

            // update view on building completion!!
            GetBuildPlotController().UpdateBuildPlotView(location);
            // GameObject.Find("BuildPlotController").GetComponent<BuildPlotController>().UpdateBuildPlotView(location);
        }
    }
예제 #24
0
 private void TimeTickSystem_OnTick(object sender, TimeTickSystem.OnTickEventArgs e)
 {
     if (aiState.mode == AIStateMode.DestroyBlock &&
         currentBlockDestroying.nextBlockHealth != null &&
         current != null &&
         currentBlockDestroying.nextBlockHealth.Value.x > 0 &&
         currentBlockDestroying.nextBlockWorldPos.Equals(current.Value.c0))
     {
         int3x3 data          = currentBlockDestroying.nextBlockData.Value;
         int3   block         = currentBlockDestroying.nextBlock.Value;
         int3   blockHealth   = currentBlockDestroying.nextBlockHealth.Value;
         int3   blockWorldPos = currentBlockDestroying.nextBlockWorldPos.Value;
         var    regen         = Block.GetRegen(block);
         if (regen > 0)
         {
             DamagePopup.Create(Utils.CenterOfBlockWithWorldPos(blockWorldPos), regen, false, Colors.green);
             ModifyBlockHealth(data, 0, new int3(blockHealth.x + Mathf.RoundToInt(regen), blockHealth.y, Mathf.RoundToInt(regen)));
         }
     }
 }
예제 #25
0
 private void TimeTickSystem_OnTick(object sender, TimeTickSystem.OnTickEventArgs e)
 {
     hungerTick++;
     if (hungerTick >= hungerTickMax)
     {
         hungerTick = 0;
         hunger    -= 1;
         if (hunger <= maxHunger / 10)
         {
             //return To Colony for food
         }
         if (hunger <= 0)
         {
             if (gameObject != null)
             {
                 Destroy(gameObject);
             }
         }
     }
 }
예제 #26
0
 private void TimeTickSystem_OnTick(object sender, TimeTickSystem.OnTickEventArgs e)
 {
     //if (e.tick % 4 == 0)
     //{
     foreach (List <GameObject> projList in activeProjectiles.Values)
     {
         for (int i = projList.Count - 1; i >= 0; i--)
         {
             if (i < 0 || i >= projList.Count) // i don't know why i need this, for when LevelHandler calls ClearAllProjectiles();
             {
                 break;
             }
             //Debug.Log(i + " " + projList.Count);
             GameObject g = projList[i];
             if (g.GetComponent <Projectile>() != null)
             {
                 g.GetComponent <Projectile>().ProjectileTick(e.tick);
             }
         }
     }
     //}
 }
예제 #27
0
파일: Colony.cs 프로젝트: MGibson5/AntSim
 private void TimeTickSystem_OnTick(object sender, TimeTickSystem.OnTickEventArgs e)
 {
     hungerTick++;
     //print(hungerTick);
     if (hungerTick >= hungerTickMax)
     {
         hungerTick = 0;
         hunger    -= 1;
         if (hunger <= 0)
         {
             if (getColonySize() > 1)
             {
                 shrinkColony();
                 hunger = 10;
             }
             else
             {
                 //COLONY DEAD
                 Debug.Log("COLONY STARVED");
             }
         }
     }
 }
예제 #28
0
    //Atualiza o Relogio da Interface
    void Clock(object sender, TimeTickSystem.OnTickEventArgs e)
    {
        ticks++;
        if (ticks >= TICKS_MAX_FOR_MINUTE)
        {
            ticks = 0;
            minutes++;
        }
        if (minutes >= 60)
        {
            minutes = 0;
            hours++;
        }
        if (hours >= 20)
        {
            hours = 0;
            days++;
        }

        minute.text = minutes < 10 ? "0" + minutes.ToString() : minutes.ToString();
        hour.text   = hours < 10 ? "0" + hours.ToString() : hours.ToString();
        day.text    = days.ToString();
    }
예제 #29
0
    // event handler to deal with TimeTickSystem
    private void TimeTickSystem_OnTick(object sender, TimeTickSystem.OnTickEventArgs e)
    {
        if (isConstructing)
        {
            buildTick += 1;

            float buildTickNormalized = buildTick * 1f / buildTickMax;

            if (buildTickNormalized >= 0.3)
            {
                Debug.Log(">30% done");
            }

            if (buildTick >= buildTickMax)
            {
                isConstructing = false;
                UnSubscribe();
            }
            else
            {
                Debug.Log(string.Format("building {0} / {1} ({2}%)", buildTick, buildTickMax, buildTickNormalized * 100));
            }
        }
    }
예제 #30
0
    void UpdateSprite(object sender, TimeTickSystem.OnTickEventArgs e)
    {
        if (target != null)
        {
            //angle calculations on sprites assume gameobject will NOT be rotating
            Vector3 targetDir = target.transform.position - gameObject.transform.position;
            Vector3 forward   = transform.up;
            float   angle     = Vector3.SignedAngle(forward, targetDir, Vector3.forward);

            for (int i = 0; i < leftSprites.Length; i++)
            {
                if (angle <= leftSprites[i].maxAngle && angle >= leftSprites[i].minAngle)
                {
                    sprite.sprite = leftSprites[i].sprite;
                    break;
                }
                else if (angle >= rightSprites[i].maxAngle && angle <= rightSprites[i].minAngle)
                {
                    sprite.sprite = rightSprites[i].sprite;
                    break;
                }
            }
        }
    }