Example #1
0
    void pushNewEnemy(Const.GameItemID id)
    {
        Transform tmp;

        if (id == Const.GameItemID.Creeper)
        {
            tmp = Instantiate(creeperProto);
        }
        else
        {
            tmp = Instantiate(slimeProto);
        }
        Vector3 rnd;

        do
        {
            rnd = Ground.getRandomVector(Const.mapOrigin + Const.mapSize, Const.mapOrigin);
            rnd = Ground.getPointOnGround(rnd);
        } while (calDistanceWithMainActor(rnd) < Const.appearRadius);
        tmp.position = rnd;
        tmp.parent   = transform;
        tmp.name     = id.ToString();
        tmp.GetComponent <LiveManager>().reset(id);
        Enemies.Add(tmp);
    }
Example #2
0
 public static bool isItem(Const.GameItemID id)
 {
     if (id == Const.GameItemID.Dirt ||
         id == Const.GameItemID.DirtGrass ||
         id == Const.GameItemID.Stone)
     {
         return(true);
     }
     return(false);
 }
Example #3
0
    public void instantiateItem(Const.GameItemID id, Vector3 position)
    {
        Material   m1 = (Material)Resources.Load(ItemMap.getTextureName(id));
        GameObject g  = Instantiate(dirt);

        g.transform.parent   = transform;
        g.transform.position = position;
        g.name = id.ToString();
        g.GetComponent <Renderer>().material = m1;
    }
Example #4
0
 public static Creature getCreatureInfo(Const.GameItemID id)
 {
     if (id == Const.GameItemID.Creeper)
     {
         return(Const.Creeper);
     }
     if (id == Const.GameItemID.Slime)
     {
         return(Const.Slime);
     }
     return(Const.Creeper);
 }
Example #5
0
    public bool deleteItemById(Const.GameItemID itemname)
    {
        int index = -1;

        for (int i = 0; i < numToolbox; i++)
        {
            if (toolbox[i] == itemname)
            {
                index = i;
            }
        }
        return(delete(index));
    }
Example #6
0
 public int isAlive(Const.GameItemID newId, int newInstanceId, float attack = 1)
 {
     //Debug.Log(itemId.ToString() + " = " + live.ToString());
     if (newInstanceId != instanceId)
     {
         instanceId = newInstanceId;
         itemId     = newId;
         relive();
         //return -1;
     }
     else
     {
         live -= attack;
     }
     return(Mathf.CeilToInt(10f * live / ItemMap.getLive(newId)));
 }
Example #7
0
    public bool pushItem(Const.GameItemID itemname)
    {
        if (itemname == Const.GameItemID.DirtGrass)
        {
            itemname = Const.GameItemID.Dirt;
        }
        int index = -1;

        for (int i = 0; i < numToolbox; i++)
        {
            if (toolbox[i] == itemname)
            {
                index = i;
            }
        }
        if (index == -1)   //Get a new column to store new tool
        {
            index = getEmptyIndex();
            if (index != -1)
            {
                toolbox[index] = itemname;
                //Sprite texture = (Sprite)Resources.Load(ItemMap.getTextureName(itemname));
                //toolImages[index].overrideSprite = texture;
                //toolImages[index].GetComponent<Renderer>().material.mainTexture = Resources.Load<Texture>("sprite/" + ItemMap.getTextureName(itemname));
                toolImages[index].GetComponent <Image>().overrideSprite = Resources.Load <Sprite>("sprite/" + ItemMap.getTextureName(itemname));
            }
            else
            {
                Debug.Log("Error! Toolbox is full!");
                return(false);
            }
        }
        toolCount[index]++;
        selectedIndex = index;
        updateToolbox();
        return(true);
    }
Example #8
0
    public void instantiateItem(Const.GameItemID id, WallType type, Vector3 position)
    {
        //Material m1 = (Material)Resources.Load(ItemMap.getTextureName(id));
        GameObject g;

        if (type == WallType.Center)
        {
            g = Instantiate(mazeProto);
        }
        else if (type == WallType.Right)
        {
            g = Instantiate(mazeRightProto);
        }
        else
        {
            g = Instantiate(mazeLeftProto);
        }
        g.transform.parent        = transform;
        position                  = position * Const.coordScale + Const.mapOrigin;
        position.y                = Const.WallSize.y / 2;
        g.transform.localPosition = position;
        g.name = id.ToString();
        //g.GetComponent<Renderer>().material = m1;
    }
