public MenuInGame(FSM parentFsm, UIManager2 panel1, UIManager2 panel2) : base(parentFsm, panel1, panel2, "MenuInGame.fsm") { timeClient = TimeManager.Instance.Create(); InitUI(); int stageId = (int)parentFsm.Variables["stageId"]; /* // ddong if (stageId < 2000) { stageId += 2000; } */ InitStage(stageId, out stageEntity, out gameEntity); Rect fieldArea = UI.GetFieldArea(); field = CreateField(stageEntity, fieldArea, timeClient, fsm); // ddong int subClassCode = 11; int level = 1; int trainLevel = 1; this.subClassEntity = TableLoader.GetTable<SubClassEntity>().Get(subClassCode); ClassLevelEntity levelEntity = TableLoader.GetTable<ClassLevelEntity>().Get(subClassEntity.classCode, level); TrainLevelEntity trainLevelEntity = TableLoader.GetTable<TrainLevelEntity>().Get(subClassEntity.classCode, trainLevel); FieldObjectEntity objectField = TableLoader.GetTable<FieldObjectEntity>().Get(subClassEntity.objectCode); Rect puzzleArea = UI.GetPuzzleArea(); CreatePuzzle(puzzleArea, timeClient, subClassCode, out puzzleRecord, out puzzlePanel); user = CreateUser(stageEntity, UI, fsm); heroCharacter = CreateCharacter(objectField, levelEntity, trainLevelEntity, subClassEntity, user, puzzlePanel, itemDropManager, UI.AddBuffIcon, UI.RemoveBuffIcon, fsm); itemDropManager = new ConsumableSpawn(stageEntity.gameModeCode, levelEntity.consumableTier); Func<float> getLifeDrainRate = (() => gameEntity.defaultHP); new PlayerCharacter(user, heroCharacter, getLifeDrainRate, fsm); /* heroCharacter.Status.RegisterOnChangeEvent(HeroCharacter.Character.HP, OnCharacterHPChanged); heroCharacter.Status.RegisterOnChangeEvent(HeroCharacter.Character.HP, UI.ChangeHP); heroCharacter.Status.RegisterOnChangeEvent(HeroCharacter.Character.MP, UI.ChangeMana); heroCharacter.Status.RegisterOnChangeEvent(HeroCharacter.Character.Armor, UI.ChangeShield); */ UI.InitCommendSlots(fsm, heroCharacter); field.AddPlayerCharacter(heroCharacter); field.FocusOnForced(heroCharacter, 0); puzzlePanel.SetQueue(user.commandQueue); var screenPosTable = TableLoader.GetTable<ScreenPositionEntity2>(); var hpToPos = screenPosTable.Values.Select(x => new KeyValuePair<float, float>(x.hp, x.screenPos)); convertHPRatioToScreenPos = new RangeConvertor(hpToPos).Convert; SetFocusTarget(heroCharacter); }
public ButtonPanel(Rect rect, Dart<BlockEntity2> blockDart, HeroCharacter heroCharacter, ConsumableSpawn itemDropManager, int itemDropTier) { this.controlArea = rect; this.heroCharacter = heroCharacter; this.itemDropManager = itemDropManager; this.itemDropTier = itemDropTier; buttonTypes = new List<object>(); var blocks = blockDart.Values.Where(x => x.blockType != BlockType.WildCard); foreach (var entity in blocks) { buttonTypes.Add(entity); } buttonTypes.Add("damage"); buttonTypes.Add("item"); }
static HeroCharacter CreateCharacter(FieldObjectEntity objectField, ClassLevelEntity levelEntity, TrainLevelEntity trainLevelEntity, SubClassEntity subClassEntity, InGameUser user, PuzzlePanel puzzlePanel, ConsumableSpawn itemDropManager, System.Action<StatusEffectEntity2> addBuffIcon, System.Action<StatusEffectEntity2> removeBuffIcon, FSM parentFsm) { Buff.Handle onBuff = delegate(Buff buff) { if (addBuffIcon != null) { addBuffIcon(buff.statusEffectEntity); } }; Buff.Handle onDeBuff = delegate(Buff buff) { if (removeBuffIcon != null) { removeBuffIcon(buff.statusEffectEntity); } }; HeroCharacter heroCharacter = new HeroCharacter(objectField, subClassEntity, levelEntity, trainLevelEntity, false, user, puzzlePanel, onBuff, onDeBuff, parentFsm); { Action action = ActionPattern.Create("Vector(Self; [HeroStatType.moveSpeed]; 0; 0; false)").Generate(heroCharacter.Stat); heroCharacter.Fire(action, null); heroCharacter.PauseMoving(); } for (int i = 0; i < 4; i++) { heroCharacter.AddItemSlot(i, user.commandQueue); } { heroCharacter.AddAction(Action.E_Type.Money, delegate(float value, GameInstance firer, string[] param) { Action action = ActionPattern.Create("Action(User; Money; {0})").Generate(heroCharacter.Stat, value); if (action != null) { heroCharacter.Fire(action, null); } return null; } ); heroCharacter.AddAction(Action.E_Type.Exp, delegate(float value, GameInstance firer, string[] param) { Action action = ActionPattern.Create("Action(User; Exp; {0})").Generate(heroCharacter.Stat, value); if (action != null) { heroCharacter.Fire(action, null); } return null; } ); heroCharacter.AddAction(Action.E_Type.GetConsumable, delegate(float value, GameInstance firer, string[] param) { if (RandomTool.IsIn(value)) { var itemCommand = new ItemCommand(itemDropManager.Pick()); if (itemCommand != null) { heroCharacter.TryAddItem(itemCommand); } } return null; } ); } return heroCharacter; }