示例#1
0
    public override AbilityTickable AbilityLogic(Vector2 target)
    {
        MovementTick movementTick = new GameObject().AddComponent <MovementTick>();

        if (AttackOnArrival)
        {
            movementTick.Init(Owner, target, MovementSpeed, AttackRange, AttackDamage);
        }
        else
        {
            movementTick.Init(Owner, target, MovementSpeed);
        }
        return(movementTick);
    }
示例#2
0
        protected override IEnumerator execute()
        {
            MatchEffectConfig deathPrefab = MatchEffects.GetConfig(this.effectPrefabName);
            float             deathDelay  = AttackDelays.GetDelay(AttackDelays.DelayType.UnitDeath);

            yield return(new WaitForSeconds(deathDelay));

            MatchEffectsArea death = new GameObject(Constants.SE()).AddComponent <DeathEffectArea>();

            death.Init(deathPrefab, this.card);
            death.Play(null);
            while (!death.get_Completed())
            {
                yield return(null);
            }
            if (this.postDeathCommand != null)
            {
                while (this.postDeathCommand.MoveNext())
                {
                    yield return(this.postDeathCommand.Current);
                }
            }
            Finder.FindOrThrow <CommandExecutor>().Execute(new DestroyEffectOnComplete(death));
            yield break;
        }
示例#3
0
    // Update is called once per frame
    void Update()
    {
        currentTreeTime -= Time.deltaTime;

        //GridManager.Singleton.TypeToDiffuse[typeof(Height)].FullDiffuse();

        if (currentTreeTime <= 0)
        {
            currentTreeTime += TreeTime;
            GridManager.Singleton.TypeToDiffuse[typeof(Tree)].FullDiffuse();

            //mapGen.setTiles(GridManager.Singleton.TypeToDiffuse[typeof(Tree)].Grid, new Color(0.8f, 0.2f, 0.1f), new Color(0, 0, 1));
        }

        currentZonamiTime -= Time.deltaTime;
        if (currentZonamiTime < 0)
        {
            currentZonamiTime += ZonamiTime;

            var zonami = new GameObject().AddComponent <Zonami>();
            zonami.Init(Random.Range(0, GridManager.Singleton.Width), Random.Range(0, GridManager.Singleton.Height));
            GridManager.Singleton.TypeToDiffuse[typeof(Height)].AddEffect(zonami);
        }


        mapGen.updateMap(false);
    }
示例#4
0
        public override void Init(string word, double duration)
        {
            transform.localPosition = Vector3.zero;

            var width = 600f;

            for (int i = 0; i < size; i++)
            {
                var l = new GameObject().AddComponent <BasicLine>();
                l.transform.SetParent(transform);

//                l.gameObject.layer = 14;

                l.delay    = Random.Range(0f, 0.5f);
                l.duration = (1f - l.delay) * Random.Range(1f, 0.7f);

                var y    = Random.Range(-400, -550);
                var x    = -width + (width * 2f / (size - 1) * i) + Mathf.PerlinNoise(y * 0.1f, i * 0.1f) * 400 - 200f;
                var endy = Random.Range(400, 600f);
                l.start = new Vector3(x, y, 0) + transform.position;
                l.end   = new Vector3(x, endy, 0) + transform.position;

                l.curveIn  = AnimationCurveAsset.SteepIn;
                l.curveOut = AnimationCurveAsset.HorizontalLineOut;
//                l.gameObject.layer = 15;
                lines.Add(l);
                l.Init();
                l.SetLineWidth(Random.Range(2, 10));
            }
        }
示例#5
0
    /// <summary>
    /// Spawns the user interface screen.
    /// </summary>
    /// <returns>The user interface screen.</returns>
    /// <param name="name">Name.</param>
    /// <param name="doAddToStack">If set to <c>true</c> do add to stack.</param>
    public GameObject SpawnUIScreen(string name, bool doAddToStack = true)
    {
        if (name == "GamePlay" || name == "GamePlay_help" || name == "GamePlay_hex")
        {
            if (WindowStack.Count > 0)
            {
                Destroy(WindowStack.Pop());
            }
        }
        GameObject thisScreen = (GameObject)Instantiate(Resources.Load("UIScreens/" + name.ToString()));

        thisScreen.name = name;
        thisScreen.transform.SetParent(UICanvas.transform);
        thisScreen.transform.localPosition = Vector3.zero;
        thisScreen.transform.localScale    = Vector3.one;
        thisScreen.GetComponent <RectTransform> ().sizeDelta = Vector3.zero;
        thisScreen.Init();
        thisScreen.OnWindowLoad();
        thisScreen.SetActive(true);

        if (doAddToStack)
        {
            WindowStack.Push(thisScreen);
        }
        return(thisScreen);
    }
    /// <summary>
    /// 
    /// </summary>
    /// <param name="fullUrl"></param>
    /// <param name="toPath"></param>
    /// <param name="useCache">如果存在则不下载了!</param>
    /// <param name="expireDays"></param>
    /// <param name="timeout"></param>
    public static CHttpDownloader Load(string fullUrl, string toPath, bool useCache = false, int expireDays = 1, int timeout = 5)
    {
        var downloader = new GameObject("HttpDownlaoder+"+fullUrl).AddComponent<CHttpDownloader>();
        downloader.Init(fullUrl, toPath, useCache, expireDays, timeout);

        return downloader;
    }
