private void SpwanItem(SpawnedItemDataObject spwanedItem) { eChromieType colorType; if (_overrideColor != eChromieType.None) { colorType = _overrideColor; } else { colorType = ColorForSpwanColorType(spwanedItem.SpwanedColor); } ChromieController chromieController = CreateChromie(colorType); if (!_allChromiez.Contains(chromieController)) { _allChromiez.Add(chromieController); } Vector3 spwanPosition = _spwanBasePosition; spwanPosition.x += spwanedItem.XPosition * SPWAN_POSITION_MULTIPLIER; chromieController.gameObject.transform.position = spwanPosition; Vector2 spwanForce = spwanedItem.ForceVector; spwanForce.y += FORCE_VECTOR_MODIFIER * (GameplaySettings.Instance.GameSpeedMultiplier * 0.7f); chromieController.gameObject.GetComponent<Rigidbody2D>().AddForce(spwanForce); chromieController.gameObject.GetComponent<Rigidbody2D>().angularVelocity = Random.Range(-90, 90); GameplayEventsDispatcher.SendChromieSpwaned(chromieController); }
private void AddNewSpwanItem(eSpwanedColorType spwanItemType) { if (_currentSequance != null && _currentWave != null) { SpawnedItemDataObject newSpwanItem = new SpawnedItemDataObject(); newSpwanItem.SpwanedColor = spwanItemType; newSpwanItem.XPosition = 0; newSpwanItem.ForceVector = new Vector2(0, 100); _currentWave.SpawnedItems.Add(newSpwanItem); } }
private void DrawSequancesList(Rect rect) { Color panelColor = new Color(0.2f, 0.2f, 0.4f); ; EditorGUI.DrawRect(new Rect(0, 0, rect.width, rect.height), panelColor); EditorGUILayout.BeginVertical(); { if (GUILayout.Button("Load From File")) { LoadWavesFromFile(); } if (GUILayout.Button("Save")) { } _sequancesListScrollPosition = EditorGUILayout.BeginScrollView(_sequancesListScrollPosition); { if (_sequances == null) { _sequances = new List<SequanceDataObject>(); } panelColor.a = 0.5f; GUI.backgroundColor = panelColor; if (_sequancesList == null) { _sequancesList = new ReorderableList(_sequances, typeof(SequanceDataObject), true, false, true, true); _sequancesList.drawElementCallback = (Rect cellRect, int index, bool isActive, bool isFocused) => { if (_sequances != null && _sequances[index] != null && _sequances[index].Identifier != null) { GUI.Label(cellRect, _sequances[index].Identifier); } }; _sequancesList.onSelectCallback = (list) => { _currentSequance = _sequances[list.index]; _currentWave = null; _currentSpwanItem = null; }; _sequancesList.onAddCallback = (list) => { int newWaveId = _sequances.Count; SequanceDataObject newSequance = new SequanceDataObject(); newSequance.Identifier = "sequance." + newWaveId.ToString(); _sequances.Add(newSequance); }; } if (_sequancesList != null) { _sequancesList.DoLayoutList(); } GUI.backgroundColor = Color.white; } EditorGUILayout.EndScrollView(); } EditorGUILayout.EndVertical(); }
private static void DrawSpwanedItemsList(WavesEditor wavesEditor) { if (wavesEditor._currentWave != null) { _spawnedItemsListScrollPosition = EditorGUILayout.BeginScrollView(_spawnedItemsListScrollPosition); { if (wavesEditor._currentWave != _selectedWave && wavesEditor._currentWave.SpawnedItems != null) { _spawnedItemsList = new ReorderableList(wavesEditor._currentWave.SpawnedItems, typeof(SpawnedItemDataObject), true, false, true, true); _spawnedItemsList.drawElementCallback = (Rect cellRect, int index, bool isActive, bool isFocused) => { if (wavesEditor._currentWave != null && wavesEditor._currentWave.SpawnedItems != null && wavesEditor._currentWave.SpawnedItems.Count > index) { if (wavesEditor._currentWave.SpawnedItems[index] != null) { GUI.DrawTexture(new Rect(cellRect.x, cellRect.y, 16, 16), TeaxtureForSpwanItem(wavesEditor._currentWave.SpawnedItems[index].SpwanedColor, wavesEditor)); } } }; _spawnedItemsList.onSelectCallback = (list) => { wavesEditor._currentSpwanItem = wavesEditor._currentWave.SpawnedItems[list.index]; _selectedTab = eWaveEditorTabTab.Item; }; _spawnedItemsList.onAddCallback = (list) => { SpawnedItemDataObject newItem = new SpawnedItemDataObject(); newItem.ForceVector = new Vector2(0, 144); wavesEditor._currentWave.SpawnedItems.Add(newItem); }; _selectedWave = wavesEditor._currentWave; } if (_spawnedItemsList != null) { _spawnedItemsList.DoLayoutList(); } } EditorGUILayout.EndScrollView(); } }
private static void AddItem(WavesEditor wavesEditor, eSpwanedColorType spwnaedItemType) { if (wavesEditor._currentWave != null) { if (wavesEditor._currentWave.SpawnedItems == null) { wavesEditor._currentWave.SpawnedItems = new List<SpawnedItemDataObject>(); } SpawnedItemDataObject newItem = new SpawnedItemDataObject(); newItem.SpwanedColor = spwnaedItemType; newItem.ForceVector = new Vector2(0, 144); wavesEditor._currentWave.SpawnedItems.Add(newItem); } }
private static void DrawSpwanItem(SpawnedItemDataObject spwanItem, Rect previewRect, WavesEditor wavesEditor) { Texture2D itemTexture = null; switch(spwanItem.SpwanedColor) { case eSpwanedColorType.BottomLeft: { itemTexture = wavesEditor._leftBottomTexture; break; } case eSpwanedColorType.BottomRight: { itemTexture = wavesEditor._rightBottomTexture; break; } case eSpwanedColorType.RandomCorner: { itemTexture = wavesEditor._randomTexture; break; } case eSpwanedColorType.TopLeft: { itemTexture = wavesEditor._leftTopTexture; break; } case eSpwanedColorType.TopRight: { itemTexture = wavesEditor._rightTopTexture; break; } } Rect itemRect = RectForSpwanItemInPreview(previewRect, spwanItem.XPosition); Rect arrowRect = DrawForceArrow(itemRect.position, spwanItem.ForceVector, wavesEditor._arrowTexture); Graphics.DrawTexture(itemRect, itemTexture); WavesEditorCollider itemCollider = null; WavesEditorCollider arrowCollideer = null; foreach (WavesEditorCollider collider in _collidersList) { if (collider.ColliderType == WavesEditorCollider.eColliderType.Item && collider.SpwanItem == spwanItem) { itemCollider = collider; } if (collider.ColliderType == WavesEditorCollider.eColliderType.Arrow && collider.SpwanItem == spwanItem) { arrowCollideer = collider; } } if (itemCollider == null) { itemCollider = new WavesEditorCollider(); itemCollider.SpwanItem = spwanItem; itemCollider.ColliderType = WavesEditorCollider.eColliderType.Item; _collidersList.Add(itemCollider); } if (arrowCollideer == null) { arrowCollideer = new WavesEditorCollider(); arrowCollideer.SpwanItem = spwanItem; arrowCollideer.ColliderType = WavesEditorCollider.eColliderType.Arrow; _collidersList.Add(arrowCollideer); } if (itemCollider != null) { itemCollider.Center = itemRect.center; itemCollider.Radius = 64f; } if (arrowCollideer != null) { arrowCollideer.Center = new Vector2(itemRect.center.x + spwanItem.ForceVector.x, itemRect.center.y - spwanItem.ForceVector.y); arrowCollideer.Radius = 64f; } }