コード例 #1
0
ファイル: core.go プロジェクト: ayatk/MinecraftRecipeMaker
// レシピのそれぞれの画像出力
func makeImg(recipe recipeReader.Recipe, cfg *cfgReader.Config, layer image.Image) {
	layerImg := edit.Copy(&layer)
	place := cfg.Place

	for i, item := range recipe.Shape {
		if item != "" {
			//アイテムのロード
			imgPath := "assets/" + recipe.Img[item] + ".png"
			img := load.Load(imgPath)
			if isBlock(imgPath) {
				img = edit.Cube(&img)
				img = edit.Resize(&img, 16, 16)
			}
			//アイテムを貼り付け
			edit.PasteArrOffset(&layerImg, place[i], cfg.Trim[0], &img)
		}
	}
	//出力個数を出力
	shape := recipe.Shape
	if recipe.Number != 0 && recipe.Number != 1 {
		edit.PasteNumberArrOffset(&layerImg, recipe.Number, place[len(shape)-1], cfg.Trim[0])
	}

	//作成されるものの名前.pngで出力
	output.Output("output/"+recipe.Img[shape[len(shape)-1]]+".png", &layerImg)

	fmt.Println("Outputed:", recipe.Img[shape[len(shape)-1]])

	defer waitGroup.Done() //完了をwaitGroupに知らせる
	return
}
コード例 #2
0
ファイル: core.go プロジェクト: ayatk/MinecraftRecipeMaker
// クラフト別処理
func readTypes(recipeType *recipeReader.RecipeType) {
	// 対応config読み込み(読み込み済みでない場合ファイルロード)
	config, ok := configs[recipeType.Type]
	if !ok {
		config = cfgReader.Read(recipeType.Type)
		configs[recipeType.Type] = config
	}
	// 対応画像読み込み(読み込み済みでない場合ファイルロード)
	layer, ok := layerImgs[recipeType.Type]
	if !ok {
		layer = load.Load("cfg/" + config.Gui)
		if config.Override != nil {
			for _, override := range config.Override {
				edit.OverrideCfg(&layer, &override)
			}
		}
		layer = edit.TrimArr(&layer, config.Trim)
		layerImgs[recipeType.Type] = layer
	}

	for _, recipe := range recipeType.Recipes {
		waitGroup.Add(1) //処理をカウント
		go makeImg(recipe, &config, layer)
	}
	return
}
コード例 #3
0
ファイル: number.go プロジェクト: ayatk/MinecraftRecipeMaker
func loadImg() {
	numberImg = load.Load("assets/number/ascii.png")
}