コード例 #1
0
    public int SlotID;                  // 位置

    public static void DB_CreateBuilding(int slotId, EBuildingType type)
    {
        AVObject obj = new AVObject("Building");

        obj["UserID"] = AVUser.CurrentUser.ObjectId;
        obj["Type"]   = (int)type;
        obj["Level"]  = 1;
        obj["Value"]  = 1;
        obj["SlotID"] = slotId;

        obj.SaveAsync().ContinueWith(t => {
            BuildingData newBuilding = new BuildingData();
            newBuilding.UserID       = AVUser.CurrentUser.ObjectId;
            newBuilding.Type         = type;
            newBuilding.Level        = 1;
            newBuilding.Value        = 1;
            newBuilding.SlotID       = slotId;

            GameManager.Instance.LastCreatedBuilding = newBuilding;
            GameManager.Instance.EventQueue.Queue.Enqueue(new EventItem()
            {
                Type = EEventItemType.BuildCommandOK
            });
        });
    }
コード例 #2
0
 public bool PlaceBuildingOnHexagon(Hexagon hexagon, EBuildingType buildingType)
 {
     if (buildingType == EBuildingType.Caserne && hexagon.GetComponent <Infos>().type == Infos.buildingType.None)
     {
         GameObject building = GameObject.Instantiate(caserne);
         building.transform.parent            = hexagon.transform;
         building.transform.localPosition     = offset;
         hexagon.GetComponent <Infos>().model = building;
         hexagon.GetComponent <Infos>().type  = Infos.buildingType.Caserne;
         return(true);
     }
     if (buildingType == EBuildingType.Hospital && hexagon.GetComponent <Infos>().type == Infos.buildingType.None)
     {
         GameObject building = GameObject.Instantiate(hospital);
         building.transform.parent            = hexagon.transform;
         building.transform.localPosition     = offset;
         hexagon.GetComponent <Infos>().model = building;
         hexagon.GetComponent <Infos>().type  = Infos.buildingType.Hospital;
         return(true);
     }
     if (buildingType == EBuildingType.Stopper && hexagon.GetComponent <Infos>().type == Infos.buildingType.None)
     {
         GameObject building = GameObject.Instantiate(stopper);
         building.transform.parent            = hexagon.transform;
         building.transform.localPosition     = offset;
         hexagon.GetComponent <Infos>().model = building;
         hexagon.GetComponent <Infos>().type  = Infos.buildingType.Stopper;
         return(true);
     }
     return(false);
 }
コード例 #3
0
 public BuildingStateData(int _id, EBuildingType _type, ETeam _teamId, Vector2 _position, int _hp)
 {
     id       = _id;
     type     = _type;
     teamId   = _teamId;
     position = _position;
     hp       = _hp;
 }
コード例 #4
0
 public BuildingStateData(Packet _packet)
 {
     id       = _packet.ReadInt();
     type     = (EBuildingType)_packet.ReadInt();
     position = _packet.ReadVector2();
     teamId   = (ETeam)_packet.ReadInt();
     hp       = _packet.ReadInt();
 }
コード例 #5
0
    public IEnumerator ShowBuildingShade(EBuildingType eBuildingType)
    {
        m_bDraggingBuildingShade = true;

        for (int i = 0; i < m_pBuildingShadesPrefabs.Count; i++)
        {
            if (m_pBuildingShadesPrefabs[i].m_eType == eBuildingType)
            {
                m_pCurrentBuildingShade = Instantiate<BuildingShade>(m_pBuildingShadesPrefabs[i]);
                m_pCurrentBuildingShade.transform.SetParent(transform, false);
                break;
            }
        }

        if (m_pCurrentBuildingShade == null)
        {
            Debug.LogError("BuildingShade not found: " + eBuildingType);
            yield break;
        }

        RaycastHit tHit;

        do
        {
            if (m_pCurrentBuildingShade == null)
                yield break;

            Ray tRay = Camera.main.ScreenPointToRay(Input.mousePosition);

            if (Physics.Raycast(tRay, out tHit, 100.0f, LayersManager.Instance.GetLayer("Ground"), QueryTriggerInteraction.Ignore))
            {
                m_pCurrentBuildingShade.gameObject.SetActive(true);
                m_pCurrentBuildingShade.transform.position = tHit.point;
            }
            else
            {
                m_pCurrentBuildingShade.gameObject.SetActive(false);
            }

            yield return false;
        } while (!Input.GetButtonDown("Submit") || !m_pCurrentBuildingShade.CanBePlaced);

        DestroyCurrentShade();

        for (int i = 0; i < m_pBuildingsPrefabs.Count; i++)
        {
            if (m_pBuildingsPrefabs[i].m_eBuildingType == eBuildingType)
            {
                Building pNewBuilding = Instantiate<Building>(m_pBuildingsPrefabs[i]);
                pNewBuilding.transform.SetParent(transform, false);
                pNewBuilding.transform.position = tHit.point;
                break;
            }
        }

        m_bDraggingBuildingShade = false;
    }
