public static void GenerateSkills(PlayerExporter exporter, CodeGenerator output) { SkillGeneratorEnv env = (SkillGeneratorEnv)exporter.GenEnv; for (int i = 0; i < exporter.Skills.Count; ++i) { var skill = exporter.Skills[i]; var skillFuncName = "skill_" + i.ToString(); if (skill is NormalSkill) { var cskill = (NormalSkill)skill; env.CurrentSkillKeyName = cskill.Key.GetKeyName(); env.CurrentActionName = cskill.ActionID; var functionContent = GenerateNormalSkillFunction(exporter, env, cskill.ActionID, false); functionContent = new ILineObject[] { new ControlBlock(ControlBlockType.If, "!(\"uu\" in this.u)", new ILineObject[] { new SimpleLineObject("this.u.uu <- { uuu = this.u.weakref() };"), }).Statement(), }.Concat(functionContent); var func = new FunctionBlock(skillFuncName, new string[0], functionContent); output.WriteStatement(func.Statement()); } } }
public string GenerateActionAsActorInit(string name) { string ret; if (_GeneratedActorInit.TryGetValue(name, out ret)) { return(ret); } var action = Exporter.GetAction(name); var lastActionName = CurrentActionName; CurrentActionName = name; List <ILineObject> funcContent = new List <ILineObject>(); funcContent.AddRange(GenerateNormalSkillFunction(Exporter, this, name, true)); CurrentActionName = lastActionName; ret = "InitAction_" + name; var func = new FunctionBlock(ret, new string[] { "t" }, funcContent); Output.WriteStatement(func.Statement()); _GeneratedActorInit.Add(name, ret); return(ret); }