示例#7
0
        void Awake()
        {
            // Create board and player input
            var boardController = new GameObject("BoardController").AddComponent <BoardController>();//Instantiate(_boardController, Vector3.zero, Quaternion.identity);

            boardController.Init(_settings);
            var playerInput = new GameObject("PlayerInput").AddComponent <PlayerInput>();

            playerInput.TilesSelected += boardController.CheckSelectedTiles;

            // Score UI
            ScoreUIModel model = new ScoreUIModel();

            boardController.ScoreChanged += (int score) => {
                model.Value += score;
                // End score
                if (model.Value >= _settings.endScore)
                {
                    Destroy(playerInput);
                    Instantiate(_endUI);
                }
            };
            var view = Instantiate <ScoreUI>(_scoreView);

            _scoreUIController = new ScoreUIController(model, view);
        }
示例#8
0
    public static void Create()
    {
        var appodeal = new GameObject("AppodealController").AddComponent <AppodealController>();

        appodeal.Init();
        DontDestroyOnLoad(appodeal.gameObject);
    }
示例#9
0
    void HandleRaceGameRequested()
    {
        OfflineGameRaceModeModule raceModule = new GameObject("RaceModule", typeof(OfflineGameRaceModeModule)).GetComponent <OfflineGameRaceModeModule>();

        DontDestroyOnLoad(raceModule.gameObject);
        raceModule.Init();
    }
示例#10
0
        public override void Init(string word, double duration)
        {
            transform.localPosition = Vector3.zero;

            for (int i = 0; i < size; i++)
            {
                var l = new GameObject().AddComponent <BasicLine>();
                l.transform.SetParent(transform);

//                l.gameObject.layer = 14;

                l.delay    = Random.Range(0f, 0.3f);
                l.duration = Random.Range(0.5f, 0.7f);

                var y    = Random.Range(400, -400);
                var x    = Random.Range(-1200f, -800f);
                var endx = Random.Range(600, 1200f);
                l.start    = new Vector3(x, y, 0) + transform.position;
                l.end      = new Vector3(endx, y, 0) + transform.position;
                l.curveIn  = AnimationCurveAsset.SteepIn;
                l.curveOut = AnimationCurveAsset.HorizontalLineOut;
//                l.gameObject.layer = 15;
                lines.Add(l);
                l.Init();

//                l.gameObject.layer = 0;
            }
        }
示例#11
0
    public override AbilityTickable AbilityLogic(Vector2 target)
    {
        AOEObject ability = new GameObject().AddComponent <AOEObject>();

        ability.Init(Owner, target, AOERadius, AOEDelay, AOEDamage, FXPrefab, FXScale);
        return(ability);
    }
示例#12
0
        public static AGHActor Create(Transform headNub)
        {
            var actor = new GameObject("Actor " + headNub.name).AddComponent <AGHActor>();

            actor.Init(headNub);
            return(actor);
        }
示例#13
0
        public static void AddChunk(int x, int y)
        {
            Chunk chunk;

            chunk = new GameObject("chunk").AddComponent <Chunk>();
            chunk.Init(x, y);
        }
示例#14
0
        private void Awake()
        {
            var mainController = new GameObject("MainController").AddComponent <MainController>();

            mainController.Init();
            Destroy(gameObject);
        }
示例#15
0
        /// <summary>
        /// Found yourself a brand spankin' new city! Make sure to give it some settings
        /// so it knows how to build itself.
        /// </summary>
        /// <param name="position"></param>
        /// <param name="settings"></param>
        /// <param name="name"></param>
        /// <returns></returns>
        public static City CreateCity(Vector3 position, CitySettings settings, string name = "City")
        {
            City temp = new GameObject(name).AddComponent <City>();

            temp.Init(position, settings);
            return(temp);
        }
