Example #1
0
    Item SelfGenerate(CityData.ItemGenerateInstruction _instruction)
    {
        Item prefab = SceneController.CONTEXT.ItemGeneratorCtrl.GetItemPrefabById(_instruction.id);
        Item item   = prefab.Generate(this.LevelPlane(_instruction.position.y / 2), _instruction.position, _instruction.rotation);

        return(item);
    }
Example #2
0
 // Start is called before the first frame update
 void Start()
 {
     for (int i = 0; i < m_cityData.itemGenerateInstructions.Count; i++)
     {
         CityData.ItemGenerateInstruction instruction = m_cityData.itemGenerateInstructions[i];
         Item item = SelfGenerate(instruction);
         instruction.item = item;
         m_cityData.AddItemInMap(instruction);
     }
 }
Example #3
0
    // Update is called once per frame
    void Update()
    {
        if (m_isWorking == true)
        {
            if (Input.GetMouseButtonDown(1))
            {
                ExitBuilding();
            }
            else
            {
                Ray        ray = Camera.main.ScreenPointToRay(Input.mousePosition);
                RaycastHit hit;
                if (!EventSystem.current.IsPointerOverGameObject() && Physics.Raycast(ray, out hit, 1000.0f, 1 << 11))
                {
                    Vector3    localVector  = GLobalToLocal(hit.point);
                    Vector3Int itemPosition = HitToMap(localVector);

                    Vector3Int offsetPosition = SceneController.CONTEXT.city.Data.GetOffsetPosition(itemPosition);

                    CityData.ItemGenerateInstruction instruction = SceneController.CONTEXT.city.Data.GetInstructionByPosition(offsetPosition);


                    if (instruction != m_instruction)
                    {
                        if (m_instruction != null)
                        {
                            m_instruction.item.UnSelected();
                        }

                        m_instruction = instruction;

                        if (instruction != null)
                        {
                            instruction.item.Selected();
                        }
                    }

                    if (m_instruction != null)
                    {
                        if (Input.GetMouseButtonDown(0))
                        {
                            SceneController.CONTEXT.city.ItemDestroy(m_instruction);
                            m_instruction = null;
                        }
                    }
                }
            }
        }
    }
Example #4
0
    public virtual bool CheckMapAvaliable(Vector3Int _position, int _rotation)
    {
        Vector3Int pos1 = new Vector3Int();
        Vector3Int pos2 = new Vector3Int();

        SceneController.CONTEXT.city.Data.GetStartAndEnd(_position, _rotation, size, ref pos1, ref pos2);

        for (int i = pos1.x; i <= pos2.x; i++)
        {
            for (int j = pos1.z; j <= pos2.z; j++)
            {
                CityData.ItemGenerateInstruction instruction = SceneController.CONTEXT.city.Data.GetInstructionByPosition(new Vector3Int(i, pos1.y, j));

                if (instruction != null)
                {
                    return(false);
                }
            }
        }

        return(true);
    }
Example #5
0
 public void ItemDestroy(CityData.ItemGenerateInstruction _instruction)
 {
     m_cityData.RemoveInstruction(_instruction);
     Destroy(_instruction.item.gameObject);
 }