Ejemplo n.º 1
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.º 2
0
        public void SnapToSlot(BuildingSnapSlot source_slot, BuildingSnapSlot target_slot)
        {
            if (snaped_slot_count == 0)
            {
                //暂时放弃控制权。
                transform.SetParent(GameFacade.Instance.GetWorldManager().building_root);

                BuildingObject target_bo = target_slot.building_owner;

                //rotation
                float y       = target_bo.transform.eulerAngles.y;
                float this_y  = transform.eulerAngles.y;
                float delta_y = y - this_y;
                while (delta_y > 90)
                {
                    delta_y -= 90;
                }
                while (delta_y < -90)
                {
                    delta_y += 90;
                }

                Rotate(delta_y);

                //position
                Vector3 delta = target_slot.transform.position - source_slot.transform.position;
                transform.position  += delta;
                transform.localScale = Vector3.one;

                old_snap_pos = detector_transform.position;
            }

            snaped_slot_count++;
            Debug.Log("Current Snaped Count is " + snaped_slot_count);
        }
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 void OnPressing()
        {
            LocalPlayer         lp  = GameFacade.Instance.GetLocalPlayer();
            BuildingBlockParams bbp = lp.building_block_params;
            BuildingObject      bo  = lp.building_block_params.placing_building_detector.building_object;

            if (bo.SnapCount == 0)
            {
                bbp.Rotate();
            }
        }
Ejemplo n.º 5
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.º 6
0
 public BuildingObjectData(BuildingObject bo)
 {
     bo.SaveBasicInfo(this);
 }
Ejemplo n.º 7
0
 public void DetachDropedBuilding()
 {
     building_object = null;
     building_config = null;
 }