路面

using UnityEngine;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using System.Text;

public enum ObjectType
{
    Land,
    Obstacle,
    Corn,
    GravityCorn,
    Randomevent,
    Event,
}
//RoadMngr
public class TestNewRoad : MonoBehaviour
{
    public GameObject road_Parent;
    public GameObject monster_Parent;
    public GameObject propInGame;
    public GameObject corn_Parent;

//    private StopBoss stopBoss;

    void Awake ()
    {
        Init ();
    }

    void Init ()
    {
        GetCommponent getComponent = GetComponent<GetCommponent> ();
        road_Parent = getComponent.defaultGameObject [0];
        monster_Parent = getComponent.defaultGameObject [1];
        propInGame = getComponent.defaultGameObject [2];
        corn_Parent = getComponent.defaultGameObject [3];
    }

    void Start ()
    {
        InitCurParm ();
        sceneRandomList = new ArrayList{ 1, 2, 3, 4 };//随机场景的序号
//        stopBoss = GameObject.FindGameObjectWithTag ("StopBoss").GetComponent<StopBoss> ();
    }

    private int SumWeight;
    private List<int> WeightList;
    private List<int> TimesList;
    int randomNum;
    NewLandEntity tempNewLandEntity;
    private int levelIndex = 0;
    private int elementIndex = 0;

    void InitCurParm ()
    {

        SumWeight = 0;
        WeightList = new List<int> ();
        TimesList = new List<int> ();

        tempNewLandEntity = NewLandParseXML.GetLand (NewLandParseXML.index);
//        GLogger.LogError ("====================================================================NewLandParseXML.index: " + NewLandParseXML.index);
        TimesList.Add (tempNewLandEntity.times0);
        TimesList.Add (tempNewLandEntity.times1);
        TimesList.Add (tempNewLandEntity.times2);
        TimesList.Add (tempNewLandEntity.times3);
        TimesList.Add (tempNewLandEntity.times4);
        TimesList.Add (tempNewLandEntity.times5);
        TimesList.Add (tempNewLandEntity.times6);

        WeightList.Add (SumWeight += tempNewLandEntity.weight0);
        WeightList.Add (SumWeight += tempNewLandEntity.weight1);
        WeightList.Add (SumWeight += tempNewLandEntity.weight2);
        WeightList.Add (SumWeight += tempNewLandEntity.weight3);
        WeightList.Add (SumWeight += tempNewLandEntity.weight4);
        WeightList.Add (SumWeight += tempNewLandEntity.weight5);
        WeightList.Add (SumWeight += tempNewLandEntity.weight6);

        randomNum = (int)(Random.value * SumWeight);
        for (int i = 0; i < WeightList.Count; i++) {
            if (WeightList [i] > randomNum) {
//                GLogger.LogError ("************************************************************************===i= " + i);
                switch (NewLandParseXML.index) {
                case 0:
                    levelIndex = i;
                    elementIndex = Random.Range (1, 4);
                    break;
                case 1:
                    levelIndex = i;
                    elementIndex = Random.Range (1, 4);
                    break;
                case 2:
                    levelIndex = i;
                    elementIndex = Random.Range (1, 4);
                    break;
                case 3:
                    levelIndex = i;
                    elementIndex = Random.Range (1, 4);
                    break;
                case 4:
                    levelIndex = i;
                    elementIndex = Random.Range (1, 4);
                    break;
                case 5:
                    levelIndex = i;
                    elementIndex = Random.Range (1, 4);
                    break;
                case 6:
                    levelIndex = i;
                    elementIndex = Random.Range (1, 4);
                    break;
                case 7:
                    levelIndex = i;
                    elementIndex = Random.Range (1, 4);
                    break;
                case 8:
                    levelIndex = i;
                    elementIndex = Random.Range (1, 4);
                    break;
                case 9:
                    levelIndex = i;
                    elementIndex = Random.Range (1, 4);
                    break;
                case 10:
                    levelIndex = i;
                    elementIndex = Random.Range (1, 4);
                    break;
                case 11:
                    levelIndex = i;
                    elementIndex = Random.Range (1, 4);
                    break;

                }
                break;
            }
        }
    }
    //由于中间场景规定的Lv7_0 是中间场景,所以以后要添加7等级的关卡难度要注意!!!
    string GetLevelSplitName ()
    {
//        GLogger.LogError ("=======================================随即路面: "  + levelIndex + "_" + elementIndex);
        string str = levelIndex + "_" + elementIndex;
        return str;
    }

    private float rate = 100f;
    //    private float YOffset = 2.4f;
    private float YOffset = 3.2f;
    private float XOffset = 0;
    private float xOffsetPosition = 0f;
    //2 整体位置偏移量
    private float x = 0;
    private float y = 0;
    private float ExtraPropYOffset = 0.31f;
    private float CornYOffset = 0.35f;
    float scale = 0;
    private bool isLoadNextLand = false;
    private bool isLoadNextElement = false;
    int startLandIndex = 0;
    int startElementIndex = 0;
    bool carIsDead = false;
    float lastLandPositionX = 0f;
    float lastElementPositionX = 0f;
    float curDistance = 0;
    private float addMidSceneDisTimes = 1146;
    //已经添加的中间场景的数量
    private int addedMidSceneNum = 0;
    private bool isChangeBg = false;
    private ArrayList sceneRandomList;
    private int finalLandIndex = 0;
    private int startLandCount = 0;
    private bool isChangeScene = false;
    int midSceneDistance = 3000;
    int currentLeftLand = 0;
    int currentElementLeftLand = 0;
    private List<RandomlandElement> tempElementList;
    public bool isMidScene = false;
    private float secondYOffset = 0.8f;