コード例 #6
0
        private void ShowBuildingData(EBuildingType buildingType)
        {
            foreach (var building in _allBuildingsDatabase.BuildingsDatabase.Where(building =>
                                                                                   building.BuildingType == buildingType))
            {
                _currentBuilding = building;
                break;
            }

            _view.SetCost(_currentBuilding.ShowCost());
            _view.SetName(buildingType.ToString());
        }
コード例 #7
0
        private void BuyBuilding(EBuildingType buildingType)
        {
            if (_currentBuilding == null)
            {
                return;
            }
            if (!_purchaseBuildingsHandler.TryPurchaseBuilding(_cityDatabase.Model, _currentBuilding.CostResources))
            {
                return;
            }

            var build = MonoBehaviour.Instantiate(_currentBuilding.View);

            _buildingsStacker.StartPlacingBuilding(build);
        }
コード例 #8
0
ファイル: BuildingData.cs プロジェクト: Henry-T/UnityPG
	public int SlotID;			// 位置

	public static void DB_CreateBuilding(int slotId, EBuildingType type)
	{
		AVObject obj = new AVObject("Building");
		obj["UserID"] = AVUser.CurrentUser.ObjectId;
		obj["Type"] = (int)type;
		obj["Level"] = 1;
		obj["Value"] = 1;
		obj["SlotID"] = slotId;

		obj.SaveAsync().ContinueWith(t => {
			BuildingData newBuilding = new BuildingData();
			newBuilding.UserID = AVUser.CurrentUser.ObjectId;
			newBuilding.Type = type;
			newBuilding.Level = 1;
			newBuilding.Value = 1;
			newBuilding.SlotID = slotId;

			GameManager.Instance.LastCreatedBuilding = newBuilding;
			GameManager.Instance.EventQueue.Queue.Enqueue(new EventItem(){Type = EEventItemType.BuildCommandOK});
		});
	}
コード例 #9
0
        public void MakeSlot(Vector2 pos, Texture2D image, string text, EBuildingType tileType)
        {
            GameObject      go       = new GameObject();
            CSpriteRenderer sr       = new CSpriteRenderer("Slot");
            Texture2D       texture1 = SpriteContainer.Instance.Sprite["Slot"];
            Texture2D       texture2 = SpriteContainer.Instance.Sprite["Slot"];
            GUIButton       btn      = new GUIButton(sr, texture1, texture2, Color.White, Color.YellowGreen);

            go.AddComponent <CSpriteRenderer>(sr);
            go.AddComponent <GUIButton>(btn);

            sr.LayerDepth = 0.12f;
            go.MyParent   = mainGameObject;
            go.SetMyParent(mainGameObject);
            go.Transform.Scale    = new Vector2(0.5f, 0.5f) * GraphicsSetting.Instance.ScreenScale;
            go.Transform.Position = pos * GraphicsSetting.Instance.ScreenScale + go.MyParent.Transform.Position;

            SlotShowBar(new Vector2(sr.Sprite.Width / 2, sr.Sprite.Height) * go.Transform.Scale, go, text);
            ImageInSlot(new Vector2(sr.Sprite.Width, sr.Sprite.Height) * go.Transform.Scale, go, image);

            myScene.Instantiate(go);

            btn.OnClick += () => { placeTile.PickTile(tileType); };
        }
コード例 #10
0
 public void Build(int slog, EBuildingType type)
 {
 }
