Пример #1
0
        protected virtual void NetFuncBuild(short itemIndex, Vector3 position, Quaternion rotation, PackedUInt parentObjectId)
        {
            if (!CanDoActions() ||
                itemIndex >= NonEquipItems.Count)
            {
                return;
            }

            BuildingEntity buildingEntity;
            CharacterItem  nonEquipItem = NonEquipItems[itemIndex];

            if (!nonEquipItem.NotEmptySlot() ||
                nonEquipItem.GetBuildingItem() == null ||
                nonEquipItem.GetBuildingItem().buildingEntity == null ||
                !GameInstance.BuildingEntities.TryGetValue(nonEquipItem.GetBuildingItem().buildingEntity.DataId, out buildingEntity) ||
                !this.DecreaseItemsByIndex(itemIndex, 1))
            {
                return;
            }

            BuildingSaveData buildingSaveData = new BuildingSaveData();

            buildingSaveData.Id       = GenericUtils.GetUniqueId();
            buildingSaveData.ParentId = string.Empty;
            BuildingEntity parentBuildingEntity;

            if (TryGetEntityByObjectId(parentObjectId, out parentBuildingEntity))
            {
                buildingSaveData.ParentId = parentBuildingEntity.Id;
            }
            buildingSaveData.DataId      = buildingEntity.DataId;
            buildingSaveData.CurrentHp   = buildingEntity.maxHp;
            buildingSaveData.Position    = position;
            buildingSaveData.Rotation    = rotation;
            buildingSaveData.CreatorId   = Id;
            buildingSaveData.CreatorName = CharacterName;
            gameManager.CreateBuildingEntity(buildingSaveData, false);
        }