示例#16
0
        public static DynamicPlotter GetDynamicPlotter(DynamicPlotData data)
        {
            var plotter = new GameObject().AddComponent <DynamicPlotter>();
            var graph   = new DynamicGraph();

            data.Points.ForEach(point =>
                                graph.AddPlotPoint(new PlotPoint(point.XColumn, point.YColumn, point.ZColumn))
                                );

            graph.AddTimePoints(data.TimeColumn);

            plotter.Graph = graph;

            plotter.PointHolder = GetPlotHolder();
            plotter.PointPrefab = data.PointObject.transform;
            plotter.Text        = GetText3D();

            plotter.PlotTitle = data.Title;
            plotter.XAxisName = data.XName;
            plotter.YAxisName = data.YName;
            plotter.ZAxisName = data.ZName;

            plotter.PlotScale = data.PlotScale;

            plotter.Init();

            return(plotter);
        }
示例#17
0
    private void Start()
    {
        MainLoader <Sprite> .Instance.Load("Sprites/", "test_block");

        MainLoader <Sprite> .Instance.Load("Sprites/", "test_portal");

        MainLoader <Sprite> .Instance.Load("Sprites/", "test_player");

        level = new Level();
        level.Generate();
        RoomObject roomObject;

        foreach (Room r in level.roomsList)
        {
            roomObject = new GameObject("Room").AddComponent <RoomObject>();
            roomObject.transform.SetParent(transform);
            roomObject.Init(r);
            _rooms.Add(roomObject);
        }

        foreach (PortalCouple pc in level.portalCouples)
        {
            _rooms.Find(r => r.Data.ID == pc.enRoomID).PlaceEntrancePortal(pc.ID);
            _rooms.Find(r => r.Data.ID == pc.exRoomID).PlaceExitPortal(pc.ID);
        }

        SpawnPlayer();
        PlayerCamera.Instance.Init(_player);
    }
示例#18
0
        /// <summary>
        /// Creates a straight line Road connected to two Intersections.
        /// </summary>
        /// <param name="head"></param>
        /// <param name="tail"></param>
        /// <param name="name"></param>
        /// <returns></returns>
        public static Road CreateRoad(Intersection head, Intersection tail, string name = "Road")
        {
            Road road = new GameObject(name).AddComponent <Road>();

            road.Init(head, tail, head.city);
            return(road);
        }
    public void SetBlocksValue(bool setNumber = true)
    {
        Block[] blocks    = FindObjectsOfType <Block>();
        int     randomNum = 0;

        foreach (Block block in blocks)
        {
            block.Init();

            randomNum = UnityEngine.Random.Range(1, block.posX + block.posY + 2) * 2 + UnityEngine.Random.Range(1, 7);

            if (levelLoader.GetCurrentSceneName() == Constants.SCENE_NAME.TUTORIAL)
            {
                randomNum = block.GetTutorialBlocksValue(block.posX, block.posY);
            }

            if (setNumber)
            {
                block.SetBlockValue(randomNum.ToString());
            }

            if (block.posX == 1 && block.posY == 1 && levelLoader.GetCurrentSceneName() == Constants.SCENE_NAME.LEVEL)
            {
                int randomNumInDices = diceController.GetDiceNumberRandomly();
                block.SetBlockValue(randomNumInDices.ToString());
            }

            block.UpdateBlocksUI();
        }
    }
示例#20
0
    public override void OnUse(AbilityHitDetector AHD = null)
    {
        MeleeAbilityHitDetector MAHD = new GameObject().AddComponent <MeleeAbilityHitDetector>();

        MAHD.Init(this, "Enemy", UsedBy.AimDirection);
        base.OnUse(MAHD);
    }
示例#21
0
        public static Cam2 InitCamera(string name, bool loadConfig = true, bool reload = false)
        {
            if (cams.TryGetValue(name, out var cam))
            {
                if (reload)
                {
                    cam.settings.Reload();
                    return(cam);
                }

                throw new Exception("Already exists??");
            }

            cam = new GameObject($"Cam2_{name}").AddComponent <Cam2>();

            try {
                cam.Init(name, customScreen.AddNewView(), loadConfig);
            } catch {
                GameObject.DestroyImmediate(cam);
                throw;
            }

            cams[name] = cam;

            //Newly added cameras should always be the last child and thus on top
            //ApplyCameraValues(viewLayer: true);

            return(cam);
        }