コード例 #11
0
ファイル: StaticBuilding.cs プロジェクト: Henry-T/TianShen
	public static bool HasGreatorLevel(EBuildingType type, int sibling, int curLevel)
	{
		return DataList.Exists(d=>d.Type == type && d.Sibling == sibling && d.Level > curLevel);
	}
コード例 #12
0
 public void SetBuildingType(EBuildingType type)
 {
     _buildingType = type;
 }
コード例 #13
0
 public void Init(BuildingData pData)
 {
     m_eBuildingType = pData.m_eBuildingType;
 }
コード例 #14
0
ファイル: StaticBuilding.cs プロジェクト: Henry-T/TianShen
	public static StaticBuildingData GetByTypeLevel(EBuildingType type, int level, int sibling)
	{
		return DataList.Find(d=>d.Type == type && d.Level == level && d.Sibling == sibling);
	}
コード例 #15
0
 public BuildingData()
     : base(EEntityType.BUILDING)
 {
     m_eBuildingType = EBuildingType.NONE;
 }
コード例 #16
0
 public BuildingData(EBuildingType eBuildingType, string pPublicName, string pAssetsName, float fHealth)
     : base(EEntityType.BUILDING, pPublicName, pAssetsName, fHealth)
 {
     m_eBuildingType = eBuildingType;
 }
コード例 #17
0
 public BuildingObject(EBuildingType _buildingType, int _hp, int _regen, ETeam _teamId, Vector2 _position) : base(_hp, _regen, _teamId, _position)
 {
     buildingType = _buildingType;
 }
コード例 #18
0
ファイル: PlayerManager.cs プロジェクト: Henry-T/TianShen
	// 网络-建造
	// 祭坛Altar不要从这里建造
	public void NetBuildNew(EBuildingType buildingType, Action callback = null)
	{
		// 检查是否达到同类上限
		int maxSibling = BuildingData.GetMaxSibling(PlayerBuildingDataList, buildingType);
			
		int nextSibling = maxSibling + 1;

		if(nextSibling > StaticBuilding.MAX_SIBLING)
		{
			Debug.LogWarning("已经超出同类建筑上限,不可再建造");
			return;
		}

		BuildingData newBuilding = new BuildingData();
		newBuilding.AVObject = new AVObject("Building");
		newBuilding.UserID = AVUser.CurrentUser.ObjectId;
		newBuilding.Type = buildingType;
		newBuilding.Level = 1;
		newBuilding.SlotID = PlayerManager.Instance.PlayerVillageData.GetEmptySlot();
		newBuilding.Sibling = nextSibling;

		// ### 在线版
		GameManager.Instance.AsyncBeginWait();
		newBuilding.AVObject.SaveAsync().ContinueWith(t => {
			// 释放异步等待
			GameManager.Instance.AsyncEndWait(()=>{
				PlayerVillageData.AddNewBuilding(newBuilding);
				SceneManager.Instance.SceneComp_Build.AddNewBuilding(newBuilding);
				UIManager.Instance.WidgetBuildingPicker.gameObject.SetActive(false);

				if(callback != null)
					callback();
			});
		});
	}
