コード例 #1
0
ファイル: InnHotelHandler.cs プロジェクト: wobushiren79/IL
    /// <summary>
    /// 获取随机空闲的座位
    /// </summary>
    /// <returns></returns>
    public BuildBedCpt GetIdleBed()
    {
        if (listBedCpt == null)
        {
            return(null);
        }
        List <BuildBedCpt> idleBedList = new List <BuildBedCpt>();

        for (int i = 0; i < listBedCpt.Count; i++)
        {
            BuildBedCpt itemBed = listBedCpt[i];
            if (itemBed.GetBedStatus() == BuildBedCpt.BedStatusEnum.Idle)
            {
                idleBedList.Add(itemBed);
            }
        }
        if (idleBedList.Count == 0)
        {
            return(null);
        }
        BuildBedCpt buildBed = RandomUtil.GetRandomDataByList(idleBedList);

        buildBed.SetBedStatus(BuildBedCpt.BedStatusEnum.Ready);
        return(buildBed);
    }
コード例 #2
0
ファイル: OrderForHotel.cs プロジェクト: wobushiren79/IL
 public OrderForHotel(NpcAICustomerForHotelCpt customer, BuildBedCpt bed)
 {
     this.customer    = customer;
     this.bed         = bed;
     orderHotelStatus = OrderHotelStatusEnum.Start;
     sleepTime        = UnityEngine.Random.Range(1, 3);
 }
コード例 #3
0
 /// <summary>
 /// 前往客栈处理
 /// </summary>
 public virtual void HandleForGoToInn()
 {
     if (characterMoveCpt.IsAutoMoveStop())
     {
         //判断点是否关门
         if (InnHandler.Instance.GetInnStatus() == InnHandler.InnStatusEnum.Open)
         {
             //首先判断还有没有床位
             BuildBedCpt buildBedCpt = InnHandler.Instance.GetIdleBed();
             if (buildBedCpt != null)
             {
                 //如果没有关门分派一个接待
                 SetIntent(CustomerHotelIntentEnum.WaitAccost);
                 //创建订单
                 orderForHotel = InnHandler.Instance.CreateOrderForHotel(this, buildBedCpt);
                 //记录
                 InnHandler.Instance.RecordCustomer(orderForHotel);
                 characterShoutCpt.Shout(TextHandler.Instance.manager.GetTextById(13401));
             }
             else
             {
                 SetIntent(CustomerHotelIntentEnum.Leave);
             }
         }
         else
         {
             SetIntent(CustomerHotelIntentEnum.Leave);
         }
     }
 }
コード例 #4
0
ファイル: InnHandler.cs プロジェクト: wobushiren79/IL
    /// <summary>
    /// 创建一个住宿订单
    /// </summary>
    /// <param name="npc"></param>
    /// <param name="buildBedCpt"></param>
    /// <returns></returns>
    public OrderForHotel CreateOrderForHotel(NpcAICustomerForHotelCpt npc, BuildBedCpt buildBedCpt)
    {
        OrderForHotel order = new OrderForHotel(npc, buildBedCpt);

        hotelQueue.Add(order);
        listOrder.Add(order);
        return(order);
    }