示例#22
0
        public void CardViewObjectMovedToDeckObject()
        {
            var system = new PlayerDeckRenderingSystem(_contexts);

            var player = new GameObject().AddComponent <Player>();

            player.PlayerId = 1;

            var container = _contexts.game.CreateEntity();

            container.AddPlayer(player);
            var deck = new GameObject().AddComponent <CardContainer>();

            deck.Init();
            container.AddPlayerDeck(deck);

            var card = _contexts.card.CreateEntity();

            card.AddOwner(container);
            card.AddDeckCard(DeckCard.Move);
            card.AddView(new GameObject());

            system.Execute();

            Assert.AreEqual(container.playerDeck.PlayerDeckObject.ObjectContainer, card.view.GameObject.transform.parent.gameObject);
        }
示例#23
0
    public ParticleEmitter CreateEmitter(Vector3 position, float angle, Transform parent, GameObject particleSystem)
    {
        if (particleSystem == null)
        {
            return(null);
        }

        ParticleEmitter particle = new GameObject("Emitter").AddComponent <ParticleEmitter>();

        particle.transform.position         = position;
        particle.transform.localEulerAngles = new Vector3(0, 0, angle);
        if (parent != null)
        {
            particle.transform.parent = parent;
        }
        else
        {
            particlesObject           = GetParticlesObject();
            particle.transform.parent = particlesObject;
        }

        particle.Init(particleSystem);

        return(particle);
    }
        public IEnumerator theme_asset_is_null()
        {
            SceneManager.LoadScene(0);
            MapGenerator generator = GameObject.Find("MapGenerator").GetComponent <MapGenerator>();

            generator.Generate();
            GridAssetSpawner spawner     = generator.gameObject.GetComponent <GridAssetSpawner>();
            GridAssets       assets      = new GameObject().AddComponent <GridAssets>();
            GameObject       assetPrefab = new GameObject();

            GridAssetTheme[] themes = new GridAssetTheme[3];
            for (int i = 0; i < themes.Length; ++i)
            {
                themes[i] = ScriptableObject.CreateInstance <GridAssetTheme>();
                themes[i].SelectedTheme = GridAssetTheme.Theme.Forest;
            }
            themes[0].Sprites = new Sprite[9];
            for (int i = 0; i < themes[0].Sprites.Length; ++i)
            {
                themes[0].Sprites[i] = Sprite.Create(new Texture2D(10, 10), new Rect(), Vector2.down);
            }
            assetPrefab.AddComponent <Tile>();
            assets.Init(assetPrefab, themes);
            spawner.Init(assets);
            yield return(new WaitForEndOfFrame());

            Assert.Throws <System.Exception>(() => generator.Generate(), $"The {generator.MapTheme.ToString()} (attached to: {spawner.name}) is null!");
        }
示例#25
0
        public override void Create(Vector2 tileMercPos, JSONObject geo, Transform parent = null)
        {
            parent = parent ?? transform;
            var buildingCorners = new List <Vector3>();
            //foreach (var bb in geo["geometry"]["coordinates"].list)
            //{
            var bb = geo["geometry"]["coordinates"].list[0]; //this is wrong but cant fix it now

            for (int i = 0; i < bb.list.Count - 1; i++)
            {
                var c            = bb.list[i];
                var dotMerc      = GM.LatLonToMeters(c[1].f, c[0].f);
                var localMercPos = new Vector2(dotMerc.x - tileMercPos.x, dotMerc.y - tileMercPos.y);
                buildingCorners.Add(localMercPos.ToVector3xz());
            }

            //prevents duplicates coming from different tiles
            //it sucks yea but works for now, cant use propery/id in json for some reason
            var uniqPos = new Vector3(bb.list[0][1].f, 0, bb.list[0][0].f);

            if (_buildingDictionary.ContainsKey(uniqPos))
            {
                return;
            }

            try
            {
                var buildingCenter = buildingCorners.Aggregate((acc, cur) => acc + cur) / buildingCorners.Count;
                if (!_buildingDictionary.ContainsKey(buildingCenter))
                {
                    for (int i = 0; i < buildingCorners.Count; i++)
                    {
                        //using corner position relative to building center
                        buildingCorners[i] = buildingCorners[i] - buildingCenter;
                    }
                    var building = new GameObject().AddComponent <Building>();
                    var kind     = "";
                    if (geo["properties"].HasField("landuse_kind"))
                    {
                        kind = geo["properties"]["landuse_kind"].str;
                    }
                    if (geo["properties"].HasField("name"))
                    {
                        building.Name = geo["properties"]["name"].str;
                    }

                    building.Init(buildingCorners, kind, _settings);

                    building.name = "building";
                    building.transform.SetParent(parent, false);
                    building.transform.localPosition = buildingCenter;
                    _buildingDictionary.Add(uniqPos, building);
                }
            }
            catch (Exception ex)
            {
                Debug.Log(ex);
            }
            //}
        }
        void onEntityCreated(IContext context, IEntity entity)
        {
            var entityBehaviour = new GameObject().AddComponent <EntityBehaviour>();

            entityBehaviour.Init(context, entity);
            entityBehaviour.transform.SetParent(_gameObject.transform, false);
        }
