Пример #1
0
    public void GetHit(DHitParam hit)
    {
        GameObject flyingtext = DGameSystem.LoadPool("TextDame", transform.position + new Vector3(0, 0.5f));

        flyingtext.GetComponent <TextMeshPro>().text = Convert.ToInt32(hit.dame).ToString();

        current.hp -= hit.dame;
        UpdateHealthBar();

        if (current.hp <= 0)
        {
            DGameSystem.LoadPool("Ghost", transform.position);
            gameObject.SetActive(false);
        }
    }
Пример #2
0
    //public void Attack()
    //{
    //    Quaternion quaternion = Quaternion.Euler(0, 0, 0);
    //    switch (GetComponent<DMovement>().Facing)
    //    {
    //        case "up":
    //            quaternion = Quaternion.Euler(0, 0, 90);
    //            break;
    //        case "down":
    //            quaternion = Quaternion.Euler(0, 0, 270);
    //            break;
    //        case "left":
    //            quaternion = Quaternion.Euler(0, 0, 180);
    //            break;
    //        case "right":
    //            quaternion = Quaternion.Euler(0, 0, 0);
    //            break;
    //        default:
    //            quaternion = Quaternion.Euler(0, 0, 0);
    //            break;
    //    }

    //    GameObject attack = DGameSystem.LoadPool("Attack", transform.position);
    //    attack.transform.rotation = quaternion;
    //    DHitParam hitParam = attack.GetComponent<DHitParam>();

    //    hitParam.dame = current.dame;
    //    hitParam.owner = this.gameObject;
    //    hitParam.ownerTag = this.gameObject.tag;
    //    hitParam.type1 = stat.type1;
    //    hitParam.type2 = stat.type2;

    //    if (gameObject.tag == "Player")
    //    {
    //        string facing = GetComponent<DMovement>().Facing;
    //        Sprite[] attacks = GetComponent<DMovement>().ConvertStringToSprites("attack_" + facing);
    //        GetComponent<DAnimator>().spritesheet = attacks;
    //        //GetComponent<DAnimator>().attacking = true;
    //    }
    //}

    public void ExecuteAttack()
    {
        GameObject attackObj = DGameSystem.LoadPool(stat.attackObjectName, transform.position);

        attackObj.transform.rotation = Quaternion.Euler(0, 0, 0);
        DHitParam hitParam = new DHitParam();

        hitParam.dame     = current.dame;
        hitParam.owner    = gameObject;
        hitParam.ownerTag = gameObject.tag;
        hitParam.type1    = stat.type1;
        hitParam.type2    = stat.type2;

        if (gameObject.CompareTag("Pet"))
        {
            hitParam.targetTags = new List <string> {
                "Monster"
            }
        }
        ;
        else
        {
            hitParam.targetTags = new List <string> {
                "Pet"
            }
        };

        if (gameObject.tag == "Player")
        {
            hitParam.direction = GetComponent <DMovement>().Facing;
        }
        else
        {
            hitParam.target    = GetComponent <DFollow>().enemy;
            hitParam.direction = GetComponent <DFollow>().direction;
            if (hitParam.direction == "left")
            {
                attackObj.transform.rotation = Quaternion.Euler(0, 0, 180);
            }
            else
            {
                attackObj.transform.rotation = Quaternion.Euler(0, 0, 0);
            }
        }

        attackObj.SendMessage("ReceiveParam", hitParam, SendMessageOptions.DontRequireReceiver);
    }
}
Пример #3
0
    void Update()
    {
        if (state != "large")
        {
            countdown -= Time.deltaTime;
            if (countdown < 0)
            {
                countdown = Random.Range(plant.growTime - RANDOM_RANGE, plant.growTime + RANDOM_RANGE);
                state     = changeToNextState(state);
            }
        }
        else
        {
            if (!spawnedCoin)
            {
                countdownCoin -= Time.deltaTime;
                if (countdownCoin < 0)
                {
                    spawnedCoin   = true;
                    countdownCoin = Random.Range(plant.coinSpawn - RANDOM_RANGE, plant.coinSpawn + RANDOM_RANGE);
                    Vector3 position = transform.position;
                    position = new Vector3(Random.Range(position.x - RANDOM_COIN_DISTANCE, position.x + RANDOM_COIN_DISTANCE), Random.Range(position.y - RANDOM_COIN_DISTANCE, position.y + RANDOM_COIN_DISTANCE), 0);
                    GameObject coin = DGameSystem.LoadPool("Coin", position);
                    coin.GetComponent <DCoin>().value = plant.coinValue;
                    coin.GetComponent <DCoin>().owner = gameObject;
                    coin.transform.localScale         = new Vector3(plant.coinSize, plant.coinSize);
                }
            }
        }

        if (state == "ground")
        {
            anim.spritesheet = plant.ground;
        }
        if (state == "small")
        {
            anim.spritesheet = plant.small;
        }
        if (state == "medium")
        {
            anim.spritesheet = plant.medium;
        }
        if (state == "large")
        {
            anim.spritesheet = plant.large;
        }
    }