コード例 #19
0
        public GameObject Create(string type, EFaction faction, ETeam team)
        {
            EBuildingType buildingType = (EBuildingType)Enum.Parse(typeof(EBuildingType), type);

            GameObject      go       = new GameObject();
            CSpriteRenderer sr       = new CSpriteRenderer(SpriteContainer.Instance.SpriteSheet["GrayTent"]);
            CBuilding       building = new CBuilding(buildingType, faction, team);
            CStats          stats    = new CStats();

            sr.LayerDepth         = 0.3f;
            sr.OriginPositionEnum = EOriginPosition.TopLeft;
            sr.OffSet             = new Vector2(-1 * 128 / 2, -3 * 128 / 2);
            go.Transform.Scale   *= 0.5f;

            go.AddComponent <CSpriteRenderer>(sr);
            go.AddComponent <CBuilding>(building);
            go.AddComponent <CStats>(stats);

            switch (buildingType)
            {
            case EBuildingType.TownHall:
                break;

            case EBuildingType.ArcheryRange:
                break;

            case EBuildingType.Blacksmith:
                break;

            case EBuildingType.Tower:
                break;

            case EBuildingType.Barracks:
                break;

            case EBuildingType.GatheringStation:
                break;

            case EBuildingType.Field:
                sr.OffSet = new Vector2(0 * 128 / 2, 0 * 128 / 2);
                sr.SetSprite(SpriteContainer.Instance.TileSprite.Wheatfield);
                break;

            default:
                break;
            }

            if (buildingType != EBuildingType.Field)
            {
                switch (team)
                {
                case ETeam.Team01:
                    sr.Color = Color.Red;
                    break;

                case ETeam.Team02:
                    sr.Color = Color.Blue;
                    break;

                case ETeam.Team03:
                    sr.Color = Color.Green;
                    break;

                case ETeam.Team04:
                    sr.Color = Color.Yellow;
                    break;

                case ETeam.Team05:
                    break;

                case ETeam.Team06:
                    break;

                case ETeam.Team07:
                    break;

                case ETeam.Team08:
                    break;

                default:
                    break;
                }
            }

            return(go);
        }
コード例 #20
0
    private void InteractWith(EBuildingType type)
    {
        if (Globals.Instance.MTaskManager.GoToTalk(_mProperty.LogicID, delegate(){
            if (type == EBuildingType.DEFENCE_FACILITY || type == EBuildingType.MARINE_BOARD)
            {
                Globals.Instance.MTeachManager.NewBuildingClickedEvent(_mProperty.Name);
            }
        }))
        {
            return;
        }

        Globals.Instance.MTeachManager.NewBuildingClickedEvent(_mProperty.Name);

        switch (type)
        {
        case EBuildingType.TTRN:
        {
            break;
        }

        case EBuildingType.DEFENCE_FACILITY:
        {
            break;
        }

        case EBuildingType.MATERIALS_CENTRE:
        {
            int seaID = Globals.Instance.MGameDataManager.MCurrentSeaAreaData.SeaAreaID;
            NetSender.Instance.RequestShopInfo(seaID, 0);
            break;
        }

        case EBuildingType.DIRECTORATE:
        {
            int seaID = Globals.Instance.MGameDataManager.MCurrentSeaAreaData.SeaAreaID;
            NetSender.Instance.RequestGeneralGetHarborGeneral(seaID);
            break;
        }

        case EBuildingType.PLAYER_PORT:
        {
            NetSender.Instance.RequestPlayerDockInfo();
            break;
        }

        case EBuildingType.MARINE_BOARD:
        {
            string prompt = Globals.Instance.MDataTableManager.GetWordText(11030062);
            Globals.Instance.MNpcManager.ShowBuildingTips(this, prompt);
            break;
        }

        case EBuildingType.SHIPYARD:
        {
            int seaID = Globals.Instance.MGameDataManager.MCurrentSeaAreaData.SeaAreaID;
            NetSender.Instance.RequestShipBlueprintEngineerGetCdTime(seaID);
            break;
        }

        case EBuildingType.TECHNOLOGY:
        {
            long actorID = Globals.Instance.MGameDataManager.MActorData.PlayerID;
            // NetSender.Instance.RequestGirlInfoList(actorID);
            NetSender.Instance.RequestGetTechnology();
            break;
        }

        case EBuildingType.OIL_REFINERY:
        {
            string sFormat = Globals.Instance.MDataTableManager.GetWordText(11030059);
            string prompt  = string.Format(sFormat, Globals.Instance.MGameDataManager.MCurrentPortData.UserInvestData.Contribution);

            sFormat = Globals.Instance.MDataTableManager.GetWordText(11030060);
            prompt += "\n";
            prompt += GUIFontColor.White255255255 + string.Format(sFormat,
                                                                  Globals.Instance.MGameDataManager.MCurrentPortData.UserInvestData.OilOutput);
            Globals.Instance.MNpcManager.ShowBuildingTips(this, prompt);
            break;
        }

        case EBuildingType.STATUE:
        {
            break;
        }
        }
    }
コード例 #21
0
ファイル: VillageManager.cs プロジェクト: Henry-T/UnityPG
	public void Build(int slog, EBuildingType type)
	{
	}