示例#27
0
        void onEntityCreated(Pool pool, Entity entity)
        {
            var entityBehaviour = new GameObject().AddComponent <EntityBehaviour>();

            entityBehaviour.Init(pool, entity);
            entityBehaviour.transform.SetParent(_entitiesContainer, false);
        }
示例#28
0
    void CreateTracks()
    {
        Tracks = new Track[_Track.Length];
        float totalWheelbaseLenght = 0;

        for (int x = 0; x < _Wheelbase.Length; x++)
        {
            totalWheelbaseLenght += Wheelbase(x);
        }

        float firstTrackPosition = totalWheelbaseLenght / 2;

        for (int i = 0; i < _Track.Length; i++)
        {
            float trackPosition = firstTrackPosition;
            for (int x = 0; x < i; x++)
            {
                trackPosition -= Wheelbase(x);
            }
            Track t = new GameObject("Track" + i).AddComponent <Track>();
            t.transform.parent        = transform;
            t.transform.localPosition = new Vector3(trackPosition, 0, 0);
            t.transform.localRotation = Quaternion.identity;
            t.Width  = Track(i);
            t.Chasis = this;
            t.Init();
            Tracks[i] = t;
        }
    }
示例#29
0
        public void grid_generation_events_firing()
        {
            #region Arrange
            GridAssetTheme[] themes = new GridAssetTheme[1];
            themes[0] = ScriptableObject.CreateInstance <GridAssetTheme>();
            themes[0].SelectedTheme      = 0;
            themes[0].TileDecorations    = new TileDecoration[1];
            themes[0].TileDecorations[0] = ScriptableObject.CreateInstance <TileDecoration>();
            themes[0].Sprites            = new Sprite[9];
            for (int i = 0; i < themes[0].Sprites.Length; ++i)
            {
                themes[0].Sprites[i] = Sprite.Create(new Texture2D(10, 10), new Rect(), new Vector2(0, 0));
            }
            GridAssets assets      = new GameObject().AddComponent <GridAssets>();
            GameObject assetPrefab = new GameObject();
            assetPrefab.AddComponent <SpriteRenderer>();
            assetPrefab.AddComponent <Tile>();
            assetPrefab.GetComponent <Tile>().TilePositionOnGrid = 0;
            assets.Init(assetPrefab, themes);
            GridAssetSpawner spawner = new GameObject().AddComponent <GridAssetSpawner>();
            spawner.Init(assets);
            GridContainer container = new GameObject().AddComponent <GridContainer>();
            MapGenerator  generator = new GameObject().AddComponent <MapGenerator>();
            generator.Init(spawner, container, 0);
            bool gridGenerating = false;
            bool gridGenerated  = false;
            generator.OnMapGenerating += () => { gridGenerating = true; };
            generator.OnMapGenerated  += () => { gridGenerated = true; };
            #endregion

            Assert.DoesNotThrow(() => generator.Generate());
            Assert.True(gridGenerating);
            Assert.True(gridGenerated);
            Assert.NotNull(generator.Grid);
        }
