using System.Collections.Generic;
public static void Main(string[] args)
var world = new FinalWorld();
for (var i = 0; i < max; i++) {}
public class FrameEvent {
public FrameEvent(String Msg, Dictionary<String,object> Parameters) {
this.Parameters = Parameters;
public Dictionary<String,Object> Parameters;
public partial class FinalWorld {
FrameEvent e = new FrameEvent(">>",null);
FrameEvent e = new FrameEvent("<<",null);
public void tick(Object source,ElapsedEventArgs elapsedEvent) {
Dictionary<String,object> parameters = new Dictionary<String,object>();
parameters["source"] = source;
parameters["elapsedEvent"] = elapsedEvent;
FrameEvent e = new FrameEvent("tick",parameters);
private void _sBegin_(FrameEvent e) {
if (e.Msg.Equals(">>")) {
print_do("In the Beginning...");
_transition_(_sWorking_);
private void _sWorking_(FrameEvent e) {
else if (e.Msg.Equals("<")) {
print_do("Done working");
else if (e.Msg.Equals("tick")) {
_transition_(_sResting_);
private void _sResting_(FrameEvent e) {
else if (e.Msg.Equals("<")) {
print_do("Done resting");
else if (e.Msg.Equals("tick")) {
_transition_(_sWorking_);
private void _sDefault_(FrameEvent e) {
if (e.Msg.Equals("<<")) {
private void _sEnd_(FrameEvent e) {
print_do("End of the World");
public virtual void print_do(string msg) {
public virtual void startTimer_do(int interval) {
timer = new System.Timers.Timer();
timer.Interval = interval;
public virtual void stopTimer_do() {
private delegate void FrameState(FrameEvent e);
private FrameState _state_;
private void _transition_(FrameState newState) {
FrameEvent exitEvent = new FrameEvent("<",null);
FrameEvent enterEvent = new FrameEvent(">",null);