public Ground(int dstX, int dstY, Dictionary <string, string> Params) : base(dstX, dstY, 0, 0) { var blockType = Params["BlockType"]; var count = int.Parse(Params["Count"]); var param = new GameObjectParam { TypeName = blockType, Location = new int[] { dstX, dstY }, Motion = MotionEnum.Static, Params = new Dictionary <string, string> { { "State", "Normal" } }, }; for (var i = 0; i < count; i++) { var blockInstance = param.ToGameObject(); param.Location[0] += blockInstance.Size.X; if (blockInstance is Block block) { blocks.Add(block); } } Size = new Point(param.Location[0] - dstX, Constants.BLOCK_HEIGHT); }
public IGameObject AddGameObject(GameObjectParam param) { var obj = param.ToGameObject(); Data.Objects.Add(param); Objects.Add(obj); return(obj); }
public void Reset() { Player?.Dispose(); scenes.Clear(); var param = new GameObjectParam { TypeName = "Mario", Location = new int[] { (int)Constants.MARIO_DEFAULT_LOCATION.X, (int)Constants.MARIO_DEFAULT_LOCATION.Y }, Motion = MotionEnum.Dynamic, Force = WorldForce.Gravity | WorldForce.Friction, Mass = 1, }; Player = (Mario)param.ToGameObject(); ActiveScene = null; unsubscribe = null; Constants.AVAILABLE_SCENES.ForEach(level => scenes.Add(level, new SceneData(level, Player))); scenes.ForEach((name, scene) => scene.Reset()); }