コード例 #5
0
ファイル: InnHotelHandler.cs プロジェクト: wobushiren79/IL
    /// <summary>
    /// 找到所有桌子
    /// </summary>
    /// <returns></returns>
    public List <BuildBedCpt> InitBedList(InnBuildBean innBuildData)
    {
        if (bedContainer == null)
        {
            return(listBedCpt);
        }
        BuildBedCpt[] tableArray = bedContainer.GetComponentsInChildren <BuildBedCpt>();
        listBedCpt = TypeConversionUtil.ArrayToList(tableArray);
        //设置每张床的美观值
        try
        {
            List <InnResBean> listFurnitureData = innBuildData.GetFurnitureList(2);
            List <InnResBean> listFloorData     = innBuildData.GetFloorList(2);
            List <InnResBean> listWallData      = innBuildData.GetWallList(2);

            Dictionary <Vector3, InnResBean> mapFurnitureData = new Dictionary <Vector3, InnResBean>();
            Dictionary <Vector3, InnResBean> mapFloorData     = new Dictionary <Vector3, InnResBean>();
            Dictionary <Vector3, InnResBean> mapWallData      = new Dictionary <Vector3, InnResBean>();

            foreach (InnResBean innResData in listFurnitureData)
            {
                mapFurnitureData.Add(TypeConversionUtil.Vector3BeanToVector3(innResData.startPosition), innResData);
            }
            foreach (InnResBean innResData in listFloorData)
            {
                mapFloorData.Add(TypeConversionUtil.Vector3BeanToVector3(innResData.startPosition), innResData);
            }
            foreach (InnResBean innResData in listWallData)
            {
                mapWallData.Add(TypeConversionUtil.Vector3BeanToVector3(innResData.startPosition), innResData);
            }

            if (listBedCpt != null)
            {
                for (int i = 0; i < listBedCpt.Count; i++)
                {
                    BuildBedCpt buildBedCpt        = listBedCpt[i];
                    float       totalAddAesthetics = 0;
                    float       totalSubAesthetics = 0;
                    GetAroundAesthetics(mapFurnitureData, buildBedCpt.transform.position, 3, out float addFurnitureAesthetics, out float subFurnitureAesthetics);
                    totalAddAesthetics += addFurnitureAesthetics;
                    totalSubAesthetics += subFurnitureAesthetics;
                    GetAroundAesthetics(mapFloorData, buildBedCpt.transform.position - new Vector3(0.5f, 0.5f), 3, out float addFloorAesthetics, out float subFloorAesthetics);
                    totalAddAesthetics += addFloorAesthetics;
                    totalSubAesthetics += subFloorAesthetics;
                    GetAroundAesthetics(mapWallData, buildBedCpt.transform.position - new Vector3(0.5f, 0.5f), 3, out float addWallAesthetics, out float subWallAesthetics);
                    totalAddAesthetics += addWallAesthetics;
                    totalSubAesthetics += subWallAesthetics;
                    buildBedCpt.SetAddAesthetics((float)decimal.Round(decimal.Parse(totalAddAesthetics + ""), 1), (float)decimal.Round(decimal.Parse(totalSubAesthetics + ""), 1));
                }
            }
        }
        catch
        {
        }
        return(listBedCpt);
    }
コード例 #6
0
ファイル: InnHotelHandler.cs プロジェクト: wobushiren79/IL
 /// <summary>
 /// 清理所有床
 /// </summary>
 public void CleanAllBed()
 {
     if (listBedCpt == null)
     {
         return;
     }
     for (int i = 0; i < listBedCpt.Count; i++)
     {
         BuildBedCpt buildBed = listBedCpt[i];
         buildBed.CleanBed();
     }
 }
コード例 #7
0
ファイル: UIGameBuild.cs プロジェクト: wobushiren79/IL
 /// <summary>
 /// 设置床的范围
 /// </summary>
 /// <param name="isShow"></param>
 protected void SetBedRangeStatus(bool isShow)
 {
     //打开所有床位的范围显示
     BuildBedCpt[] listBed = InnBuildHandler.Instance.builderForFurniture.GetAllBed();
     if (!CheckUtil.ArrayIsNull(listBed))
     {
         for (int i = 0; i < listBed.Length; i++)
         {
             BuildBedCpt buildBed = listBed[i];
             buildBed.ShowRange(isShow);
         }
     }
 }
コード例 #8
0
    public void SetData(BuildBedCpt buildBedCpt)
    {
        this.buildBedCpt = buildBedCpt;
        BuildBedBean buildBedData = buildBedCpt.buildBedData;

        SetName(buildBedData.bedName);

        //设置价格
        buildBedCpt.GetPrice(out long basePriceS, out long addPriceS);
        SetPrice(basePriceS, addPriceS);

        SetBed(buildBedData);
        buildBedCpt.GetAesthetics(out float addAesthetics, out float subAesthetics, out float totalthetics);
        SetAesthetics(addAesthetics, subAesthetics);
        buildBedCpt.ShowRange(true);
    }