    void Update ()
    {

        if (TempValue.GetInstance ().willOver) {
            curDistance = BossConfig.GetInstant ().bossCurrentDistance;
            LoadNextLand ();
            LoadNextLandElements ();
        } else {
            curDistance = UserInfos.GetInstance ().distance;
            LoadNextLand ();
            LoadNextLandElements ();
        }
            


//        if (isChangeBg) {
//            ChangeBgTexture ();
//        }
    }

    void LoadNextLand ()
    {
        //加载路面
        if (curDistance >= (lastLandPositionX - 12) && !isLoadNextLand) {
            if (carIsDead) {
                startLandIndex += 10;
                LoadLand (startLandIndex);
                carIsDead = false;
            } else {

                if (startLandIndex <= LandConfigParseXML.GetLandList (GetLevelSplitName ()).Count) {
//                        GLogger.LogError ("===================================================== 路面总长 " + LandConfigParseXML.GetLandList (GetLevelSplitName ()).Count);
                    currentLeftLand = LandConfigParseXML.GetLandList (GetLevelSplitName ()).Count - endLandIndex;
//                        GLogger.LogError ("======================================================================剩余路面 " + (currentLeftLand));
                    if (currentLeftLand >= 10) {
                        startLandIndex += 10;
                    } else {
                        startLandIndex += currentLeftLand;
                    }
                    LoadLand (startLandIndex);
                }
            }

            isLoadNextLand = true;
            CheckIsRandomNextLand ();
        } else if ((curDistance < (lastLandPositionX - 12)) && isLoadNextLand == true) {
            isLoadNextLand = false;
        }
    }

    void CheckIsRandomNextLand ()
    {
        if (IsLastLand ()) {

//            GLogger.LogError ("*******************************************************************************************lastLandPositionX:::  " + lastLandPositionX);
            float temp = lastLandPositionX / 0.382f;
            if (temp > 500 && temp <= 3000) {
                NewLandParseXML.index = 1;
            } else if (temp > 3000 && temp <= 6000) {
                NewLandParseXML.index = 2;
            } else if (temp > 6000 && temp <= 9000) {
                NewLandParseXML.index = 3;
            } else if (temp > 9000 && temp <= 12000) {
                NewLandParseXML.index = 4;
            } else if (temp > 12000 && temp <= 15000) {
                NewLandParseXML.index = 5;
            } else if (temp > 15000 && temp <= 18000) {
                NewLandParseXML.index = 6;
            } else if (temp > 18000 && temp <= 21000) {
                NewLandParseXML.index = 7;
            } else if (temp > 21000 && temp <= 24000) {
                NewLandParseXML.index = 8;
            } else if (temp > 24000 && temp <= 27000) {
                NewLandParseXML.index = 9;
            } else if (temp > 27000 && temp <= 30000) {
                NewLandParseXML.index = 10;
            } else if (temp > 30000) {
                NewLandParseXML.index = 11;
            }

            finalElementPosition = lastLandPositionX;
//            GLogger.LogError ("========================================================================================finalElementPosition=: " + finalElementPosition);
            startElementIndex = 0;
            endElementIndex = 0;
            startElementCount = 0;

            tempLandPosition = lastLandPositionX;
//            GLogger.LogError ("************************>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>tempLandPosition=: " + tempLandPosition);

            //2、判断是否需要加载中间场景
            if (temp > midSceneDistance) {
                isMidScene = true;
                //添加中间场景,lastLandPositionX、finalElementPosition保持过度场景与前后两个场景之间的悬崖距离
                lastLandPositionX += 10f;
                finalElementPosition += 10f;
                NewMidScene ();
            } else {
                startLandCount = 0;
                startLandIndex = 0;
                endLandIndex = 0;
                InitCurParm ();
                isLoadNextLand = false;
//                GLogger.LogError ("mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm " + GetLevelSplitName ());
            }
        }
    }

    int startIndex = 0;
    int tempIndex = 0;
    int lastTempIndex = 0;

