private void EditTrigger(int fileid, int blockid, int triggerid, QuestTrigger trigger, bool Expand) { tree.BeginUpdate(); DelTrigger(fileid, blockid, triggerid); AddTrigger(fileid, blockid, triggerid, trigger.Clone(), Expand); tree.EndUpdate(); }
private void RenameTrigger(int fileid, int blockid, int triggerid, string name) { TreeNode node = tree.Nodes[fileid].Nodes[blockid].Nodes[triggerid]; QuestTrigger trigger = (QuestTrigger)node.Tag; trigger.Name = name; node.Text = trigger.GetNodeText(); form.SelectNode(node); }
private void AddTrigger(int fileid, int blockid, int triggerid, QuestTrigger trigger, bool Expand) { TreeNode newNode = form.AddToTree(trigger, tree.Nodes[fileid].Nodes[blockid], triggerid); form.SelectNode(newNode); if (Expand) { newNode.ExpandAll(); } }
void ShowTriggerInGrids(QuestTrigger trigger, TreeNode triggerNode) { // Console.WriteLine("ShowTriggerInGrids, Selected node"); m_SelectedTriggerNode = triggerNode; gridCondition.ColumnCount = 1; gridCondition.Columns[0].HeaderText = "Conditions"; gridCondition.Columns[0].SortMode = DataGridViewColumnSortMode.NotSortable; gridCondition.Rows.Clear(); gridReward.ColumnCount = 1; gridReward.Columns[0].HeaderText = "Rewards"; gridReward.Columns[0].SortMode = DataGridViewColumnSortMode.NotSortable; gridReward.Rows.Clear(); if (trigger == null) { toolStripStatusLabel1.Text = ""; } else { toolStripStatusLabel1.Text = "Active trigger: " + ((QuestTrigger)triggerNode.Tag).Name; locked_edit = true; { for (int row = 0; row < triggerNode.Nodes[0].Nodes.Count; row++) { gridCondition.Rows.Add(); int col = 0; ObjectToGrid(gridCondition, ref col, row, triggerNode.Nodes[0].Nodes[row].Tag); } for (int row = 0; row < triggerNode.Nodes[1].Nodes.Count; row++) { gridReward.Rows.Add(); int col = 0; ObjectToGrid(gridReward, ref col, row, triggerNode.Nodes[1].Nodes[row].Tag); } } locked_edit = false; } for (int col = 0; col < gridCondition.Columns.Count; col++) { gridCondition.Columns[col].SortMode = DataGridViewColumnSortMode.NotSortable; } for (int col = 0; col < gridReward.Columns.Count; col++) { gridReward.Columns[col].SortMode = DataGridViewColumnSortMode.NotSortable; } }
// Clone is only to be used when the Trigger has been generated from a tree. Otherwise edits will be missing public QuestTrigger Clone() { QuestTrigger trigger = new QuestTrigger(); trigger.Name = this.Name; trigger.CheckNext = this.CheckNext; foreach (Condition c in this.Conditions) { trigger.Conditions.Add(c.Clone()); } foreach (Reward r in this.Rewards) { trigger.Rewards.Add(r.Clone()); } return(trigger); }
public void Load(string Filename) { this.FileName = Filename; FileHandler fh = new FileHandler(Filename, FileHandler.FileOpenMode.Reading, Encoding.GetEncoding("EUC-KR")); Version = fh.Read <int>(); int blockCount = fh.Read <int>(); Title = fh.Read <string>(fh.Read <short>()).Trim('\0'); for (int i = 0; i < blockCount; i++) { QuestBlock block = new QuestBlock(); int triggersCount = fh.Read <int>(); block.Name = fh.Read <string>(fh.Read <short>()).Trim('\0'); for (int j = 0; j < triggersCount; j++) { QuestTrigger trigger = new QuestTrigger(); trigger.CheckNext = (fh.Read <byte>() != 0); int ConditionsCount = fh.Read <int>(); int RewardsCount = fh.Read <int>(); trigger.Name = fh.Read <string>(fh.Read <short>()).Trim('\0'); for (int c = 0; c < ConditionsCount; c++) { int size = fh.Read <int>(); int type = fh.Read <int>(); byte[] data = fh.Read <byte[]>(size - 8); try { object obj = CreateObject((ConditionType)type); StructReader.Convert(data, ref obj); Condition condition = (Condition)obj; condition.setOriginalData(data); trigger.Conditions.Add(condition); } catch { object obj = CreateObject(ConditionType.COND000); Condition condition = (Condition)obj; condition.setOriginalData(data); trigger.Conditions.Add(condition); } } for (int c = 0; c < RewardsCount; c++) { int size = fh.Read <int>(); int type = fh.Read <int>() & 0x0ffff; byte[] data = fh.Read <byte[]>(size - 8); try { object obj = CreateObject((RewardType)type); StructReader.Convert(data, ref obj); Reward reward = (Reward)obj; reward.setOriginalData(data); trigger.Rewards.Add(reward); } catch { object obj = CreateObject(RewardType.REWD000); Reward reward = (Reward)obj; reward.setOriginalData(data); trigger.Rewards.Add(reward); } } block.Triggers.Add(trigger); } this.Blocks.Add(block); } fh.Close(); }