private void worldView_DragDrop(object sender, DragEventArgs e) { Vector2 worldPos = ScreenToWorld(e.X, e.Y); if (snapping) { worldPos = SnapToGrid(worldPos); } //get item ListViewItem item = new ListViewItem(); if (e.Data.GetData(typeof(ListViewItem)) != null) item = (ListViewItem)e.Data.GetData(typeof(ListViewItem)); object selectedObject = null; switch ((string)item.Tag) { case "Light": if (level.Lights.Count < 8) { Light l = new Light(); l.Diffuse = Color4.White; l.Ambient = new Color4(0.1f, 0.1f, 0.1f, 1f); l.Position = new Vector4(worldPos.X, worldPos.Y, 36, 1); l.ConstantAttenuation = 1f; l.LinearAttenuation = 1f / 3000f; l.QuadraticAttenuation = 1f / 40000f; level.Lights.Add(l); for (int i = 0; i < 8; i++) { bool inUse = false; for (int j = 0; j < level.Lights.Count; j++) { if (level.Lights[j].Index == i) { inUse = true; } } if (!inUse) { l.Index = i; } } selectedObject = l; } else { MessageBox.Show("To many lights. Max light count is 8.", "Light Count", MessageBoxButtons.OK, MessageBoxIcon.Error); } break; case "Ball": Ball ball = new Ball(worldPos.X, worldPos.Y); level.Entities.Add(ball); selectedObject = ball; break; case "Block": Block block = new Block(worldPos.X, worldPos.Y); level.Entities.Add(block); selectedObject = block; break; case "BreakableDoor": BreakableDoor bdoor = new BreakableDoor(worldPos.X, worldPos.Y); bdoor.MaxHits = 3; level.Entities.Add(bdoor); selectedObject = bdoor; break; case "Button": Entities.Button button = new Entities.Button(worldPos.X, worldPos.Y); level.Entities.Add(button); selectedObject = button; break; case "Cannon": Cannon cannon = new Cannon(worldPos.X, worldPos.Y); level.Entities.Add(cannon); selectedObject = cannon; break; case "Door": Door door = new Door(worldPos.X, worldPos.Y); level.Entities.Add(door); selectedObject = door; break; /*case "LaserShooter": LaserShooter ls = new LaserShooter(worldPos.X, worldPos.Y); level.Entities.Add(ls); selectedObject = ls; break;*/ case "Player": Player p = new Player(worldPos.X, worldPos.Y); level.Entities.Add(p); selectedObject = p; break; /*case "PuzzleBox": PuzzleBox pb = new PuzzleBox(worldPos.X, worldPos.Y); level.Entities.Add(pb); selectedObject = pb; break;*/ case "SpikeWall": SpikeWall sw = new SpikeWall(worldPos.X, worldPos.Y); level.Entities.Add(sw); selectedObject = sw; break; /*case "Teleporter": Teleporter tp = new Teleporter(worldPos.X, worldPos.Y); level.Entities.Add(tp); selectedObject = tp; break;*/ case "CauseAND": CauseAND cAnd = new CauseAND(); level.Causes.Add(cAnd); selectedObject = cAnd; break; case "CauseNOT": CauseNOT cNot = new CauseNOT(); level.Causes.Add(cNot); selectedObject = cNot; break; case "CauseOR": CauseOR cOr = new CauseOR(); level.Causes.Add(cOr); selectedObject = cOr; break; case "CauseXOR": CauseXOR cXor = new CauseXOR(); level.Causes.Add(cXor); selectedObject = cXor; break; case "CauseButton": CauseButton cBtn = new CauseButton(); level.Causes.Add(cBtn); selectedObject = cBtn; break; case "CauseEntityDestruction": CauseEntityDestruction cEntD = new CauseEntityDestruction(); level.Causes.Add(cEntD); selectedObject = cEntD; break; case "CauseLocation": CauseLocation cLoc = new CauseLocation(); level.Causes.Add(cLoc); selectedObject = cLoc; break; case "CauseTimePassed": CauseTimePassed cTime = new CauseTimePassed(); level.Causes.Add(cTime); selectedObject = cTime; break; case "EffectAND": EffectAND eAnd = new EffectAND(); level.Effects.Add(eAnd); selectedObject = eAnd; break; case "EffectList": EffectList eList = new EffectList(); level.Effects.Add(eList); selectedObject = eList; break; case "EffectDoor": EffectDoor eDoor = new EffectDoor(); level.Effects.Add(eDoor); selectedObject = eDoor; break; case "EffectEndGame": EffectEndGame eEnd = new EffectEndGame(); level.Effects.Add(eEnd); selectedObject = eEnd; break; case "EffectRaiseBridge": EffectRaiseBridge eBridge = new EffectRaiseBridge(); level.Effects.Add(eBridge); selectedObject = eBridge; break; case "EffectRemoveEntity": EffectRemoveEntity eRemove = new EffectRemoveEntity(); level.Effects.Add(eRemove); selectedObject = eRemove; break; case "EffectTriggerTimer": EffectTriggerTimer eTimer = new EffectTriggerTimer(); level.Effects.Add(eTimer); selectedObject = eTimer; break; case "Trigger": Trigger t = new Trigger(); level.Triggers.Add(t); selectedObject = t; break; } selectedItemProperties.SelectedObject = selectedObject; UpdateWorldTree(); }
private void worldView_DragDrop(object sender, DragEventArgs e) { Vector2 worldPos = ScreenToWorld(e.X, e.Y); if (snapping) { worldPos = SnapToGrid(worldPos); } //get item ListViewItem item = new ListViewItem(); if (e.Data.GetData(typeof(ListViewItem)) != null) { item = (ListViewItem)e.Data.GetData(typeof(ListViewItem)); } object selectedObject = null; switch ((string)item.Tag) { case "Light": if (level.Lights.Count < 8) { Light l = new Light(); l.Diffuse = Color4.White; l.Ambient = new Color4(0.1f, 0.1f, 0.1f, 1f); l.Position = new Vector4(worldPos.X, worldPos.Y, 36, 1); l.ConstantAttenuation = 1f; l.LinearAttenuation = 1f / 3000f; l.QuadraticAttenuation = 1f / 40000f; level.Lights.Add(l); for (int i = 0; i < 8; i++) { bool inUse = false; for (int j = 0; j < level.Lights.Count; j++) { if (level.Lights[j].Index == i) { inUse = true; } } if (!inUse) { l.Index = i; } } selectedObject = l; } else { MessageBox.Show("To many lights. Max light count is 8.", "Light Count", MessageBoxButtons.OK, MessageBoxIcon.Error); } break; case "Ball": Ball ball = new Ball(worldPos.X, worldPos.Y); level.Entities.Add(ball); selectedObject = ball; break; case "Block": Block block = new Block(worldPos.X, worldPos.Y); level.Entities.Add(block); selectedObject = block; break; case "BreakableDoor": BreakableDoor bdoor = new BreakableDoor(worldPos.X, worldPos.Y); bdoor.MaxHits = 3; level.Entities.Add(bdoor); selectedObject = bdoor; break; case "Button": Entities.Button button = new Entities.Button(worldPos.X, worldPos.Y); level.Entities.Add(button); selectedObject = button; break; case "Cannon": Cannon cannon = new Cannon(worldPos.X, worldPos.Y); level.Entities.Add(cannon); selectedObject = cannon; break; case "Door": Door door = new Door(worldPos.X, worldPos.Y); level.Entities.Add(door); selectedObject = door; break; /*case "LaserShooter": * LaserShooter ls = new LaserShooter(worldPos.X, worldPos.Y); * level.Entities.Add(ls); * selectedObject = ls; * break;*/ case "Player": Player p = new Player(worldPos.X, worldPos.Y); level.Entities.Add(p); selectedObject = p; break; /*case "PuzzleBox": * PuzzleBox pb = new PuzzleBox(worldPos.X, worldPos.Y); * level.Entities.Add(pb); * selectedObject = pb; * break;*/ case "SpikeWall": SpikeWall sw = new SpikeWall(worldPos.X, worldPos.Y); level.Entities.Add(sw); selectedObject = sw; break; /*case "Teleporter": * Teleporter tp = new Teleporter(worldPos.X, worldPos.Y); * level.Entities.Add(tp); * selectedObject = tp; * break;*/ case "CauseAND": CauseAND cAnd = new CauseAND(); level.Causes.Add(cAnd); selectedObject = cAnd; break; case "CauseNOT": CauseNOT cNot = new CauseNOT(); level.Causes.Add(cNot); selectedObject = cNot; break; case "CauseOR": CauseOR cOr = new CauseOR(); level.Causes.Add(cOr); selectedObject = cOr; break; case "CauseXOR": CauseXOR cXor = new CauseXOR(); level.Causes.Add(cXor); selectedObject = cXor; break; case "CauseButton": CauseButton cBtn = new CauseButton(); level.Causes.Add(cBtn); selectedObject = cBtn; break; case "CauseEntityDestruction": CauseEntityDestruction cEntD = new CauseEntityDestruction(); level.Causes.Add(cEntD); selectedObject = cEntD; break; case "CauseLocation": CauseLocation cLoc = new CauseLocation(); level.Causes.Add(cLoc); selectedObject = cLoc; break; case "CauseTimePassed": CauseTimePassed cTime = new CauseTimePassed(); level.Causes.Add(cTime); selectedObject = cTime; break; case "EffectAND": EffectAND eAnd = new EffectAND(); level.Effects.Add(eAnd); selectedObject = eAnd; break; case "EffectList": EffectList eList = new EffectList(); level.Effects.Add(eList); selectedObject = eList; break; case "EffectDoor": EffectDoor eDoor = new EffectDoor(); level.Effects.Add(eDoor); selectedObject = eDoor; break; case "EffectEndGame": EffectEndGame eEnd = new EffectEndGame(); level.Effects.Add(eEnd); selectedObject = eEnd; break; case "EffectRaiseBridge": EffectRaiseBridge eBridge = new EffectRaiseBridge(); level.Effects.Add(eBridge); selectedObject = eBridge; break; case "EffectRemoveEntity": EffectRemoveEntity eRemove = new EffectRemoveEntity(); level.Effects.Add(eRemove); selectedObject = eRemove; break; case "EffectTriggerTimer": EffectTriggerTimer eTimer = new EffectTriggerTimer(); level.Effects.Add(eTimer); selectedObject = eTimer; break; case "Trigger": Trigger t = new Trigger(); level.Triggers.Add(t); selectedObject = t; break; } selectedItemProperties.SelectedObject = selectedObject; UpdateWorldTree(); }