/**
 * Copyright 2008 - 2011
 * 
 * Licensed under the Apache License, Version 2.0 (the "License"); you may not
 * use this file except in compliance with the License. You may obtain a copy of
 * the License at
 * 
 * http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
 * License for the specific language governing permissions and limitations under
 * the License.
 * 
 * @project loon
 * @author cping
 * @email：javachenpeng@yahoo.com
 * @version 0.1
 */
package loon;

import loon.utils.collection.ArrayByte;

public class LKey {

	int type;

	int keyCode;

	char keyChar;

	double timer;

	public LKey(byte[] out) {
		in(out);
	}

	LKey() {

	}

	LKey(LKey key) {
		this.type = key.type;
		this.keyCode = key.keyCode;
		this.keyChar = key.keyChar;
	}

	public double getTimer() {
		return timer;
	}

	public boolean equals(LKey e) {
		if (e == null) {
			return false;
		}
		if (e == this) {
			return true;
		}
		if (e.type == type && e.keyCode == keyCode && e.keyChar == keyChar) {
			return true;
		}
		return false;
	}

	public char getKeyChar() {
		return keyChar;
	}

	public int getKeyCode() {
		return keyCode;
	}

	public int getType() {
		return type;
	}

	public boolean isDown() {
		return type == Key.KEY_DOWN;
	}

	public boolean isUp() {
		return type == Key.KEY_UP;
	}

	public byte[] out() {
		ArrayByte touchByte = new ArrayByte();
		touchByte.writeInt(type);
		touchByte.writeInt(keyCode);
		touchByte.writeInt(keyChar);
		return touchByte.getData();
	}

	public void in(byte[] out) {
		ArrayByte touchByte = new ArrayByte(out);
		type = touchByte.readInt();
		keyCode = touchByte.readInt();
		keyChar = (char) touchByte.readInt();
		type = touchByte.readInt();
	}
}
