Пример #1
0
func (frm *biomeEditFrame) getBiomeInfo() (BiomeInfo, bool) {
	id, err := strconv.ParseUint(frm.idInput.GetText(), 10, 8)
	if err != nil {
		return BiomeInfo{}, false
	}

	snow, err := strconv.ParseInt(frm.snowLineInput.GetText(), 10, 32)
	if err != nil {
		return BiomeInfo{}, false
	}
	if (snow > mcmap.ChunkSizeY) || (snow < 0) {
		snow = mcmap.ChunkSizeY
	}

	name := frm.nameInput.GetText()
	if name == "" {
		return BiomeInfo{}, false
	}

	col := frm.colorInput.GetColor()

	return BiomeInfo{
		ID:       mcmap.Biome(id),
		SnowLine: int(snow),
		Name:     name,
		Color:    fmt.Sprintf("#%02x%02x%02x", col.Red()>>8, col.Green()>>8, col.Blue()>>8),
	}, true
}
Пример #2
0
func ReadBiomeInfos(r io.Reader) ([]BiomeInfo, error) {
	var biomes []BiomeInfo

	sc := bufio.NewScanner(r)
	for i := 1; sc.Scan(); i++ {
		line := sc.Text()
		if line == "" {
			continue
		}
		parts := strings.SplitN(line, "\t", 4)

		if len(parts) != 4 {
			return nil, fmt.Errorf("Line %d corrupted: Not enough parts", i)
		}

		id, err := strconv.ParseUint(parts[0], 10, 8)
		if err != nil {
			return nil, fmt.Errorf("Line %d corrupted: %s", i, err)
		}

		snow, err := strconv.ParseInt(parts[1], 10, 32)
		if err != nil {
			return nil, fmt.Errorf("Line %d corrupted: %s", i, err)
		}
		if (snow >= mcmap.ChunkSizeY) || (snow < 0) {
			snow = mcmap.ChunkSizeY
		}

		info := BiomeInfo{
			ID:       mcmap.Biome(id),
			SnowLine: int(snow),
			Color:    parts[2],
			Name:     parts[3],
		}
		biomes = append(biomes, info)
	}

	if err := sc.Err(); err != nil {
		return nil, err
	}

	return biomes, nil
}
Пример #3
0
func (mw *MapWidget) movement(ctx *glib.CallbackContext) {
	if mw.gdkwin == nil {
		mw.gdkwin = mw.dArea.GetWindow()
	}
	arg := ctx.Args(0)
	mev := *(**gdk.EventMotion)(unsafe.Pointer(&arg))
	var mt gdk.ModifierType
	if mev.IsHint != 0 {
		mw.gdkwin.GetPointer(&(mw.mx2), &(mw.my2), &mt)
	} else {
		mw.mx2, mw.my2 = int(mev.X), int(mev.Y)
	}

	x := (mw.offX + mw.mx2) / zoom
	z := (mw.offZ + mw.my2) / zoom

	bio := mcmap.Biome(mcmap.BioUncalculated)
	if _bio, ok := mw.regWrap.GetBiomeAt(x, z); ok {
		bio = _bio
	}
	mw.guicbs.updateInfo(x, z, bio, mw.bioLookup.Name(bio))

	if mw.panning {
		if (mw.mx1 != -1) && (mw.my1 != -1) {
			mw.offX += mw.mx1 - mw.mx2
			mw.offZ += mw.my1 - mw.my2

			mw.updateGUI()
		}
	}

	if mw.continueTool {
		mw.regWrap.UseTool(x, z)

		mw.updateGUI()
	}

	mw.mx1, mw.my1 = mw.mx2, mw.my2
}