Пример #4
0
    void Start()
    {
        DStat stat = DGameSystem.LoadStat(npcSpriteSheetName);

        if (GetComponent <DMovement>() != null)
        {
            GetComponent <DMovement>().data = stat;
        }
        if (GetComponent <DBattle>() != null)
        {
            GetComponent <DBattle>().stat = stat;
        }
        if (GetComponent <DFollow>() != null)
        {
            GetComponent <DFollow>().data = stat;
        }
    }
Пример #5
0
    public void GetHit(DHitParam hit)
    {
        float calculatedDame = DGameSystem.pokemonSystem.CalculateReceiveDame(hit, stat);

        GameObject flyingtext = DGameSystem.LoadPool("TextDame", transform.position);

        flyingtext.GetComponent <TextMeshPro>().text = Convert.ToInt32(calculatedDame).ToString();

        current.hp -= calculatedDame;
        UpdateHealthBar();

        if (current.hp <= 0)
        {
            DGameSystem.LoadPool("Ghost", transform.position);
            gameObject.SetActive(false);
        }

        Debug.Log(gameObject.name + " get hit from " + hit.owner.name);
    }
Пример #6
0
    public void Attack()
    {
        Quaternion quaternion = Quaternion.Euler(0, 0, 0);

        switch (GetComponent <DMovement>().Facing)
        {
        case "up":
            quaternion = Quaternion.Euler(0, 0, 90);
            break;

        case "down":
            quaternion = Quaternion.Euler(0, 0, 270);
            break;

        case "left":
            quaternion = Quaternion.Euler(0, 0, 180);
            break;

        case "right":
            quaternion = Quaternion.Euler(0, 0, 0);
            break;

        default:
            quaternion = Quaternion.Euler(0, 0, 0);
            break;
        }

        GameObject attack = DGameSystem.LoadPool("Attack", transform.position);

        attack.transform.rotation = quaternion;
        attack.GetComponent <DHitParam>().dame     = current.dame;
        attack.GetComponent <DHitParam>().owner    = this.gameObject;
        attack.GetComponent <DHitParam>().ownerTag = this.gameObject.tag;

        if (gameObject.tag == "Player")
        {
            string   facing  = GetComponent <DMovement>().Facing;
            Sprite[] attacks = GetComponent <DMovement>().ConvertStringToSprites("attack_" + facing);
            GetComponent <DAnimator>().spritesheet = attacks;
            //GetComponent<DAnimator>().attacking = true;
        }
    }
Пример #7
0
    public void ExecuteAttack()
    {
        GameObject attackObj = DGameSystem.LoadPool(stat.attackObjectName, transform.position);

        attackObj.transform.rotation = Quaternion.Euler(0, 0, 0);
        DHitParam hitParam = new DHitParam();

        hitParam.dame     = current.dame;
        hitParam.owner    = gameObject;
        hitParam.ownerTag = gameObject.tag;

        if (gameObject.tag == "Player")
        {
            hitParam.direction = GetComponent <DMovement>().Facing;
        }
        else
        {
            hitParam.target    = GetComponent <DFollow>().enemy;
            hitParam.direction = GetComponent <DFollow>().direction;
        }

        attackObj.SendMessage("ReceiveParam", hitParam, SendMessageOptions.DontRequireReceiver);
    }
    public IEnumerator WildPokemonAppear()
    {
        rb2d.velocity = Vector2.zero;
        GetComponent <DControlByJoystick>().enabled = false;

        GameObject effect = DGameSystem.LoadPool("BlackScreenEffect", transform.position);

        effect.transform.SetParent(DGameSystem.cameraMain.transform);

        yield return(new WaitForSeconds(2));

        //DGameSystem.SwitchControlToPokemon();

        DGameSystem.pokemonControl.SetActive(true);
        DGameSystem.cameraScript.MoveTo(DGameSystem.pokemonEnemy.transform);
        DGameSystem.cameraScript.target = DGameSystem.pokemonEnemy;

        DScriptDialog dialog = new DScriptDialog();

        dialog.sentences = new List <string> {
            "A wild pokemon appeared!"
        };
        DGamePauser.StartScripts(new DScriptDialog[] { dialog });

        yield return(new WaitForSeconds(2));

        dialog           = new DScriptDialog();
        dialog.sentences = new List <string> {
            "Go my pokemon!"
        };
        DGamePauser.StartScripts(new DScriptDialog[] { dialog });

        DGameSystem.cameraScript.target = DGameSystem.pokemonControl;
        yield return(new WaitForSeconds(1));

        DGamePauser.state = DGamePauser.STATE.FREE;
    }
