示例#1
0
        private void Update()
        {
            RaycastHit raycast = LayoutManager.Instance.CurrentCamera.CurrentRaycast;

            if (!raycast.transform)
            {
                return;
            }

            OverlayMesh overlayMesh = raycast.transform.GetComponent <OverlayMesh>();
            TileEntity  tileEntity  = raycast.transform.GetComponent <TileEntity>();

            int floor = 0;
            int x     = -1;
            int y     = -1;

            if (tileEntity && tileEntity.Valid)
            {
                floor = tileEntity.Floor;
                x     = tileEntity.Tile.X;
                y     = tileEntity.Tile.Y;
            }
            else if (overlayMesh)
            {
                floor = LayoutManager.Instance.CurrentCamera.Floor;
                x     = Mathf.FloorToInt(raycast.point.x / 4f);
                y     = Mathf.FloorToInt(raycast.point.z / 4f);
            }

            if (floor == 0 || floor == -1)
            {
                LayoutManager.Instance.TooltipText += "\n<color=red><b>It's not possible to place roofs on ground floor</b></color>";
                return;
            }

            if (Input.GetMouseButton(0))
            {
                RoofData data = GuiManager.Instance.RoofsList.SelectedValue as RoofData;
                GameManager.Instance.Map[x, y].SetRoof(data, floor);
            }
            else if (Input.GetMouseButton(1))
            {
                GameManager.Instance.Map[x, y].SetRoof(null, floor);
            }

            if (Input.GetMouseButtonUp(0) || Input.GetMouseButtonUp(1))
            {
                GameManager.Instance.Map.CommandManager.FinishAction();
            }
        }
示例#2
0
        private static void LoadRoofs(XmlDocument document)
        {
            XmlNodeList entities = document.GetElementsByTagName("roof");

            foreach (XmlElement element in entities)
            {
                string name      = element.GetAttribute("name");
                string shortName = element.GetAttribute("shortname");

                Debug.Log("Loading roof " + name);

                bool unique = VerifyShortName(shortName);
                if (!unique)
                {
                    Debug.LogWarning("Shortname " + shortName + " already exists, aborting");
                    continue;
                }

                TextureReference texture   = TextureReference.GetTextureReference(element.GetAttribute("tex"));
                Materials        materials = null;

                foreach (XmlElement child in element)
                {
                    switch (child.LocalName)
                    {
                    case "materials":
                        materials = new Materials(child);
                        break;
                    }
                }

                RoofData data = ScriptableObject.CreateInstance <RoofData>();
                data.Initialize(texture, name, shortName, materials);
                Database.Roofs[shortName] = data;

                GuiManager.Instance.RoofsList.Add(data);
            }
        }