    void LoadNextLandElements ()
    {
        //加载路面元素
        if (curDistance > (lastElementPositionX - 14) && !isLoadNextElement) {//finalElementPosition

            if (carIsDead) {
                startElementIndex += 10;
                LoadLandElements (startElementIndex);
                carIsDead = false;
            } else {
                tempElementList = LandConfigParseXML.GetLandElement (GetLevelSplitName ());

//                for (int i = startIndex; i < tempElementList.Count; i++) {
////                    GLogger.LogError ("lastTempIndex " + lastTempIndex + " startIndex " + startIndex + "============================================================");
//                
//                    if (tempElementList [i].x / 100 + lastElementPositionX >= curDistance + 20) {
//                    
//                    GLogger.LogError (((tempElementList [i].x / 100)+ lastElementPositionX) + " >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>lastElementPositionX " + lastElementPositionX);
//                        tempIndex = i;
//
////                        startIndex = tempIndex;
//
//                        startIndex += tempIndex;
//                        if(startIndex >=  tempElementList.Count){
//                            startIndex = tempElementList.Count;
//                        }
//
//                        GLogger.LogError ("tempIndex: " + tempIndex + " >>>>>>>>>>>>>>>>>>>>>" + " startIndex: " + startIndex + ">>**********>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>curDistance + 20 " + (curDistance + 20));
//                        break;
//                    }
//                }

//                int tempValue = tempIndex - lastTempIndex;
//                int tempValue = 9;
                lastTempIndex = tempIndex;

                if (startElementIndex < tempElementList.Count) {

//                    GLogger.LogError ("===================================================== 路面元素总长 " + tempElementList.Count);
                    currentElementLeftLand = tempElementList.Count - endElementIndex;
//                    GLogger.LogError ("======================================================================剩余路面元素 " + (currentElementLeftLand));
                    if (currentElementLeftLand > 6) {
                        startElementIndex += 6;
                    } else {
                        startElementIndex += currentElementLeftLand;
                    }
                    LoadLandElements (startElementIndex);
                }
            }

            isLoadNextElement = true;
//            if (IsLastElement ()) {
//                finalElementPosition = lastLandPositionX;
//                GLogger.LogError ("========================================================================================finalElementPosition=: " + finalElementPosition);
//                startElementIndex = 0;
//                endElementIndex = 0;
//                startElementCount = 0;
//            }
//        } else if (curDistance <= (lastElementPositionX - 15) && isLoadNextElement == true) {
        } else if (isLoadNextElement == true) {
            isLoadNextElement = false;
        }
    }

    bool IsLastLand ()
    {
        if (LandConfigParseXML.GetLandList (GetLevelSplitName ()).Count == endLandIndex) {
            return true;
        } else {
            return false;
        }
    }

    bool IsLastElement ()
    {
        if (tempElementList.Count == endElementIndex) {
            return true;
        } else {
            return false;
        }
    }

    private List<RandomlandElement> tempMidElementList;
    private List<RandomLand> tempMidLandList;

    bool NewMidScene ()
    {

        addedMidSceneNum++;
        isChangeBg = true;

        ResetCarInMidScene ();
        SetRandomBgIndex ();

        CarConfig.GetInstance ().isMidScene = true;

        int midIndex = 7;
//        int midElementIndex = Random.Range (1, 6);
        int midElementIndex = 1;
        GameObject ob = null;
        string midName = midIndex + "_" + midElementIndex;

        tempMidElementList = LandConfigParseXML.GetLandElement (midName);
        tempMidLandList = LandConfigParseXML.GetLandList (midName);

        for (int i = 0; i < tempMidLandList.Count; i++) {
            RandomLand land = new RandomLand ();
            land = tempMidLandList [i];

            switch (land.type) {
            case (int)ObjectType.Land:
                x = (land.x - XOffset) / rate - 0 + lastLandPositionX;
                y = -land.y / rate + 1.07f;
                string resourceName = land.resource;
                ob = NGUITools.AddToChild (road_Parent, ItemPool.GetInstance ().GetItem (resourceName));
                ob.transform.localPosition = new Vector3 (x, y, 5);
                break;
            }
        }
//        lastLandPositionX = ob.transform.localPosition.x;
        float cornScale = 0;
        GameObject elementOb = null;
        for (int i = 0; i < tempMidElementList.Count; i++) {
            RandomlandElement landElement = new RandomlandElement ();
            landElement = tempMidElementList [i];

            switch (landElement.type) {
            case (int)ObjectType.Corn:
                x = (landElement.x - XOffset) / rate - 8 + finalElementPosition;
                y = -landElement.y / rate + YOffset;
                elementOb = Instantiate (ResManager.Load ("Prefab/Monster/Corn/CommomCorn/" + landElement.resource)) as GameObject;
                elementOb.transform.parent = road_Parent.transform;
//                elementOb = NGUITools.AddToChild (corn_Parent, ItemPool.GetInstance ().GetItem (landElement.resource));
//                cornScale = ItemPool.GetInstance ().GetScale (landElement.resource);
                elementOb.transform.localPosition = new Vector3 (x, y + 3.4f, 10f);
//                GLogger.LogError ("*********************************8888888888888888888 " + landElement.resource + " ==== " + cornScale + " *** " + ItemPool.GetInstance ().GetItem (landElement.resource).name + " 00 " + elementOb.transform.localPosition);
//                elementOb.transform.localScale = new Vector3 (0.3f, 0.3f, 1f);

                break;

            case (int)ObjectType.GravityCorn:
                x = (landElement.x - XOffset) / rate - 8 + finalElementPosition;
                y = -landElement.y / rate + YOffset;
                elementOb = Instantiate (ResManager.Load ("Prefab/Monster/Corn/GravityCorn/" + landElement.resource)) as GameObject;
                elementOb.transform.parent = road_Parent.transform;
//                elementOb = NGUITools.AddToChild (corn_Parent, ItemPool.GetInstance ().GetItem (landElement.resource));
//                cornScale = ItemPool.GetInstance ().GetScale (landElement.resource);
                elementOb.transform.localPosition = new Vector3 (x, y + 3.4f, 10f);
//                elementOb.transform.localScale = new Vector3 (cornScale, cornScale, 1f);
                break;

            case (int)ObjectType.Randomevent:
                x = (landElement.x - XOffset) / rate - 8 + finalElementPosition;
                y = -landElement.y / rate + YOffset;

                elementOb = NGUITools.AddToChild (propInGame, ItemPool.GetInstance ().GetItem ("ExtraProp"));
                string str = RandomEventInGame.GetInstance ().GetRandomValue ();
                elementOb.GetComponent<AwardPropInGame> ().SetPropAttribute (str);
                elementOb.transform.localPosition = new Vector3 (x, y + ExtraPropYOffset, 10);
                break;

            case (int)ObjectType.Event:
                x = (landElement.x - XOffset) / rate - 8 + finalElementPosition;
                y = -landElement.y / rate + YOffset;
                elementOb = NGUITools.AddToChild (propInGame, ItemPool.GetInstance ().GetItem ("ExtraProp"));
                elementOb.GetComponent<AwardPropInGame> ().SetPropAttribute (landElement.resource);
                elementOb.transform.localPosition = new Vector3 (x, y + ExtraPropYOffset, 10);
                break;

            }
        }


        if (midSceneDistance >= 12000) {
            midSceneDistance += 2000;
        } else {
            midSceneDistance += 3000;
        }

        lastLandPositionX = ob.transform.localPosition.x + 11f;
        finalElementPosition = lastLandPositionX;
        tempLandPosition = lastLandPositionX;
        startLandCount = 0;
        startLandIndex = 0;
        endLandIndex = 0;
        InitCurParm ();
        isLoadNextLand = false;

        return true;
    }

