コード例 #1
0
    /// <summary>
    /// 获取最近的楼梯
    /// </summary>
    /// <param name="position"></param>
    /// <returns></returns>
    public BuildStairsCpt GetCloseStairs(Vector3 position)
    {
        if (CheckUtil.ListIsNull(listStairsCpt))
        {
            return(null);
        }
        float          tempDistance = float.MaxValue;
        BuildStairsCpt closeStairs  = null;

        for (int i = 0; i < listStairsCpt.Count; i++)
        {
            BuildStairsCpt buildStairs = listStairsCpt[i];
            //如果不能到达则不用
            if (!CheckUtil.CheckPath(position, buildStairs.GetStairsPosition()))
            {
                continue;
            }
            float itemDistance = Vector3.Distance(position, buildStairs.GetStairsPosition());
            if (tempDistance > itemDistance)
            {
                closeStairs  = buildStairs;
                tempDistance = itemDistance;
            }
        }
        return(closeStairs);
    }
コード例 #2
0
    /// <summary>
    /// 意图-前往二楼
    /// </summary>
    public void SetIntentForGoToStairsForFirst()
    {
        BuildStairsCpt buildStairs = InnHandler.Instance.GetCloseStairs(transform.position);

        if (buildStairs == null)
        {
            npcAIWorker.SetShout(TextHandler.Instance.manager.GetTextById(13402));
            orderForHotel.customer.ChangeMood(-99999);
            SetIntent(AccostIntentEnum.Idle);
            return;
        }
        npcAIWorker.SetShout(TextHandler.Instance.manager.GetTextById(13404));
        InnHandler.Instance.GetStairsByRemarkId(buildStairs.remarkId, out Vector3 layerFirstPosition, out Vector3 layerSecondPosition);
        orderForHotel.layerFirstStairsPosition  = layerFirstPosition;
        orderForHotel.layerSecondStairsPosition = layerSecondPosition;
        npcAIWorker.SetCharacterMove(layerFirstPosition);

        //根据魅力增加好感
        int addMood = npcAIWorker.characterData.CalculationAccostAddMood();

        orderForHotel.customer.ChangeMood(addMood);
        //设置相同的移动速度
        orderForHotel.customer.characterMoveCpt.SetMoveSpeed(npcAIWorker.characterMoveCpt.moveSpeed);
        orderForHotel.customer.SetIntent(NpcAICustomerForHotelCpt.CustomerHotelIntentEnum.GoToStairsForFirst);
    }
コード例 #3
0
    /// <summary>
    /// 前往二楼楼梯
    /// </summary>
    public void SetIntentForGoToStairsForSecond()
    {
        BuildStairsCpt buildStairs = InnHandler.Instance.GetCloseStairs(transform.position);

        bedPro.SetActive(false);
        OrderForHotel orderForHotel = order as OrderForHotel;

        InnHandler.Instance.GetStairsByRemarkId(buildStairs.remarkId, out Vector3 layerFirstPosition, out Vector3 layerSecondPosition);
        orderForHotel.layerFirstStairsPositionForClean  = layerFirstPosition;
        orderForHotel.layerSecondStairsPositionForClean = layerSecondPosition;
        npcAIWorker.SetCharacterMove(layerSecondPosition);
    }
コード例 #4
0
    /// <summary>
    /// 意图-前往二楼
    /// </summary>
    public void SetIntentForGoToStairsForFirst()
    {
        bedPro.SetActive(true);
        OrderForHotel  orderForHotel = order as OrderForHotel;
        BuildStairsCpt buildStairs   = InnHandler.Instance.GetCloseStairs(transform.position);

        if (buildStairs == null)
        {
            npcAIWorker.SetShout(TextHandler.Instance.manager.GetTextById(13402));
            SetIntent(WaiterIntentEnum.Idle);
            return;
        }
        InnHandler.Instance.GetStairsByRemarkId(buildStairs.remarkId, out Vector3 layerFirstPosition, out Vector3 layerSecondPosition);
        orderForHotel.layerFirstStairsPositionForClean  = layerFirstPosition;
        orderForHotel.layerSecondStairsPositionForClean = layerSecondPosition;
        npcAIWorker.SetCharacterMove(layerFirstPosition);
    }
コード例 #5
0
 /// <summary>
 /// 通过备注ID获取楼梯位置
 /// </summary>
 /// <param name="remarkId"></param>
 /// <param name="layerFirstPosition"></param>
 /// <param name="layerSecondPosition"></param>
 public void GetStairsPosition(string remarkId, out Vector3 layerFirstPosition, out Vector3 layerSecondPosition)
 {
     layerFirstPosition  = Vector3.zero;
     layerSecondPosition = Vector3.zero;
     if (CheckUtil.ListIsNull(listStairsCpt))
     {
         return;
     }
     for (int i = 0; i < listStairsCpt.Count; i++)
     {
         BuildStairsCpt buildStairs = listStairsCpt[i];
         if (buildStairs.remarkId.Equals(remarkId))
         {
             if (buildStairs.layer == 1)
             {
                 layerFirstPosition = buildStairs.GetStairsPosition();
             }
             else if (buildStairs.layer == 2)
             {
                 layerSecondPosition = buildStairs.GetStairsPosition();
             }
         }
     }
 }
