protected virtual Cmd HandleNextMoveCmd(Cmd cmd) { MovementCmd movementCmd = (MovementCmd)cmd; Coordinate to = movementCmd.Coordinates[1]; bool isLastCmdInSequence = movementCmd.IsLastCmdInSequence; const bool considerIdleStateAsValid = true; if (!m_dataController.IsValidAndEmpty(to, considerIdleStateAsValid)) { if (m_failedMoveAttempts < m_maxFailedMoveAttempts) { //Do not move if there is voxel actor or voxel bomb in one of active states. just wait a little bit return(null); } } CmdResultCode result = m_dataController.Move(to, isLastCmdInSequence, EatOrDestroyCallback); if (result != CmdResultCode.Success) { RaiseCmdFailed(cmd, result); } return(cmd); }
protected virtual void OnConvert(Cmd cmd) { ChangeParamsCmd changeParams = (ChangeParamsCmd)cmd; int type = changeParams.IntParams[0]; bool isVisible = m_controlledVoxel != null; if (isVisible) { m_controlledVoxel.Kill(); } CmdResultCode noFail = m_dataController.Convert(type, DieCallback); if (noFail != CmdResultCode.Success) { throw new InvalidOperationException(); } if (isVisible) { VoxelData voxelData = m_voxelMap.Map.Get(m_dataController.Coordinate); MapPos mapPos = m_dataController.Coordinate.MapPos; int weight = m_dataController.Coordinate.Weight; AcquireVoxel(voxelData, mapPos, weight); } }
private void ExecuteCommand(Cmd cmd) { if (cmd.Code == CmdCode.Spawn) { Coordinate[] coordinates; CmdResultCode noFail = m_dataController.PerformSpawnAction(out coordinates); if (noFail != CmdResultCode.Success) { throw new InvalidOperationException(); } for (int i = 0; i < coordinates.Length; ++i) { Coordinate coordinate = coordinates[i]; MapPos mapPos = coordinate.MapPos; MapCell cell = m_voxelMap.Map.Get(coordinate.Row, coordinate.Col, coordinate.Weight); VoxelData data = cell.GetVoxelDataAt(coordinate.Altitude); m_createdVoxels.Add(new VoxelDataCellPair(data, cell)); int weight = coordinate.Weight; if (m_voxelMap.IsVisible(mapPos, weight)) { AcquireVoxel(data, mapPos, weight); } } } }
/// <summary> /// 连续指令结束 /// </summary> /// <param name="iixServer"></param> /// <param name="pg"></param> /// <returns></returns> public static CmdResultCode SequenceEnd(IIXServer iixServer, PgSelectCode pg) { CmdResultCode cmdRes = CmdResultCode.Other; //查询当前屏幕是否在集合中存在 OLEDPanel panel = Global.ListOLEDPanel.Where(info => info.PanelPos == iixServer.AssociatedPanelPos).FirstOrDefault(); if (panel != null) { if (panel.CmdResWork == CmdResultCode.Success) { cmdRes = iixServer.DmrSvrApi.SequenceEnd(pg); iixServer.LatestResult = cmdRes.ToString(); if (cmdRes == CmdResultCode.Success) { iixServer.SetSequenceEnd(pg); Log.GetInstance().NormalWrite(string.Format("[{0}]连续指令[{1}]结束成功", iixServer.Ip, pg.ToString())); } else { Log.GetInstance().ErrorWrite(string.Format("[{0}]连续指令[{1}]结束失败,Error:{2}", iixServer.Ip, pg.ToString(), cmdRes.ToString())); } } else { cmdRes = panel.CmdResWork; Log.GetInstance().ErrorWrite(string.Format("[{0}]连续指令结束失败,Error:{1}", iixServer.Ip, cmdRes.ToString())); } } Global.UpdateDgv(ip: iixServer.Ip, pgPrimary: OutlineStateCode.Stable.ToString(), latestResult: iixServer.LatestResult); return(cmdRes); }
protected virtual void OnDiminish() { int previousAltitude = m_dataController.ControlledData.Altitude; CmdResultCode noFail = m_dataController.Diminish(ExpandCallback); if (noFail != CmdResultCode.Success) { throw new InvalidOperationException(); } if (m_controlledVoxel == null) { CollapseEatExpandClear(m_currentTick); } else { Vector3 position = m_voxelMap.GetWorldPosition(m_dataController.Coordinate); m_controlledVoxel.Diminish(position, m_currentTick, m_currentCmdDuration); int newAltitude = m_dataController.ControlledData.Altitude; m_controlledVoxel.ChangeAltitude(previousAltitude, newAltitude, m_currentCmdDuration, 0); float duration = (m_dataController.Abilities.DiminishDuration) * GameConstants.MatchEngineTick; EatAndExpand(m_currentTick, duration); } }
/// <summary> /// 转换PG /// </summary> /// <param name="iixServer"></param> /// <returns></returns> public static CmdResultCode TableRotation(IIXServer iixServer) { CmdResultCode cmdRes = CmdResultCode.Other; //查询当前屏幕是否在集合中存在 OLEDPanel panel = Global.ListOLEDPanel.Where(info => info.PanelPos == iixServer.AssociatedPanelPos).FirstOrDefault(); if (panel != null) { if (panel.CmdResWork == CmdResultCode.Success) { cmdRes = iixServer.DmrSvrApi.TableRotation(); iixServer.LatestResult = cmdRes.ToString(); if (cmdRes == CmdResultCode.Success) { iixServer.SetTableRotation(); Log.GetInstance().NormalWrite(string.Format("[{0}]转换PG成功", iixServer.Ip)); } else { Log.GetInstance().ErrorWrite(string.Format("[{0}]转换PG失败,Error:{1}", iixServer.Ip, cmdRes.ToString())); } } else { cmdRes = panel.CmdResWork; Log.GetInstance().ErrorWrite(string.Format("[{0}]转换PG失败,Error:{1}", iixServer.Ip, cmdRes.ToString())); } } Global.UpdateDgv(ip: iixServer.Ip, pgPrimary: iixServer.OutlineState[0].ToString(), pgSecondary: iixServer.OutlineState[1].ToString(), latestResult: iixServer.LatestResult); return(cmdRes); }
protected virtual void OnGrow() { int previousAltitude = m_dataController.ControlledData.Altitude; CmdResultCode noFail = m_dataController.Grow(EatOrDestroyCallback, CollapseCallback); if (noFail != CmdResultCode.Success) { throw new InvalidOperationException(); } if (m_controlledVoxel == null) { CollapseEatExpandClear(m_currentTick); } else { m_controlledVoxel.Health = m_dataController.Abilities.DefaultHealth;// // m_dataController.ControlledData.Health; Vector3 position = m_voxelMap.GetWorldPosition(m_dataController.Coordinate); m_controlledVoxel.Grow(position, m_currentTick, m_currentCmdDuration); int newAltitude = m_dataController.ControlledData.Altitude; m_controlledVoxel.ChangeAltitude(previousAltitude, newAltitude, m_currentCmdDuration, 0); float duration = (m_dataController.Abilities.GrowDuration) * GameConstants.MatchEngineTick; Collapse(m_currentTick, duration); } }
protected override bool GetSuitableData(SearchAroundContext ctx, VoxelData unitData, int row, int col, out int altitude) { altitude = int.MinValue; MapCell cell = m_taskEngine.MatchEngine.Map.Get(row, col, ctx.m_weight); if (cell.Last == null) { return(false); } if (cell.Last == unitData) { altitude = cell.Last.Prev.Altitude; } else { altitude = cell.Last.Altitude; } Coordinate coordinate = new Coordinate(row, col, altitude, ctx.m_weight); CmdResultCode result = m_dataController.CanSplit4( m_dataController.ControlledData.Type, m_dataController.ControlledData.Health, coordinate); return(result == CmdResultCode.Success); }
private void OnCmdExecuted(CmdResultCode cmdErrorCode) { m_unit.CmdExecuted -= OnCmdExecuted; if (cmdErrorCode == CmdResultCode.Success) { OnCompleted(); } else { OnFailed(); } }
protected void RaiseCmdFailed(Cmd cmd, CmdResultCode errorCode) { if (cmd != null) { cmd.ErrorCode = errorCode; } GoToIdleState(); if (CmdExecuted != null) { CmdExecuted(errorCode); } }
protected virtual void OnSplit4(Cmd cmd) { if (m_controlledVoxel != null) { m_controlledVoxel.Split4(m_currentTick, cmd.Duration * GameConstants.MatchEngineTick); } Coordinate[] coordinates; CmdResultCode noFail = m_dataController.Split4(out coordinates, ExpandCallback, DieCallback); if (noFail != CmdResultCode.Success) { throw new InvalidOperationException(); } int visibleCount = 0; for (int i = 0; i < coordinates.Length; ++i) { Coordinate coordinate = coordinates[i]; //Voxel cloneActor = null; if (m_voxelMap.IsVisible(coordinate.MapPos, coordinate.Weight)) { VoxelData voxelData = m_voxelMap.Map.Get(coordinate); // cloneActor = AcquireVoxel(voxelData, coordinate.MapPos, coordinate.Weight); visibleCount++; } } m_eatCommands.Clear(); //clear needed because voxel already reflected current Health value during AcquireReleaseVisibility method call //no execution of eat commands required in this case if (visibleCount == 0) { CollapseEatExpandClear(m_currentTick); } else { /*This code should be moved to Split4 Animation OnBeforeCompleted event handler*/ Collapse(m_currentTick, 0); EatAndExpand(m_currentTick, 0); } }
/// <summary> /// 修改时间 /// </summary> /// <param name="iixServer"></param> /// <param name="dateTime"></param> /// <returns></returns> public static CmdResultCode AdjustPCTime(IIXServer iixServer, DateTimeInfo dateTime) { CmdResultCode cmdRes = CmdResultCode.Other; cmdRes = iixServer.DmrSvrApi.AdjustPCTime(dateTime); iixServer.LatestResult = cmdRes.ToString(); if (cmdRes == CmdResultCode.Success) { Log.GetInstance().NormalWrite(string.Format("[{0}]修改时间成功", iixServer.Ip)); } else { Log.GetInstance().ErrorWrite(string.Format("[{0}]修改时间失败,Error:{1}", iixServer.Ip, cmdRes.ToString())); } return(cmdRes); }
/// <summary> /// 更新License /// </summary> /// <param name="iixServer"></param> /// <param name="licenseFile"></param> /// <returns></returns> public static CmdResultCode UpdateLicense(IIXServer iixServer, string licenseFile) { CmdResultCode cmdRes = CmdResultCode.Other; cmdRes = iixServer.DmrSvrApi.UpdateLicense(licenseFile); iixServer.LatestResult = cmdRes.ToString(); if (cmdRes == CmdResultCode.Success) { Log.GetInstance().NormalWrite(string.Format("[{0}]更新License成功", iixServer.Ip)); } else { Log.GetInstance().ErrorWrite(string.Format("[{0}]更新License失败,Error:{1}", iixServer.Ip, cmdRes.ToString())); } return(cmdRes); }
protected virtual void OnStateChanged(Cmd cmd) { ChangeParamsCmd changeParamsCmd = (ChangeParamsCmd)cmd; VoxelDataState prevState = m_dataController.GetVoxelDataState(); CmdResultCode noFail = m_dataController.SetVoxelDataState((VoxelDataState)changeParamsCmd.IntParams[1]); if (noFail != CmdResultCode.Success) { throw new InvalidOperationException(); } if (m_controlledVoxel != null) { m_controlledVoxel.OnStateChanged(prevState, m_dataController.GetVoxelDataState()); } }
/// <summary> /// 切断和 SlavePC 的连接 /// </summary> /// <param name="iixServer"></param> /// <returns></returns> public static CmdResultCode Disconnect(IIXServer iixServer) { CmdResultCode cmdRes = CmdResultCode.Other; cmdRes = iixServer.DmrSvrApi.Disconnect(); iixServer.LatestResult = cmdRes.ToString(); if (cmdRes == CmdResultCode.Success) { iixServer.ConnState = ConnectionCode.Disconnect; Log.GetInstance().NormalWrite(string.Format("关闭[{0}]服务端成功", iixServer.Ip)); } else { Log.GetInstance().ErrorWrite(string.Format("关闭[{0}]服务端成功,Error:{1}", iixServer.Ip, cmdRes.ToString())); } Global.UpdateDgv(ip: iixServer.Ip, connOpen: iixServer.ConnState.ToString(), latestResult: iixServer.LatestResult); return(cmdRes); }
/// <summary> /// 获取Capture(获取拍摄数据)处理结果 /// </summary> /// <param name="iixServer"></param> /// <param name="pg"></param> /// <returns></returns> public static CmdResultCode GetCaptureResult(IIXServer iixServer, PgSelectCode pg) { CmdResultCode cmdRes = CmdResultCode.Other; //查询当前屏幕是否在集合中存在 OLEDPanel panel = Global.ListOLEDPanel.Where(info => info.PanelPos == iixServer.AssociatedPanelPos).FirstOrDefault(); if (panel != null) { //如果上一次的检测结果是正确的才继续执行当前的工作 if (panel.CmdResWork == CmdResultCode.Success) { cmdRes = iixServer.DmrSvrApi.GetCaptureResult(pg); iixServer.LatestResult = cmdRes.ToString(); if (cmdRes == CmdResultCode.Success) { Log.GetInstance().NormalWrite(string.Format("获取[{0}]Capture(获取拍摄数据)处理结果成功", iixServer.Ip)); } else { Log.GetInstance().ErrorWrite(string.Format("获取[{0}]Capture(获取拍摄数据)处理结果失败,Error:{1}", iixServer.Ip, cmdRes.ToString())); } //修改执行结果 panel.CmdResWork = cmdRes; } else { cmdRes = panel.CmdResWork; Log.GetInstance().ErrorWrite(string.Format("获取[{0}]Capture(获取拍摄数据)处理结果失败,Error:{1}", iixServer.Ip, cmdRes.ToString())); } } Global.UpdateDgv(ip: iixServer.Ip, latestResult: iixServer.LatestResult); return(cmdRes); }
/// <summary> /// 设置Panel显示Raster图像 /// </summary> /// <param name="iixServer"></param> /// <param name="pg"></param> /// <param name="color"></param> /// <param name="isFactory"></param> /// <returns></returns> public static CmdResultCode SetRasterImage(IIXServer iixServer, PgSelectCode pg, Color color, bool isFactory) { CmdResultCode cmdRes = CmdResultCode.Other; //查询当前屏幕是否在集合中存在 OLEDPanel panel = Global.ListOLEDPanel.Where(info => info.PanelPos == iixServer.AssociatedPanelPos).FirstOrDefault(); if (panel != null) { //如果上一次的检测结果是正确的才继续执行当前的工作 if (panel.CmdResWork == CmdResultCode.Success) { cmdRes = iixServer.DmrSvrApi.SetRasterImage(pg, color.R, color.G, color.B, isFactory); iixServer.LatestResult = cmdRes.ToString(); if (cmdRes == CmdResultCode.Success) { Log.GetInstance().NormalWrite(string.Format("设置[{0}]Panel显示Raster图像成功", iixServer.Ip)); } else { Log.GetInstance().ErrorWrite(string.Format("设置[{0}]Panel显示Raster图像失败,Error:{1}", iixServer.Ip, cmdRes.ToString())); } //修改执行结果 panel.CmdResWork = cmdRes; } else { cmdRes = panel.CmdResWork; Log.GetInstance().ErrorWrite(string.Format("设置[{0}]Panel显示Raster图像失败,Error:{1}", iixServer.Ip, cmdRes.ToString())); } } Global.UpdateDgv(ip: iixServer.Ip, latestResult: iixServer.LatestResult); return(cmdRes); }
protected virtual void OnAddAssignment(Cmd cmd) { CreateAssignmentCmd addCmd = (CreateAssignmentCmd)cmd; if (addCmd.CreatePreview) { CmdResultCode noFail = m_dataController.CreatePreview(addCmd.PreviewType, addCmd.PreviewCoordinate); if (noFail != CmdResultCode.Success) { throw new InvalidOperationException(); } Coordinate coordinate = addCmd.PreviewCoordinate; //Voxel cloneActor = null; if (m_voxelMap.IsVisible(coordinate.MapPos, coordinate.Weight)) { Debug.Assert(m_controlledVoxel.Owner == addCmd.TargetPlayerIndex); VoxelData voxelData = m_voxelMap.Map.GetPreview(addCmd.TargetPlayerIndex, coordinate); AcquireVoxel(voxelData, coordinate.MapPos, coordinate.Weight); } } }
/// <summary> /// 关闭 SlavePC 所管理的 Device /// </summary> /// <param name="iixServer"></param> /// <returns></returns> public static CmdResultCode Close(IIXServer iixServer) { CmdResultCode cmdRes = CmdResultCode.Other; cmdRes = iixServer.DmrSvrApi.Close(); iixServer.LatestResult = cmdRes.ToString(); if (cmdRes == CmdResultCode.Success) { iixServer.ConnState = ConnectionCode.Close; iixServer.SetCloseFinished(); Log.GetInstance().NormalWrite(string.Format("关闭[{0}]所管理的Device成功", iixServer.Ip)); } else { Log.GetInstance().ErrorWrite(string.Format("关闭[{0}]所管理的Device失败,Error:{1}", iixServer.Ip, cmdRes.ToString())); } Global.UpdateDgv(ip: iixServer.Ip, connOpen: iixServer.ConnState.ToString(), pgPrimary: iixServer.OutlineState[0].ToString(), pgSecondary: iixServer.OutlineState[1].ToString(), latestResult: iixServer.LatestResult); return(cmdRes); }
/// <summary> /// 向Flash Memory写入文件 /// </summary> /// <param name="iixServer"></param> /// <param name="pg"></param> /// <param name="fileName"></param> /// <returns></returns> public static CmdResultCode WriteFlashMemory(IIXServer iixServer, PgSelectCode pg, string fileName) { CmdResultCode cmdRes = CmdResultCode.Other; //查询当前屏幕是否在集合中存在 OLEDPanel panel = Global.ListOLEDPanel.Where(info => info.PanelPos == iixServer.AssociatedPanelPos).FirstOrDefault(); if (panel != null) { //如果上一次的检测结果是正确的才继续执行当前的工作 if (panel.CmdResWork == CmdResultCode.Success) { cmdRes = iixServer.DmrSvrApi.WriteFlashMemory(pg, fileName); iixServer.LatestResult = cmdRes.ToString(); if (cmdRes == CmdResultCode.Success) { Log.GetInstance().NormalWrite(string.Format("[{0}]向Flash Memory写入文件[{1}]成功", iixServer.Ip, fileName)); } else { Log.GetInstance().ErrorWrite(string.Format("[{0}]向Flash Memory写入文件[{1}]失败,Error:{2}", iixServer.Ip, fileName, cmdRes.ToString())); } //修改执行结果 panel.CmdResWork = cmdRes; } else { cmdRes = panel.CmdResWork; Log.GetInstance().ErrorWrite(string.Format("[{0}]向Flash Memory写入文件[{1}]失败,Error:{2}", iixServer.Ip, fileName, cmdRes.ToString())); } } Global.UpdateDgv(ip: iixServer.Ip, latestResult: iixServer.LatestResult); return(cmdRes); }
/// <summary> /// 获取License剩余次数的请求 /// </summary> /// <param name="iixServer"></param> /// <returns></returns> public static int GetLicenseRemainingCount(IIXServer iixServer) { CmdResultCode cmdRes = CmdResultCode.Other; TransferCounterInfo tci = iixServer.DmrSvrApi.GetRemainingCount(); cmdRes = tci.CmdResult; iixServer.LatestResult = cmdRes.ToString(); if (cmdRes == CmdResultCode.Success) { Log.GetInstance().NormalWrite(string.Format("获取[{0}]License剩余次数[{1}]成功 ", iixServer.Ip, tci.Count)); } else { Log.GetInstance().ErrorWrite(string.Format("获取[{0}]License剩余次数失败,Error:{1}", iixServer.Ip, cmdRes.ToString())); } Global.UpdateDgv(ip: iixServer.Ip, latestResult: iixServer.LatestResult); return(tci.Count); }
protected virtual void OnMove(Cmd cmd) { MovementCmd coordinateCmd = (MovementCmd)cmd; Coordinate to = coordinateCmd.Coordinates[1]; bool isLastCmd = coordinateCmd.IsLastCmdInSequence; CmdResultCode noFail = m_dataController.Move(to, isLastCmd, EatOrDestroyCallback, CollapseCallback, ExpandCallback, ExplodeCallback); if (noFail != CmdResultCode.Success) { throw new InvalidOperationException(); } VoxelData voxelData = m_dataController.ControlledData; MapPos mapPos = m_dataController.Coordinate.MapPos; int weight = m_dataController.Coordinate.Weight; Debug.Assert(weight == m_dataController.ControlledData.Weight); bool wasVisible = m_controlledVoxel != null; AcquireReleaseVisibility(voxelData, mapPos, weight); bool isVisible = m_controlledVoxel != null; if (wasVisible && isVisible) { m_controlledVoxel.Move(voxelData.Altitude, m_currentTick, m_currentCmdDuration); } else { m_eatCommands.Clear(); //clear needed because voxel already reflected current Health value during AcquireReleaseVisibility method call //no execution of eat commands required in this case CollapseEatExpandClear(m_currentTick); Explode(0); } }
protected override Cmd OnTick(long tick) { m_ticksBeforeNextCommand = DataController.Abilities.ActionInterval; Coordinate[] coordinates; CmdResultCode result = m_dataController.PerformSpawnAction(out coordinates); if (result == CmdResultCode.Success) { for (int i = 0; i < coordinates.Length; ++i) { Coordinate coordinate = coordinates[i]; MapCell cell = m_dataController.Map.Get(coordinate.Row, coordinate.Col, coordinate.Weight); VoxelData data = cell.GetVoxelDataAt(coordinate.Altitude); m_createdVoxels.Add(new VoxelDataCellPair(data, cell)); } Cmd cmd = new Cmd(CmdCode.Spawn, Id); cmd.Duration = m_ticksBeforeNextCommand; return(cmd); } return(null); }
/// <summary> /// DeMura Check(补正结果确认)开始 /// </summary> /// <param name="iixServer"></param> /// <param name="pg"></param> /// <returns></returns> public static CmdResultCode DeMuraCheckStart(IIXServer iixServer, PgSelectCode pg) { CmdResultCode cmdRes = CmdResultCode.Other; //查询当前屏幕是否在集合中存在 OLEDPanel panel = Global.ListOLEDPanel.Where(info => info.PanelPos == iixServer.AssociatedPanelPos).FirstOrDefault(); if (panel != null) { //如果上一次的检测结果是正确的才继续执行当前的工作 if (panel.CmdResWork == CmdResultCode.Success) { cmdRes = iixServer.DmrSvrApi.DeMuraCheckStart(pg); iixServer.LatestResult = cmdRes.ToString(); if (cmdRes == CmdResultCode.Success) { Log.GetInstance().NormalWrite(string.Format("[{0}]DeMura Check(补正结果确认)开始成功", iixServer.Ip)); } else { Log.GetInstance().ErrorWrite(string.Format("[{0}]DeMura Check(补正结果确认)开始失败,Error:{1}", iixServer.Ip, cmdRes.ToString())); } //修改执行结果 panel.CmdResWork = cmdRes; } else { cmdRes = panel.CmdResWork; Log.GetInstance().ErrorWrite(string.Format("[{0}]DeMura Check(补正结果确认)开始失败,Error:{1}", iixServer.Ip, cmdRes.ToString())); } } return(cmdRes); }
/// <summary> /// 点灯 /// </summary> /// <param name="iixServer"></param> /// <param name="pg"></param> /// <returns></returns> public static CmdResultCode PanelOn(IIXServer iixServer, PgSelectCode pg) { CmdResultCode cmdRes = CmdResultCode.Other; //查询当前屏幕是否在集合中存在 OLEDPanel panel = Global.ListOLEDPanel.Where(info => info.PanelPos == iixServer.AssociatedPanelPos).FirstOrDefault(); if (panel != null) { if (panel.CmdResWork == CmdResultCode.Success) { cmdRes = iixServer.DmrSvrApi.PanelOn(pg); iixServer.LatestResult = cmdRes.ToString(); if (cmdRes == CmdResultCode.Success) { panel.IsPanelOn = true; iixServer.IsPanelOn = true; Log.GetInstance().NormalWrite(string.Format("屏[{0}]点灯成功", iixServer.AssociatedPanelPos)); } else { iixServer.IsPanelOn = false; Log.GetInstance().ErrorWrite(string.Format("屏[{0}]点灯失败,Error:{1}", iixServer.AssociatedPanelPos, cmdRes.ToString())); } } else { cmdRes = panel.CmdResWork; Log.GetInstance().ErrorWrite(string.Format("屏[{0}]点灯失败,Error:{1}", iixServer.Ip, cmdRes.ToString())); } } Global.UpdateDgv(ip: iixServer.Ip, latestResult: iixServer.LatestResult); return(cmdRes); }
/// <summary> /// 获取Recipe /// </summary> /// <param name="iixServer"></param> /// <param name="recipePath"></param> /// <returns></returns> public static CmdResultCode GetRecipe(IIXServer iixServer, string recipePath) { TransferFileInfo tfi = iixServer.DmrSvrApi.GetRecipe(); CmdResultCode cmdRes = (tfi.IsValid) ? CmdResultCode.Success : CmdResultCode.Other; if (tfi.IsValid) { tfi.Save(recipePath); } iixServer.LatestResult = cmdRes.ToString(); if (cmdRes == CmdResultCode.Success) { Log.GetInstance().NormalWrite(string.Format("[{0}]获取Recipe成功", iixServer.Ip)); } else { Log.GetInstance().ErrorWrite(string.Format("[{0}]获取Recipe失败,Error:{1}", iixServer.Ip, cmdRes.ToString())); } return(cmdRes); }
protected override void OnEvaluating(ExpressionInfo expression, IMatchPlayerView player, IMatchUnitAssetView unit, ITaskEngine taskEngine, Action <object> callback) { CmdResultCode can = unit.DataController.CanSplit4Immediate(); callback(can); }
/// <summary> /// 关灯 /// </summary> /// <param name="iixServer"></param> /// <param name="pg"></param> /// <returns></returns> public static CmdResultCode PanelOff(IIXServer iixServer, PgSelectCode pg) { CmdResultCode cmdRes = CmdResultCode.Other; //查询当前屏幕是否在集合中存在 OLEDPanel panel = Global.ListOLEDPanel.Where(info => info.PanelPos == iixServer.AssociatedPanelPos).FirstOrDefault(); if (panel != null && panel.IsPanelOn) { cmdRes = iixServer.DmrSvrApi.PanelOff(pg); iixServer.LatestResult = cmdRes.ToString(); if (cmdRes == CmdResultCode.Success) { iixServer.IsPanelOn = false; Log.GetInstance().NormalWrite(string.Format("屏[{0}]关灯成功", iixServer.AssociatedPanelPos)); } else { iixServer.IsPanelOn = true; Log.GetInstance().ErrorWrite(string.Format("屏[{0}]关灯失败,Error:{1}", iixServer.AssociatedPanelPos, cmdRes.ToString())); } //如果上一个工位的检测结果是正确的才继续执行当前工位的工作 if (panel.CmdResWork == CmdResultCode.Success) { Global.UpdateDgv(ip: iixServer.Ip, latestResult: iixServer.LatestResult); //修改执行结果 panel.CmdResWork = cmdRes; //修改当前的工作位置 panel.PanelWorkPos = "工位1"; } else { cmdRes = panel.CmdResWork; panel.PanelWorkPos = "工位1"; } lock (Global.ListOLEDPanel) { //将屏从集合中移除 Global.ListOLEDPanel.Remove(panel); } //当所有流程执行完后关灯时添加成功/失败数 if (panel.bRotated) { if (cmdRes == CmdResultCode.Success) { Global.PassNumber++; } else { Global.FailNumber++; } } } Global.SetNumber(); return(cmdRes); }