Example #9
0
 public Const.GameItemID deleteSeletedItem()
 {
     Const.GameItemID tmp = getSeletedItem();
     delete(selectedIndex);
     return(tmp);
 }
Example #10
0
 void Update()
 {
     if (LightControllor.isNight())
     {
         float enemyRatial = Random.Range(0f, 1f);
         if (Enemies.Count < Const.numEnemy && Random.Range(0, 1f) > 0.7f)
         {
             pushNewEnemy(getEnemyIdByRatial(enemyRatial));
         }
         for (int i = 0; i < Enemies.Count; i++)
         {
             // Auto move toward main actor
             float            enemyDis     = calDistanceWithMainActor(Enemies[i]);
             Const.GameItemID monsterId    = ItemMap.getItemsID(Enemies[i].name);
             Creature         creatureInfo = ItemMap.getCreatureInfo(monsterId);
             if (enemyDis < creatureInfo.attackDistance)
             {
                 if (!clickEvent.modestate)
                 {
                     mainActor.GetComponent <LiveManager>().attack(creatureInfo.attackPower);
                 }
                 if (monsterId == Const.GameItemID.Slime)
                 {
                     BoxCollider col  = Enemies[i].GetComponent <BoxCollider>();
                     SlimeWeapon weap = Enemies[i].GetComponent <SlimeWeapon>();
                     Rigidbody   rig  = Enemies[i].GetComponent <Rigidbody>();
                     Enemies[i].transform.localScale = new Vector3(7, 7, 7);
                     col.isTrigger  = true;
                     weap.triggered = true;
                     rig.useGravity = false;
                 }
             }
             else if (enemyDis < creatureInfo.trackDistance)
             {
                 Enemies[i].GetComponent <AutoMove>().setTarget(mainActor.transform.position);
             }
             // Play audio
             AudioSource audio = Enemies[i].GetComponent <AudioSource>();
             if (enemyDis < creatureInfo.audioDistance)
             {
                 if (!audio.isPlaying)
                 {
                     audio.Play(0);
                 }
                 audio.volume = 1 - enemyDis / creatureInfo.audioDistance;
             }
             else
             {
                 audio.Pause();
             }
             // Destroy the creature if they died
             LiveManager monster = Enemies[i].GetComponent <LiveManager>();
             if (monster.live <= 0)
             {
                 Destroy(Enemies[i].gameObject);
                 Enemies.RemoveAt(i);
             }
         }
     }
     else if (Random.Range(0f, 1f) > 0.7)
     {
         int lastIndex = Enemies.Count;
         if (lastIndex > 0)
         {
             Destroy(Enemies[lastIndex - 1].gameObject);
             Enemies.RemoveAt(lastIndex - 1);
         }
     }
 }
