public TetrisAttack() { graphics = new GraphicsDeviceManager(this); graphics.PreferredBackBufferHeight = 405; graphics.PreferredBackBufferWidth = 459; Content.RootDirectory = "Content"; board = Board.BuildNewBoard(); Components.Add(backgroundComponent = new BackgroundComponent(this, themeName)); Components.Add(frameComponent = new FrameComponent(this, themeName)); Components.Add(blockComponent = new BlockComponent(this, board)); Components.Add(cursorComponent = new CursorComponent(this, board)); Components.Add(textComponent = new TextComponent(this, board)); }
/// <summary> /// Deserializes all components from a string /// </summary> /// <param name="p"></param> private void DeserializeComponents(string p) { StringReader reader = new StringReader(p); int length = reader.ReadInt(); for (int i = 0; i < length; i++) { string typeString = reader.ReadString(); Type type = Type.GetType(typeString); FrameComponent component = (FrameComponent)GetComponent(type); component.ReadData(reader); } }
protected virtual void drawGizmos() { if (mFrameComponentUpdate == null) { return; } int count = mFrameComponentUpdate.Count; for (int i = 0; i < count; ++i) { // 因为在更新过程中也可能销毁所有组件,所以需要每次循环都要判断 if (mFrameComponentUpdate == null) { return; } FrameComponent component = mFrameComponentUpdate[i]; if (component != null && !component.mDestroy) { component.onDrawGizmos(); } } }
protected virtual void lateUpdate(float elapsedTime) { if (mFrameComponentUpdate == null) { return; } int count = mFrameComponentUpdate.Count; for (int i = 0; i < count; ++i) { // 因为在更新过程中也可能销毁所有组件,所以需要每次循环都要判断 if (mFrameComponentUpdate == null) { return; } FrameComponent component = mFrameComponentUpdate[i]; if (component != null && !component.mDestroy) { component.lateUpdate(elapsedTime); } } }
protected virtual void fixedUpdate(float elapsedTime) { if (mFrameComponentUpdate == null) { return; } int count = mFrameComponentUpdate.Count; for (int i = 0; i < count; ++i) { // 因为在更新过程中也可能销毁所有组件,所以需要每次循环都要判断 if (mFrameComponentUpdate == null) { return; } FrameComponent component = mFrameComponentUpdate[i]; if (component != null && !component.mDestroy) { UnityProfiler.BeginSample(component.getName()); component.fixedUpdate(elapsedTime); UnityProfiler.EndSample(); } } }
public Window cheaterWindow() { Window window = new Window(2, 1); window.padding_ = new Vector2(5, 0); Text text = new Text("Inventory", true); text.centerY = false; window.set(0, 0, text); FrameComponent buttonframe = new FrameComponent(2, 10); window.set(1, 0, buttonframe); int num = 0; Button button; button = new Button(Locator.getTextureManager().loadTexture("gun64"), PostCategory.PLACING_OBJECT); button.getTarget = Locator.getObjectFactory().createGun; button.slot_ = num; buttonframe.set(0, num++, button); button = new Button(Locator.getTextureManager().loadTexture("mag128"), PostCategory.PLACING_OBJECT); button.getTarget = Locator.getObjectFactory().createTractor; button.slot_ = num; buttonframe.set(0, num++, button); button = new Button(Locator.getTextureManager().loadTexture("furnace"), PostCategory.PLACING_OBJECT); button.getTarget = Locator.getObjectFactory().createFurnace; button.slot_ = num; buttonframe.set(0, num++, button); button = new Button(Locator.getTextureManager().loadTexture("tank"), PostCategory.PLACING_OBJECT); button.getTarget = Locator.getObjectFactory().createTank; button.slot_ = num; buttonframe.set(0, num++, button); button = new Button(Locator.getTextureManager().loadTexture("cchamber"), PostCategory.PLACING_OBJECT); button.getTarget = Locator.getObjectFactory().createCombChamb; button.slot_ = num; buttonframe.set(0, num++, button); button = new Button(Locator.getTextureManager().loadTexture("compressor"), PostCategory.PLACING_OBJECT); button.getTarget = Locator.getObjectFactory().createCompressor; button.slot_ = num; buttonframe.set(0, num++, button); button = new Button(Locator.getTextureManager().loadTexture("pump"), PostCategory.PLACING_OBJECT); button.getTarget = Locator.getObjectFactory().createPump; button.slot_ = num; buttonframe.set(0, num++, button); button = new Button(Locator.getTextureManager().loadTexture("thrust"), PostCategory.PLACING_OBJECT); button.getTarget = Locator.getObjectFactory().createThruster; button.slot_ = num; buttonframe.set(0, num++, button); button = new Button(Locator.getTextureManager().loadTexture("reactor"), PostCategory.PLACING_OBJECT); button.getTarget = Locator.getObjectFactory().createReactor; buttonframe.set(0, num++, button); for (int i = num; i < 10; ++i) { button = new Button(Locator.getTextureManager().loadTexture("tile32"), PostCategory.PLACED_ITEM); button.slot_ = num; buttonframe.set(0, i, button); } for (int i = 0; i < 10; ++i) { Text label = new Text("" + ((i + 1) % 10), false); buttonframe.set(1, i, label); } buttonframe.padding_ = new Vector2(5, 0); window.pack(); window.loc_ = new Vector2((screen_.X - window.size.X) / 2f, screen_.Y - window.size.Y); return(window); }
// a小于b返回-1, a等于b返回0, a大于b返回1,升序排序 static public int compareDestroy(FrameComponent a, FrameComponent b) { return(sign(a.mDestroyOrder - b.mDestroyOrder)); }
// a小于b返回-1, a等于b返回0, a大于b返回1,升序排序 static public int compareUpdate(FrameComponent a, FrameComponent b) { return(sign(a.mUpdateOrder - b.mUpdateOrder)); }
// a小于b返回-1, a等于b返回0, a大于b返回1,升序排序 static public int compareInit(FrameComponent a, FrameComponent b) { return(sign(a.mInitOrder - b.mInitOrder)); }