static void Main(string[] args) { Door sideDoor = new Door("Side Door"); Decoration photo = new Decoration("Awkward Family Portrait"); Decoration antiqueVase = new Decoration("Antique Vase", 5, true); Objs <Decoration> decorations = new Objs <Decoration>(); decorations.Add(photo); decorations.Add(antiqueVase); foreach (Decoration deco in decorations) { Console.WriteLine(deco); while (deco.durability > 0) { deco.Break(); } } Console.WriteLine("------------"); Objs <IInteractive> interactables = new Objs <IInteractive>(); interactables.Add(sideDoor); interactables.Add(photo); interactables.Add(antiqueVase); foreach (IInteractive obj in interactables) { Console.WriteLine(obj); obj.Interact(); } }
public void Top(object sender, EventArgs e) { IDrawObj obj = _selectedObjs[0]; Objs.Remove(obj); Objs.Add(obj); obj.Invalidate(); }
private IDrawObj CloneDrawObj(IDrawObj origObj) { IDrawObj newObj = (IDrawObj)origObj.Clone(); newObj.Parant = Container; _nameManager.CreateName(newObj); newObj.LoadInitializationEvent(); Objs.Add(newObj); newObj.Invalidate(); return(newObj); }
private void UpdateObjects() { foreach (IGameObj o in DeadObjs) { o.Die(this); Objs.Remove(o); } DeadObjs.Clear(); foreach (IGameObj o in NewObjs) { Objs.Add(o); } NewObjs.Clear(); }
// Crap, when must this happen? // It can happen whenever Objs is the current state... which is thoretically always. // This will nuke the particles though. // This is actually pretty close to correct. public void SetLevel(int level) { UpdateObjects(); Objs.Remove(Player); Levels[CurrentLevel].Objs = Objs; // This is PROBABLY right, but I'm not sure. CurrentLevel = level; Objs = Levels[CurrentLevel].Objs; Objs.Add(Player); NewObjs.Clear(); DeadObjs.Clear(); Particles.Clear(); NewParticles.Clear(); DeadParticles.Clear(); UpdateCollisionTree(); }
/// <summary> /// Update all game objects /// </summary> public override void Update() { // Update GameObjects in world foreach (GameObject obj in Objs) { obj.Update(); } // Add queued objects to world for (int i = CreationQueue.Count - 1; i > -1; i--) { Objs.Add(CreationQueue[i]); CreationQueue.RemoveAt(i); } _mouseObs.Update(); }
/// <summary> /// Remove objects from creation queue and /// add to object registry /// </summary> public void UnqueueObjects() { for (int i = CreationQueue.Count - 1; i > -1; i--) { Objs.Add(CreationQueue[i]); // Add to decayable registry and sort registry by time to live IDecay decay = CreationQueue[i] as IDecay; if (decay != null) { Decayables.Add(decay); Decayables = Decayables.OrderByDescending(d => d.TTL).ToList(); } CreationQueue.RemoveAt(i); } }
public static void LoadInstance_Encounter() { _InstanceEncounter = new Dictionary <uint, List <Instance_Encounter> >(); IList <Instance_Encounter> InstanceEncounter = Database.SelectAllObjects <Instance_Encounter>(); foreach (Instance_Encounter Obj in InstanceEncounter) { List <Instance_Encounter> Objs; if (!_InstanceEncounter.TryGetValue(Obj.InstanceID, out Objs)) { Objs = new List <Instance_Encounter>(); _InstanceEncounter.Add(Obj.InstanceID, Objs); } Objs.Add(Obj); } Log.Success("WorldMgr", "Loaded " + _InstanceEncounter.Count + "Instance_Encounters"); }
public static void LoadInstance_Boss_Creatures() { _InstanceBossSpawns = new Dictionary <uint, List <Instance_Boss_Spawn> >(); IList <Instance_Boss_Spawn> InstanceSpawns = Database.SelectAllObjects <Instance_Boss_Spawn>(); foreach (Instance_Boss_Spawn Obj in InstanceSpawns) { List <Instance_Boss_Spawn> Objs; if (!_InstanceBossSpawns.TryGetValue(Obj.InstanceID, out Objs)) { Objs = new List <Instance_Boss_Spawn>(); _InstanceBossSpawns.Add(Obj.InstanceID, Objs); } Objs.Add(Obj); } Log.Success("WorldMgr", "Loaded " + _InstanceBossSpawns.Count + "Instance_Boss_Spawn"); }
public static void LoadPQuest_Creatures() { _PQuest_Spawns = new Dictionary <uint, List <PQuest_Spawn> >(); IList <PQuest_Spawn> PQSpawns = Database.SelectAllObjects <PQuest_Spawn>(); foreach (PQuest_Spawn Obj in PQSpawns) { List <PQuest_Spawn> Objs; if (!_PQuest_Spawns.TryGetValue(Obj.Objective, out Objs)) { Objs = new List <PQuest_Spawn>(); _PQuest_Spawns.Add(Obj.Objective, Objs); } Objs.Add(Obj); } Log.Success("WorldMgr", "Loaded " + PQSpawns.Count + " Public Quest Spawns"); }
public static void LoadPQuest_Objective() { _PQuest_Objectives = new Dictionary <uint, List <PQuest_Objective> >(); IList <PQuest_Objective> PObjectives = Database.SelectObjects <PQuest_Objective>("Type != 0"); foreach (PQuest_Objective Obj in PObjectives) { List <PQuest_Objective> Objs; if (!_PQuest_Objectives.TryGetValue(Obj.Entry, out Objs)) { Objs = new List <PQuest_Objective>(); _PQuest_Objectives.Add(Obj.Entry, Objs); } Objs.Add(Obj); } Log.Success("WorldMgr", "Loaded " + PObjectives.Count + " Public Quest Objectives"); }
/// <summary>添加对象文件</summary> /// <param name="path"></param> /// <param name="filter"></param> /// <param name="allSub"></param> public void AddObjs(String path, String filter = null, Boolean allSub = false) { path = path.GetFullPath(); if (!Directory.Exists(path)) { return; } if (filter.IsNullOrEmpty()) { filter = "*.o"; } //var opt = allSub ? SearchOption.AllDirectories : SearchOption.TopDirectoryOnly; foreach (var item in path.AsDirectory().GetAllFiles(filter, allSub)) { // 不包含,直接增加 if (!Objs.Contains(item.FullName)) { var lib = new LibFile(item.FullName); WriteLog("发现对象文件:{0, -12} {1}".F(lib.Name, item.FullName)); Objs.Add(item.FullName); } } }
/// <summary>编译所有文件</summary> /// <returns></returns> public Int32 CompileAll() { Objs.Clear(); var count = 0; if (Files.Count == 0) { return(0); } // 计算根路径,输出的对象文件以根路径下子路径的方式存放 GetRoot(); // 提前创建临时目录 var obj = GetObjPath(null); var list = new List <String>(); var cmd = GetCompileCommand(true); var cmd2 = GetCompileCommand(false); Console.Write("编译参数:"); Console.ForegroundColor = ConsoleColor.Magenta; if (Files.Any(e => e.EndsWithIgnoreCase(".cpp", ".cxx"))) { Console.WriteLine(cmd); } if (Files.Any(e => e.EndsWithIgnoreCase(".c"))) { Console.WriteLine(cmd2); } Console.ResetColor(); var asm = 0; foreach (var item in Files) { var rs = 0; var sw = new Stopwatch(); sw.Start(); switch (Path.GetExtension(item).ToLower()) { case ".c": rs = Compile(cmd2, item); break; case ".cpp": case ".cxx": rs = Compile(cmd, item); break; case ".s": rs = Assemble(item, asm == 0); if (rs != -2) { asm++; } break; default: break; } sw.Stop(); if (rs == 0 || rs == -1) { var fi = item; var root = _Root; if (fi.StartsWith(root)) { fi = fi.Substring(root.Length); } Console.Write("编译:{0}\t", fi); var old = Console.ForegroundColor; Console.ForegroundColor = ConsoleColor.Green; Console.WriteLine("\t {0:n0}毫秒", sw.ElapsedMilliseconds); Console.ForegroundColor = old; } if (rs <= 0) { if (!Preprocess) { //var fi = obj.CombinePath(Path.GetFileNameWithoutExtension(item) + ".o"); var fi = GetObjPath(item) + ".o"; list.Add(fi); } } } Console.WriteLine("等待编译完成:"); var left = 0; try { // 如果外部把编译结果输出到文本文件,那么这里会抛出异常 left = Console.CursorLeft; } catch { } var list2 = new List <String>(list); var end = DateTime.Now.AddSeconds(10); var fs = 0; while (fs < Files.Count) { for (var i = list2.Count - 1; i >= 0; i--) { if (File.Exists(list[i])) { fs++; list2.RemoveAt(i); } } try { // 如果外部把编译结果输出到文本文件,那么这里会抛出异常 Console.CursorLeft = left; } catch { Console.WriteLine(); } Console.Write("\t {0}/{1} = {2:p}", fs, Files.Count, (Double)fs / Files.Count); if (DateTime.Now > end) { Console.Write(" 等待超时!"); break; } Thread.Sleep(500); } Console.WriteLine(); for (var i = 0; i < list.Count; i++) { if (File.Exists(list[i])) { count++; Objs.Add(list[i]); } } return(count); }
public void analyzeCommands() { string currentFlag = ""; bool processingFiles = false; foreach (string word in words) { if (word.StartsWith("/") || word.StartsWith("-")) { if (word.Contains(flag_dll) || word.Contains(flag_dll.ToUpper())) { isDll = true; } else if (word.Contains(flag_exe) || word.Contains(flag_exe.ToUpper())) { isExe = true; } else if (word.Contains(flag_out) || word.Contains(flag_out.ToUpper())) { Output = word.Substring(flag_out.Length + 1); Options.Add(new KeyValuePair <string, string>(flag_out, Output)); currentFlag = flag_out; } else if (word.Contains(flag_def) || word.Contains(flag_def.ToUpper())) { Def = word.Substring(flag_def.Length + 1); Options.Add(new KeyValuePair <string, string>(flag_def, Def)); currentFlag = flag_def; } else if (word.Contains(flag_entry) || word.Contains(flag_entry.ToUpper())) { Entry = word.Substring(flag_entry.Length + 1); Options.Add(new KeyValuePair <string, string>(flag_entry, Entry)); currentFlag = flag_entry; } else { Options.Add(new KeyValuePair <string, string>(word, Entry)); } } else if (word.Contains(".obj")) { Objs.Add(word); processingFiles = true; } else if (word.Contains(".lib")) { Libs.Add(word); processingFiles = true; } else if (word.Contains(".res")) { } else if (currentFlag != "") { } else { //Unrecognized command } if (word.ToLower().Equals("link") || word.ToLower().Equals("link.exe")) { } else if (!processingFiles) { if (!word.Equals("")) { LinkOptionsLiteral += word + " "; LinkOptionsLiteral_Words.Add(word); } } } LinkOptionsLiteral = LinkOptionsLiteral.Trim(); }
public void Add(IGameObj o) { Objs.Add(o); }
public void ParseObj(Boolean debug) { var map = ".map"; // 调试版 if (debug) { map = "D" + map; } // 找到映射文件 var mp = "List".AsDirectory().GetAllFiles("*" + map).FirstOrDefault(); if (mp == null || !mp.Exists) { return; } Console.WriteLine(mp.FullName); var name = mp.Name.TrimEnd(".map"); // 读取所有需要用到的对象文件 var txt = File.ReadAllText(mp.FullName).Substring("Library Member Name", "Library Totals"); var ns = txt.Trim().Split("\r\n"); var objs = ns.Select(e => e.Split().Last()).Where(e => e.EndsWith(".o")).ToArray(); // 找到原始对象文件 var list = new List <String>(); foreach (var obj in objs) { // 注意,不同目录可能有同名对象文件,所以需要同时在两个目录里面找 var fs = FindObjs(obj, debug); if (fs.Length > 0) { foreach (var item in fs) { // 无法识别需要哪个同名文件,全部加入 if (!list.Contains(item)) { list.Add(item); } } } } Console.WriteLine("objs={0} list={1}", objs.Length, list.Count); // 引入基础库以及核心库的全部对象 var bs = Root.CombinePath("Tool/Obj"); if (debug) { bs += "D"; } foreach (var item in bs.CombinePath("Core").AsDirectory().GetAllFiles("*.o")) { if (!list.Contains(item.FullName)) { list.Add(item.FullName); } } foreach (var item in bs.CombinePath("Kernel").AsDirectory().GetAllFiles("*.o")) { if (!list.Contains(item.FullName)) { list.Add(item.FullName); } } list.Sort(); //Objs = list; // 链接打包 name = "SmartOS"; if (debug) { name += "D"; } var lib = Temp.CombinePath(name + ".lib"); BuildLib(lib, list); Objs.Add(lib); }
public void AddGameObj(IGameObj g) { Objs.Add(g); }
private void CreateDrawObjOper(IDrawObj obj) { //Undo.Push(RemoveDrawObjOper, obj, "Create"); Objs.Add(obj); }