    /// <summary>
    /// 改变游戏背景Texture Update
    /// </summary>
    //    void ChangeBgTexture ()
    //    {
    //        int temp = (int)((UserInfos.GetInstance ().distance) / (addMidSceneDisTimes + 18));
    //        if (addedMidSceneNum <= 0 || temp <= addedMidSceneNum - 1) {
    //            return;
    //        }
    //        isChangeBg = false;
    //    }

    int sceneIndex = 1;

    int SetRandomBgIndex ()
    {
        int tempId = 0;
        if ((curDistance / 0.382f) > 12000) {
            int tempIndex = Random.Range (0, sceneRandomList.Count);
            tempId = (int)sceneRandomList [tempIndex];
            sceneRandomList.RemoveAt (tempIndex);
        } else {
            tempId = (int)sceneRandomList [sceneIndex];
            sceneIndex++;
            if (sceneIndex >= 4) {
                sceneIndex = 0;
            }
        }

        if (sceneRandomList.Count <= 0) {
            sceneRandomList.Add (1);
            sceneRandomList.Add (2);
            sceneRandomList.Add (3);
            sceneRandomList.Add (4);
        }

        TempValue.GetInstance ().curLandType = tempId - 1;
        return tempId;
    }

    /// <summary>
    /// 0、暂停前一个场景的Boss
    /// 1、判断跑过中间场景的次数
    /// 2、在中间场景重新设置汽车配置
    /// 3、在中间场景,不再积蓄飞行模式
    /// </summary>
    void ResetCarInMidScene ()
    {
        TempValue.GetInstance ().isPlayBackgroundAnim = false;
        //暂停前一个场景的Boss
        GameObject.FindGameObjectWithTag ("Player").GetComponent<CarControlor> ().ChangeBossAccordingToNextLevel (false);
        CarConfig.GetInstance ().throughMidScenetimes++;//统计路过中间场景的次数
    }

    int endLandIndex = 0;
    float tempLandPosition = 0;