Example #11
0
    // Update is called once per frame
    void Update()
    {
        anime.SetFloat("speed", 0f);
        // Move
        #region Move
        if (Input.GetKey(KeyCode.W))
        {
            transform.localPosition += Const.moveSpeed * Time.deltaTime * transform.forward;
        }
        else if (Input.GetKey(KeyCode.S))
        {
            transform.localPosition += -1 * Const.moveSpeed * Time.deltaTime * transform.forward;
        }
        if (Input.GetKey(KeyCode.D))
        {
            transform.localPosition += Const.moveSpeed * Time.deltaTime * transform.right;
        }
        else if (Input.GetKey(KeyCode.A))
        {
            transform.localPosition += -1 * Const.moveSpeed * Time.deltaTime * transform.right;
        }
        anime.SetFloat("speed", rb.velocity.magnitude);
        if (transform.position.y < Const.mapOrigin.y)
        {
            transform.position = Ground.getPointOnGround(new Vector3(Const.mapSize.x / 2, 0, Const.mapSize.z / 2));
        }
        #endregion
        // Jump
        #region Jump
        if (Input.GetKey(KeyCode.Space))
        {
            if (clickEvent.modestate && Time.time - lastSpaceReleaseTime < 1)
            {
                Debug.Log("mode changed" + spaceMode.ToString());
                if (spaceMode == SpaceMode.Jump)
                {
                    spaceMode = SpaceMode.Flying;
                    transform.GetComponent <Rigidbody>().useGravity = false;
                }
                else if (spaceMode == SpaceMode.Flying)
                {
                    spaceMode = SpaceMode.Jump;
                    transform.GetComponent <Rigidbody>().useGravity = true;
                }
            }
            if (spaceMode == SpaceMode.Jump)
            {
                if (!is_jumping && Time.time - lastJumpTime > 0.5)
                {
                    //rb.AddForce(jumpForce * Time.deltaTime * Vector3.up, ForceMode.Impulse);
                    is_jumping   = true;
                    lastJumpTime = Time.time;
                    rb.AddForce(new Vector3(0, 7, 0), ForceMode.Impulse);
                    //transform.localPosition += jumpForce * Time.deltaTime * Vector3.up;
                }
            }
            else if (spaceMode == SpaceMode.Flying)
            {
                transform.localPosition += Const.moveSpeed * Time.deltaTime * transform.up;
            }
        }
        else
        {
            lastSpaceReleaseTime = Time.time;
        }

        if (Input.GetKey(KeyCode.LeftShift) && spaceMode == SpaceMode.Flying)
        {
            transform.localPosition -= Const.moveSpeed * Time.deltaTime * transform.up;
        }
        #endregion
        // Rotate
        #region Rotate
        Vector3 dis = Input.mousePosition - mouseInitial;
        transform.localEulerAngles = new Vector3(0, Const.rotateSpeed * dis.x, 0);
        Transform cam    = transform.Find("Main Camera");
        float     rotate = Mathf.Abs(-1 * Const.updownSpeed * dis.y) > 90 ? (dis.y > 0 ? -90 : 90) : -1 * Const.updownSpeed * dis.y;
        cam.transform.localEulerAngles = new Vector3(rotate, 0, 0);
        #endregion
        // Click
        #region MouseClick
        if (Input.GetMouseButton(0))
        {
            //Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
            Ray        ray = Camera.main.ScreenPointToRay(new Vector3(Screen.width / 2, Screen.height / 2));
            RaycastHit rch;
            if (Physics.Raycast(ray, out rch))
            {
                Const.GameItemID hitId = ItemMap.getItemsID(rch.transform.gameObject.name);
                //Debug.Log("Hit= "+ hitId.ToString());
                int instanceId = rch.transform.gameObject.GetInstanceID();
                // Cube
                if (ItemMap.isItem(hitId))
                {
                    if (!audio.isPlaying)
                    {
                        audio.Play(0);
                    }
                    int destroyLevel = live.isAlive(hitId, instanceId, Const.attackPower * Time.deltaTime);

                    /*if(destroyLevel == -1) {
                     *  Material breakM1 = (Material)Resources.Load(ItemMap.getTextureName(hitId));
                     *  preTran.GetComponent<Renderer>().material = breakM1;
                     * }*/
                    if (destroyLevel <= 0)
                    {
                        toolbox.pushItem(hitId);
                        Destroy(rch.transform.gameObject);
                    }
                    else
                    {
                        string     name    = "destroy/Materials/destroy_stage_" + (9 - destroyLevel);
                        Material[] breakM1 = new Material[2];
                        breakM1[0] = (Material)Resources.Load(ItemMap.getTextureName(hitId));
                        breakM1[1] = (Material)Resources.Load(name);
                        rch.transform.GetComponent <Renderer>().materials = breakM1;
                    }
                    //preTran = rch.transform;
                }
                // Creature
                else
                {
                    rch.transform.GetComponent <LiveManager>().attack(Const.attackPower);// * Time.deltaTime);
                    rch.transform.GetComponent <Rigidbody>().AddForce(ray.direction.normalized * 2000);
                }
            }
        }
        if (Input.GetMouseButton(1))
        {
            if (toolbox.isSelected() && Time.time - lastClickTime > 0.5)
            {
                Ray        ray = Camera.main.ScreenPointToRay(new Vector3(Screen.width / 2, Screen.height / 2));
                RaycastHit rch;
                if (Physics.Raycast(ray, out rch))
                {
                    Vector3 target = rch.point + rch.normal / 2;
                    target.x = Mathf.Round(target.x);
                    target.y = Mathf.Round(target.y);
                    target.z = Mathf.Round(target.z);
                    ground.instantiateItem(toolbox.deleteSeletedItem(), target);
                }
                lastClickTime = Time.time;
            }
        }
        #endregion
    }
Example #12
0
 public void reset(Const.GameItemID newId)
 {
     itemId = newId;
     live   = ItemMap.getLive(itemId);
 }
Example #13
0
 public ItemCtrl(Const.GameItemID newId, int newInstanceId = 0)
 {
     base.reset(newId);
 }
Example #14
0
 public static string getTextureName(Const.GameItemID id)
 {
     return(textureMap[(int)id]);
 }
Example #15
0
 public static int getLive(Const.GameItemID id)
 {
     return(liveMap[(int)id]);
 }