コード例 #6
0
ファイル: ControlForBuildCpt.cs プロジェクト: wobushiren79/IL
    /// <summary>
    /// 建造家具
    /// </summary>
    /// <param name="listBuildPosition"></param>
    protected void BuildItemForFurniture(List <Vector3> listBuildPosition)
    {
        GameDataBean gameData = GameDataHandler.Instance.manager.GetGameData();

        //将家具添加到家具容器中
        buildItemCpt.transform.parent = InnBuildHandler.Instance.builderForFurniture.buildContainer.transform;
        //增加一个家具
        InnResBean addData = new InnResBean(buildItemCpt.buildItemData.id, buildItemCpt.transform.position, listBuildPosition, buildItemCpt.direction);

        //如果是门。需要重置一下墙体
        if (buildItemCpt.buildItemData.build_type == (int)BuildItemTypeEnum.Door)
        {
            //gameData.GetInnBuildData().InitWall(innBuildManager);
            //innWallBuilder.StartBuild();
        }
        else if (buildItemCpt.buildItemData.build_type == (int)BuildItemTypeEnum.Bed)
        {
            //如果是床。需要加上备注ID
            BuildBedCpt buildBedCpt = (BuildBedCpt)buildItemCpt;
            buildBedCpt.buildBedData.isSet = true;
            addData.remarkId = buildBedCpt.buildBedData.remarkId;
        }
        else if (buildItemCpt.buildItemData.build_type == (int)BuildItemTypeEnum.Stairs)
        {
            BuildStairsCpt buildStairsCpt = (BuildStairsCpt)buildItemCpt;
            //所有坐标下移
            List <Vector3> listFirstBuildPosition = new List <Vector3>();
            foreach (Vector3 itemPosition in listBuildPosition)
            {
                Vector3 firstPostion = itemPosition + new Vector3(0, -100, 0);
                listFirstBuildPosition.Add(firstPostion);
                //删除当前坐标下的建筑
                BuildItemForDismantle(buildLayer - 1, firstPostion, firstPostion);
            }

            //楼下也要添加同样的数据
            GameObject objFirstStairs = Instantiate(InnBuildHandler.Instance.builderForFurniture.buildContainer, buildItemCpt.gameObject);
            objFirstStairs.transform.position += new Vector3(0, -100, 0);
            BuildStairsCpt firstStairs = objFirstStairs.GetComponent <BuildStairsCpt>();
            firstStairs.SetLayer(buildLayer - 1);
            InnResBean addFirstData = new InnResBean(firstStairs.buildItemData.id, objFirstStairs.transform.position, listFirstBuildPosition, firstStairs.direction);
            //设置相同的备注ID
            addData.remarkId      = SystemUtil.GetUUID(SystemUtil.UUIDTypeEnum.N);
            addData.remark        = "2";
            addFirstData.remarkId = addData.remarkId;
            addFirstData.remark   = "1";
            gameData.GetInnBuildData().AddFurniture(buildLayer - 1, addFirstData);
            firstStairs.SetRemarkId(addData.remarkId);
            buildStairsCpt.SetRemarkId(addData.remarkId);
        }
        gameData.GetInnBuildData().AddFurniture(buildLayer, addData);
        //背包里删除一个
        ItemBean itemData = gameData.AddBuildNumber(buildItemCpt.buildItemData.id, -1);

        //动画
        buildItemCpt.transform
        .DOScale(new Vector3(0.2f, 0.2f, 0.2f), 0.5f)
        .From()
        .SetEase(Ease.OutBack);

        if (buildItemCpt.buildItemData.build_type == (int)BuildItemTypeEnum.Bed || itemData.itemNumber <= 0)
        {
            //如果没有了,则不能继续建造
            ClearSelectBuildItem();
        }
        else
        {
            //如果还有则实例化一个新的
            //物体先在建筑控件上显示
            GameObject objCopy = Instantiate(GameControlHandler.Instance.gameObject, buildItemCpt.gameObject);
            objCopy.transform.localScale = new Vector3(1, 1, 1);
            buildItemCpt = objCopy.GetComponent <BaseBuildItemCpt>();
        }
    }
