using System;
using System.Collections;
namespace CNEE.IF.VCY
{
/// <summary>
/// 任务名称结构体
/// </summary>
public struct taskName
{
//卡车
public bool jinzha;//进闸
public bool chuzha;//出闸
public bool zhuangche;//装车
public bool xieche;//卸车
public bool zhuangchuan;//装船
public bool xiechuan;//卸船
//轮船
public bool jingang;//进港
public bool chugang;//出港
}
/// <summary>
/// 任务类
/// </summary>
public class Task
{
/// <summary>
/// 任务类
/// </summary>
public Task()
{}
/// <summary>
/// 任务名称(结构体)
/// </summary>
public taskName tn;//任务名称
/// <summary>
/// 任务编号
/// </summary>
public int TaskId;//任务编号
/// <summary>
/// 任务是否开始()默认否
/// </summary>
public bool start=false;//任务是否开始
/// <summary>
/// 任务是否结束(默认否)
/// </summary>
public bool end=false;//任务是否结束
/// <summary>
/// 任务是否处于等待状态(默认是)
/// </summary>
public bool wait=false;//任务是否处于等待状态
/// <summary>
/// 任务运行中(默认否)
/// </summary>
public bool running=false;//
}
}
//上面是任务类,下面是实现方法
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
//using CNEE.IF.VCY.Entity3D;
namespace CNEE.IF.VCY
{
/// <summary>
/// taskList 的摘要说明。任务列表引擎类,实现简单任务等待机制
/// </summary>
public class taskListEngine
{
private System.Windows.Forms.Timer timer1;
private System.ComponentModel.IContainer components;
//
// public Timer taskTimer{get{return timer1;}}//计时器控制
//
public taskListEngine()
{
//
// Windows 窗体设计器支持所必需的
//
InitializeComponent();
//
// TODO: 在 InitializeComponent 调用后添加任何构造函数代码
//
}
//
public int TruckId,ContainerType,ContainerId,qu,duan,bey,hang;//卡车编号
//
public int VessileId,vbey,vhang;//轮船编号
//
public IList containersIDs;
/// <summary>
/// 清理所有正在使用的资源。
/// </summary>
// protected override void Dispose( bool disposing )
// {
// if( disposing )
// {
// if(components != null)
// {
// components.Dispose();
// }
// }
// base.Dispose( disposing );
// }
#region Windows 窗体设计器生成的代码
/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.components = new System.ComponentModel.Container();
this.timer1 = new System.Windows.Forms.Timer(this.components);
//
// timer1
//
this.timer1.Tick += new System.EventHandler(this.timer1_Tick);
//
// taskList
//
// this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);
// this.ClientSize = new System.Drawing.Size(292, 273);
// this.Name = "taskList";
// this.Text = "taskList";
}
#endregion
//
/// <summary>
/// 任务动态数组
/// </summary>
private IList tasklist=new ArrayList();
public IList tasklists{get{return tasklist;}set{tasklist=value;}}
/// <summary>
/// 完成 或者要移除的任务动态数组
/// </summary>
private IList removeTaskList=new ArrayList();
public IList removeTaskLists{get{return removeTaskList;}set{removeTaskList=value;}}
private IList waitTask=new ArrayList();
/// <summary>
/// 检验任务目标,任务编号+条件(!等待,开始,运行中,!完成)的时候开始任务
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void timer1_Tick(object sender, System.EventArgs e)
{
foreach(Task delTask in removeTaskList)
{
tasklist.Remove(delTask);
}
removeTaskList.Clear();
int id=2;
foreach(Task ta in tasklist)
{
id++;
ta.TaskId=id;//重新任务编号
}
//下面按任务编号顺序来实现任务
foreach(Task tn in tasklist)
{
//只完成一个任务
if(tn.start&&tn.running)
{
tn.TaskId=1;//保证这个运行的是任务编号1
if(!tn.wait&&!tn.end)
{
//任务处于等待,这个时候开始任务
#region
if(tn.tn.chugang)
{
tn.wait=false;
tn.start=true;
tn.running=true;
tn.end=false;
Globals.Scene.OnVehicleLeave(VessileId);
}
if(tn.tn.chuzha)
{
tn.wait=false;
tn.start=true;
tn.running=true;
tn.end=false;
Globals.Scene.OnTruckLeave(TruckId);
}
if(tn.tn.jingang)
{
tn.wait=false;
tn.start=true;
tn.running=true;
tn.end=false;
Globals.Scene.OnVehicleArrive(1,SaveOrReadYardBoxInfo.readVessileBoxInfo(""),1,out VessileId,out containersIDs);
}
if(tn.tn.jinzha)
{
tn.wait=false;
tn.start=true;
tn.running=true;
tn.end=false;
Globals.Scene.OnTruckArrive(1,ContainerType,out TruckId,out ContainerId);
}
if(tn.tn.xieche)
{
tn.wait=false;
tn.start=true;
tn.running=true;
tn.end=false;
Globals.Scene.OnTruckUnLoad(TruckId,qu,duan,bey,hang);
}
if(tn.tn.xiechuan)
{
tn.wait=false;
tn.start=true;
tn.running=true;
tn.end=false;
Globals.Scene.OnVehicleUnLoad(VessileId,TruckId,TruckId,vbey,vhang);
}
if(tn.tn.zhuangche)
{
tn.wait=false;
tn.start=true;
tn.running=true;
tn.end=false;
Globals.Scene.OnTruckLoad(TruckId,qu,duan,bey,hang);
}
if(tn.tn.zhuangchuan)
{
tn.wait=false;
tn.start=true;
tn.running=true;
tn.end=false;
Globals.Scene.OnVehicleLoad(VessileId,TruckId,TruckId,vbey,vhang);
}
#endregion
}
if(tn.wait)
{
tn.TaskId=1000;
waitTask.Add(tn.wait);
}
break;
}
//
}
//等待中的任务往后移动
foreach(Task waitTk in waitTask)
{
tasklist.Remove(waitTk);
}
foreach(Task addwaitTK in waitTask)
{
tasklist.Add(addwaitTK);
}
waitTask.Clear();
//
}
//开始计时器
public void startTimer()
{
timer1.Start();
}
//停止计时器
public void stopTimer()
{
timer1.Stop();
}
//增加任务
public void addTask(Task tk)
{
tasklist.Add(tk);
}
//移除任务
public void delTask(Task tk)
{
removeTaskList.Add(tk);
}
//开始任务
public void startTask(Task tk)
{
tk.start=true;
tk.running=true;
tk.wait=false;
tk.end=false;
addTask(tk);
}
//结束任务
public void endTask(int TaskId)
{
foreach(Task tk in tasklist)
if(tk.TaskId==TaskId)
{
tk.running=false;
tk.start=false;
tk.wait=false;
//
tk.end=true;
}
}
/*************************************************************************/
//暂停任务
private void pouseTask(int TaskId)
{
foreach(Task tk in tasklist)
if(tk.TaskId==TaskId)
{
tk.running=false;
tk.wait=true;
}
}
//继续任务
private void ContinueTask(int TaskID)
{
foreach(Task tk in tasklist)
if(tk.TaskId==TaskID)
{
tk.running=true;
tk.wait=false;
}
}
}
}
using System.Collections;
namespace CNEE.IF.VCY
{
/// <summary>
/// 任务名称结构体
/// </summary>
public struct taskName
{
//卡车
public bool jinzha;//进闸
public bool chuzha;//出闸
public bool zhuangche;//装车
public bool xieche;//卸车
public bool zhuangchuan;//装船
public bool xiechuan;//卸船
//轮船
public bool jingang;//进港
public bool chugang;//出港
}
/// <summary>
/// 任务类
/// </summary>
public class Task
{
/// <summary>
/// 任务类
/// </summary>
public Task()
{}
/// <summary>
/// 任务名称(结构体)
/// </summary>
public taskName tn;//任务名称
/// <summary>
/// 任务编号
/// </summary>
public int TaskId;//任务编号
/// <summary>
/// 任务是否开始()默认否
/// </summary>
public bool start=false;//任务是否开始
/// <summary>
/// 任务是否结束(默认否)
/// </summary>
public bool end=false;//任务是否结束
/// <summary>
/// 任务是否处于等待状态(默认是)
/// </summary>
public bool wait=false;//任务是否处于等待状态
/// <summary>
/// 任务运行中(默认否)
/// </summary>
public bool running=false;//
}
}
//上面是任务类,下面是实现方法
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
//using CNEE.IF.VCY.Entity3D;
namespace CNEE.IF.VCY
{
/// <summary>
/// taskList 的摘要说明。任务列表引擎类,实现简单任务等待机制
/// </summary>
public class taskListEngine
{
private System.Windows.Forms.Timer timer1;
private System.ComponentModel.IContainer components;
//
// public Timer taskTimer{get{return timer1;}}//计时器控制
//
public taskListEngine()
{
//
// Windows 窗体设计器支持所必需的
//
InitializeComponent();
//
// TODO: 在 InitializeComponent 调用后添加任何构造函数代码
//
}
//
public int TruckId,ContainerType,ContainerId,qu,duan,bey,hang;//卡车编号
//
public int VessileId,vbey,vhang;//轮船编号
//
public IList containersIDs;
/// <summary>
/// 清理所有正在使用的资源。
/// </summary>
// protected override void Dispose( bool disposing )
// {
// if( disposing )
// {
// if(components != null)
// {
// components.Dispose();
// }
// }
// base.Dispose( disposing );
// }
#region Windows 窗体设计器生成的代码
/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.components = new System.ComponentModel.Container();
this.timer1 = new System.Windows.Forms.Timer(this.components);
//
// timer1
//
this.timer1.Tick += new System.EventHandler(this.timer1_Tick);
//
// taskList
//
// this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);
// this.ClientSize = new System.Drawing.Size(292, 273);
// this.Name = "taskList";
// this.Text = "taskList";
}
#endregion
//
/// <summary>
/// 任务动态数组
/// </summary>
private IList tasklist=new ArrayList();
public IList tasklists{get{return tasklist;}set{tasklist=value;}}
/// <summary>
/// 完成 或者要移除的任务动态数组
/// </summary>
private IList removeTaskList=new ArrayList();
public IList removeTaskLists{get{return removeTaskList;}set{removeTaskList=value;}}
private IList waitTask=new ArrayList();
/// <summary>
/// 检验任务目标,任务编号+条件(!等待,开始,运行中,!完成)的时候开始任务
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void timer1_Tick(object sender, System.EventArgs e)
{
foreach(Task delTask in removeTaskList)
{
tasklist.Remove(delTask);
}
removeTaskList.Clear();
int id=2;
foreach(Task ta in tasklist)
{
id++;
ta.TaskId=id;//重新任务编号
}
//下面按任务编号顺序来实现任务
foreach(Task tn in tasklist)
{
//只完成一个任务
if(tn.start&&tn.running)
{
tn.TaskId=1;//保证这个运行的是任务编号1
if(!tn.wait&&!tn.end)
{
//任务处于等待,这个时候开始任务
#region
if(tn.tn.chugang)
{
tn.wait=false;
tn.start=true;
tn.running=true;
tn.end=false;
Globals.Scene.OnVehicleLeave(VessileId);
}
if(tn.tn.chuzha)
{
tn.wait=false;
tn.start=true;
tn.running=true;
tn.end=false;
Globals.Scene.OnTruckLeave(TruckId);
}
if(tn.tn.jingang)
{
tn.wait=false;
tn.start=true;
tn.running=true;
tn.end=false;
Globals.Scene.OnVehicleArrive(1,SaveOrReadYardBoxInfo.readVessileBoxInfo(""),1,out VessileId,out containersIDs);
}
if(tn.tn.jinzha)
{
tn.wait=false;
tn.start=true;
tn.running=true;
tn.end=false;
Globals.Scene.OnTruckArrive(1,ContainerType,out TruckId,out ContainerId);
}
if(tn.tn.xieche)
{
tn.wait=false;
tn.start=true;
tn.running=true;
tn.end=false;
Globals.Scene.OnTruckUnLoad(TruckId,qu,duan,bey,hang);
}
if(tn.tn.xiechuan)
{
tn.wait=false;
tn.start=true;
tn.running=true;
tn.end=false;
Globals.Scene.OnVehicleUnLoad(VessileId,TruckId,TruckId,vbey,vhang);
}
if(tn.tn.zhuangche)
{
tn.wait=false;
tn.start=true;
tn.running=true;
tn.end=false;
Globals.Scene.OnTruckLoad(TruckId,qu,duan,bey,hang);
}
if(tn.tn.zhuangchuan)
{
tn.wait=false;
tn.start=true;
tn.running=true;
tn.end=false;
Globals.Scene.OnVehicleLoad(VessileId,TruckId,TruckId,vbey,vhang);
}
#endregion
}
if(tn.wait)
{
tn.TaskId=1000;
waitTask.Add(tn.wait);
}
break;
}
//
}
//等待中的任务往后移动
foreach(Task waitTk in waitTask)
{
tasklist.Remove(waitTk);
}
foreach(Task addwaitTK in waitTask)
{
tasklist.Add(addwaitTK);
}
waitTask.Clear();
//
}
//开始计时器
public void startTimer()
{
timer1.Start();
}
//停止计时器
public void stopTimer()
{
timer1.Stop();
}
//增加任务
public void addTask(Task tk)
{
tasklist.Add(tk);
}
//移除任务
public void delTask(Task tk)
{
removeTaskList.Add(tk);
}
//开始任务
public void startTask(Task tk)
{
tk.start=true;
tk.running=true;
tk.wait=false;
tk.end=false;
addTask(tk);
}
//结束任务
public void endTask(int TaskId)
{
foreach(Task tk in tasklist)
if(tk.TaskId==TaskId)
{
tk.running=false;
tk.start=false;
tk.wait=false;
//
tk.end=true;
}
}
/*************************************************************************/
//暂停任务
private void pouseTask(int TaskId)
{
foreach(Task tk in tasklist)
if(tk.TaskId==TaskId)
{
tk.running=false;
tk.wait=true;
}
}
//继续任务
private void ContinueTask(int TaskID)
{
foreach(Task tk in tasklist)
if(tk.TaskId==TaskID)
{
tk.running=true;
tk.wait=false;
}
}
}
}