示例#30
0
        //TODO combine/put all this data in separate data structure
        public void AppRun(AssetDataAbstractBuilder parInitialAssetBuilder,
                           IAssetDatabaseUpdateStrategy parInitialAssetDatabaseUpdateStrategy,
                           SoundManagerColleague parViewSoundManagerColleague, ViewProviderColleague parViewSideViewProviderColleague)
        {
            if (CurrentAppState.CurrentBaseAppState != EBaseAppStates.Created)
            {
                throw new Exception("Already launched application model cannot be launched again!");
            }

            CurrentAppState = new AppState()
            {
                CurrentBaseAppState = EBaseAppStates.Running
            };

            //initialize resources manager
            AppResourceManager = new ResourceManager(AppInfoConsts.ResourcesAssetsDirpath, parInitialAssetBuilder,
                                                     parInitialAssetDatabaseUpdateStrategy);

            // AppResourceManager.LoadAssetPack("packTest");
            // AppResourceManager.LoadAssetPack("gfx_smd");

            //   Console.WriteLine($"{AppResourceManager.GetAssetData<AssetDataText>("packTest", "/data.txt").TextData[0]}");

            //initialize sound manager
            ActualSoundManager = new AppSoundManager(AppResourceManager, this);
            ActualSoundManager.AppSoundManagerMediator.ViewSoundManagerColleague = parViewSoundManagerColleague;
            parViewSoundManagerColleague.Mediator = ActualSoundManager.AppSoundManagerMediator;
            ActualSoundManager.UpdateLibrary();

            AppViewProviderMediator.ViewProviderViewSide = parViewSideViewProviderColleague;

            InitializeHumanPlayers();

            /*
             * var testObj = AppGamePool.GetObject<GameObject>(typeof(GameObject));
             * testObj.Init(this);
             * Console.WriteLine($"{testObj.LinkedAppModel}");
             * testObj.DisableAndSendToPool();
             * Console.WriteLine($"{testObj.LinkedAppModel}");
             * Console.WriteLine($"{testObj.Test}");
             */

            GameObject launchingObject = AppGamePool.GetObject <GameObject>(typeof(GameObject));

            launchingObject.Init(this);

            launchingObject.AddComponent <AppStartComponent>(AppGamePool
                                                             .GetObject <AppStartComponent>(typeof(AppStartComponent)).Init(launchingObject));

            //var testComp = AppGamePool.GetObject<TestInputExitComponent>(typeof(TestInputExitComponent));
            //testComp.Init(testObj);

            //RegisterFixedUpdatableObject(new InputTestUpdatableObject(this));
            //new InputTestUpdatableObject(this);
            //TODO: Application startup logic
            //TODO: Settings loading
            //TODO: App state machine definitions
            //TODO: Multithreading for physics
        }
示例#31
0
        private void CreatePool(PoolConfig config)
        {
            Pool pool = new GameObject($"Pool ({ config.prefab.name })").AddComponent <Pool>();

            pool.Init(config);

            _pools.Add(config.prefab, pool);
        }
    public void AddFloor()
    {
        var tower = GetTower();

        var floorGO = new GameObject("Floor", typeof (Floor)).GetComponent<Floor>();
        floorGO.Init(FloorType.PointerPerTile);

        Assert.AreEqual(1, tower.Floors.Count());
    }
    public void CheckCanBuildIfCanBuild()
    {
        var builder = new FloorDescBuilder(FloorType.First);
        builder.MaxAmount = 1;

        Assert.AreEqual(1, builder.MaxAmount);

        var tower = GetTower();

        Assert.IsTrue(builder.CanCreateInTower(tower));

        var floor = new GameObject("Floor", typeof (Floor)).GetComponent<Floor>();
        floor.Init(FloorType.First);

        Assert.IsFalse(builder.CanCreateInTower(tower));

        builder.MaxAmount = 2;

        Assert.IsTrue(builder.CanCreateInTower(tower));
    }
示例#34
0
	public void CreateBoardUI () {
		board = new char[8,8];
		// Create new holder objects for easy organisation/deletion of board UI elements
		string holderName = "UI Holder";

		if (transform.FindChild (holderName)) {
			GameObject holderOld = transform.FindChild(holderName).gameObject;
			DestroyImmediate(holderOld);
		}

		Transform uiHolder = new GameObject (holderName).transform;
		boardVisibilityController = uiHolder.gameObject;
		uiHolder.parent = transform;

		Transform boardHolder = new GameObject ("Board Holder").transform;
		boardHolder.parent = uiHolder;

		Transform pieceHolder = new GameObject ("Piece Holder").transform;
		pieceVisibilityController = pieceHolder.gameObject;
		pieceHolder.parent = uiHolder;


		// Generate board and piece squares
		squares = new Renderer[8,8];
		pieceSquares = new SpriteRenderer[8,8];


		for (int i = 0; i < 8; i ++) {
			for (int j = 0; j < 8; j ++) {
				int x = GetIndex(j);
				int y = GetIndex(i);
				bool isLightSquare = SquareIsWhite(x,y);

				Vector2 position = new Vector2(-4.5f + x+1, -4.5f + y+1);
				string algebraicCoordinate = Definitions.fileNames[j].ToString() + Definitions.rankNames[i].ToString();


				// squares
				Transform newSquare = Instantiate((isLightSquare)?lightSquare:darkSquare, position, Quaternion.identity) as Transform;
				newSquare.parent = boardHolder;
				newSquare.name =  algebraicCoordinate;
				squares[x,y] = newSquare.GetComponent<Renderer>();

				// pieces
				PieceUI pieceUI = new GameObject(algebraicCoordinate).AddComponent<PieceUI>();
				pieceUI.Init(algebraicCoordinate, position);
				SpriteRenderer sprite = pieceUI.gameObject.AddComponent<SpriteRenderer>();
				sprite.transform.position = position;
				sprite.transform.parent = pieceHolder;
				pieceSquares[x,y] = sprite;
			}
		}

		// Create frame
		Transform newFrame = Instantiate(frame, Vector3.forward * 0.1f, Quaternion.identity) as Transform;
		newFrame.localScale = Vector3.one * (8 + frameSize);
		newFrame.parent = uiHolder;
		newFrame.GetComponent<Renderer> ().sharedMaterial.color = themes[themeIndex].frameColour;

		PaintBoard (themes[themeIndex].lightColour, themes[themeIndex].darkColour);
		InitializeSpriteDictionary ();
	}
