1
0
Fork 0

Add Server and client

This commit is contained in:
MrDev023 2016-06-22 21:45:43 +02:00
parent 3d7c9e3f7f
commit 6258438d44
262 changed files with 2661 additions and 0 deletions

View file

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" path="src"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
<classpathentry kind="output" path="bin"/>
</classpath>

View file

@ -0,0 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>Unity Server Project</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.jdt.core.javanature</nature>
</natures>
</projectDescription>

View file

@ -0,0 +1,11 @@
eclipse.preferences.version=1
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
org.eclipse.jdt.core.compiler.compliance=1.8
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.source=1.8

View file

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<worldList>
<worlds>
<entry>
<key>10000001</key>
<value>10000001.map</value>
</entry>
</worlds>
</worldList>

Binary file not shown.

View file

@ -0,0 +1,22 @@
package fr.technicalgames;
import java.io.*;
import java.util.Map.*;
import javax.xml.bind.*;
import fr.technicalgames.data.*;
import fr.technicalgames.network.*;
import fr.technicalgames.settings.Settings;
public class MainServer{
public static Server server;
public static void main(String[] args) throws JAXBException {
Settings.loadSettings();
World.loadWorlds();
server = new Server(9999);
}
}

View file

@ -0,0 +1,61 @@
package fr.technicalgames.client;
import java.io.*;
import java.net.*;
import fr.technicalgames.entity.*;
import fr.technicalgames.entity.player.Player;
import fr.technicalgames.network.*;
import fr.technicalgames.network.common.*;
public class Client {
private InetAddress address;
private int port;
private Player player;
public Client(InetAddress address,int port){
this.address = address;
this.port = port;
this.player = new Player("Default");
}
public void send(DatagramSocket server,IPacket packet){
try {
DataBuffer data = new DataBuffer();
data.put(Register.getId(packet.getClass()));
packet.write(data);
Server.up += data.getPointer();
server.send(new DatagramPacket(data.getData(),data.getPointer(),address,port));
} catch (IOException e) {
e.printStackTrace();
}
}
public InetAddress getAddress() {
return address;
}
public void setAddress(InetAddress address) {
this.address = address;
}
public int getPort() {
return port;
}
public void setPort(int port) {
this.port = port;
}
public Player getPlayer() {
return player;
}
public void setPlayer(Player player) {
this.player = player;
}
}

View file

@ -0,0 +1,125 @@
package fr.technicalgames.data;
import java.io.*;
import java.nio.file.*;
import java.util.*;
import java.util.Map.*;
import javax.xml.bind.*;
import fr.technicalgames.data.xml.WorldList;
import fr.technicalgames.io.*;
import fr.technicalgames.math.*;
import fr.technicalgames.network.common.*;
public class World {
private int heightmapWidth,heightmapHeight;
private float mapWidth,mapHeight;
private float[][] heightsMap;
private static Map<Integer,World> worlds = new HashMap<Integer,World>();
public World(String filename) throws IOException{
Path path = Paths.get("ressources/world/" + filename);
byte[] data = Files.readAllBytes(path);
DataBuffer d = new DataBuffer(data);
heightmapWidth = d.getInt();
heightmapHeight = d.getInt();
mapWidth = d.getFloat();
mapHeight = d.getFloat();
heightsMap = new float[heightmapWidth][heightmapHeight];
for(int x = 0;x < heightmapWidth;x++){
for(int y = 0;y < heightmapHeight;y++){
heightsMap[x][y] = d.getFloat();
}
}
}
public float getHeights(float x,float y){
float rx = (x * (float)heightmapWidth)/mapWidth;
float ry = (y * (float)heightmapHeight)/mapHeight;
int ix = (int)rx;
int iy = (int)ry;
float interpolate1 = Mathf.linearInterpolate(heightsMap[ix][iy],heightsMap[ix + 1][iy],rx - ix);
float interpolate2 = Mathf.linearInterpolate(heightsMap[ix][iy + 1],heightsMap[ix + 1][iy + 1],rx - ix);
return Mathf.linearInterpolate(interpolate1,interpolate2,ry - iy);
}
public static void loadWorlds(){
Log.println(Log.INFO, "Loading World ...");
try {
JAXBContext jc = JAXBContext.newInstance(WorldList.class);
Unmarshaller jaxbUnmarshaller = jc.createUnmarshaller();
WorldList worldList = (WorldList)jaxbUnmarshaller.unmarshal(new File("data/world/worldList.xml"));
for(Entry<Integer, String> s : worldList.getWorlds().entrySet()){
try {
World w = new World(s.getValue());
worlds.put(s.getKey(), w);
} catch (IOException e) {
e.printStackTrace();
}
}
} catch (JAXBException e) {
e.printStackTrace();
}
Log.println(Log.INFO, "World loaded !");
}
public static Map<Integer, World> getWorlds() {
return worlds;
}
public static void setWorlds(Map<Integer, World> worlds) {
World.worlds = worlds;
}
public int getHeightmapWidth() {
return heightmapWidth;
}
public void setHeightmapWidth(int heightmapWidth) {
this.heightmapWidth = heightmapWidth;
}
public int getHeightmapHeight() {
return heightmapHeight;
}
public void setHeightmapHeight(int heightmapHeight) {
this.heightmapHeight = heightmapHeight;
}
public float getMapWidth() {
return mapWidth;
}
public void setMapWidth(float mapWidth) {
this.mapWidth = mapWidth;
}
public float getMapHeight() {
return mapHeight;
}
public void setMapHeight(float mapHeight) {
this.mapHeight = mapHeight;
}
public float[][] getHeightsMap() {
return heightsMap;
}
public void setHeightsMap(float[][] heightsMap) {
this.heightsMap = heightsMap;
}
}

View file

@ -0,0 +1,20 @@
package fr.technicalgames.data.xml;
import java.util.*;
import javax.xml.bind.annotation.*;
@XmlRootElement
public class WorldList {
private Map<Integer,String> worlds = new HashMap<Integer,String>();
public Map<Integer, String> getWorlds() {
return worlds;
}
public void setWorlds(Map<Integer, String> worlds) {
this.worlds = worlds;
}
}

View file

