view src/main/csharp/jp.ac.u-ryukyu.ie.cr/jungle-network/operations/NetworkTreeOperation.cs @ 17:01a08cf4b2d9

Liq Files
author Kazuma
date Mon, 07 Nov 2016 01:05:24 +0900
parents b71d9ea6bd8e
children
line wrap: on
line source

using UnityEngine;
using System.Collections;

public class NetworkTreeOperation : TreeOperation {

	public NetworkNodePath Path;
	public NetworkNodeOperation Operation;

	public NetworkTreeOperation (TreeOperation tOp) {
		this.Path = new NetworkNodePath(tOp.getNodePath());
		this.Operation = new NetworkNodeOperation(tOp.getNodeOperation());
	}

	public NetworkTreeOperation(NodePath path, NodeOperation op) {
		this.Path = new NetworkNodePath(path);
		this.Operation = new NetworkNodeOperation(op);
	}

	public NetworkTreeOperation(NetworkNodePath path, NodeOperation op) {
		this.Path = path;
		this.Operation = new NetworkNodeOperation(op);
	}

	public NetworkTreeOperation(NodePath path, NetworkNodeOperation op) {
		this.Path = new NetworkNodePath(path);
		this.Operation = op;
	}

	public NetworkTreeOperation(NetworkNodePath path, NetworkNodeOperation op) {
		this.Path = path;
		this.Operation = op;
	}

	public NodePath getNodePath () {
		return this.Path;
	}

	public NodeOperation getNodeOperation() {
		Command c = this.Operation.getCommand();
		switch(c){
		case Command.PUT_ATTRIBUTE:
			return new PutAttributeOperation(Operation.getKey(), Operation.getValue());
		case Command.APPEND_CHILD:
			return new AppendChildAtOperation(Operation.getPosition());
		case Command.DELETE_CHILD:
			return new DeleteChildAtOperation(Operation.getPosition());
		case Command.DELETE_ATTRIBUTE:
			return new DeleteAttributeOperation(Operation.getKey());
		default:
			break;
		}
		return null;
	}
}