Пример #9
0
 public void Buy()
 {
     if (currentSelect == -1)
     {
         return;
     }
     if (items[currentSelect] == null)
     {
         return;
     }
     if (DGameSystem.money < items[currentSelect].priceGold)
     {
         Debug.Log("Not enough money!");
     }
     else if (DGameSystem.inventory.CheckItemSlot(items[currentSelect]) == false)
     {
         Debug.Log("Have no more inventory slot!");
     }
     else
     {
         DGameSystem.SpendMoney(items[currentSelect].priceGold);
         DGameSystem.inventory.Add(items[currentSelect]);
     }
 }
Пример #10
0
 public override void Interact()
 {
     DGameSystem.SwitchControlToPlayer();
 }
Пример #11
0
    void UpdatePool()
    {
        if (DGameSystem.player == null)
        {
            return;
        }

        List <int> seen   = new List <int>();
        List <int> unseen = new List <int>();

        for (int i = 0; i < mapObjects.Count; i++)
        {
            if (Vector3.Distance(mapObjects[i].position, DGameSystem.player.transform.position) < SEEN_RANGE)
            {
                seen.Add(i);
            }
            else
            {
                unseen.Add(i);
            }
        }

        // Scan poolIndexs để biết được object nào seen, object nào unseen
        for (int i = 0; i < poolIndexs.Count; i++)
        {
            if (seen.Contains(poolIndexs[i]))
            {
                poolSeens[i] = "seen";
            }
            else
            {
                poolSeens[i] = "unseen";
            }
        }

        for (int i = 0; i < seen.Count; i++)
        {
            // Nếu poolIndexs không chứa seen[i] (xuất hiện mới), tìm trong unseen object có name tương tự
            // để change vị trí cho vật xuất hiện mới
            // Trường hợp không tìm thấy thì tạo object mới và thêm vào pool
            if (!poolIndexs.Contains(seen[i]))
            {
                int  index = seen[i];
                bool found = false;
                for (int j = 0; j < poolSeens.Count; j++)
                {
                    if (poolSeens[j] == "unseen" && pools[j].objectName == mapObjects[index].objectName)
                    {
                        pools[j].gameObject.transform.position = mapObjects[index].position;
                        poolSeens[j]  = "seen";
                        poolIndexs[j] = index;
                        found         = true;
                        break;
                    }
                }

                if (!found)
                {
                    GameObject obj    = DGameSystem.LoadPool(mapObjects[index].objectName, mapObjects[index].position);
                    MapObject  mapObj = mapObjects[index];
                    mapObj.gameObject = obj;
                    pools.Add(mapObj);
                    poolIndexs.Add(index);
                    poolSeens.Add("seen");
                }
            }
        }
    }
Пример #12
0
    private void Update()
    {
        if (owner == null)
        {
            enemyTag = "Player";
        }
        else
        {
            enemyTag = "Monster";
        }

        if (enemy != null)
        {
            if (Vector3.Distance(transform.position, enemy.transform.position) < visionRange)
            {
                state = STATE.ATTACK;
            }
            else
            {
                enemy = FindEnemy(enemyTag);
                if (enemy != null)
                {
                    state = STATE.ATTACK;
                }
                else
                {
                    state = STATE.FREE;
                }
            }
        }
        else
        {
            enemy = FindEnemy(enemyTag);
            if (enemy != null)
            {
                state = STATE.ATTACK;
            }
            else
            {
                state = STATE.FREE;
            }
        }

        if (state == STATE.ATTACK)
        {
            GetComponent <DMovementExecutor>().enabled = false;
            GetComponent <DMovement>().enabled         = false;

            if (Vector3.Distance(transform.position, enemy.transform.position) < stat.attackRange)
            {
                GetComponent <DAnimator>().spritesheet = getSprite("attack", enemy);
                GetComponent <Rigidbody2D>().velocity  = Vector3.zero;

                attackCount -= Time.deltaTime;
                if (attackCount < 0)
                {
                    attackCount = stat.attackCountDown;
                    GetComponent <DBattle>().ApplyDame(enemy);
                }
            }
            else
            {
                GetComponent <DAnimator>().spritesheet = getSprite("run", enemy);
                GetComponent <Rigidbody2D>().velocity  = DGameSystem.GoToTargetVector(transform.position, enemy.transform.position, stat.speed * 1.5f);
            }
        }
        else // STATE == FREE
        {
            if (owner != null)
            {
                GetComponent <DAnimator>().spritesheet = getSprite("go", owner);
                GetComponent <Rigidbody2D>().velocity  = DGameSystem.GoToTargetVector(transform.position, enemy.transform.position, stat.speed);
            }
            else
            {
                GetComponent <DMovementExecutor>().enabled = true;
                GetComponent <DMovement>().enabled         = true;
            }
        }
    }