{"action":"opened","issue":{"url":"https://api.github.com/repos/Nukepayload2/Nukepayload2.N2Engine/issues/8","repository_url":"https://api.github.com/repos/Nukepayload2/Nukepayload2.N2Engine","labels_url":"https://api.github.com/repos/Nukepayload2/Nukepayload2.N2Engine/issues/8/labels{/name}","comments_url":"https://api.github.com/repos/Nukepayload2/Nukepayload2.N2Engine/issues/8/comments","events_url":"https://api.github.com/repos/Nukepayload2/Nukepayload2.N2Engine/issues/8/events","html_url":"https://github.com/Nukepayload2/Nukepayload2.N2Engine/issues/8","id":176164459,"number":8,"title":"分4层的架构","user":{"login":"Nukepayload2","id":10798596,"avatar_url":"https://avatars.githubusercontent.com/u/10798596?v=3","gravatar_id":"","url":"https://api.github.com/users/Nukepayload2","html_url":"https://github.com/Nukepayload2","followers_url":"https://api.github.com/users/Nukepayload2/followers","following_url":"https://api.github.com/users/Nukepayload2/following{/other_user}","gists_url":"https://api.github.com/users/Nukepayload2/gists{/gist_id}","starred_url":"https://api.github.com/users/Nukepayload2/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Nukepayload2/subscriptions","organizations_url":"https://api.github.com/users/Nukepayload2/orgs","repos_url":"https://api.github.com/users/Nukepayload2/repos","events_url":"https://api.github.com/users/Nukepayload2/events{/privacy}","received_events_url":"https://api.github.com/users/Nukepayload2/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/Nukepayload2/Nukepayload2.N2Engine/labels/code-support-c%23","name":"code-support-c#","color":"128A0C"},{"url":"https://api.github.com/repos/Nukepayload2/Nukepayload2.N2Engine/labels/code-support-vb","name":"code-support-vb","color":"5319e7"},{"url":"https://api.github.com/repos/Nukepayload2/Nukepayload2.N2Engine/labels/feature%20specification","name":"feature specification","color":"0000ff"}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/Nukepayload2/Nukepayload2.N2Engine/milestones/5","html_url":"https://github.com/Nukepayload2/Nukepayload2.N2Engine/milestones/1.0","labels_url":"https://api.github.com/repos/Nukepayload2/Nukepayload2.N2Engine/milestones/5/labels","id":1986770,"number":5,"title":"1.0","description":"我们第一个成型的内部测试版要实现：\r\n* 分层的架构：Platform Presenter <-> View <-> ViewModel <-> Model\r\n* 基于委托的强类型数据绑定\r\n* 2D虚拟化可滚动绘图面板（是根元素）\r\n* 2D分层面板\r\n* 2D粒子系统对象：火花，烟雾，喷溅，磁暴，轨道炮\r\n* 2D贴图对象：不使用贴图表，使用贴图表\r\n* 资源管理：resx字符串资源，内嵌png纹理资源，内嵌字体资源\r\n* 2D动画：双精度浮点数动画，颜色渐变动画\r\n* 过渡效果：淡入淡出，抖动惊吓\r\n* 平面变换：透视，平移，缩放（翻转），扭曲，3D旋转\r\n* 2D矢量对象：线，矩形框，矩形，三角形框，三角形，圆形框，圆形，椭圆框，椭圆，贝塞尔曲线\r\n* 内置特效：高斯模糊，颜色矩阵，黑白花屏\r\n* 触摸虚拟摇杆\r\n* 统一的UI元素：面板，按钮，文本块\r\n* 承载平台特定的UI元素\r\n* 基于Box2D的物理模拟\r\n* 统一的键盘，鼠标，触摸屏输入事件\r\n* 内置触发器：数据变化，输入事件，被调查，被攻击，被特殊行动\r\n* 内置行为：玩家操控行为，敌人行走行为，自动攻击行为，可伤害玩家行为，可伤害敌人行为\r\n* 带有怪物的2D平台跳跃游戏逻辑\r\n* 基本的2D平台跳跃游戏元素：背景，可踩踏平台，敌人，奖励箱\r\n* 2D平台跳跃游戏设计器（UWP），仅支持 VB 代码\r\n* 动作游戏存档\r\n* 角色扮演游戏存档\r\n* 音乐和BGM支持","creator":{"login":"Nukepayload2","id":10798596,"avatar_url":"https://avatars.githubusercontent.com/u/10798596?v=3","gravatar_id":"","url":"https://api.github.com/users/Nukepayload2","html_url":"https://github.com/Nukepayload2","followers_url":"https://api.github.com/users/Nukepayload2/followers","following_url":"https://api.github.com/users/Nukepayload2/following{/other_user}","gists_url":"https://api.github.com/users/Nukepayload2/gists{/gist_id}","starred_url":"https://api.github.com/users/Nukepayload2/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Nukepayload2/subscriptions","organizations_url":"https://api.github.com/users/Nukepayload2/orgs","repos_url":"https://api.github.com/users/Nukepayload2/repos","events_url":"https://api.github.com/users/Nukepayload2/events{/privacy}","received_events_url":"https://api.github.com/users/Nukepayload2/received_events","type":"User","site_admin":false},"open_issues":5,"closed_issues":0,"state":"open","created_at":"2016-09-06T17:15:18Z","updated_at":"2016-09-10T07:12:53Z","due_on":null,"closed_at":null},"comments":0,"created_at":"2016-09-10T07:12:52Z","updated_at":"2016-09-10T07:12:52Z","closed_at":null,"body":"分4层的架构是这样设计的：\r\n分为：Presenter, View, ViewModel, Model 四层。\r\n* Presenter 是在特定平台实现的显示 View 的对象。\r\n* View 是在可移植类库定义的跨平台的视图，用于定义各个元素的呈现样式和接收用户输入。\r\n* View Model 是在可移植类库定义的单实例对象。用于存储实例化的Model, 以便View层绑定数据。也可以存储命令（IGameCommand），处理特定事件发生时的通用行为。\r\n* Model 表示需要呈现的数据。这些数据必须可 Json 序列化，以便写入存档。\r\n\r\n依赖关系：\r\nPresenter -> View <-> ViewModel <-> Model\r\n* Presenter -> View: Presenter 包含 View\r\n* View -> ViewModel: View 包含 ViewModel, 会绑定 ViewModel 中的数据和命令。\r\n* ViewModel -> View: ViewModel 依赖 View 通过创建 View 的方式实现，例如在某个命令中使用 MsgBox 函数可以创建一个对话框。\r\n* ViewModel -> Model : ViewModel 包含 Model。会创建 Model 的实例，根据存档内容向其中填充数据。\r\n* Model -> ViewModel: Model 可以直接访问 ViewModel 缓存的实例。\r\n\r\n额外的要求:\r\n架构外的代码文件要与架构内的代码文件分开存放。例如，不要把数学计算帮助类放到Models或ViewModels文件夹。\r\n\r\n如果你有任何疑问或建议，可以发起疑问"}}
{"actor":{"display_login":"Nukepayload2"}}