//Runs .Behaviour method for all actors and active blocks. These are stored in WrapperList public void DoTurn() { TurnCount += 1; MonoBehaviour.print("TurnCount: " + TurnCount.ToString()); int ActionCount = 0; //Used to prevent endless loop IsRunning = true; //Might read this in other scripts Action NewAction; for (RunCount = 0; RunCount < WrapperList.Count; RunCount++) //Goes through WrapperList { ObjectWrapper Wrapper = WrapperList[RunCount]; //Convenience //Remove Wrapper from list if it is empty or actor/block tiles are inconsistent. if ( (Wrapper.Actor == null && Wrapper.Block == null) || (Wrapper.Actor != null && (Wrapper.Actor.TileOfActor == null || Wrapper.Actor.TileOfActor.ActorOfTile != Wrapper.Actor)) || (Wrapper.Block != null && (Wrapper.Block.TileOfBlock == null || Wrapper.Block.TileOfBlock.BlockOfTile != Wrapper.Block)) ) { WrapperList.RemoveAt(RunCount); RunCount -= 1; continue; } //Checks if actor is set if (Wrapper.Actor != null) { ActionCount = 0; Wrapper.Actor.TurnNumber = RunCount; // Sets turn order so actor can use this information Wrapper.Actor.Energy = Wrapper.Actor.MaxEnergy; //Resets energy to max //Keep running .Behaviour untill energy runs out while (Wrapper.Actor.Energy > 0) { //Prevents endless loop, some actions might not cost energy if (ActionCount >= ActionLimit) { print("Action Count exceeded limit for " + Wrapper.Actor.Name); break; } //Runs .Behaviour to get the action the actor wants to perform NewAction = Wrapper.Actor.Behaviour(); //Checks if Actor has enought energy and nothing is preventing the action. Actors should check this themselves, this just prevents bugs if (NewAction.EnergyCost <= Wrapper.Actor.Energy && NewAction.CanActivate(Wrapper.Actor)) { //Performs the action NewAction.Activate(Wrapper.Actor); Wrapper.Actor.Energy -= NewAction.EnergyCost; } else { //Sends a message so the bug can be found print(Wrapper.Actor.Name + " instance returned action that could not be activated!"); break; } ActionCount += 1; } } //Blocks have no Action equivalent. .Behaviour does stuff itself if (Wrapper.Block != null) { Wrapper.Block.TurnNumber = RunCount; Wrapper.Block.Behaviour(); } } IsRunning = false; //Draws the room foreach (GameObject Sprite in SpriteList) { Destroy(Sprite); } SpriteList = ActiveRoom.RenderRoom(); }
// Icon,Show Name, Full Path, TypFile public WorkspaceTree() { treeView = new TreeView(); treeView.ButtonReleaseEvent += new ButtonReleaseEventHandler(OnButtonRelease); treeView.KeyReleaseEvent += delegate(object o, KeyReleaseEventArgs args) { if (args.Event.Key == Gdk.Key.Delete) { MainClass.MainWindow.DeleteFile(); } }; //treeView.Model = modelStore = store; filter = new Gtk.TreeModelFilter(store, null); filter.VisibleFunc = new Gtk.TreeModelFilterVisibleFunc(FilterTree); treeView.Model = filter; treeView.HeadersVisible = true; //this.ExpandAll(); treeView.Selection.Mode = Gtk.SelectionMode.Single; treeView.RowActivated += OnRowActivate; treeView.Selection.Changed += OnRowSelection; treeView.ShowExpanders = true; // TreeViewColumn display_column.PackStart (text_render, true); CellRendererPixbuf crp = new CellRendererPixbuf(); crp.Ypad = 0; crp.Yalign = 0; Gtk.CellRendererText fileNameRenderer = new Gtk.CellRendererText(); fileNameRenderer.Ypad = 0; TreeViewColumn icon_column = new TreeViewColumn(); //("Icon", crp, "pixbuf", ICO_ROW); icon_column.PackStart(crp, false); icon_column.AddAttribute(crp, "pixbuf", ICO_ROW); icon_column.PackStart(fileNameRenderer, true); icon_column.AddAttribute(fileNameRenderer, "markup", NAME_ROW); treeView.AppendColumn(icon_column); //treeView.AppendColumn("Icon", crp, "pixbuf", ICO_ROW); treeView.AppendColumn("Name", fileNameRenderer, "text", NAME_ROW); treeView.Columns[NAME_ROW].Visible = false; CellRendererText textRenderer = new CellRendererText(); textRenderer.Ypad = 0; treeView.AppendColumn("FullPath", textRenderer, "text", PATH_ROW); treeView.Columns[PATH_ROW].Visible = false; treeView.HeadersVisible = false; treeView.EnableTreeLines = true; treeView.HoverExpand = false; treeView.HoverSelection = false; treeView.Columns[NAME_ROW].SetCellDataFunc(fileNameRenderer, new Gtk.TreeCellDataFunc(RenderFileNme)); sw.ShadowType = ShadowType.Out; sw.Add(treeView); this.PackEnd(sw, true, true, 0); Toolbar toolbar = new Toolbar(); refreshButton = new ToolButton("refresh.png"); //Stock.Home); refreshButton.IsImportant = true; refreshButton.Label = MainClass.Languages.Translate("menu_refresh"); refreshButton.BorderWidth = 1; refreshButton.Clicked += delegate { MainClass.MainWindow.RefreshProject(); }; toolbar.Insert(refreshButton, -1); Gtk.Menu menuAdd = new Gtk.Menu(); MenuItem mi = new MenuItem(MainClass.Languages.Translate("menu_create_file")); mi.Activated += delegate(object sender, EventArgs e) { NewAction nw = new NewAction(); nw.Activate(); }; menuAdd.Insert(mi, -1); mi = new MenuItem(MainClass.Languages.Translate("menu_create_dir")); mi.Activated += delegate(object sender, EventArgs e) { NewDirectoryAction nw = new NewDirectoryAction(); nw.Activate(); }; menuAdd.Insert(mi, -1); menuAdd.ShowAll(); mtbCreate = new MenusToolButton(menuAdd, "file-new.png"); mtbCreate.IsImportant = true; mtbCreate.Label = "Create"; toolbar.Insert(mtbCreate, -1); if (MainClass.Settings.LogicalSort == null) { MainClass.Settings.LogicalSort = LogicalSystem.GetDefaultLogicalSystem(); } Gtk.Menu menuFilter = new Gtk.Menu(); MenuItem menuItemFilter = new MenuItem(MainClass.Languages.Translate("all_files")); menuItemFilter.Activated += delegate(object sender, EventArgs e) { activetFilter = null; filter.Refilter(); treeView.QueueDraw(); }; menuFilter.Insert(menuItemFilter, -1); foreach (LogicalSystem ls in MainClass.Settings.LogicalSort) { LogicalSystem lsTemp = ls; menuItemFilter = new MenuItem(lsTemp.Display); menuItemFilter.Activated += delegate(object sender, EventArgs e) { if (lsTemp != null) { activetFilter = lsTemp; } else { activetFilter = null; } filter.Refilter(); treeView.QueueDraw(); }; menuFilter.Insert(menuItemFilter, -1); //filterModel.AppendValues(ls.Display, "", ls); } menuFilter.ShowAll(); MenusToolButton mtbFilter = new MenusToolButton(menuFilter, "filter.png"); mtbFilter.IsImportant = true; mtbFilter.Label = "Filter"; toolbar.Insert(mtbFilter, -1); this.PackStart(toolbar, false, false, 0); //this.PackStart(ComboFilter, false, false, 0); //ComboFilter.Active = 0; }