コード例 #9
0
ファイル: ControlForWorkCpt.cs プロジェクト: wobushiren79/IL
 /// <summary>
 ///  清楚选择
 /// </summary>
 protected void ClearSelect()
 {
     //如果是员工
     if (selectNpc != null && selectNpc as NpcAIWorkerCpt)
     {
         NpcAIWorkerCpt npcAIWorker = selectNpc as NpcAIWorkerCpt;
         //恢复偷懒
         npcAIWorker.SetDazeEnabled(true);
     }
     selectNpc = null;
     selectBed = null;
     if (dialogSelectView != null)
     {
         Destroy(dialogSelectView.gameObject);
         dialogSelectView = null;
     }
 }
コード例 #10
0
ファイル: InnHandler.cs プロジェクト: wobushiren79/IL
    /// <summary>
    /// 判断是否还有床位
    /// </summary>
    /// <returns></returns>
    public BuildBedCpt GetIdleBed()
    {
        BuildBedCpt buildBedCpt = innHotelHandler.GetIdleBed();

        return(buildBedCpt);
    }
コード例 #11
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>();
        }
    }
コード例 #12
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);
    }
コード例 #13
0
ファイル: ControlForWorkCpt.cs プロジェクト: wobushiren79/IL
    /// <summary>
    /// 选中物体处理
    /// </summary>
    public void HandleForSelect()
    {
        if (EventSystem.current.IsPointerOverGameObject())
        {
            return;
        }
        //偷懒员工选中处理
        NpcAIWorkerCpt workerDaze = HandleForDazeWorker();

        if (Input.GetButtonDown(InputInfo.Confirm))
        {
            if (dialogSelectView != null)
            {
                return;
            }
            Vector3 mousePos = Camera.main.ScreenToWorldPoint(Input.mousePosition);
            //如有已经提前选中了偷懒的员工
            if (workerDaze != null)
            {
                AudioHandler.Instance.PlaySound(AudioSoundEnum.Fight);
                workerDaze.SetExpression(CharacterExpressionCpt.CharacterExpressionEnum.Surprise, 3);
                workerDaze.SetDazeBufferTime(10);
                workerDaze.SetIntent(NpcAIWorkerCpt.WorkerIntentEnum.Idle);
                return;
            }
            RaycastHit2D[] hitAll = Physics2D.RaycastAll(mousePos, Vector2.zero);
            foreach (RaycastHit2D itemHit in hitAll)
            {
                if (itemHit.collider.transform.tag.Equals(TagInfo.Tag_NpcBody))
                {
                    GameObject objSelect = itemHit.collider.gameObject;
                    selectNpc = objSelect.GetComponentInParent <BaseNpcAI>();
                    if (selectNpc)
                    {
                        AudioHandler.Instance.PlaySound(AudioSoundEnum.ButtonForShow);
                        DialogBean dialogData = new DialogBean();
                        dialogSelectView = DialogHandler.Instance.CreateDialog <SelectForNpcDialogView>(DialogEnum.SelectForNpc, this, dialogData);
                        ((SelectForNpcDialogView)dialogSelectView).SetData(selectNpc);
                        //如果是员工
                        if (selectNpc as NpcAIWorkerCpt)
                        {
                            NpcAIWorkerCpt npcAIWorker = selectNpc as NpcAIWorkerCpt;
                            npcAIWorker.SetDazeEnabled(false);
                        }
                        return;
                    }
                }
                else if (itemHit.collider.transform.tag.Equals(TagInfo.Tag_Bed))
                {
                    GameObject objSelect = itemHit.collider.gameObject;
                    selectBed = objSelect.GetComponentInParent <BuildBedCpt>();
                    if (selectBed)
                    {
                        AudioHandler.Instance.PlaySound(AudioSoundEnum.ButtonForShow);
                        DialogBean dialogData = new DialogBean();
                        dialogSelectView = DialogHandler.Instance.CreateDialog <SelectForBedDialogView>(DialogEnum.SelectForBed, this, dialogData);
                        ((SelectForBedDialogView)dialogSelectView).SetData(selectBed);
                        return;
                    }
                }
            }
            selectNpc = null;
            selectBed = null;
        }
    }