protected override async Task OnMessageActivityAsync(ITurnContext <IMessageActivity> turnContext, CancellationToken cancellationToken) { stepInformation = await GetConversationStep(turnContext); switch (stepInformation.Step) { case ChatStep.UserInformation: case ChatStep.None: await CaptureUserInformation(turnContext, cancellationToken); break; case ChatStep.ChatInformation: await CaptureChatInformation(turnContext, cancellationToken); break; case ChatStep.UserFeedback: await CaptureUserFeedback(turnContext, cancellationToken); break; case ChatStep.SupportTicket: await CaptureSupportTicketInformation(turnContext, cancellationToken); break; default: break; } }
public SimulationArea GetCurrentSimulationArea(uint offset, uint totalDevisions) { StepInformation stepInformation = GetStepInformation(offset, totalDevisions); int columnCount = WorldDimensions.Width / Dimensions.Width; int rowCount = WorldDimensions.Height / Dimensions.Height; WorldPosition position = new WorldPosition(); position.X = (stepInformation.simulationPosition - ((int)(stepInformation.simulationPosition / columnCount) * columnCount)) * Dimensions.Width; position.Y = (stepInformation.simulationPosition / columnCount) * Dimensions.Height; WorldDimensions dimensions = new WorldDimensions(); dimensions.Width = Math.Min(WorldDimensions.Width - position.X, Dimensions.Width); dimensions.Height = Math.Min(WorldDimensions.Height - position.Y, Dimensions.Height); position.X -= Radius; position.Y -= Radius; dimensions.Width += Radius * 2; dimensions.Height += Radius * 2; if (position.X < 0) { int diff = position.X * -1; position.X += diff; dimensions.Width -= diff; } if (position.X + dimensions.Width > WorldDimensions.Width) { int diff = (position.X + dimensions.Width) - WorldDimensions.Width; dimensions.Width -= diff; } if (position.Y < 0) { int diff = position.Y * -1; position.Y += diff; dimensions.Height -= diff; } if (position.Y + dimensions.Height > WorldDimensions.Height) { int diff = (position.Y + dimensions.Height) - WorldDimensions.Height; dimensions.Height -= diff; } return(new SimulationArea(dimensions, position, stepInformation.simulationPosition)); }
private StepInformation GetStepInformation(uint offset, uint totalDevisions) { StepInformation result = default(StepInformation); result.totalStepsForWorld = (uint)((WorldDimensions.Width / Dimensions.Width) * (WorldDimensions.Height / Dimensions.Height)); uint devidedStepsForWorld = result.totalStepsForWorld / totalDevisions; uint offsetSteps = devidedStepsForWorld * offset; uint simulationStepWithOffset = SimulationStep + offsetSteps; result.worldSteps = (int)(simulationStepWithOffset / result.totalStepsForWorld); result.minorSteps = (int)(result.worldSteps * result.totalStepsForWorld); result.simulationPosition = (int)simulationStepWithOffset - result.minorSteps; return(result); }