    void LoadLand (int landCount)
    {
        int tempEndIndex = 0;

        GameObject ob = null;
//        GLogger.LogError ("*******************************************landCount> " + landCount);
//        GLogger.LogError ("===================================================startLandCount> " + startLandCount);
        RandomLand land = new RandomLand ();
        for (int i = startLandCount; i < landCount; i++) {

            land = LandConfigParseXML.GetLandList (GetLevelSplitName ()) [i];

            switch (land.type) {
            case (int)ObjectType.Land:
                x = (land.x - XOffset) / rate - xOffsetPosition + tempLandPosition;
                y = -land.y / rate + YOffset;
                string resourceName = land.resource;

                switch (TempValue.GetInstance ().curLandType) {
                case (int)Land_type.Dusk_land:

                    ob = NGUITools.AddToChild (road_Parent, ItemPool.GetInstance ().GetItem (resourceName));
                    ob.transform.localPosition = new Vector3 (x, y, 5);
                    break;
                case (int)Land_type.Ground_land:

                    switch (resourceName) {
                    case "Dusk_land_End_1":
                        ob = NGUITools.AddToChild (road_Parent, ItemPool.GetInstance ().GetItem ("Ground_land_End_1"));
                        ob.transform.localPosition = new Vector3 (x, y, 5);
                        break;
                    case "Dusk_land_End_2":
                        ob = NGUITools.AddToChild (road_Parent, ItemPool.GetInstance ().GetItem ("Ground_land_End_2"));
                        ob.transform.localPosition = new Vector3 (x, y, 5);
                        break;
                    case "Dusk_land_Mid_1":
                        ob = NGUITools.AddToChild (road_Parent, ItemPool.GetInstance ().GetItem ("Ground_land_Mid_1"));
                        ob.transform.localPosition = new Vector3 (x, y, 5);
                        break;
                    case "Dusk_land_Mid_1_2":
                        ob = NGUITools.AddToChild (road_Parent, ItemPool.GetInstance ().GetItem ("Ground_land_Mid_1_2"));
                        ob.transform.localPosition = new Vector3 (x, y, 5);
                        break;
                    case "Dusk_land_Mid_1_3":
                        ob = NGUITools.AddToChild (road_Parent, ItemPool.GetInstance ().GetItem ("Ground_land_Mid_1_3"));
                        ob.transform.localPosition = new Vector3 (x, y, 5);
                        break;
                    case "Dusk_land_Mid_2":
                        ob = NGUITools.AddToChild (road_Parent, ItemPool.GetInstance ().GetItem ("Ground_land_Mid_2"));
                        ob.transform.localPosition = new Vector3 (x, y, 5);
                        break;
                    case "Dusk_land_Mid_2_2":
                        ob = NGUITools.AddToChild (road_Parent, ItemPool.GetInstance ().GetItem ("Ground_land_Mid_2_2"));
                        ob.transform.localPosition = new Vector3 (x, y, 5);
                        break;
                    case "Dusk_land_Mid_2_3":
                        ob = NGUITools.AddToChild (road_Parent, ItemPool.GetInstance ().GetItem ("Ground_land_Mid_2_3"));
                        ob.transform.localPosition = new Vector3 (x, y, 5);
                        break;
                    case "Dusk_land_Start_1":
                        ob = NGUITools.AddToChild (road_Parent, ItemPool.GetInstance ().GetItem ("Ground_land_Start_1"));
                        ob.transform.localPosition = new Vector3 (x, y, 5);
                        break;
                    case "Dusk_land_Start_2":
                        ob = NGUITools.AddToChild (road_Parent, ItemPool.GetInstance ().GetItem ("Ground_land_Start_2"));
                        ob.transform.localPosition = new Vector3 (x, y, 5);
                        break;
                    case "Cliff":
                        ob = NGUITools.AddToChild (road_Parent, ItemPool.GetInstance ().GetItem ("Cliff"));
                        ob.transform.localPosition = new Vector3 (x, y, 5);
                        break;
                    case "MinCliff":
                        ob = NGUITools.AddToChild (road_Parent, ItemPool.GetInstance ().GetItem ("MinCliff"));
                        ob.transform.localPosition = new Vector3 (x, y, 5);
                        break;
                    }


                    break;
                case (int)Land_type.Night_land:

                    switch (resourceName) {
                    case "Dusk_land_End_1":
                        ob = NGUITools.AddToChild (road_Parent, ItemPool.GetInstance ().GetItem ("Night_land_End_1"));
                        ob.transform.localPosition = new Vector3 (x, y, 5);
                        break;
                    case "Dusk_land_End_2":
                        ob = NGUITools.AddToChild (road_Parent, ItemPool.GetInstance ().GetItem ("Night_land_End_2"));
                        ob.transform.localPosition = new Vector3 (x, y, 5);
                        break;
                    case "Dusk_land_Mid_1":
                        ob = NGUITools.AddToChild (road_Parent, ItemPool.GetInstance ().GetItem ("Night_land_Mid_1"));
                        ob.transform.localPosition = new Vector3 (x, y, 5);
                        break;
                    case "Dusk_land_Mid_1_2":
                        ob = NGUITools.AddToChild (road_Parent, ItemPool.GetInstance ().GetItem ("Night_land_Mid_1_2"));
                        ob.transform.localPosition = new Vector3 (x, y, 5);
                        break;
                    case "Dusk_land_Mid_1_3":
                        ob = NGUITools.AddToChild (road_Parent, ItemPool.GetInstance ().GetItem ("Night_land_Mid_1_3"));
                        ob.transform.localPosition = new Vector3 (x, y, 5);
                        break;
                    case "Dusk_land_Mid_2":
                        ob = NGUITools.AddToChild (road_Parent, ItemPool.GetInstance ().GetItem ("Night_land_Mid_2"));
                        ob.transform.localPosition = new Vector3 (x, y, 5);
                        break;
                    case "Dusk_land_Mid_2_2":
                        ob = NGUITools.AddToChild (road_Parent, ItemPool.GetInstance ().GetItem ("Night_land_Mid_2_2"));
                        ob.transform.localPosition = new Vector3 (x, y, 5);
                        break;
                    case "Dusk_land_Mid_2_3":
                        ob = NGUITools.AddToChild (road_Parent, ItemPool.GetInstance ().GetItem ("Night_land_Mid_2_3"));
                        ob.transform.localPosition = new Vector3 (x, y, 5);
                        break;
                    case "Dusk_land_Start_1":
                        ob = NGUITools.AddToChild (road_Parent, ItemPool.GetInstance ().GetItem ("Night_land_Start_1"));
                        ob.transform.localPosition = new Vector3 (x, y, 5);
                        break;
                    case "Dusk_land_Start_2":
                        ob = NGUITools.AddToChild (road_Parent, ItemPool.GetInstance ().GetItem ("Night_land_Start_2"));
                        ob.transform.localPosition = new Vector3 (x, y, 5);
                        break;
                    case "Cliff":
                        ob = NGUITools.AddToChild (road_Parent, ItemPool.GetInstance ().GetItem ("Cliff"));
                        ob.transform.localPosition = new Vector3 (x, y, 5);
                        break;
                    case "MinCliff":
                        ob = NGUITools.AddToChild (road_Parent, ItemPool.GetInstance ().GetItem ("MinCliff"));
                        ob.transform.localPosition = new Vector3 (x, y, 5);
                        break;
                    }

                    break;
                case (int)Land_type.Rain_land:

                    switch (resourceName) {
                    case "Dusk_land_End_1":
                        ob = NGUITools.AddToChild (road_Parent, ItemPool.GetInstance ().GetItem ("Rain_land_End_1"));
                        ob.transform.localPosition = new Vector3 (x, y, 5);
                        break;
                    case "Dusk_land_End_2":
                        ob = NGUITools.AddToChild (road_Parent, ItemPool.GetInstance ().GetItem ("Rain_land_End_2"));
                        ob.transform.localPosition = new Vector3 (x, y, 5);
                        break;
                    case "Dusk_land_Mid_1":
                        ob = NGUITools.AddToChild (road_Parent, ItemPool.GetInstance ().GetItem ("Rain_land_Mid_1"));
                        ob.transform.localPosition = new Vector3 (x, y, 5);
                        break;
                    case "Dusk_land_Mid_1_2":
                        ob = NGUITools.AddToChild (road_Parent, ItemPool.GetInstance ().GetItem ("Rain_land_Mid_1_2"));
                        ob.transform.localPosition = new Vector3 (x, y, 5);
                        break;
                    case "Dusk_land_Mid_1_3":
                        ob = NGUITools.AddToChild (road_Parent, ItemPool.GetInstance ().GetItem ("Rain_land_Mid_1_3"));
                        ob.transform.localPosition = new Vector3 (x, y, 5);
                        break;
                    case "Dusk_land_Mid_2":
                        ob = NGUITools.AddToChild (road_Parent, ItemPool.GetInstance ().GetItem ("Rain_land_Mid_2"));
                        ob.transform.localPosition = new Vector3 (x, y, 5);
                        break;
                    case "Dusk_land_Mid_2_2":
                        ob = NGUITools.AddToChild (road_Parent, ItemPool.GetInstance ().GetItem ("Rain_land_Mid_2_2"));
                        ob.transform.localPosition = new Vector3 (x, y, 5);
                        break;
                    case "Dusk_land_Mid_2_3":
                        ob = NGUITools.AddToChild (road_Parent, ItemPool.GetInstance ().GetItem ("Rain_land_Mid_2_3"));
                        ob.transform.localPosition = new Vector3 (x, y, 5);
                        break;
                    case "Dusk_land_Start_1":
                        ob = NGUITools.AddToChild (road_Parent, ItemPool.GetInstance ().GetItem ("Rain_land_Start_1"));
                        ob.transform.localPosition = new Vector3 (x, y, 5);
                        break;
                    case "Dusk_land_Start_2":
                        ob = NGUITools.AddToChild (road_Parent, ItemPool.GetInstance ().GetItem ("Rain_land_Start_2"));
                        ob.transform.localPosition = new Vector3 (x, y, 5);
                        break;
                    case "Cliff":
                        ob = NGUITools.AddToChild (road_Parent, ItemPool.GetInstance ().GetItem ("Cliff"));
                        ob.transform.localPosition = new Vector3 (x, y, 5);
                        break;
                    case "MinCliff":
                        ob = NGUITools.AddToChild (road_Parent, ItemPool.GetInstance ().GetItem ("MinCliff"));
                        ob.transform.localPosition = new Vector3 (x, y, 5);
                        break;
                    }

                    break;
                }

                if (resourceName == "MinCliff" || resourceName == "Cliff") {
                    ob.GetComponent<SpriteRenderer> ().enabled = false;
                }

                tempEndIndex = i + 1;
                break;
            }
        }
        endLandIndex = tempEndIndex;
        startLandCount = landCount;
        lastLandPositionX = ob.transform.localPosition.x + 0;

    }