@ -0,0 +1,87 @@
package fr.technicalgames.entity;
public abstract class Entity {
private String name = "";
private int id = 0;
private float px,py,pz,rx,ry,rz;
public Entity(String name,int id){
this.name = name;
px = 0;
py = 0;
pz = 0;
rx = 0;
ry = 0;
rz = 0;
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public float getPx() {
return px;
}
public void setPx(float px) {
this.px = px;
}
public float getPy() {
return py;
}
public void setPy(float py) {
this.py = py;
}
public float getPz() {
return pz;
}
public void setPz(float pz) {
this.pz = pz;
}
public float getRx() {
return rx;
}
public void setRx(float rx) {
this.rx = rx;
}
public float getRy() {
return ry;
}
public void setRy(float ry) {
this.ry = ry;
}
public float getRz() {
return rz;
}
public void setRz(float rz) {
this.rz = rz;
}
}

View file

@ -0,0 +1,11 @@
package fr.technicalgames.entity.player;
import fr.technicalgames.entity.Entity;
public class Player extends Entity{
public Player(String name) {
super(name,-1);
}
}

View file

@ -0,0 +1,40 @@
package fr.technicalgames.io;
import java.io.*;
public class Log {
public static final int INFO = 0,WARNING = 1,ERROR = 2;
private static PrintStream out = System.out;
public static void println(int type,String a){
switch(type){
case INFO:
out.println(a);
break;
case WARNING:
out.println(a);
break;
case ERROR:
out.println(a);
break;
}
}
public static void print(int type,String a){
a = "\b" + a;
switch(type){
case INFO:
out.print(a);
break;
case WARNING:
out.print(a);
break;
case ERROR:
out.print(a);
break;
}
}
}

View file

@ -0,0 +1,21 @@
package fr.technicalgames.math;
public class Mathf {
public static final float PI = 3.14159265358979323846f;
public static float linearInterpolate(float y1,float y2,float b){
return y1 * (1 - b) + y2 * b;
}
public static float cos(float angle){
return (float)Math.cos(angle);
}
public static float cosineInterpolate(float y1,float y2,float b){
float ft = b * PI;
float f = (1 - cos(ft)) * .5f;
return y1 * (1-f) + y2*f;
}
}

View file

@ -0,0 +1,158 @@
package fr.technicalgames.network;
import java.io.*;
import java.net.*;
import java.util.*;
import fr.technicalgames.client.*;
import fr.technicalgames.io.*;
import fr.technicalgames.network.common.*;
import fr.technicalgames.network.packet.*;
public class Server extends Thread{
private ArrayList<Client> clients = new ArrayList<Client>();
private DatagramSocket server;
private boolean running = false;
private Scanner sc = new Scanner(System.in);
public static int down = 0,up = 0,pup = 0,pdown = 0;
public long previous = System.currentTimeMillis(),prev = System.currentTimeMillis();
public Server(int port){
try {
this.server = new DatagramSocket(port);
Log.println(Log.INFO, "Serveur lance a l'adresse " + server.getLocalAddress().getHostAddress() + ":" + server.getLocalPort());
running = true;
Register.registerClass();
this.start();
(new Thread(new Runnable() {
@Override
public void run() {
while(running){
String a = sc.nextLine();
sendToClients(new MessagePacket("Server", a));
}
}
})).start();
(new Thread(new Runnable() {
@Override
public void run() {
while(running){
if(System.currentTimeMillis() - previous > 1000){
pup = up;
pdown = down;
System.out.print("DOWN: " + pdown/1024.0f + "ko/s UP: " + pup/1024.0f + "ko/s \r");
up = 0;
down = 0;
previous = System.currentTimeMillis();
}
}
}
})).start();
} catch (SocketException e) {
e.printStackTrace();
}
}
@Override
public void run(){
while(running){
try {
byte[] data = new byte[DataBuffer.getSize()];
DatagramPacket packet = new DatagramPacket(data,data.length);
server.receive(packet);
int size = packet.getLength();
down += size;
DataBuffer dataBuffer = new DataBuffer(data);
if(packet.getAddress() != null){
Client cl = getClient(packet.getAddress(),packet.getPort());
if(cl != null){
try{
IPacket packetObject = (IPacket) Register.instantiate(dataBuffer.getInt());
packetObject.read(dataBuffer);
packetObject.manage(this,server,cl, packetObject);
}catch(Exception e){
String log = "Unknown packet : {\n ";
int i = 0;
for(byte d : data){
log += byteToHex(d) + " ";
i++;
if(i%32 == 0)log += "\n ";
if(i >= size)break;
}
log += "\n}";
Log.println(Log.WARNING, log);
}
}else{
try{
Log.println(Log.INFO, packet.getAddress().getHostAddress() + ":" + packet.getPort() + " s'est connecter !");
clients.add(cl = new Client(packet.getAddress(),packet.getPort()));
IPacket packetObject = (IPacket) Register.instantiate(dataBuffer.getInt());
packetObject.read(dataBuffer);
packetObject.manage(this,server,cl, packetObject);
}catch(Exception e){
String log = "Unknown packet : {\n ";
int i = 0;
for(byte d : data){
log += byteToHex(d) + " ";
i++;
if(i%32 == 0)log += "\n ";
if(i >= size)break;
}
log += "\n}";
Log.println(Log.WARNING, log);
}
}
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
public Client getClient(InetAddress address,int port){
for(Client cl : clients){
if(cl.getAddress().getHostAddress().equals(address.getHostName()) && port == cl.getPort()){
return cl;
}
}
return null;
}
public Client getClientByName(String name){
for(Client cl: clients){
if(cl.getPlayer().getName().equals(name))return cl;
}
return null;
}
public void sendToClients(IPacket packet){
for(Client cl : clients){
cl.send(server, packet);
}
}
public static String byteToHex(byte bytes) {
final char[] hexArray = "0123456789ABCDEF".toCharArray();
char[] hexChars = new char[2];
int v = bytes & 0xFF;
hexChars[0] = hexArray[v >>> 4];
hexChars[1] = hexArray[v & 0x0F];
return new String(hexChars);
}
public void closeConnection(Client client){
clients.remove(client);
Log.println(Log.INFO, client.getAddress().getHostName() + ":" + client.getPort() + " s'est deconnecter !");
}
public void stopServer(){
running = false;
this.server.close();
this.stop();
}
}

View file

@ -0,0 +1,184 @@
package fr.technicalgames.network.common;
import java.nio.*;
import fr.technicalgames.io.*;
public class DataBuffer {
public static final int SIZE = 1024;
private byte[] data;
private int pointer;
public DataBuffer(){
data = new byte[SIZE];
pointer = 0;
}
public DataBuffer(int size){
data = new byte[size];
pointer = 0;
}
public DataBuffer(byte[] data){
this.data = data;
pointer = 0;
}
public void put(byte a){
if(pointer >= data.length){
Log.println(Log.ERROR, "Databuffer write overflow");
return;
}
data[pointer++] = a;
}
public void put(short a){
put((byte)((a >> 8) & 0xff));
put((byte)((a >> 0) & 0xff));
}
public void put(int a){
put((byte)((a >> 24) & 0xff));
put((byte)((a >> 16) & 0xff));
put((byte)((a >> 8) & 0xff));
put((byte)((a >> 0) & 0xff));
}
public void put(long a){
put((byte)((a >> 56) & 0xff));
put((byte)((a >> 48) & 0xff));
put((byte)((a >> 40) & 0xff));
put((byte)((a >> 32) & 0xff));
put((byte)((a >> 24) & 0xff));
put((byte)((a >> 16) & 0xff));
put((byte)((a >> 8) & 0xff));
put((byte)((a >> 0) & 0xff));
}
public void put(float b){
int a = Float.floatToIntBits(b);
put((byte)((a >> 0) & 0xff));
put((byte)((a >> 8) & 0xff));
put((byte)((a >> 16) & 0xff));
put((byte)((a >> 24) & 0xff));
}
public void put(double b){
long a = Double.doubleToLongBits(b);
put((byte)((a >> 0) & 0xff));
put((byte)((a >> 8) & 0xff));
put((byte)((a >> 16) & 0xff));
put((byte)((a >> 24) & 0xff));
put((byte)((a >> 32) & 0xff));
put((byte)((a >> 40) & 0xff));
put((byte)((a >> 48) & 0xff));
put((byte)((a >> 56) & 0xff));
}
public void put(char a){
put((byte)a);
}
public void put(String a){
char[] b = a.toCharArray();
put(b.length);
for(int i = 0;i < b.length;i++){
put(b[i]);
}
}
public byte getByte(){
if(pointer >= data.length){
Log.println(Log.ERROR, "Databuffer write overflow");
return 0;
}
return data[pointer++];
}
public short getShort(){
return (short) ((
(getByte() << 8) & 0xff00) |
(getByte() & 0xff));
}
public int getInt(){
return (int) ((
(getByte() << 24) & 0xff000000) |
(getByte() << 16 & 0xff0000) |
(getByte() << 8 & 0xff00) |
(getByte() & 0xff));
}
public long getLong(){
return (long) (
(((long)getByte() << 56) & 0xff00000000000000l) |
(((long)getByte() << 48) & 0xff000000000000l) |
(((long)getByte() << 40) & 0xff0000000000l) |
(((long)getByte() << 32) & 0xff00000000l) |
(((long)getByte() << 24) & 0xff000000l) |
(((long)getByte() << 16) & 0xff0000l) |
(((long)getByte() << 8) & 0xff00l) |
((long)getByte() & 0xffl));
}
public float getFloat(){
byte[] array = new byte[]{getByte(),getByte(),getByte(),getByte()};
byte tmp = array[0];
array[0] = array[3];
array[3] = tmp;
tmp = array[1];
array[1] = array[2];
array[2] = tmp;
tmp = 0;
return Float.intBitsToFloat(ByteBuffer.wrap(array).getInt());
}
public double getDouble(){
byte[] array = new byte[]{getByte(),getByte(),getByte(),getByte(),getByte(),getByte(),getByte(),getByte()};
byte[] d = new byte[8];
for(int i = 0;i < 8;i++){
d[7 - i] = array[i];
}
array = null;
return Double.longBitsToDouble(ByteBuffer.wrap(d).getLong());
}
public char getChar(){
return (char)getByte();
}
public String getString(){
char[] st = new char[getInt()];
for(int i = 0;i < st.length;i++){
st[i] = getChar();
}
return new String(st);
}
public byte[] getData() {
return data;
}
public void setData(byte[] data) {
this.data = data;
}
public int getPointer() {
return pointer;
}
public void setPointer(int pointer) {
this.pointer = pointer;
}
public static int getSize() {
return SIZE;
}
public void clear(){
pointer = 0;
}
}

View file

@ -0,0 +1,14 @@
package fr.technicalgames.network.common;
import java.net.*;
import fr.technicalgames.client.*;
import fr.technicalgames.network.*;
public interface IPacket {
public void read(DataBuffer data);
public void write(DataBuffer data);
public void manage(Server server,DatagramSocket socket,Client client,IPacket packet);
}

View file

@ -0,0 +1,44 @@
package fr.technicalgames.network.common;
import java.util.*;
import fr.technicalgames.network.packet.*;
public class Register {
public static ArrayList<Class> registeredClass = new ArrayList<Class>();
public static void registerClass(){
addClass(MessagePacket.class);
addClass(MainState_Connection_Request_Packet.class);
addClass(Disconnect_Client_Packet.class);
}
public static void addClass(Class cl){
registeredClass.add(cl);
}
public static Class getClass(int id){
return registeredClass.get(id);
}
public static int getId(Class cl){
for(int i = 0;i < registeredClass.size();i++){
if(registeredClass.get(i).equals(cl))return i;
}
return -1;
}
public static Object instantiate(int id) {
try {
return getClass(id).newInstance();
} catch (InstantiationException e) {
e.printStackTrace();
return null;
} catch (IllegalAccessException e) {
e.printStackTrace();
return null;
}
}
}

View file

@ -0,0 +1,37 @@
package fr.technicalgames.network.packet;
import java.net.*;
import fr.technicalgames.client.*;
import fr.technicalgames.network.*;
import fr.technicalgames.network.common.*;
public class Disconnect_Client_Packet implements IPacket{
public String pseudo;
public Disconnect_Client_Packet(){}
public Disconnect_Client_Packet(String pseudo){
this.pseudo = pseudo;
}
@Override
public void read(DataBuffer data) {
this.pseudo = data.getString();
}
@Override
public void write(DataBuffer data) {
data.put(this.pseudo);
}
@Override
public void manage(Server server, DatagramSocket socket, Client client, IPacket packet) {
server.closeConnection(client);
server.sendToClients(packet);
}
}

View file

@ -0,0 +1,53 @@
package fr.technicalgames.network.packet;
import java.net.*;
import fr.technicalgames.client.*;
import fr.technicalgames.network.*;
import fr.technicalgames.network.common.*;
public class MainState_Connection_Request_Packet implements IPacket{
public static final int REQUEST = 0, ACCEPTED = 1, REFUSED = 2,TIME_OUT = 3, ALREADY_CONNECTED = 4, PSEUDO_INCORRECT = 5,DISCONNECTED = 6;
public String pseudo;
public int id;
public MainState_Connection_Request_Packet() { }
public MainState_Connection_Request_Packet(String pseudo,int id)
{
this.pseudo = pseudo;
this.id = id;
}
@Override
public void read(DataBuffer data) {
this.pseudo = data.getString();
this.id = data.getInt();
}
@Override
public void write(DataBuffer data) {
data.put(pseudo);
data.put(id);
}
@Override
public void manage(Server server,DatagramSocket socket,Client client,IPacket packet) {
if(server.getClientByName(pseudo) == null){
client.getPlayer().setName(pseudo);
id = ACCEPTED;
}else{
Client cl = server.getClientByName(pseudo);
while(cl != null){
server.closeConnection(cl);
cl = server.getClientByName(pseudo);
}
server.closeConnection(client);
id = ALREADY_CONNECTED;
}
client.send(socket, this);
}
}

View file

@ -0,0 +1,35 @@
package fr.technicalgames.network.packet;
import java.net.*;
import fr.technicalgames.client.*;
import fr.technicalgames.io.*;
import fr.technicalgames.network.*;
import fr.technicalgames.network.common.*;
public class MessagePacket implements IPacket{
private String pseudo, message;
public MessagePacket() { }
public MessagePacket(String pseudo, String message){
this.message = message;
this.pseudo = pseudo;
}
public void read(DataBuffer data){
this.pseudo = data.getString();
this.message = data.getString();
}
public void write(DataBuffer data){
data.put(this.pseudo);
data.put(this.message);
}
public void manage(Server server,DatagramSocket socket,Client client,IPacket packet){
Log.println(Log.INFO, pseudo + " : " + message);
}
}

View file

@ -0,0 +1,30 @@
package fr.technicalgames.settings;
import java.io.File;
import java.util.HashMap;
import fr.technicalgames.io.Log;
public class Settings {
public static void loadSettings(){
File t = new File("settings/");
for(File f : t.listFiles()){
Log.println(Log.INFO, f.getName());
}
}
class SettingsFile{
private String filename;
private HashMap<String,String> data = new HashMap<String,String>();
public SettingsFile(String filename,String path){
File f = new File(path + filename);
}
}
}

Binary file not shown.

View file

@ -0,0 +1,111 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProductVersion>10.0.20506</ProductVersion>
<SchemaVersion>2.0</SchemaVersion>
<RootNamespace></RootNamespace>
<ProjectGuid>{9F543762-BF16-744B-B4B2-7D409B8E4AB7}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<AssemblyName>Assembly-CSharp-Editor</AssemblyName>
<TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<BaseDirectory>Assets</BaseDirectory>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>Temp\bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE;UNITY_5_3_2;UNITY_5_3;UNITY_5;ENABLE_NEW_BUGREPORTER;ENABLE_AUDIO;ENABLE_CACHING;ENABLE_CLOTH;ENABLE_DUCK_TYPING;ENABLE_FRAME_DEBUGGER;ENABLE_GENERICS;ENABLE_HOME_SCREEN;ENABLE_IMAGEEFFECTS;ENABLE_LIGHT_PROBES_LEGACY;ENABLE_MICROPHONE;ENABLE_MULTIPLE_DISPLAYS;ENABLE_PHYSICS;ENABLE_PLUGIN_INSPECTOR;ENABLE_SHADOWS;ENABLE_SINGLE_INSTANCE_BUILD_SETTING;ENABLE_SPRITERENDERER_FLIPPING;ENABLE_SPRITES;ENABLE_SPRITE_POLYGON;ENABLE_TERRAIN;ENABLE_RAKNET;ENABLE_UNET;ENABLE_UNITYEVENTS;ENABLE_VR;ENABLE_WEBCAM;ENABLE_WWW;ENABLE_CLOUD_SERVICES;ENABLE_CLOUD_SERVICES_ADS;ENABLE_CLOUD_HUB;ENABLE_CLOUD_PROJECT_ID;ENABLE_CLOUD_SERVICES_PURCHASING;ENABLE_CLOUD_SERVICES_ANALYTICS;ENABLE_CLOUD_SERVICES_UNET;ENABLE_CLOUD_SERVICES_BUILD;ENABLE_CLOUD_LICENSE;ENABLE_EDITOR_METRICS;ENABLE_EDITOR_METRICS_CACHING;INCLUDE_DYNAMIC_GI;INCLUDE_GI;INCLUDE_IL2CPP;INCLUDE_DIRECTX12;PLATFORM_SUPPORTS_MONO;RENDER_SOFTWARE_CURSOR;ENABLE_LOCALIZATION;ENABLE_ANDROID_ATLAS_ETC1_COMPRESSION;ENABLE_EDITOR_TESTS_RUNNER;UNITY_STANDALONE_WIN;UNITY_STANDALONE;ENABLE_SUBSTANCE;ENABLE_TEXTUREID_MAP;ENABLE_RUNTIME_GI;ENABLE_MOVIES;ENABLE_NETWORK;ENABLE_CRUNCH_TEXTURE_COMPRESSION;ENABLE_LOG_MIXED_STACKTRACE;ENABLE_UNITYWEBREQUEST;ENABLE_EVENT_QUEUE;ENABLE_CLUSTERINPUT;ENABLE_WEBSOCKET_HOST;ENABLE_MONO;ENABLE_PROFILER;UNITY_ASSERTIONS;UNITY_EDITOR;UNITY_EDITOR_64;UNITY_EDITOR_WIN</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<NoWarn>0169</NoWarn>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>Temp\bin\Release\</OutputPath>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<NoWarn>0169</NoWarn>
</PropertyGroup>
<ItemGroup>
<Reference Include="System" />
<Reference Include="System.XML" />
<Reference Include="System.Core" />
<Reference Include="System.Xml.Linq" />
<Reference Include="UnityEngine">
<HintPath>D:/logiciels/Unity/Editor/Data/Managed/UnityEngine.dll</HintPath>
</Reference>
<Reference Include="UnityEditor">
<HintPath>D:/logiciels/Unity/Editor/Data/Managed/UnityEditor.dll</HintPath>
</Reference>
</ItemGroup>
<ItemGroup>
<Compile Include="Assets\scripts\editor\TerrainExport.cs" />
<Reference Include="Assembly-UnityScript">
<HintPath>D:/fichiers/programmes/moi/unity/Unity network UDP/Library/ScriptAssemblies/Assembly-UnityScript.dll</HintPath>
</Reference>
<Reference Include="UnityEditor.Advertisements">
<HintPath>D:/logiciels/Unity/Editor/Data/UnityExtensions/Unity/Advertisements/Editor/UnityEditor.Advertisements.dll</HintPath>
</Reference>
<Reference Include="nunit.framework">
<HintPath>D:/logiciels/Unity/Editor/Data/UnityExtensions/Unity/EditorTestsRunner/Editor/nunit.framework.dll</HintPath>
</Reference>
<Reference Include="UnityEditor.EditorTestsRunner">
<HintPath>D:/logiciels/Unity/Editor/Data/UnityExtensions/Unity/EditorTestsRunner/Editor/UnityEditor.EditorTestsRunner.dll</HintPath>
</Reference>
<Reference Include="UnityEngine.UI">
<HintPath>D:/logiciels/Unity/Editor/Data/UnityExtensions/Unity/GUISystem/UnityEngine.UI.dll</HintPath>
</Reference>
<Reference Include="UnityEditor.UI">
<HintPath>D:/logiciels/Unity/Editor/Data/UnityExtensions/Unity/GUISystem/Editor/UnityEditor.UI.dll</HintPath>
</Reference>
<Reference Include="UnityEngine.Networking">
<HintPath>D:/logiciels/Unity/Editor/Data/UnityExtensions/Unity/Networking/UnityEngine.Networking.dll</HintPath>
</Reference>
<Reference Include="UnityEditor.Networking">
<HintPath>D:/logiciels/Unity/Editor/Data/UnityExtensions/Unity/Networking/Editor/UnityEditor.Networking.dll</HintPath>
</Reference>
<Reference Include="UnityEditor.TreeEditor">
<HintPath>D:/logiciels/Unity/Editor/Data/UnityExtensions/Unity/TreeEditor/Editor/UnityEditor.TreeEditor.dll</HintPath>
</Reference>
<Reference Include="UnityEditor.Graphs">
<HintPath>D:/logiciels/Unity/Editor/Data/Managed/UnityEditor.Graphs.dll</HintPath>
</Reference>
<Reference Include="UnityEditor.Android.Extensions">
<HintPath>D:/logiciels/Unity/Editor/Data/PlaybackEngines/AndroidPlayer/UnityEditor.Android.Extensions.dll</HintPath>
</Reference>
<Reference Include="UnityEditor.iOS.Extensions">
<HintPath>D:/logiciels/Unity/Editor/Data/PlaybackEngines/iOSSupport/UnityEditor.iOS.Extensions.dll</HintPath>
</Reference>
<Reference Include="UnityEditor.WebGL.Extensions">
<HintPath>D:/logiciels/Unity/Editor/Data/PlaybackEngines/WebGLSupport/UnityEditor.WebGL.Extensions.dll</HintPath>
</Reference>
<Reference Include="UnityEditor.LinuxStandalone.Extensions">
<HintPath>D:/logiciels/Unity/Editor/Data/PlaybackEngines/LinuxStandaloneSupport/UnityEditor.LinuxStandalone.Extensions.dll</HintPath>
</Reference>
<Reference Include="UnityEditor.WindowsStandalone.Extensions">
<HintPath>D:/logiciels/Unity/Editor/Data/PlaybackEngines/WindowsStandaloneSupport/UnityEditor.WindowsStandalone.Extensions.dll</HintPath>
</Reference>
<Reference Include="UnityEditor.OSXStandalone.Extensions">
<HintPath>D:/logiciels/Unity/Editor/Data/PlaybackEngines/MacStandaloneSupport/UnityEditor.OSXStandalone.Extensions.dll</HintPath>
</Reference>
</ItemGroup>
<ItemGroup>
<ProjectReference Include="Assembly-CSharp.csproj">
<Project>{E8AC5320-5607-FFE2-C7E2-3253D342E899}</Project> <Name>Assembly-CSharp</Name> </ProjectReference>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
</Project>

View file

@ -0,0 +1,75 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProductVersion>10.0.20506</ProductVersion>
<SchemaVersion>2.0</SchemaVersion>
<RootNamespace></RootNamespace>
<ProjectGuid>{E8AC5320-5607-FFE2-C7E2-3253D342E899}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<AssemblyName>Assembly-CSharp</AssemblyName>
<TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<BaseDirectory>Assets</BaseDirectory>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>Temp\bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE;UNITY_5_3_2;UNITY_5_3;UNITY_5;ENABLE_NEW_BUGREPORTER;ENABLE_AUDIO;ENABLE_CACHING;ENABLE_CLOTH;ENABLE_DUCK_TYPING;ENABLE_FRAME_DEBUGGER;ENABLE_GENERICS;ENABLE_HOME_SCREEN;ENABLE_IMAGEEFFECTS;ENABLE_LIGHT_PROBES_LEGACY;ENABLE_MICROPHONE;ENABLE_MULTIPLE_DISPLAYS;ENABLE_PHYSICS;ENABLE_PLUGIN_INSPECTOR;ENABLE_SHADOWS;ENABLE_SINGLE_INSTANCE_BUILD_SETTING;ENABLE_SPRITERENDERER_FLIPPING;ENABLE_SPRITES;ENABLE_SPRITE_POLYGON;ENABLE_TERRAIN;ENABLE_RAKNET;ENABLE_UNET;ENABLE_UNITYEVENTS;ENABLE_VR;ENABLE_WEBCAM;ENABLE_WWW;ENABLE_CLOUD_SERVICES;ENABLE_CLOUD_SERVICES_ADS;ENABLE_CLOUD_HUB;ENABLE_CLOUD_PROJECT_ID;ENABLE_CLOUD_SERVICES_PURCHASING;ENABLE_CLOUD_SERVICES_ANALYTICS;ENABLE_CLOUD_SERVICES_UNET;ENABLE_CLOUD_SERVICES_BUILD;ENABLE_CLOUD_LICENSE;ENABLE_EDITOR_METRICS;ENABLE_EDITOR_METRICS_CACHING;INCLUDE_DYNAMIC_GI;INCLUDE_GI;INCLUDE_IL2CPP;INCLUDE_DIRECTX12;PLATFORM_SUPPORTS_MONO;RENDER_SOFTWARE_CURSOR;ENABLE_LOCALIZATION;ENABLE_ANDROID_ATLAS_ETC1_COMPRESSION;ENABLE_EDITOR_TESTS_RUNNER;UNITY_STANDALONE_WIN;UNITY_STANDALONE;ENABLE_SUBSTANCE;ENABLE_TEXTUREID_MAP;ENABLE_RUNTIME_GI;ENABLE_MOVIES;ENABLE_NETWORK;ENABLE_CRUNCH_TEXTURE_COMPRESSION;ENABLE_LOG_MIXED_STACKTRACE;ENABLE_UNITYWEBREQUEST;ENABLE_EVENT_QUEUE;ENABLE_CLUSTERINPUT;ENABLE_WEBSOCKET_HOST;ENABLE_MONO;ENABLE_PROFILER;UNITY_ASSERTIONS;UNITY_EDITOR;UNITY_EDITOR_64;UNITY_EDITOR_WIN</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<NoWarn>0169</NoWarn>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>Temp\bin\Release\</OutputPath>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<NoWarn>0169</NoWarn>
</PropertyGroup>
<ItemGroup>
<Reference Include="System" />
<Reference Include="System.XML" />
<Reference Include="System.Core" />
<Reference Include="System.Xml.Linq" />
<Reference Include="UnityEngine">
<HintPath>D:/logiciels/Unity/Editor/Data/Managed/UnityEngine.dll</HintPath>
</Reference>
<Reference Include="UnityEditor">
<HintPath>D:/logiciels/Unity/Editor/Data/Managed/UnityEditor.dll</HintPath>
</Reference>
</ItemGroup>
<ItemGroup>
<Compile Include="Assets\scripts\gamestate\GameState.cs" />
<Compile Include="Assets\scripts\gamestate\MainState.cs" />
<Compile Include="Assets\scripts\network\Client.cs" />
<Compile Include="Assets\scripts\network\MainClient.cs" />
<Compile Include="Assets\scripts\network\common\DataBuffer.cs" />
<Compile Include="Assets\scripts\network\common\IPacket.cs" />
<Compile Include="Assets\scripts\network\common\Register.cs" />
<Compile Include="Assets\scripts\network\packet\Disconnect_Client_Packet.cs" />
<Compile Include="Assets\scripts\network\packet\MainState_Connection_Request_Packet.cs" />
<Compile Include="Assets\scripts\network\packet\MessagePacket.cs" />
<Compile Include="Assets\scripts\network\packet\PingPacket.cs" />
<Reference Include="UnityEngine.UI">
<HintPath>D:/logiciels/Unity/Editor/Data/UnityExtensions/Unity/GUISystem/UnityEngine.UI.dll</HintPath>
</Reference>
<Reference Include="UnityEngine.Networking">
<HintPath>D:/logiciels/Unity/Editor/Data/UnityExtensions/Unity/Networking/UnityEngine.Networking.dll</HintPath>
</Reference>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
</Project>

Binary file not shown.

After

Width:  |  Height:  |  Size: 79 KiB

View file

@ -0,0 +1,57 @@
fileFormatVersion: 2
guid: 0c3a130c5911fb94da97ee37073f4b81
timeCreated: 1461176781
licenseType: Free
TextureImporter:
fileIDToRecycleName: {}
serializedVersion: 2
mipmaps:
mipMapMode: 0
enableMipMap: 1
linearTexture: 0
correctGamma: 0
fadeOut: 0
borderMipMap: 0
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
isReadable: 0
grayScaleToAlpha: 0
generateCubemap: 0
cubemapConvolution: 0
cubemapConvolutionSteps: 7
cubemapConvolutionExponent: 1.5
seamlessCubemap: 0
textureFormat: -1
maxTextureSize: 2048
textureSettings:
filterMode: -1
aniso: -1
mipBias: -1
wrapMode: -1
nPOTScale: 1
lightmap: 0
rGBM: 0
compressionQuality: 50
allowsAlphaSplitting: 0
spriteMode: 0
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spritePixelsToUnits: 100
alphaIsTransparency: 0
textureType: -1
buildTargetSettings: []
spriteSheet:
sprites: []
outline: []
spritePackingTag:
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

View file

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: a650dbd5d579bc8499d32782b7c9104c
timeCreated: 1461172757
licenseType: Free
NativeFormatImporter:
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

View file

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 24249e1e07f50b94d823e5b641b07f67
timeCreated: 1461186732
licenseType: Free
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

View file

@ -0,0 +1,9 @@
fileFormatVersion: 2
guid: cb3879966b4e9284e8e630de5266c03e
folderAsset: yes
timeCreated: 1461077713
licenseType: Free
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

View file

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 4f84caedd08afdb4aa9abf11a8f90022
timeCreated: 1461152442
licenseType: Free
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

View file

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 67b343623e0fb7e45af3f4acd9d07b43
timeCreated: 1461077713
licenseType: Free
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

View file

@ -0,0 +1,9 @@
fileFormatVersion: 2
guid: 3b4bdb98a5880ed458e0b2db273cbd75
folderAsset: yes
timeCreated: 1461077658
licenseType: Free
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

View file

@ -0,0 +1,57 @@
import UnityEngine;
import UnityEditor;
import System.Collections;
import System.IO;
class HeightmapExportPNG extends EditorWindow
{
static var terraindata : TerrainData;
@MenuItem ("Terrain/Export Height Map as PNG")
static function Init () {
terraindata = null;
var terrain : Terrain = null;
if ( Selection.activeGameObject )
terrain = Selection.activeGameObject.GetComponent( Terrain );
if (!terrain) {
terrain = Terrain.activeTerrain;
}
if (terrain) {
terraindata = terrain.terrainData;
}
if (terraindata == null) {
EditorUtility.DisplayDialog("No terrain selected", "Please select a terrain.", "Cancel");
return;
}
//// get the terrain heights into an array and apply them to a texture2D
var myBytes : byte[];
var myIndex : int = 0;
var rawHeights = new Array(0.0,0.0);
var duplicateHeightMap = new Texture2D(terraindata.heightmapWidth, terraindata.heightmapHeight, TextureFormat.ARGB32, false);
rawHeights = terraindata.GetHeights(0, 0, terraindata.heightmapWidth, terraindata.heightmapHeight);
/// run through the array row by row
for (y=0; y < duplicateHeightMap.height; ++y)
{
for (x=0; x < duplicateHeightMap.width; ++x)
{
/// for wach pixel set RGB to the same so it's gray
var data = rawHeights[myIndex];
var color = Vector4(data, data,data, 1.0);
duplicateHeightMap.SetPixel (x, y, color);
myIndex++;
}
}
// Apply all SetPixel calls
duplicateHeightMap.Apply();
/// make it a PNG and save it to the Assets folder
myBytes = duplicateHeightMap.EncodeToPNG();
var filename : String = "DupeHeightMap.png";
File.WriteAllBytes(Application.dataPath + "/" + filename, myBytes);
EditorUtility.DisplayDialog("Heightmap Duplicated", "Saved as PNG in Assets/ as: " + filename, "");
}
}

View file

@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 377b3e4ac5993cb4785ccd432840d615
timeCreated: 1461176678
licenseType: Free
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View file

@ -0,0 +1,9 @@
fileFormatVersion: 2
guid: 948a750a1a0784a4188bf7767a99be0a
folderAsset: yes
timeCreated: 1461178066
licenseType: Free
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

View file

@ -0,0 +1,85 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using UnityEngine;
using System.IO;
using UnityEditor;
class TerrainExport : EditorWindow
{
static TerrainData terraindata;
[MenuItem("Terrain/Export Height Map as MAP")]
static void Init()
{
terraindata = null;
Terrain terrain = null;
if (Selection.activeGameObject)
terrain = Selection.activeGameObject.GetComponent<Terrain>();
if (!terrain)
{
terrain = Terrain.activeTerrain;
}
if (terrain)
{
terraindata = terrain.terrainData;
}
if (terraindata == null)
{
EditorUtility.DisplayDialog("No terrain selected", "Please select a terrain.", "Cancel");
return;
}
float[,] rawHeights = terraindata.GetHeights(0, 0, terraindata.heightmapWidth, terraindata.heightmapHeight);
byte[] data = new byte[terraindata.heightmapWidth * terraindata.heightmapHeight * 4 + 16];
int a = terraindata.heightmapWidth;
data[0] = (byte)((a >> 24) & 0xff);
data[1] = (byte)((a >> 16) & 0xff);
data[2] = (byte)((a >> 8) & 0xff);
data[3] = (byte)((a >> 0) & 0xff);
a = terraindata.heightmapHeight;
data[4] = (byte)((a >> 24) & 0xff);
data[5] = (byte)((a >> 16) & 0xff);
data[6] = (byte)((a >> 8) & 0xff);
data[7] = (byte)((a >> 0) & 0xff);
int pointer = 8;
byte[] array = BitConverter.GetBytes(terraindata.size.x);
foreach (byte b in array)
{
data[pointer++] = b;
}
array = BitConverter.GetBytes(terraindata.size.z);
foreach (byte b in array)
{
data[pointer++] = b;
}
float max = 0;
for (int x = 0; x < terraindata.heightmapWidth; x++)
{
for (int y = 0; y < terraindata.heightmapHeight; y++)
{
float s = rawHeights[y, x] * terraindata.heightmapScale.y;
max = (s > max) ? s : max;
array = BitConverter.GetBytes(s);
foreach (byte b in array)
{
data[pointer++] = b;
}
}
}
File.WriteAllBytes(Application.dataPath + "/" + "heightmap.map", data);
EditorUtility.DisplayDialog("Heightmap Duplicated", "Saved as PNG in Assets/ as: " + "heightmap.map maxheight:" + max + " width:" + terraindata.size.x + " height:" + terraindata.size.z, "Ok");
}
}

View file

@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: e4e69e764e1d0e444886b477010ea874
timeCreated: 1461178068
licenseType: Free
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View file

@ -0,0 +1,9 @@
fileFormatVersion: 2
guid: 4433c6aa3dfe38c448fd03c00ae00b54
folderAsset: yes
timeCreated: 1461099886
licenseType: Free
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

View file

@ -0,0 +1,25 @@
using System;
using UnityEngine;
using System.Collections.Generic;
using System.Linq;
using System.Text;
class GameState : MonoBehaviour
{
void Start()
{
}
void Update()
{
}
void OnGUI()
{
}
}

View file

@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 7764a314530f3b44686c82db227ddf1e
timeCreated: 1461152479
licenseType: Free
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View file

@ -0,0 +1,192 @@
using System;
using UnityEngine;
using System.Collections.Generic;
using System.Linq;
using System.Text;
class MainState : MonoBehaviour
{
public string stringPseudo = "Pseudo";
public string stringHost = "IP:PORT";
private int preStatus = -1;
public float preTime = 0;
public Boolean windowOpen = false;
public int winID = -1;
public Rect windowRect = new Rect(Screen.width / 2 - 100, Screen.height / 2 - 50, 200, 100);
void Start()
{
windowRect = new Rect(Screen.width / 2 - 100, Screen.height / 2 - 50, 200, 100);
}
void Update()
{
if(preStatus != MainClient.connected)
{
if (MainClient.connected == MainState_Connection_Request_Packet.REQUEST)
{
preTime = Time.time;
}
if (MainClient.connected == MainState_Connection_Request_Packet.ACCEPTED)
{
winID = 0;
windowOpen = true;
}
if (MainClient.connected == MainState_Connection_Request_Packet.REFUSED)
{
winID = 5;
windowOpen = true;
}
if (MainClient.connected == MainState_Connection_Request_Packet.TIME_OUT)
{
winID = 4;
windowOpen = true;
MainClient.client.disconnect();
}
if (MainClient.connected == MainState_Connection_Request_Packet.ALREADY_CONNECTED)
{
winID = 7;
windowOpen = true;
}
if (MainClient.connected == MainState_Connection_Request_Packet.PSEUDO_INCORRECT)
{
winID = 2;
windowOpen = true;
}
preStatus = MainClient.connected;
}
if(preStatus == 0 && preStatus == MainClient.connected)
{
if ((Time.time - preTime) >= 10)
{
MainClient.connected = MainState_Connection_Request_Packet.TIME_OUT;
}
}
}
void OnGUI()
{
GUILayout.BeginArea(new Rect(Screen.width/2 - 50, Screen.height / 2 - 50, 100, 100));
stringHost = GUILayout.TextField(stringHost);
stringPseudo = GUILayout.TextField(stringPseudo);
if (GUILayout.Button("Login"))
{
if(stringHost.Length > 0)
{
if(stringPseudo.Length > 0)
{
string[] c = stringHost.Split(':');
string host = "";
int port = 9999;
if (c.Length == 1)
{
host = c[0];
MainClient.connect(host, port, stringPseudo);
winID = 6;
windowOpen = true;
}
else
{
host = c[0];
if (Int32.TryParse(c[1], out port))
{
MainClient.connect(host, port, stringPseudo);
winID = 6;
windowOpen = true;
}
else
{
winID = 1;
windowOpen = true;
}
}
}
else
{
winID = 2;
windowOpen = true;
}
}else
{
winID = 3;
windowOpen = true;
}
}
GUILayout.EndArea();
if (windowOpen)
{
GUI.Box(windowRect, "");
GUI.Box(windowRect, "");
GUI.Box(windowRect, "");
GUI.Box(windowRect, "");
windowRect = GUILayout.Window(winID, windowRect, connectedWindow, "Information");
}
}
void connectedWindow(int windowID)
{
if(windowID == 0)
{
GUILayout.Label("Connexion réussi !");
if (GUILayout.Button("Valider"))
{
windowOpen = false;
}
}
else if (windowID == 1)
{
GUILayout.Label("Le Port entré est incorrect !");
if (GUILayout.Button("Valider"))
{
windowOpen = false;
}
}
else if (windowID == 2)
{
GUILayout.Label("Pseudo incorrect !");
if (GUILayout.Button("Valider"))
{
windowOpen = false;
}
}
else if (windowID == 3)
{
GUILayout.Label("Aucune ip entré !");
if (GUILayout.Button("Valider"))
{
windowOpen = false;
}
}
else if (windowID == 4)
{
GUILayout.Label("Echec de la connexion");
if (GUILayout.Button("Valider"))
{
windowOpen = false;
}
}
else if (windowID == 5)
{
GUILayout.Label("Connexion refusée !");
if (GUILayout.Button("Valider"))
{
windowOpen = false;
}
}
else if (windowID == 6)
{
GUILayout.Label("Connexion en cours...");
}
else if (windowID == 7)
{
GUILayout.Label("Vous etes déja connecté !");
if (GUILayout.Button("Valider"))
{
windowOpen = false;
}
}
}
}

View file

@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: efde826cbfe60a64ebd845c9080b1d6b
timeCreated: 1461099889
licenseType: Free
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View file

@ -0,0 +1,9 @@
fileFormatVersion: 2
guid: e2fc0e66fe770324a8c90d0be6e109c0
folderAsset: yes
timeCreated: 1461077665
licenseType: Free
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

View file

@ -0,0 +1,60 @@
using System;
using UnityEngine;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using System.Net.Sockets;
using System.Threading;
class Client
{
private UdpClient client;
private IPEndPoint ep;
private Thread receiveThread;
private volatile Boolean connected = false;
public Client(String ip,int port)
{
ep = new IPEndPoint(IPAddress.Parse(ip), port);
client = new UdpClient();
receiveThread = new Thread(new ThreadStart(loop));
Register.registerClass();
}
public void connect()
{
client.Connect(ep);
connected = true;
receiveThread.Start();
}
public void loop()
{
while (connected)
{
byte[] data = client.Receive(ref ep);
DataBuffer dataBuffer = new DataBuffer(data);
int id = dataBuffer.getInt();
IPacket packet = (IPacket)Register.instantiate(id);
packet.read(dataBuffer);
packet.manage(data, this);
}
}
public void send(IPacket packet)
{
DataBuffer data = new DataBuffer();
packet.write(data);
client.Send(data.getData(), data.getData().Length);
}
public void disconnect()
{
client.Close();
connected = false;
}
}

View file

@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 6ef5ac19c402f2c42a01c3f10df1e3e0
timeCreated: 1461077674
licenseType: Free
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View file

@ -0,0 +1,22 @@
using UnityEngine;
class MainClient {
public static Client client;
public static string pseudo;
public static int connected = -1;
public static void connect (string host,int port,string pseudo) {
client = new Client(host, port);
client.connect();
connected = 0;
client.send(new MainState_Connection_Request_Packet(pseudo, 0));
}
public static void OnGUI()
{
}
}

View file

@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 353dd1b92e911804cba3e451a2a5aa47
timeCreated: 1461092835
licenseType: Free
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View file

@ -0,0 +1,9 @@
fileFormatVersion: 2
guid: 49ebafc3208dd5e42b7dcba1440f6f45
folderAsset: yes
timeCreated: 1461077683
licenseType: Free
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

View file

@ -0,0 +1,214 @@
using UnityEngine;
using System.Collections;
using System;
public class DataBuffer{
//readonly constant static -> const non static
public static readonly int SIZE = 1024;
private byte[] data;
private int pointer;
public DataBuffer()
{
data = new byte[SIZE];
pointer = 0;
}
public DataBuffer(byte[] data)
{
this.data = data;
pointer = 0;
}
public void put(byte a)
{
if (pointer >= SIZE)
{
Debug.Log( "Databuffer write overflow");
return;
}
data[pointer++] = a;
}
public void put(sbyte a)
{
if (pointer >= SIZE)
{
Debug.Log("Databuffer write overflow");
return;
}
data[pointer++] = (byte)a;
}
public void put(short a)
{
put((byte)((a >> 8) & 0xff));
put((byte)((a >> 0) & 0xff));
}
public void put(int a)
{
put((byte)((a >> 24) & 0xff));
put((byte)((a >> 16) & 0xff));
put((byte)((a >> 8) & 0xff));
put((byte)((a >> 0) & 0xff));
}
public void put(long a)
{
put((byte)((a >> 56) & 0xff));
put((byte)((a >> 48) & 0xff));
put((byte)((a >> 40) & 0xff));
put((byte)((a >> 32) & 0xff));
put((byte)((a >> 24) & 0xff));
put((byte)((a >> 16) & 0xff));
put((byte)((a >> 8) & 0xff));
put((byte)((a >> 0) & 0xff));
}
public void put(float a)
{
byte[] array = BitConverter.GetBytes(a);
foreach(byte b in array)
{
put(b);
}
}
public void put(double a)
{
byte[] array = BitConverter.GetBytes(a);
foreach (byte b in array)
{
put(b);
}
}
public void put(char a)
{
put((byte)a);
}
public void put(String a)
{
char[] b = a.ToCharArray();
put(a.Length);
for (int i = 0; i < a.Length; i++)
{
put(b[i]);
}
}
public byte getByte()
{
if (pointer >= SIZE)
{
Debug.Log("Databuffer write overflow");
return 0;
}
return data[pointer++];
}
public sbyte getSByte()
{
if (pointer >= SIZE)
{
Debug.Log("Databuffer write overflow");
return 0;
}
return (sbyte)data[pointer++];
}
public short getShort()
{
return (short)((
(getByte() << 8) & 0xff00) |
(getByte() & 0xff));
}
public int getInt()
{
return (int)((
(getByte() << 24) & 0xff000000) |
(getByte() << 16 & 0xff0000) |
(getByte() << 8 & 0xff00) |
(getByte() & 0xff));
}
public long getLong()
{
return (long)(
((ulong)((long)getByte() << 56) & 0xff00000000000000L) |
((ulong)((long)getByte() << 48) & 0xff000000000000L) |
((ulong)((long)getByte() << 40) & 0xff0000000000L) |
(ulong)(((long)getByte() << 32) & 0xff00000000L) |
((ulong)((long)getByte() << 24) & 0xff000000L) |
((ulong)((long)getByte() << 16) & 0xff0000L) |
((ulong)((long)getByte() << 8) & 0xff00L) |
((ulong)(long)getByte() & 0xffL));
}
public float getFloat()
{
byte[] array = new byte[4] { getByte(), getByte(), getByte(), getByte() };
return BitConverter.ToSingle(array, 0);
}
public double getDouble()
{
byte[] array = new byte[8] { getByte(), getByte(), getByte(), getByte(), getByte(), getByte(), getByte(), getByte() };
return BitConverter.ToDouble(array, 0);
}
public char getChar()
{
return (char)getByte();
}
public String getString()
{
int size = getInt();
char[] st = new char[size];
for (int i = 0; i < size; i++)
{
st[i] = getChar();
}
return new String(st);
}
public byte[] getData()
{
return data;
}
public void setData(byte[] data)
{
this.data = data;
}
public int getPointer()
{
return pointer;
}
public void setPointer(int pointer)
{
this.pointer = pointer;
}
public static int getSize()
{
return SIZE;
}
public void clear()
{
pointer = 0;
}
}

View file

@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 078e293494940144a9d5d954dc84daed
timeCreated: 1461077692
licenseType: Free
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View file

@ -0,0 +1,11 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
interface IPacket
{
void read(DataBuffer data);
void write(DataBuffer data);
void manage(byte[] data, Client client);
}

View file

@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: c5c6e5983b09e5b45a1c0ff1cb10f177
timeCreated: 1461092836
licenseType: Free
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View file

@ -0,0 +1,36 @@
using UnityEngine;
using System.Collections;
using System;
public class Register {
public static Type[] registeredClass;
public static void registerClass()
{
registeredClass = new Type[] {
typeof(MessagePacket),
typeof(MainState_Connection_Request_Packet),
typeof(Disconnect_Client_Packet)
};
}
public static Type getClass(int id)
{
return registeredClass[id];
}
public static int getId(Type cl)
{
for (int i = 0; i < registeredClass.Length; i++)
{
if (cl == registeredClass[i]) return i;
}
return -1;
}
public static object instantiate(int id)
{
return getClass(id).GetConstructor(Type.EmptyTypes).Invoke(Type.EmptyTypes);
}
}

View file

@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 7b248295a2003cb4f8f2c02963c4dc69
timeCreated: 1461091725
licenseType: Free
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View file

@ -0,0 +1,9 @@
fileFormatVersion: 2
guid: eafcd88293cff404b855b1726af268b7
folderAsset: yes
timeCreated: 1461092835
licenseType: Free
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

View file

@ -0,0 +1,39 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
class Disconnect_Client_Packet : IPacket
{
public string pseudo;
public Disconnect_Client_Packet() { }
public Disconnect_Client_Packet(string pseudo) { this.pseudo = pseudo; }
void IPacket.read(DataBuffer data)
{
this.pseudo = data.getString();
}
void IPacket.write(DataBuffer data)
{
data.put(Register.getId(typeof(Disconnect_Client_Packet)));
data.put(this.pseudo);
}
void IPacket.manage(byte[] data, Client client)
{
if (pseudo.Equals(MainClient.pseudo))
{
MainClient.connected = MainState_Connection_Request_Packet.DISCONNECTED;
MainClient.client.disconnect();
}
else
{
}
}
}

View file

@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 09c2a6099528c8445b15ffe7adbde542
timeCreated: 1461172729
licenseType: Free
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View file

@ -0,0 +1,57 @@
using System;
using UnityEngine;
using System.Collections.Generic;
using System.Linq;
using System.Text;
class MainState_Connection_Request_Packet : IPacket
{
public static readonly int REQUEST = 0, ACCEPTED = 1, REFUSED = 2, TIME_OUT = 3, ALREADY_CONNECTED = 4, PSEUDO_INCORRECT = 5,DISCONNECTED = 6;
public String pseudo;
public int id;
public MainState_Connection_Request_Packet() { }
public MainState_Connection_Request_Packet(String pseudo,int id)
{
this.pseudo = pseudo;
this.id = id;
}
void IPacket.write(DataBuffer data)
{
data.put(Register.getId(typeof(MainState_Connection_Request_Packet)));
data.put(pseudo);
data.put(id);
}
void IPacket.read(DataBuffer data)
{
this.pseudo = data.getString();
this.id = data.getInt();
}
void IPacket.manage(byte[] data, Client client)
{
if(id == ACCEPTED)
{
MainClient.connected = ACCEPTED;
MainClient.pseudo = this.pseudo;
}
else if(id == REFUSED)
{
MainClient.connected = REFUSED;
}
else if (id == ALREADY_CONNECTED)
{
MainClient.connected = ALREADY_CONNECTED;
}
else if (id == PSEUDO_INCORRECT)
{
MainClient.connected = PSEUDO_INCORRECT;
}
}
}

View file

@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: e632acbe3e907fb42992ec51c2549272
timeCreated: 1461155199
licenseType: Free
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View file

@ -0,0 +1,38 @@
using System;
using UnityEngine;
using System.Collections.Generic;
using System.Linq;
using System.Text;
class MessagePacket : IPacket
{
private String pseudo, message;
public MessagePacket() { }
public MessagePacket(String pseudo, String message)
{
this.message = message;
this.pseudo = pseudo;
}
void IPacket.read(DataBuffer data)
{
this.pseudo = data.getString();
this.message = data.getString();
}
void IPacket.write(DataBuffer data)
{
data.put(Register.getId(typeof(MessagePacket)));
data.put(this.pseudo);
data.put(this.message);
}
void IPacket.manage(byte[] data,Client client)
{
Debug.Log(this.pseudo + " : " + this.message);
}
}

View file

@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 6df0f62eafd1c224ea52a0721bc3e4b1
timeCreated: 1461092835
licenseType: Free
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View file

@ -0,0 +1,27 @@
using UnityEngine;
using System.Collections;
public class PingPacket : IPacket {
public long current;
public PingPacket()
{
}
void IPacket.read(DataBuffer data)
{
}
void IPacket.write(DataBuffer data)
{
}
void IPacket.manage(byte[] data, Client client)
{
}
}

View file

@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 6c3875a60f90ff146950d2ad190f0e09
timeCreated: 1462518396
licenseType: Free
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

View file

@ -0,0 +1 @@
5;0;6;-1

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View file

@ -0,0 +1,4 @@
sceneSetups:
- path: Assets/scenes/GameMenu.unity
isLoaded: 1
isActive: 1

View file

@ -0,0 +1,2 @@
unityRebuildLibraryVersion: 11
unityForwardCompatibleVersion: 40

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Some files were not shown because too many files have changed in this diff Show more