flagbot.java

来自「一个JAVA程序员的游戏」· Java 代码 · 共 142 行

JAVA
142
字号
/*
 * FlagBot.java
 *
 * Created on 4. Januar 2007, 21:48
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */

package kanjitori.graphics.bot;

import com.jme.bounding.BoundingBox;
import com.jme.image.Texture;
import com.jme.math.Vector3f;
import com.jme.renderer.ColorRGBA;
import com.jme.scene.Controller;
import com.jme.scene.Node;
import com.jme.scene.shape.Box;
import com.jme.scene.state.AlphaState;
import com.jme.scene.state.CullState;
import com.jme.scene.state.MaterialState;
import com.jme.scene.state.RenderState;
import com.jme.scene.state.TextureState;
import com.jme.util.TextureManager;
import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.image.BufferedImage;
import javax.swing.ImageIcon;
import kanjitori.graphics.shape.RoundedBox;

/**
 *
 * @author Pirx
 */
public class FlagBot extends AbstractBoxBot implements Bot {
    
    private final static Image CORPUS_IMAGE = new ImageIcon("data/corpus.png").getImage();
    
    //private final static Color DARK_COLOR = new Color(0.2f, 0.2f, 0.2f);
    //private final static ColorRGBA MAT_COLOR = new ColorRGBA(1, 1, 1, 0);
    
    //private MaterialState ms;
    
    /** Creates a new instance of Bot */
    public FlagBot(String value) {
        super(value);
        //node = new Node("bot");
        //initBot();
    }
    
    /*private void initBot() {
        Image img = getFlagImage("data/flags/" + value);
        
        TextureState ts = display().getRenderer().createTextureState();
        Texture t = TextureManager.loadTexture(img, Texture.MM_LINEAR, Texture.MM_LINEAR, ts.getMaxAnisotropic(), true);
        //t.setWrap(Texture.WM_WRAP_S_WRAP_T);
        //t.setScale(new Vector3f(1,-1,-1));
        ts.setTexture(t);
        
        RoundedBox box = new RoundedBox("bot",
                new Vector3f(0.5f, 0.5f, 0.5f),
                new Vector3f(0.05f, 0.05f, 0.05f),
                new Vector3f(0.02f, 0.02f, 0.02f));
        Box box = new Box("bot", new Vector3f(-0.5f, -0.5f, -0.5f), new Vector3f(0.5f, 0.5f, 0.5f));
        ms = getMaterialState(MAT_COLOR);
        box.setRenderState(ms);
        box.setRenderState(ts);
        CullState cs = display().getRenderer().createCullState();
        cs.setEnabled(true);
        cs.setCullMode(CullState.CS_BACK);
        box.setRenderState(cs);
        box.updateRenderState();
        box.setModelBound(new BoundingBox());
        box.updateModelBound();
        node.attachChild(box);
    }*/
    
    Image getImage(String fileName) {
        
        BufferedImage bi = new BufferedImage(256, 256,BufferedImage.TYPE_INT_RGB);
        Graphics2D bg = (Graphics2D) bi.getGraphics();
        bg.drawImage(CORPUS_IMAGE, 0, 0, null);
        
        Image flag = new ImageIcon("data/flags/" + fileName).getImage();
        //assumes that a flag is already scaled to width = 200, height <= 200
        int x = 28;
        int y = (256 - flag.getHeight(null)) / 2;
        bg.drawImage(flag, x, y, null);
        bg.dispose();
        return bi;
    }    
    
   /* public void die() {
        Vector3f position = node.getLocalTranslation();
        Node rootNode = node.getParent();
        killSound();
        
        FadeInOut f = new FadeInOut("bla", (Geometry) this.getNode().getChild(0) ,this.getNode(), null, ColorRGBA.white);
        final FadeInOutController fioc = new FadeInOutController(f);
        fioc.setRepeatType(Controller.RT_CLAMP);
        fioc.setMinTime(0);
        fioc.setMaxTime(2);
        fioc.setSpeed(5000);
        fioc.setActive(true);*/
        
        /*final SpatialTransformer st = new SpatialTransformer(1);
        st.setObject(node, 0, -1);
        st.setRepeatType(Controller.RT_CLAMP);
        node.addController(st);
        st.setScale(0, 0, new Vector3f(1, 1, 1));
        st.setScale(0, 0.33f, new Vector3f(0.8f, 0.2f, 0.8f));
        st.setScale(0, 0.67f, new Vector3f(0.2f, 0.2f, 0.2f));
        st.setScale(0, 1, new Vector3f(0, 0, 0));
        st.setPosition(0, 0, node.getLocalTranslation());
        st.setPosition(0, 1, new Vector3f(node.getLocalTranslation().x, -1, node.getLocalTranslation().z));
        st.setNewAnimationTimes(0, 1);
        st.setCurTime(0);
        st.interpolateMissing();
        
        
        node.getChild(0).setRenderState(getTransparence());  
        node.setRenderQueueMode(display().getRenderer().QUEUE_TRANSPARENT);
        node.updateRenderState();
                
        node.addController(new Controller() {
            private float time = 0;
            public void update(float f) {
                time += f;
                ms.getDiffuse().a = (2 - time) / 2;
                if (time > 2) {
                    node.removeController(this);
                    //node.removeController(fioc);
                    remove();
                    cleanTexture(node);
                }
            }
        });
    }*/
    
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?