Skip to content

Instantly share code, notes, and snippets.

@jayrulez
Last active November 4, 2018 02:48
Show Gist options
  • Save jayrulez/640d9ca851c672d5662d6cdd88d163ea to your computer and use it in GitHub Desktop.
Save jayrulez/640d9ca851c672d5662d6cdd88d163ea to your computer and use it in GitHub Desktop.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Xenko.Core.Mathematics;
using Xenko.Input;
using Xenko.Engine;
using Xenko.Graphics;
using Xenko.Rendering.Sprites;
using Xenko.Physics;
namespace ColorShot
{
public enum GameState
{
Init,
InitLevel,
Playing,
Paused,
Win,
Lose
}
public struct LevelConfig
{
public LevelConfig(int level, int colors, float speed)
{
Level = level;
Colors = colors;
Speed = speed;
}
public int Level;
public int Colors;
public float Speed;
}
public struct ColorStripItem
{
public ColorStripItem(Color color, float width, float height, int index)
{
Color = color;
Width = width;
Height = height;
Index = index;
}
public Color Color { get; set; }
public float Width { get; set; }
public float Height { get; set; }
public int Index { get; set; }
}
public class GameManagerScript : SyncScript
{
private static Random RandomSelector = new Random();
private List<Color> Colors = new List<Color>
{
new Color(),
new Color(),
new Color(),
new Color(),
new Color(),
new Color(),
new Color(),
new Color(),
new Color(),
new Color(),
new Color(),
new Color(),
new Color(),
new Color(),
new Color(),
new Color(),
new Color(),
new Color(),
new Color(),
new Color(),
new Color()
};
private GameState GameState = GameState.Init;
public Prefab ColorStripItemPrefab { get; set; }
public int CurrentLevel { get; set; } = 1;
public int MinLevel { get; private set; }
public int MaxLevel { get; private set; }
private List<LevelConfig> Levels = new List<LevelConfig>();
public override void Start()
{
ConfigureLevels();
MinLevel = 1;
MaxLevel = Levels.Count;
if (CurrentLevel < MinLevel || CurrentLevel > MaxLevel)
{
CurrentLevel = MinLevel;
}
InitLevel(CurrentLevel);
}
private void ConfigureLevels()
{
Levels.Add(new LevelConfig(1, 3, 1));
Levels.Add(new LevelConfig(2, 4, 1.1f));
Levels.Add(new LevelConfig(3, 5, 1.2f));
Levels.Add(new LevelConfig(4, 6, 1.3f));
Levels.Add(new LevelConfig(5, 7, 1.4f));
Levels.Add(new LevelConfig(6, 8, 1.5f));
Levels.Add(new LevelConfig(7, 9, 1.6f));
Levels.Add(new LevelConfig(7, 10, 1.7f));
}
private void InitLevel(int level)
{
var levelConfig = Levels.First(l => l.Level == level);
var itemWidth = 480f / levelConfig.Colors;
var itemHeight = 120f;
var colorStripContainer = SceneSystem.SceneInstance.First(e => e.Name == "ColorStripContainer");
for (int i = 0; i < levelConfig.Colors; i++)
{
var color = Colors[RandomSelector.Next(0, Colors.Count)];
var prefab = Content.Load<Prefab>("ColorStripItem");
var colorStripItemEntity = prefab.Instantiate()[0];
var script = colorStripItemEntity.Get<ColorStripItemScript>();
script.ColorStripItem = new ColorStripItem(color, itemWidth, itemHeight, i);
colorStripContainer.AddChild(colorStripItemEntity);
}
}
public override void Update()
{
// Do stuff every new frame
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Xenko.Core.Mathematics;
using Xenko.Input;
using Xenko.Engine;
using Xenko.Graphics;
namespace ColorShot
{
public class ColorStripItemScript : SyncScript
{
public ColorStripItem ColorStripItem { get; set;}
public override void Start()
{
var colorStripSprite = new Sprite(Texture.New2D(Game.GraphicsDevice, (int)ColorStripItem.Width, (int)ColorStripItem.Height, false, PixelFormat.R8G8B8A8_UNorm, TextureFlags.None));
// generate colored strip
}
public override void Update()
{
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment