Пример #1
0
        public override Image ReadRegion(LevelSize location, int level, LevelSize size)
        {
            if (level < 0)
            {
                throw new OpenSlideException("Invalid level");
            }
            if (size.Width < 0 || size.Height < 0)
            {
                throw new OpenSlideException($"Size {size} must be non-negative");
            }

            var bmp     = new Bitmap((int)size.Width, (int)size.Height);
            var bmpData = bmp.LockBits(new Rectangle(0, 0, bmp.Width, bmp.Height), ImageLockMode.ReadWrite,
                                       PixelFormat.Format32bppArgb);

            var bmpPtr = bmpData.Scan0.ToPointer();

            CheckDisposed();
            OpenSlideDll.openslide_read_region(osr, bmpPtr, location.Width, location.Height, level, size.Width, size.Height);
            if (bmpPtr == null)
            {
                throw new OpenSlideException($"error reading region location:{location}, level:{level}, size:{size}");
            }

            bmp.UnlockBits(bmpData);

            CheckError();
            return(bmp);
        }
Пример #2
0
    void Spawn(Entity entity, BotSpawn botSpawnFromEntity, LevelSize levelSize)
    {
        Random rand = new Random((uint)System.DateTime.Now.ToBinary());
        float  maxX = levelSize.X / 2;
        float  minX = -maxX;
        float  maxY = levelSize.Y / 2;
        float  minY = -maxY;

        for (var i = 0; i < botSpawnFromEntity.Count; ++i)
        {
            var position = new float3(rand.NextFloat(minX, maxX), 0, rand.NextFloat(minY, maxY));
            // Create our new Bot entity
            var instance = EntityManager.Instantiate(botSpawnFromEntity.Prefab);
            // Set correct bot location
            EntityManager.SetComponentData(instance, new Translation {
                Value = position
            });
            EntityManager.AddComponent(instance, typeof(BotTag));
            EntityManager.AddComponentData(instance, new CollisionSize {
                Value = botSpawnFromEntity.CollisionSize
            });
            EntityManager.AddComponentData(instance, new BotSpeed {
                Value = new float2(rand.NextFloat(botSpawnFromEntity.MinSpeed, botSpawnFromEntity.MaxSpeed), rand.NextFloat(botSpawnFromEntity.MinSpeed, botSpawnFromEntity.MaxSpeed))
            });
        }

        EntityManager.DestroyEntity(entity);
    }
Пример #3
0
    public override void OnInspectorGUI()
    {
        DrawDefaultInspector();

        LevelSize levelSize = (LevelSize)target;

        if (GUILayout.Button("Resize Level"))
        {
            levelSize.SetLevelSize();
        }
    }
Пример #4
0
        public override Image GetThumbnail(LevelSize size)
        {
            var downsample    = Math.Max(Dimensions.Width / size.Width, Dimensions.Height / size.Height);
            var level         = GetBestLevelForDownsample(downsample);
            var thumbnailSize = LevelDimensions[level];

            var thumbnail = ReadRegion(new LevelSize(0, 0), level, thumbnailSize);

            if (size.Equals(thumbnailSize))
            {
                return(thumbnail);
            }

            var thumbSize = thumbnail.GetProportionateResize(size.ToSize());
            var callback  = new Image.GetThumbnailImageAbort(ThumbnailCallback);
            var thumb     = thumbnail.GetThumbnailImage(thumbSize.Width, thumbSize.Height, callback, new IntPtr());

            return(thumb);
        }
Пример #5
0
    void Spawn(Entity entity, PlayerSpawn playerSpawn, LevelSize levelSize)
    {
        Random rand = new Random((uint)System.DateTime.Now.ToBinary());
        float  maxX = levelSize.X / 2;
        float  minX = -maxX;
        float  maxY = levelSize.Y / 2;
        float  minY = -maxY;

        var position = new float3(rand.NextFloat(minX, maxX), 0, rand.NextFloat(minY, maxY));
        // Create our new player entity
        var instance = EntityManager.Instantiate(playerSpawn.Prefab);

        // Set correct player location
        EntityManager.SetComponentData(instance, new Translation {
            Value = position
        });
        // Add player component tag
        EntityManager.AddComponent(instance, typeof(PlayerTag));

        EntityManager.DestroyEntity(entity);
    }
        public void Open(
            RenderTarget2D preview,
            string filePath,
            ulong workshopID   = 0,
            LevelType levType  = LevelType.Deathmatch,
            LevelSize levSize  = LevelSize.Ginormous,
            string[] extraTags = null)
        {
            this._currentItem = (WorkshopItem)null;
            Texture2D texture2D = new Texture2D(DuckGame.Graphics.device, preview.width, preview.height);

            Color[] data = new Color[preview.width * preview.height];
            preview.GetData <Color>(data);
            texture2D.SetData <Color>(data);
            this._levelType        = levType;
            this._levelSize        = levSize;
            this._addDeathmatchTag = false;
            this._addMachineTag    = false;
            Editor.lockInput       = (ContextMenu)this;
            SFX.Play("openClick", 0.4f);
            this.opened         = true;
            this._previewTarget = new Sprite((Tex2D)texture2D);
            this._filePath      = filePath;
            this._workshopID    = workshopID;
            if (this._workshopID != 0UL)
            {
                this._currentItem = new WorkshopItem(workshopID);
            }
            if (Editor.workshopName == null || Editor.workshopName == "")
            {
                Editor.workshopName = Path.GetFileNameWithoutExtension(filePath);
            }
            this._nameBox.text        = Editor.workshopName;
            this._descriptionBox.text = Editor.workshopDescription;
            this._workshopTag         = new SpriteMap("workshopTag", 4, 8);
            this._workshopTagMiddle   = new Sprite("workshopTagMiddle");
            this._tagPlus             = new Sprite("tagPlus");
            this._extraTags           = extraTags;
            this._arcadeTestIndex     = 0;
        }
Пример #7
0
    // Use this for initialization
    void Start()
    {
        LevelSize lSize = GameObject.FindGameObjectWithTag("LevelSize").GetComponent <LevelSize>();

        gridXSize = lSize.x - 1;
        gridYSize = lSize.y - 1;

        Company.ResetCompany();

        gameOver = false;
        gameOverPanel.SetActive(false);

        BuildingPanel.SetActive(false);
        slotPanel.SetActive(false);

        powerMeter.maxValue = (float)Company.powerLeft;
        powerMeter.value    = (float)Company.powerLeft;

        buildingArray        = new Building[gridXSize + 1, gridYSize + 1];
        buildingSpecialArray = new BuildingSpecial[gridXSize + 1, gridYSize + 1];
        GetSlots();
        PlaceGrids();
        PlaceCompanyOffice();
    }