示例#35
0
        void ReloadScene(Device device)
        {
            bool gameRunning = false;

            if (_map != null)
            {
                gameRunning = true;
                _map.Dispose();
            }

            string[] mapContent = File.ReadAllLines(_mapFile);
            _mapModifyDate = File.GetLastWriteTime(_mapFile);

            _map = Add(new GameObject());

            var y = mapContent.Length;
            for (var l = 0; l < mapContent.Length; l++)
            {
                var line = mapContent[l];
                for (int x = 0; x < line.Length; x++)
                {
                    var c = line[x];
                    string blockTexture = null;

                    switch (c)
                    {
                        case 'm':
                        case 'M':
                            if (_player == null || _oldStartPos != new Vector3(x, y, 0))
                            {
                                if (_player == null)
                                {
                                    _player = (Mario)Add(new Mario(device));
                                    var deathController = _player.SearchComponent<MainPlayerDeath>();
                                    GameObject dummyCameraTarget = null;
                                    deathController.OnDeathStarted += delegate
                                    {
                                        dummyCameraTarget = Add(new GameObject());
                                        dummyCameraTarget.Translate(_player.GlobalTransform.TranslationVector);
                                        _camera.SearchComponent<LookAtObject>().Target = dummyCameraTarget;
                                    };
                                    deathController.OnDeathFinalized += delegate
                                    {
                                        if (dummyCameraTarget != null)
                                        {
                                            dummyCameraTarget.Dispose();
                                            dummyCameraTarget = null;
                                        }
                                        _camera.SearchComponent<LookAtObject>().Target = _player;
                                        deathController.Reset();
                                        ReloadScene(device);
                                        _player.Enabled = true;
                                        _player.Transform = Matrix.Translation(_oldStartPos.X, _oldStartPos.Y + 0.5f, 0);
                                        _player.SearchComponent<RigidBody>().Momentum = Vector3.Zero;
                                        _player.SearchComponent<Blink>().IsActive = true;
                                        _camera.Transform = _player.Transform * Matrix.Translation(0, 0, -15);
                                    };
                                }

                                _player.Transform = Matrix.Translation(x, y + 0.5f, 0);
                                _oldStartPos = new Vector3(x, y, 0);
                            }
                            _player.IsSmall = c == 'm';
                            break;

                        case 'G':
                            _map.Add(new Goomba(device)).Translate(x, y, 0);
                            break;

                        case '?':
                            _map.Add(new ItemBlock(device)).Translate(x, y, 0);
                            break;

                        case 'B':
                            _map.Add(new BrickBlock(device)).Translate(x, y, 0);
                            break;

                        case 'P':
                            {
                                if (l > 0 && mapContent[l - 1].Length > x && mapContent[l - 1][x] == c)
                                    break;
                                var height = 1;
                                while (l + height < mapContent.Length && mapContent[l + height][x] == c)
                                    height++;

                                _map.Add(new Pipe(device, height)).Translate(x, y - (float)(height - 1) / 2, 0);
                                break;
                            }

                        case '|':
                            {
                                if (l > 0 && mapContent[l - 1].Length > x && mapContent[l - 1][x] == c)
                                    break;
                                var height = 1;
                                while (l + height < mapContent.Length && mapContent[l + height][x] == c)
                                    height++;

                                _map.Add(new Poll(device, height)).Translate(x, y - (float)(height - 1) / 2, 0);
                                break;
                            }

                        case 'D':
                            {
                                int width = 1;
                                while (x + 1 < line.Length && line[x + 1] == 'D')
                                {
                                    width++;
                                    x++;
                                }
                                _map.Add(new Trigger(o => o.Object.SendMessage("OnDeath", true),
                                    width, 1, 2,
                                    new Vector3(x - (float)(width - 1) / 2, y, 0)));
                                break;
                            }

                        case '^':
                            {
                                int width = 1;
                                while (x + 1 < line.Length && line[x + 1] == '^' && width < 3)
                                {
                                    width++;
                                    x++;
                                }
                                var size = width == 1 ? 2 : 4;
                                var sprite = _map.Add(new Objects.Sprite(device, "grass_" + width, size));
                                sprite.Transform = Matrix.Translation(x - 0.5f, y + size / 2 - 0.5f, -0.75f);
                                break;
                            }

                        case 'H':
                        case 'h':
                            {
                                var size = c == 'H' ? 8 : 4;
                                var sprite = _map.Add(new Objects.Sprite(device, "hill_" + size, size));
                                sprite.Transform = Matrix.Translation(x, y + size / 2 - 0.5f, 1);
                                break;
                            }

                        case '#':
                            {
                                var size = 8;
                                var sprite = _map.Add(new Objects.Sprite(device, "castle", size));
                                sprite.Transform = Matrix.Translation(x, y + size / 2 - 0.5f, 1);
                                break;
                            }

                        case 'C':
                            {
                                int width = 1;
                                while (x + 1 < line.Length && line[x + 1] == 'C' && width < 3)
                                {
                                    width++;
                                    x++;
                                }
                                var cloud = _map.Add(new Cloud(device, width));
                                cloud.Transform = Matrix.Scaling(2) * Matrix.Translation(x - (float)(width - 0.5f), y, 5f);
                                break;
                            }

                        case 'W':
                            {
                                int width = 1;
                                while (x + 1 < line.Length && line[x + 1] == 'W')
                                {
                                    width++;
                                    x++;
                                }
                                var water = _map.Add(new Water(device, 10 * width, 20));
                                water.Transform *= Matrix.Scaling(0.1f)
                                              * Matrix.Translation(x - (float)(width - 1) / 2, y, 0);
                                break;
                            }

                        case 'S': blockTexture = "solid"; break;
                        case 'F': blockTexture = "floor"; break;
                    }

                    if (blockTexture != null)
                    {
                        int width = 1;
                        while (x + 1 < line.Length && line[x + 1] == c)
                        {
                            width++;
                            x++;
                        }
                        var obj = _map.Add(new Block(device, width, 1, 2, blockTexture));
                        obj.Translate(x - (float)(width - 1) / 2, y, 0);
                    }
                }

                y--;
            }

            if (gameRunning)
                _map.Init();
        }
