Created a working crafting GUI
This commit is contained in:
parent
505a09a4ff
commit
6e69fe2fcd
|
|
@ -116,6 +116,7 @@ public class Models
|
||||||
public static final ModelGui UI_TEMPERATURE = new ModelGui(Resources.ATLAS.get("/gui/temperature.png"), new Vec2d(0.75, 0.75));
|
public static final ModelGui UI_TEMPERATURE = new ModelGui(Resources.ATLAS.get("/gui/temperature.png"), new Vec2d(0.75, 0.75));
|
||||||
public static final ModelGui UI_WATER = new ModelGui(Resources.ATLAS.get("/gui/water.png"), new Vec2d(0.75, 0.75));
|
public static final ModelGui UI_WATER = new ModelGui(Resources.ATLAS.get("/gui/water.png"), new Vec2d(0.75, 0.75));
|
||||||
public static final ModelGui UI_ITEM_HOVER = new ModelGui(Resources.ATLAS.get("/gui/pixel_black.png")).setOpacity(0.25);
|
public static final ModelGui UI_ITEM_HOVER = new ModelGui(Resources.ATLAS.get("/gui/pixel_black.png")).setOpacity(0.25);
|
||||||
|
public static final ModelGui UI_TEXT_BG = new ModelGui(Resources.ATLAS.get("/gui/pixel_white.png")).setColor(0.5f, 0.5f, 0.5f);
|
||||||
|
|
||||||
public static final ModelItem UI_SLOT_ARMOR_HELMET = new ModelItem(Resources.ATLAS.get("/gui/slot_armor_helmet.png"));
|
public static final ModelItem UI_SLOT_ARMOR_HELMET = new ModelItem(Resources.ATLAS.get("/gui/slot_armor_helmet.png"));
|
||||||
public static final ModelItem UI_SLOT_ARMOR_CHEST = new ModelItem(Resources.ATLAS.get("/gui/slot_armor_chest.png"));
|
public static final ModelItem UI_SLOT_ARMOR_CHEST = new ModelItem(Resources.ATLAS.get("/gui/slot_armor_chest.png"));
|
||||||
|
|
|
||||||
|
|
@ -4,10 +4,11 @@ import projectzombie.inventory.Inventory;
|
||||||
import projectzombie.inventory.Crafting;
|
import projectzombie.inventory.Crafting;
|
||||||
import projectzombie.util.math.ItemStack;
|
import projectzombie.util.math.ItemStack;
|
||||||
|
|
||||||
public abstract class Recipe
|
public interface Recipe
|
||||||
{
|
{
|
||||||
public abstract ItemStack getResult();
|
public ItemStack getResult();
|
||||||
public abstract boolean canCraft(Crafting tool);
|
public boolean canCraft(Crafting tool);
|
||||||
public abstract boolean hasResourcesToCraft(Inventory inventory);
|
public boolean hasResourcesToCraft(Inventory inventory);
|
||||||
public abstract ItemStack craftResult(Inventory inventory);
|
public ItemStack craftResult(Inventory inventory);
|
||||||
|
public ItemStack[] getIngredients();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@ import projectzombie.inventory.Crafting;
|
||||||
import projectzombie.inventory.Inventory;
|
import projectzombie.inventory.Inventory;
|
||||||
import projectzombie.util.math.ItemStack;
|
import projectzombie.util.math.ItemStack;
|
||||||
|
|
||||||
public class RecipeBasic extends Recipe
|
public class RecipeBasic implements Recipe
|
||||||
{
|
{
|
||||||
protected ItemStack[] stacks_required;
|
protected ItemStack[] stacks_required;
|
||||||
protected Crafting[] tools_required;
|
protected Crafting[] tools_required;
|
||||||
|
|
@ -55,4 +55,9 @@ public class RecipeBasic extends Recipe
|
||||||
|
|
||||||
return result.copy();
|
return result.copy();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ItemStack[] getIngredients() {
|
||||||
|
return stacks_required;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -19,13 +19,10 @@ public class MenuInventoryBasic extends MenuInventory
|
||||||
{
|
{
|
||||||
private GUIContainerSlider slider;
|
private GUIContainerSlider slider;
|
||||||
private Inventory inventory;
|
private Inventory inventory;
|
||||||
private Crafting tool;
|
|
||||||
|
|
||||||
public MenuInventoryBasic(Menu parent, Crafting tool) {
|
public MenuInventoryBasic(Menu parent, Crafting tool) {
|
||||||
super(parent);
|
super(parent);
|
||||||
|
|
||||||
this.tool = tool;
|
|
||||||
|
|
||||||
Recipe[] recipies = Recipies.getCraftableRecipies(tool);
|
Recipe[] recipies = Recipies.getCraftableRecipies(tool);
|
||||||
inventory = Main.player.getInventory();
|
inventory = Main.player.getInventory();
|
||||||
|
|
||||||
|
|
@ -39,7 +36,9 @@ public class MenuInventoryBasic extends MenuInventory
|
||||||
{
|
{
|
||||||
Recipe recipe = recipies[i];
|
Recipe recipe = recipies[i];
|
||||||
|
|
||||||
GUIRecipeCard slot = new GUIRecipeCard(inventory, slider, recipe, tool, new Vec2d(0, i*1.5));
|
GUIRecipeCard slot = new GUIRecipeCard(inventory, slider, recipe, tool, new Vec2d(0,
|
||||||
|
Models.UI_SELECTION_BOX_BIG.getHeight() / 2 -
|
||||||
|
(i + 1) * Models.UI_LABEL_RECIPE.getHeight() * 36 / 34.0));
|
||||||
|
|
||||||
|
|
||||||
slider.add(slot);
|
slider.add(slot);
|
||||||
|
|
|
||||||
|
|
@ -5,6 +5,7 @@ import gl_engine.vec.Vec2d;
|
||||||
import gl_engine.vec.Vec3d;
|
import gl_engine.vec.Vec3d;
|
||||||
import projectzombie.Main;
|
import projectzombie.Main;
|
||||||
import projectzombie.entity.EntityItem;
|
import projectzombie.entity.EntityItem;
|
||||||
|
import projectzombie.init.Models;
|
||||||
import projectzombie.model.Model;
|
import projectzombie.model.Model;
|
||||||
import projectzombie.text.Text;
|
import projectzombie.text.Text;
|
||||||
import projectzombie.util.math.ItemStack;
|
import projectzombie.util.math.ItemStack;
|
||||||
|
|
@ -23,22 +24,58 @@ public class GUIItemHolder implements GUIComponent
|
||||||
@Override
|
@Override
|
||||||
public void render(Matrix4 matrix, Vec2d mousePos, boolean canHover)
|
public void render(Matrix4 matrix, Vec2d mousePos, boolean canHover)
|
||||||
{
|
{
|
||||||
|
matrix = Matrix4.translate(mousePos.x, mousePos.y, 0);
|
||||||
|
|
||||||
if(!holding.isEmpty())
|
if(!holding.isEmpty())
|
||||||
{
|
{
|
||||||
Model model = holding.item.getModel(holding.meta).getGuiModel();
|
Matrix4 holding_matrix = Matrix4.multiply(matrix, Matrix4.translate(-0.425, -0.425, 0));
|
||||||
matrix = Matrix4.multiply(Matrix4.translate(mousePos.x - 0.425, mousePos.y - 0.425, 0), matrix);
|
|
||||||
|
|
||||||
model.setModel(matrix);
|
Model model = holding.item.getModel(holding.meta).getGuiModel();
|
||||||
|
|
||||||
|
model.setModel(holding_matrix);
|
||||||
model.render();
|
model.render();
|
||||||
|
|
||||||
if(holding.count > 1)
|
if(holding.count > 1)
|
||||||
{
|
{
|
||||||
Matrix4 text_matrix = Matrix4.multiply(matrix, Matrix4.translate(-0.75 / 4, -0.75 / 4, 0));
|
Matrix4 text_matrix = Matrix4.multiply(holding_matrix, Matrix4.translate(-0.75 / 4, -0.75 / 4, 0));
|
||||||
text_matrix = Matrix4.multiply(Matrix4.scale(new Vec3d(0.4, 0.4, 0.4)), text_matrix);
|
text_matrix = Matrix4.multiply(Matrix4.scale(new Vec3d(0.4, 0.4, 0.4)), text_matrix);
|
||||||
|
|
||||||
Text.render("" + holding.count, text_matrix);
|
Text.render("" + holding.count, text_matrix);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(hover != null || !holding.isEmpty())
|
||||||
|
{
|
||||||
|
ItemStack stack;
|
||||||
|
|
||||||
|
if(!holding.isEmpty()) {
|
||||||
|
stack = holding;
|
||||||
|
} else {
|
||||||
|
stack = hover.getItemStack();
|
||||||
|
}
|
||||||
|
|
||||||
|
if(!stack.isEmpty())
|
||||||
|
{
|
||||||
|
String name = stack.item.getName(stack.meta);
|
||||||
|
|
||||||
|
Matrix4 container_matrix = matrix;
|
||||||
|
|
||||||
|
container_matrix = Matrix4.multiply(container_matrix, Matrix4.translate(
|
||||||
|
-0.4 * name.length() / 2, -1, 0));
|
||||||
|
|
||||||
|
Matrix4 text_matrix = container_matrix;
|
||||||
|
|
||||||
|
text_matrix = Matrix4.multiply(Matrix4.scale(new Vec3d(0.4, 0.4, 0.4)), text_matrix);
|
||||||
|
container_matrix = Matrix4.multiply(container_matrix, Matrix4.translate(-0.2, -0.2, 0));
|
||||||
|
container_matrix = Matrix4.multiply(Matrix4.scale(new Vec3d(
|
||||||
|
(0.4 * (name.length() + 1)), 0.8, 0)), container_matrix);
|
||||||
|
|
||||||
|
Models.UI_TEXT_BG.setModel(container_matrix);
|
||||||
|
Models.UI_TEXT_BG.render();
|
||||||
|
|
||||||
|
Text.render(name, text_matrix);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
@ -73,7 +110,7 @@ public class GUIItemHolder implements GUIComponent
|
||||||
public void onRightClick(Vec2d pos)
|
public void onRightClick(Vec2d pos)
|
||||||
{
|
{
|
||||||
// Drop part of the holding item if the hover item doesn't exist
|
// Drop part of the holding item if the hover item doesn't exist
|
||||||
if(hover == null)
|
if(hover == null || this.hover.getter.isReadOnly())
|
||||||
{
|
{
|
||||||
if(!holding.isEmpty())
|
if(!holding.isEmpty())
|
||||||
{
|
{
|
||||||
|
|
@ -141,7 +178,7 @@ public class GUIItemHolder implements GUIComponent
|
||||||
public void onMouseClick(Vec2d pos)
|
public void onMouseClick(Vec2d pos)
|
||||||
{
|
{
|
||||||
// Drop the holding item if the hover item doesn't exist
|
// Drop the holding item if the hover item doesn't exist
|
||||||
if(hover == null)
|
if(hover == null || this.hover.getter.isReadOnly())
|
||||||
{
|
{
|
||||||
if(!holding.isEmpty())
|
if(!holding.isEmpty())
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -27,6 +27,10 @@ public class GUIItemSlot implements GUIComponent
|
||||||
this.pos = pos;
|
this.pos = pos;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Vec2d getPos() {
|
||||||
|
return pos;
|
||||||
|
}
|
||||||
|
|
||||||
public boolean isItemAllowed(ItemStack stack) {
|
public boolean isItemAllowed(ItemStack stack) {
|
||||||
return getter.isAllowed(stack);
|
return getter.isAllowed(stack);
|
||||||
}
|
}
|
||||||
|
|
@ -61,7 +65,7 @@ public class GUIItemSlot implements GUIComponent
|
||||||
model.render();
|
model.render();
|
||||||
}
|
}
|
||||||
|
|
||||||
if(checkMouseHover(mousePos) && canHover)
|
if(!getter.isReadOnly() && checkMouseHover(mousePos) && canHover)
|
||||||
{
|
{
|
||||||
double offset = (0.85 - hitboxSize) / 2;
|
double offset = (0.85 - hitboxSize) / 2;
|
||||||
Matrix4 hover_matrix = Matrix4.multiply(matrix, Matrix4.translate(offset, offset, 0));
|
Matrix4 hover_matrix = Matrix4.multiply(matrix, Matrix4.translate(offset, offset, 0));
|
||||||
|
|
|
||||||
|
|
@ -14,4 +14,8 @@ public interface GUIItemSlotGetter {
|
||||||
public default boolean mustTakeAll() {
|
public default boolean mustTakeAll() {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public default boolean isReadOnly() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,7 @@ import projectzombie.inventory.recipe.Recipe;
|
||||||
import projectzombie.model.ModelGui;
|
import projectzombie.model.ModelGui;
|
||||||
import projectzombie.util.math.ItemStack;
|
import projectzombie.util.math.ItemStack;
|
||||||
|
|
||||||
public class GUIRecipeCard implements GUIContainer, GUIItemSlotGetter
|
public class GUIRecipeCard implements GUIContainer
|
||||||
{
|
{
|
||||||
private static final ModelGui LABEL = Models.UI_LABEL_RECIPE;
|
private static final ModelGui LABEL = Models.UI_LABEL_RECIPE;
|
||||||
|
|
||||||
|
|
@ -17,6 +17,7 @@ public class GUIRecipeCard implements GUIContainer, GUIItemSlotGetter
|
||||||
private Recipe recipe;
|
private Recipe recipe;
|
||||||
private GUIContainer gui;
|
private GUIContainer gui;
|
||||||
private GUIItemSlot result_slot;
|
private GUIItemSlot result_slot;
|
||||||
|
private GUIItemSlot[] ingredients;
|
||||||
private Inventory inventory;
|
private Inventory inventory;
|
||||||
private Crafting tool;
|
private Crafting tool;
|
||||||
|
|
||||||
|
|
@ -28,10 +29,77 @@ public class GUIRecipeCard implements GUIContainer, GUIItemSlotGetter
|
||||||
this.inventory = inventory;
|
this.inventory = inventory;
|
||||||
this.tool = tool;
|
this.tool = tool;
|
||||||
|
|
||||||
result_slot = new GUIItemSlot(1.5, true, this);
|
result_slot = new GUIItemSlot(1.5, true, new GUIItemSlotGetter()
|
||||||
|
{
|
||||||
|
@Override
|
||||||
|
public void setItemStack(ItemStack stack) {
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isAllowed(ItemStack stack) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ItemStack getItemStack() {
|
||||||
|
return (recipe.canCraft(tool) &&
|
||||||
|
recipe.hasResourcesToCraft(inventory)) ?
|
||||||
|
recipe.getResult().copy() :
|
||||||
|
ItemStack.getEmpty();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean mustTakeAll() {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onRemoveItemStack() {
|
||||||
|
if(recipe.canCraft(tool) && recipe.hasResourcesToCraft(inventory)) {
|
||||||
|
recipe.craftResult(inventory);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
result_slot.setPos(pos.add(new Vec2d(
|
result_slot.setPos(pos.add(new Vec2d(
|
||||||
Models.UI_LABEL_RECIPE.getWidth() * 102 / 128.0,
|
Models.UI_LABEL_RECIPE.getWidth() * 103 / 128.0 + 0.25,
|
||||||
Models.UI_LABEL_RECIPE.getHeight() * 8 / 32.0)));
|
Models.UI_LABEL_RECIPE.getHeight() * 9 / 32.0 + 0.25)));
|
||||||
|
|
||||||
|
ItemStack[] ingredients = recipe.getIngredients();
|
||||||
|
this.ingredients = new GUIItemSlot[ingredients.length];
|
||||||
|
|
||||||
|
for(int i=0;i<ingredients.length;i++)
|
||||||
|
{
|
||||||
|
ItemStack ingredient = ingredients[i];
|
||||||
|
|
||||||
|
GUIItemSlot ingredientDisplay = new GUIItemSlot(1, true, new GUIItemSlotGetter()
|
||||||
|
{
|
||||||
|
@Override
|
||||||
|
public void setItemStack(ItemStack stack) {
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isAllowed(ItemStack stack) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ItemStack getItemStack() {
|
||||||
|
return ingredient.copy();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isReadOnly() {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
ingredientDisplay.setPos(pos.add(new Vec2d(
|
||||||
|
Models.UI_LABEL_RECIPE.getWidth() * (27 + 16 * i) / 128.0 + 0.25,
|
||||||
|
Models.UI_LABEL_RECIPE.getHeight() * 9 / 32.0 + 0.25)));
|
||||||
|
|
||||||
|
this.ingredients[i] = ingredientDisplay;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
@ -40,18 +108,29 @@ public class GUIRecipeCard implements GUIContainer, GUIItemSlotGetter
|
||||||
LABEL.setModel(Matrix4.multiply(matrix, Matrix4.translate(pos.x, pos.y, 0)));
|
LABEL.setModel(Matrix4.multiply(matrix, Matrix4.translate(pos.x, pos.y, 0)));
|
||||||
LABEL.render();
|
LABEL.render();
|
||||||
|
|
||||||
result_slot.render(matrix, mousePos, canHover);
|
for(GUIComponent c : allComponents()) {
|
||||||
|
c.render(matrix, mousePos, canHover);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private GUIComponent[] allComponents() {
|
private GUIComponent[] allComponents()
|
||||||
return new GUIComponent[] {
|
{
|
||||||
result_slot
|
GUIComponent[] components = new GUIComponent[ingredients.length + 1];
|
||||||
};
|
|
||||||
|
components[0] = result_slot;
|
||||||
|
|
||||||
|
for(int i=0;i<ingredients.length;i++) {
|
||||||
|
components[i+1] = ingredients[i];
|
||||||
|
}
|
||||||
|
|
||||||
|
return components;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void update(Vec2d mousePos) {
|
public void update(Vec2d mousePos) {
|
||||||
|
for(GUIComponent c : allComponents()) {
|
||||||
|
c.update(mousePos);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
@ -103,7 +182,7 @@ public class GUIRecipeCard implements GUIContainer, GUIItemSlotGetter
|
||||||
public GUIItemSlot getHoveringItemSlot(Vec2d mousePos)
|
public GUIItemSlot getHoveringItemSlot(Vec2d mousePos)
|
||||||
{
|
{
|
||||||
for(GUIComponent c : allComponents()) {
|
for(GUIComponent c : allComponents()) {
|
||||||
if(c instanceof GUIItemSlot) {
|
if(c.checkMouseHover(mousePos) && c instanceof GUIItemSlot) {
|
||||||
return (GUIItemSlot)c;
|
return (GUIItemSlot)c;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -121,33 +200,6 @@ public class GUIRecipeCard implements GUIContainer, GUIItemSlotGetter
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void setItemStack(ItemStack stack) {
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean isAllowed(ItemStack stack) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public ItemStack getItemStack() {
|
|
||||||
return (recipe.canCraft(tool) &&
|
|
||||||
recipe.hasResourcesToCraft(inventory)) ?
|
|
||||||
recipe.getResult().copy() :
|
|
||||||
ItemStack.getEmpty();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean mustTakeAll() {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onRemoveItemStack() {
|
|
||||||
if(recipe.canCraft(tool) && recipe.hasResourcesToCraft(inventory)) {
|
|
||||||
recipe.craftResult(inventory);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -5,6 +5,7 @@ import gl_engine.vec.Vec2d;
|
||||||
|
|
||||||
public class ModelGui extends Model
|
public class ModelGui extends Model
|
||||||
{
|
{
|
||||||
|
private int color, flags;
|
||||||
private int animationSize;
|
private int animationSize;
|
||||||
private int animationSpeed;
|
private int animationSpeed;
|
||||||
private double width, height;
|
private double width, height;
|
||||||
|
|
@ -19,6 +20,8 @@ public class ModelGui extends Model
|
||||||
|
|
||||||
this.animationSize = animationSize;
|
this.animationSize = animationSize;
|
||||||
this.animationSpeed = animationSpeed;
|
this.animationSpeed = animationSpeed;
|
||||||
|
|
||||||
|
flags = 0b10000;
|
||||||
}
|
}
|
||||||
|
|
||||||
public ModelGui(TextureRef3D tex, int animationSize, int animationSpeed) {
|
public ModelGui(TextureRef3D tex, int animationSize, int animationSpeed) {
|
||||||
|
|
@ -38,6 +41,12 @@ public class ModelGui extends Model
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public ModelGui setColor(float r, float g, float b) {
|
||||||
|
color = (int)(r * 63) + ((int)(g * 63) << 6) + ((int)(b * 63) << 12);
|
||||||
|
flags |= 0b10;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getSize() {
|
public int getSize() {
|
||||||
return 4;
|
return 4;
|
||||||
|
|
@ -57,10 +66,10 @@ public class ModelGui extends Model
|
||||||
height = y;
|
height = y;
|
||||||
|
|
||||||
return new float[] {
|
return new float[] {
|
||||||
0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, asi, asp, o, 0, 0b10000,
|
0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, asi, asp, o, color, flags,
|
||||||
x, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, asi, asp, o, 0, 0b10000,
|
x, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, asi, asp, o, color, flags,
|
||||||
x, y, 0, 1, 1, 0, 0, 1, 0, 0, 0, asi, asp, o, 0, 0b10000,
|
x, y, 0, 1, 1, 0, 0, 1, 0, 0, 0, asi, asp, o, color, flags,
|
||||||
0, y, 0, 0, 1, 0, 0, 1, 0, 0, 0, asi, asp, o, 0, 0b10000,
|
0, y, 0, 0, 1, 0, 0, 1, 0, 0, 0, asi, asp, o, color, flags,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Binary file not shown.
|
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 11 KiB |
Loading…
Reference in New Issue