    int endElementIndex = 0;
    int startElementCount = 0;
    float finalElementPosition = 0;
    float monsterTempYOffset = 0f;

    void LoadLandElements (int landElementCount)
    {
        if (landElementCount > tempElementList.Count) {
            return;
        }

        int tempEndElementsIndex = 0;
//        GLogger.LogError (">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>landElementCount> " + landElementCount);
//        GLogger.LogError (">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>startElementCountstartElementCount > " + startElementCount);
        GameObject ob = null;
        for (int i = startElementCount; i < landElementCount; i++) {

            RandomlandElement landElement = new RandomlandElement ();
            landElement = tempElementList [i];

            switch (landElement.type) {
            case (int)ObjectType.Obstacle:
//                x = (landElement.x - XOffset) / rate - xOffsetPosition + lastElementPositionX;
                x = (landElement.x - XOffset) / rate - xOffsetPosition + finalElementPosition;
//                x = (landElement.x - XOffset) / rate - xOffsetPosition + lastLandPositionX;
                y = -landElement.y / rate + YOffset;

                switch (landElement.resource) {

                case "mouse":
                    switch (TempValue.GetInstance ().curLandType) {

                    case (int)Land_type.Dusk_land:
                        ob = NGUITools.AddToChild (monster_Parent, ItemPool.GetInstance ().GetItem ("MouseRun"));
                        scale = ItemPool.GetInstance ().GetScale ("MouseRun");
                        ob.transform.localScale = new Vector3 (scale, scale, 1);
                        ob.transform.localPosition = new Vector3 (x, y + monsterTempYOffset, 5);
                        break;
                    case (int)Land_type.Ground_land:
                        ob = NGUITools.AddToChild (monster_Parent, ItemPool.GetInstance ().GetItem ("Ground_Apple"));
                        scale = ItemPool.GetInstance ().GetScale ("Ground_Apple");
                        ob.transform.localScale = new Vector3 (scale, scale, 1);
                        ob.transform.localPosition = new Vector3 (x, y + monsterTempYOffset, 5);
                        break;
                    case (int)Land_type.Night_land:
                        ob = NGUITools.AddToChild (monster_Parent, ItemPool.GetInstance ().GetItem ("Night_Duck"));
                        scale = ItemPool.GetInstance ().GetScale ("Night_Duck");
                        ob.transform.localScale = new Vector3 (scale, scale, 1);
                        ob.transform.localPosition = new Vector3 (x, y + monsterTempYOffset, 5);
                        break;
                    case (int)Land_type.Rain_land:
                        ob = NGUITools.AddToChild (monster_Parent, ItemPool.GetInstance ().GetItem ("Rain_Frog_Jump"));
                        scale = ItemPool.GetInstance ().GetScale ("Rain_Frog_Jump");
                        ob.transform.localScale = new Vector3 (scale, scale, 1);
                        ob.transform.localPosition = new Vector3 (x, y + monsterTempYOffset, 5);
                        break;

                    }
                    break;

                case "stone":
                    switch (TempValue.GetInstance ().curLandType) {

                    case (int)Land_type.Dusk_land:
                        ob = NGUITools.AddToChild (monster_Parent, ItemPool.GetInstance ().GetItem ("Stone1"));
                        scale = ItemPool.GetInstance ().GetScale ("Stone1");
                        ob.transform.localScale = new Vector3 (scale, scale, 1);
                        ob.transform.localPosition = new Vector3 (x, y + monsterTempYOffset, 5);
                        break;
                    case (int)Land_type.Ground_land:
                        ob = NGUITools.AddToChild (monster_Parent, ItemPool.GetInstance ().GetItem ("Ground_Bone"));
                        scale = ItemPool.GetInstance ().GetScale ("Ground_Bone");
                        ob.transform.localScale = new Vector3 (scale, scale, 1);
                        ob.transform.localPosition = new Vector3 (x, y + monsterTempYOffset, 5);
                        break;
                    case (int)Land_type.Night_land:
                        ob = NGUITools.AddToChild (monster_Parent, ItemPool.GetInstance ().GetItem ("Night_Grass"));
                        scale = ItemPool.GetInstance ().GetScale ("Night_Grass");
                        ob.transform.localScale = new Vector3 (scale, scale, 1);
                        ob.transform.localPosition = new Vector3 (x, y + monsterTempYOffset, 5);
                        break;
                    case (int)Land_type.Rain_land:
                        ob = NGUITools.AddToChild (monster_Parent, ItemPool.GetInstance ().GetItem ("Rain_Puddles_Wave"));
                        scale = ItemPool.GetInstance ().GetScale ("Rain_Puddles_Wave");
                        ob.transform.localScale = new Vector3 (scale, scale, 1);
                        ob.transform.localPosition = new Vector3 (x, y + monsterTempYOffset, 5);
                        break;
                    }
                    break;

                case "sunflower":
                    switch (TempValue.GetInstance ().curLandType) {

                    case (int)Land_type.Dusk_land:
                        ob = NGUITools.AddToChild (monster_Parent, ItemPool.GetInstance ().GetItem ("SunflowerRun"));
                        scale = ItemPool.GetInstance ().GetScale ("SunflowerRun");
                        ob.transform.localScale = new Vector3 (scale, scale, 1);
                        ob.transform.localPosition = new Vector3 (x, y + monsterTempYOffset, 5);
                        break;
                    case (int)Land_type.Ground_land:
                        ob = NGUITools.AddToChild (monster_Parent, ItemPool.GetInstance ().GetItem ("Ground_Pumpkin"));
                        scale = ItemPool.GetInstance ().GetScale ("Ground_Pumpkin");
                        ob.transform.localScale = new Vector3 (scale, scale, 1);
                        ob.transform.localPosition = new Vector3 (x, y + monsterTempYOffset, 5);
                        break;
                    case (int)Land_type.Night_land:
                        ob = NGUITools.AddToChild (monster_Parent, ItemPool.GetInstance ().GetItem ("Night_Cactus"));
                        scale = ItemPool.GetInstance ().GetScale ("Night_Cactus");
                        ob.transform.localScale = new Vector3 (scale, scale, 1);
                        ob.transform.localPosition = new Vector3 (x, y + monsterTempYOffset, 5);
                        break;
                    case (int)Land_type.Rain_land:
                        ob = NGUITools.AddToChild (monster_Parent, ItemPool.GetInstance ().GetItem ("Rain_Wind_Sway"));
                        scale = ItemPool.GetInstance ().GetScale ("Rain_Wind_Sway");
                        ob.transform.localScale = new Vector3 (scale, scale, 1);
                        ob.transform.localPosition = new Vector3 (x, y + monsterTempYOffset, 5);
                        break;
                    }
                    break;
                }

                break;

            case (int)ObjectType.Corn:
                x = (landElement.x - XOffset) / rate - xOffsetPosition + finalElementPosition;
                y = -landElement.y / rate + YOffset;
                ob = Instantiate (ResManager.Load ("Prefab/Monster/Corn/CommomCorn/" + landElement.resource)) as GameObject;
                ob.transform.parent = road_Parent.transform;
                ob.transform.localPosition = new Vector3 (x, y + CornYOffset, 10);


//                ob = NGUITools.AddToChild (corn_Parent, ItemPool.GetInstance ().GetItem (landElement.resource));
////                cornScale = ItemPool.GetInstance ().GetScale (landElement.resource);
//                ob.transform.localPosition = new Vector3 (x, y + CornYOffset, 10);
//                ob.transform.localScale = new Vector3 (0.3f, 0.3f, 1f);

                break;

            case (int)ObjectType.GravityCorn:
                x = (landElement.x - XOffset) / rate - xOffsetPosition + finalElementPosition;
                y = -landElement.y / rate + YOffset;
                ob = Instantiate (ResManager.Load ("Prefab/Monster/Corn/GravityCorn/" + landElement.resource)) as GameObject;
                ob.transform.parent = road_Parent.transform;
                ob.transform.localPosition = new Vector3 (x, y + CornYOffset, 10);

//                ob = NGUITools.AddToChild (corn_Parent, ItemPool.GetInstance ().GetItem (landElement.resource));
//                //                cornScale = ItemPool.GetInstance ().GetScale (landElement.resource);
//                ob.transform.localPosition = new Vector3 (x, y + CornYOffset, 10);
//                ob.transform.localScale = new Vector3 (0.3f, 0.3f, 1f);
                break;

            case (int)ObjectType.Randomevent:
                x = (landElement.x - XOffset) / rate - xOffsetPosition + finalElementPosition;
                y = -landElement.y / rate + YOffset;

                ob = NGUITools.AddToChild (propInGame, ItemPool.GetInstance ().GetItem ("ExtraProp"));

                //                ob = Instantiate (ResManager.Load ("Prefab/ExtraProp/ExtraProp")) as GameObject;
                string str = RandomEventInGame.GetInstance ().GetRandomValue ();
                ob.GetComponent<AwardPropInGame> ().SetPropAttribute (str);
                //                ob.transform.parent = road_Parent.transform;
                ob.transform.localPosition = new Vector3 (x, y + ExtraPropYOffset, 10);
                break;

            case (int)ObjectType.Event:
                x = (landElement.x - XOffset) / rate - xOffsetPosition + finalElementPosition;
                y = -landElement.y / rate + YOffset;
                ob = NGUITools.AddToChild (propInGame, ItemPool.GetInstance ().GetItem ("ExtraProp"));
                //                ob = Instantiate (ResManager.Load ("Prefab/ExtraProp/ExtraProp")) as GameObject;
                ob.GetComponent<AwardPropInGame> ().SetPropAttribute (landElement.resource);
                //                ob.transform.parent = road_Parent.transform;
                ob.transform.localPosition = new Vector3 (x, y + ExtraPropYOffset, 10);
                break;
            }
            tempEndElementsIndex = i + 1;
        }
        endElementIndex = tempEndElementsIndex;
        startElementCount = landElementCount;
        lastElementPositionX = ob.transform.localPosition.x;
//        finalElementPosition = ob.transform.localPosition.x;
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值