示例#36
0
    public void AddObjectToLane(string name, int laneId, int _x, EnemySettings settings )
    {
        //  print("new : " + name);
        Enemy enemy = null;

        switch (name)
        {
            case "CoinParticles":
                enemy = Data.Instance.enemiesManager.GetEnemy("CoinParticles");
                enemy.GetComponent<CoinsParticles>().particles.Emit(settings.qty);
                enemy.GetComponent<CoinsParticles>().InitParticles();
                break;
            case "Skate":
                enemy = Data.Instance.enemiesManager.GetEnemy("Skate");
                break;
            case "ObstacleGeneric":
                enemy = Data.Instance.enemiesManager.GetEnemy("ObstacleGeneric");
                break;
            case "Victim":
                enemy = Data.Instance.enemiesManager.GetEnemy("Victim");
                break;
            case "RatiJump":
                enemy = Data.Instance.enemiesManager.GetEnemy("RatiJump");
                break;
            case "RatiEscudo":
                enemy = Data.Instance.enemiesManager.GetEnemy("RatiEscudo");
                break;
            case "PowerUp":
                if(Game.Instance.gameManager.characterManager.character.powerupManager.type == PowerupManager.types.NONE)
                    enemy = Data.Instance.enemiesManager.GetEnemy("PowerUp");
                break;
            case "Coin":
                enemy = Data.Instance.enemiesManager.GetEnemy("Coins");
                break;
            case "ExplosionRatis":
                enemy = Data.Instance.enemiesManager.GetEnemy("ExplosionRatis");
                break;
            case "Resorte":
                enemy = Data.Instance.enemiesManager.GetEnemy("Resorte");
                break;
            case "PowerDown":
              //  if (Game.Instance.gameManager.characterManager.character.powerupManager.type == PowerupManager.types.NONE)
                    enemy = Data.Instance.enemiesManager.GetEnemy("PowerDown");
                break;
        }
        if (enemy == null)
            return;

        GameObject go = enemy.gameObject;
        sortInLayersByLane(go, laneId);

        go.transform.SetParent(all[laneId].transform);
        go.transform.localPosition = new Vector3(_x, 0, 0);
        enemy.Init(settings, laneId);
    }