Ejemplo n.º 1
0
        public void SwitchDisplayState(EPlaceableObjectState state, BuildingBlockConfig config_file)
        {
            LocalPlayer lp = GameFacade.Instance.GetLocalPlayer();

            if (state != current_state)
            {
                current_state = state;

                switch (state)
                {
                case EPlaceableObjectState.Normal:
                    mesh_renderer.material = config_file.standard;
                    lp.operation_state     = EOperationState.Default;
                    EnableCollider         = true;
                    //无论如何这里应该把Snaping状态设置为False
                    snaped_slot_count = 0;
                    break;

                case EPlaceableObjectState.Dropable:
                    mesh_renderer.material = config_file.enable;
                    lp.operation_state     = EOperationState.Building_Dropable;
                    EnableCollider         = false;
                    break;

                case EPlaceableObjectState.Conflict:
                    mesh_renderer.material = config_file.confict;
                    lp.operation_state     = EOperationState.Building_Confict;
                    EnableCollider         = false;
                    break;
                }
            }
        }
Ejemplo n.º 2
0
        public void OnBeginPress()
        {
            Debug.Log("Drop Building Block");
            LocalPlayer lp = GameFacade.Instance.GetLocalPlayer();

            WorldManager world_mgr = GameFacade.Instance.GetWorldManager();

            Transform parent = world_mgr.FindTransform("BuildingBlocks");

            if (parent != null)
            {
                PlacingBuildingDetector pbd = lp.building_block_params.placing_building_detector;

                //先改变父节点
                BuildingObject      bo  = pbd.building_object;
                BuildingBlockConfig bbi = pbd.building_config;

                if (bo != null && bbi != null)
                {
                    //修改物件的父节点
                    bo.transform.SetParent(parent);

                    //在取消联系。
                    lp.building_block_params.placing_building_detector.DetachDropedBuilding();

                    //改变Shader
                    bo.SwitchDisplayState(EPlaceableObjectState.Normal, bbi);

                    //消耗库存
                    lp.CostSwiftSlotItem();
                }
            }
        }
Ejemplo n.º 3
0
        public void AttachPendingDropBuilding(BuildingObject bo, BuildingBlockConfig bbi)
        {
            building_object = bo;
            building_object.transform.SetParent(this.transform);
            building_object.transform.localPosition    = Vector3.zero;
            building_object.transform.localEulerAngles = Vector3.zero;

            building_config = bbi;
        }
Ejemplo n.º 4
0
        public bool OnTakeOut(UGUIInventoryItemConfig item_config, LocalPlayer local_player)
        {
            if (item_config.GetType() == typeof(BuildingBlockConfig))
            {
                GameObject gobj = GameObject.Instantiate(item_config.prefab);

                BuildingBlockParams bbp = local_player.building_block_params;

                BuildingObject      bo  = gobj.GetComponent <BuildingObject>();
                BuildingBlockConfig bbi = item_config as BuildingBlockConfig;

                if (bo != null && bbi != null)
                {
                    bbp.placing_building_detector.AttachPendingDropBuilding(bo, bbi);
                    bbp.building_block_orb_distance = bbi.drop_orb_distance;
                }
            }
            return(false);
        }
Ejemplo n.º 5
0
 public void DetachDropedBuilding()
 {
     building_object = null;
     building_config = null;
 }