コード例 #7
0
    /// <summary>
    /// 通过ID获取家具Obj
    /// </summary>
    /// <param name="id"></param>
    /// <returns></returns>
    public GameObject GetFurnitureObjById(InnResBean furnitureData, Transform tfFather, BuildBedBean buildBedData)
    {
        BuildItemBean    buildItemData     = GetBuildDataById(furnitureData.id);
        GameObject       furnitureObjModel = GetModel(dicFurnitureCpt, "model/furniture", buildItemData.model_name);
        GameObject       furnitureObj      = Instantiate(tfFather.gameObject, furnitureObjModel);
        BaseBuildItemCpt buildItemCpt      = furnitureObj.GetComponent <BaseBuildItemCpt>();
        List <string>    listIcon          = buildItemData.GetIconList();

        switch ((BuildItemTypeEnum)buildItemData.build_type)
        {
        case BuildItemTypeEnum.Counter:
            BuildCounterCpt buildCounter   = (BuildCounterCpt)buildItemCpt;
            Sprite          spLeftCounter  = GetFurnitureSpriteByName(listIcon[0] + "_0");
            Sprite          spRightCounter = GetFurnitureSpriteByName(listIcon[0] + "_1");
            Sprite          spDownCounter  = GetFurnitureSpriteByName(listIcon[0] + "_2");
            Sprite          spUpCounter    = GetFurnitureSpriteByName(listIcon[0] + "_3");
            buildCounter.SetData(buildItemData, spLeftCounter, spRightCounter, spDownCounter, spUpCounter);
            break;

        case BuildItemTypeEnum.Stove:
            BuildStoveCpt buildStove   = (BuildStoveCpt)buildItemCpt;
            Sprite        spLeftStove  = GetFurnitureSpriteByName(listIcon[0] + "_0");
            Sprite        spRightStove = GetFurnitureSpriteByName(listIcon[0] + "_1");
            Sprite        spDownStove  = GetFurnitureSpriteByName(listIcon[0] + "_2");
            Sprite        spUpStove    = GetFurnitureSpriteByName(listIcon[0] + "_3");
            buildStove.SetData(buildItemData, spLeftStove, spRightStove, spDownStove, spUpStove);
            break;

        case BuildItemTypeEnum.Table:
            BuildTableCpt buildTable = (BuildTableCpt)buildItemCpt;

            Sprite spLeftChair  = GetFurnitureSpriteByName(listIcon[1] + "_0");
            Sprite spRightChair = GetFurnitureSpriteByName(listIcon[1] + "_1");
            Sprite spDownChair  = GetFurnitureSpriteByName(listIcon[1] + "_2");
            Sprite spUpChair    = GetFurnitureSpriteByName(listIcon[1] + "_3");

            if (buildItemData.model_name.Equals("Table_1"))
            {
                Sprite spTable = GetFurnitureSpriteByName(listIcon[0]);
                buildTable.SetData(buildItemData, spTable, spLeftChair, spRightChair, spDownChair, spUpChair);
            }
            else if (buildItemData.model_name.Equals("Table_2"))
            {
                Sprite spLeftTable  = GetFurnitureSpriteByName(listIcon[0] + "_0");
                Sprite spRightTable = GetFurnitureSpriteByName(listIcon[0] + "_1");
                Sprite spDownTable  = GetFurnitureSpriteByName(listIcon[0] + "_2");
                Sprite spUpTable    = GetFurnitureSpriteByName(listIcon[0] + "_3");
                buildTable.SetData(buildItemData, spLeftTable, spRightTable, spDownTable, spUpTable, spLeftChair, spRightChair, spDownChair, spUpChair);
            }

            break;

        case BuildItemTypeEnum.Decoration:
            BuildDecorationCpt buildDecoration = (BuildDecorationCpt)buildItemCpt;
            Sprite             spDecoration    = GetFurnitureSpriteByName(buildItemData.icon_key);
            buildDecoration.SetData(buildItemData, spDecoration);
            break;

        case BuildItemTypeEnum.Door:
            BuildDoorCpt buildDoor = (BuildDoorCpt)buildItemCpt;
            Sprite       spDoor    = GetFurnitureSpriteByName(listIcon[0]);
            buildDoor.SetData(buildItemData, spDoor);
            break;

        case BuildItemTypeEnum.Floor:
            BuildFloorCpt buildFloor = (BuildFloorCpt)buildItemCpt;
            Sprite        spFloor    = GetFloorSpriteByName(buildItemData.icon_key);
            buildFloor.SetData(buildItemData, spFloor);
            break;

        case BuildItemTypeEnum.Wall:
            BuildWallCpt buildWall = (BuildWallCpt)buildItemCpt;
            Sprite       spWall    = GetWallSpriteByName(buildItemData.icon_key);
            buildWall.SetData(buildItemData, spWall);
            break;

        case BuildItemTypeEnum.Bed:
            BuildBedCpt buildBed = (BuildBedCpt)buildItemCpt;
            buildBed.SetData(buildItemData, buildBedData);
            break;

        case BuildItemTypeEnum.Stairs:
            BuildStairsCpt buildStairs = (BuildStairsCpt)buildItemCpt;
            buildStairs.SetData(buildItemData);
            buildStairs.SetRemarkId(furnitureData.remarkId);
            if (furnitureData.remark != null && furnitureData.remark.Equals("1"))
            {
                buildStairs.SetLayer(1);
            }
            else
            {
                buildStairs.SetLayer(2);
            }
            break;

        default:
            buildItemCpt.SetData(buildItemData);
            break;
        }
        return(furnitureObj);
    }