protected override void DoActionIdle() { //m_tempTargeters = null; //Entity.State = EntityStateType.Idle; //m_timePassed = BattleRandom.Range(3f, 10f); AuxRecycleAllBulletLoopEffect(); m_tempTargeters = null; Entity.State = EntityStateType.Idle; m_timePassed = BattleRandom.Range(0.5f, 1.5f); #if UNITY_EDITOR BattleManager.logWaitTime.Add(GameRecord.Frame + ":timePassed:" + m_timePassed); #endif // UNITY_EDITOR if (Entity.AimTarget) { // 背向地图中央 var center = new Vector2(Constants.WIDTH / 2, Constants.HEIGHT / 2); var dir = Entity.GetCurrentPositionCenter() - center; var angle = MathUtil2D.GetAngleFromVector(IsoHelper.TileDirectionToScreenDirection(dir)); Entity.PlayAnimationAtScreenAngle(AnimationNames.Stand, BattleRandom.Range(angle - 45, angle + 45)); } else { Entity.PlayAnimation(AnimationNames.Stand); } }
public override void Update(float dt) { if (!showingGatherIcon && nextShowIconTime < ServerTime.Instance.Now()) { showingGatherIcon = true; //显示icon if (!gatherIcon) { gatherIcon = (GameObject)ResourceManager.Instance.LoadAndCreate("Homeland/BuilderUI/CollectResIcon"); IsoHelper.FaceToWorldCamera(gatherIcon.transform); CollectResIconUI view = gatherIcon.GetComponent <CollectResIconUI>(); view.OnClickEvent += GatherResource; view.SpriteName = Entity.model.resourceType.ToString(); Entity.view.AddSubView(gatherIcon, new Vector3(0, Constants.COLLECTABLE_ICON_VERTICAL_HEIGHT, 0)); //装满了 if (DataCenter.Instance.GetResource(Entity.model.resourceType) >= DataCenter.Instance.GetMaxResourceStorage(Entity.model.resourceType)) { gatherIcon.GetComponentInChildren <UISprite>().color = Color.black; } } gatherIcon.SetActive(true); } }
/// <summary> /// 移动建筑物到指定位置 /// </summary> /// <param name="x"></param> /// <param name="y"></param> public void DraggingBuildingTo(int x, int y) { //REMARK 一个建筑格子占2个小格子 if (x % 2 == 1) { x -= 1; } if (y % 2 == 1) { y -= 1; } if (currentBuilding.GetTilePos().x == x && currentBuilding.GetTilePos().y == y) { return; } if (!draged) { draged = true; EventDispather.DispatherEvent(GameEvents.BEGIN_DRAG_BUILDING); } currentBuilding.SetTilePosition(new TilePoint(x, y)); currentBuilding.view.transform.position = currentBuilding.GetRenderPosition(); var pos = IsoHelper.GridToPosition(x, y); buildableView.gameObject.SetActive(true); buildableView.transform.position = pos; IsoHelper.MoveAlongCamera(buildableView.transform, 5f); buildArrow.transform.position = pos; // IsoHelper.MoveAlongCamera(buildArrow.transform,-1f); buildConfirm.transform.position = pos; IsoHelper.MoveAlongCamera(buildConfirm.transform, -1f); // 是否可以建造 buildableView.SetBuildable(IsoMap.Instance.CanPlaceBuilding(x, y, currentBuilding.width, currentBuilding.height)); }
private void SetRange(float range, float blindRange) { if (rangeView == null) { rangeView = transform.FindChild("Range"); rangeView.localPosition = IsoHelper.MoveAlongCamera(Vector3.zero, Constants.RANGE_Z_ORDER); } var rangeScale = range * 0.1f; rangeView.localScale = new Vector3(rangeScale, rangeScale, rangeScale);//素材占半径占10格子 r/10 if (blindRange > 0) { if (blindRangeView == null) { blindRangeView = ((GameObject)Instantiate(rangeView.gameObject)).transform; blindRangeView.parent = transform; blindRangeView.localPosition = IsoHelper.MoveAlongCamera(Vector3.zero, Constants.BLIND_RANGE_Z_ORDER); var sprites = blindRangeView.GetComponentsInChildren <tk2dSprite>(); foreach (var sprite in sprites) { sprite.color = new Color(0.8f, 0.2f, 0.2f); } } blindRangeView.gameObject.SetActive(true); var blindRangeScale = blindRange * 0.1f; blindRangeView.localScale = new Vector3(blindRangeScale, blindRangeScale, blindRangeScale); } else { if (blindRangeView != null) { blindRangeView.gameObject.SetActive(false); } } }
static void deleteOldBackUps_NOTUSED_DEMO_ONLY() { return; #if DEBUG var keepCnt = 64; #else int keepCnt = 32; #endif #if ISO var dir = IsoHelper.GetIsoFolder(); #else var dir = Path.GetDirectoryName(MainVmJsonFile); #endif var all = new DirectoryInfo(dir).GetFiles($@"{typeof(MainVM).Name}.{DateTime.Now:yy.}*{_ext}"); var ttl = all.Count(); if (ttl <= keepCnt) { return; } var del = all.OrderBy(r => r.LastWriteTime).Take(ttl - keepCnt); Debug.WriteLine($@">>Deleting: {dir} {typeof(MainVM).Name}.{DateTime.Now:yy.}*{_ext} { del.Count()} / {all.Count()}"); foreach (var f in del) { Debug.WriteLine($">>Deleting: {f}"); f.Delete(); } }
/// <summary> /// save the settings and all the feed data to isolated storage /// </summary> public void SaveState() { settings.SelectedFeed = SelectedFeed; settings.SelectedItem = SelectedItem; string data = SerializeSettings(settings); IsoHelper.SaveIsoString(ISO_STORE_FILE, data); }
protected override void OnLongPress(Vector2 screenPosition) { int x, y; if (IsoHelper.ScreenPositionToEdge(screenPosition, out x, out y)) { State = SpawnState.Spawn; } }
void SpawnAtScreenPosition(Vector2 pos) { int x, y; IsoHelper.ScreenPositionToEdge(pos, out x, out y); x = Mathf.Clamp(x, 0, Constants.EDGE_WIDTH - 1); y = Mathf.Clamp(y, 0, Constants.EDGE_HEIGHT - 1); BattleManager.Instance.PlayerPlaceSoldierOrSkill(spawnId, x, y); }
public Point screenToIso(Vector2 p) { var cp = mainCamera.transform.DerivedPosition; var adjusted = cp + p; var worldIso = IsoHelper.FromDiamondIso(adjusted); var iso = worldIso / blockSizeOver2; return(iso.ToPoint()); }
public TileEntity GetBuildingAtScreenPoint(Vector3 screenPoint) { int mx, my; if (IsoHelper.ScreenPositionToGrid(screenPoint, out mx, out my)) { return(GetAnyBuildingEntity(mx, my)); } return(null); }
public void Init(int size) { var offset = 2f; var height = size + 1; left.transform.localPosition = new Vector3(0, height, offset); right.transform.localPosition = new Vector3(offset, height, 0); IsoHelper.FaceToWorldCamera(left.transform); IsoHelper.FaceToWorldCamera(right.transform); }
public void SetHpBarPercent(float percent) { if (hpBar == null) { hpBar = ((GameObject)ResourceManager.Instance.LoadAndCreate("Misc/HPBar")).GetComponent <tk2dUIProgressBar>(); AddSubView(hpBar.gameObject, new Vector3(0, Constants.HPBAR_VERTICAL_HEIGHT, 0)); IsoHelper.FaceToWorldCamera(hpBar.transform); } hpBar.Value = percent; }
public void SelectBuilding(TileEntity building) //临时去掉占地数据,记录原始位置,添加选择状态 { building.OnSelected(); oldX = building.GetTilePos().x; oldY = building.GetTilePos().y; currentBuilding = building; IsoMap.Instance.BeginMoveEntity(building); buildableView.Init(building.width); buildArrow.Init(building.width); buildArrow.gameObject.SetActive(true); buildArrow.transform.position = IsoHelper.GridToPosition(building.GetTilePos()); }
protected override void OnPan(Vector2 screenPosition, Vector3 deltaPosition) { isPanned = true; if (isDragging) { int mx, my; IsoHelper.ScreenPositionToGrid(screenPosition, out mx, out my);//REMARK 忽略边界检查,允许多拽出边界 DraggingBuildingTo(mx - dragDeltaX, my - dragDeltaY); } else { base.OnPan(screenPosition, deltaPosition); } }
private void CheckDragBuilding(Vector2 screenPosition) { int mx, my; IsoHelper.ScreenPositionToGrid(screenPosition, out mx, out my);//REMARK 忽略边界检查 int dx = mx - currentBuilding.GetTilePos().x; int dy = my - currentBuilding.GetTilePos().y; if (dx >= 0 && dx < currentBuilding.width && dy >= 0 && dy < currentBuilding.height) { dragDeltaX = dx; dragDeltaY = dy; isDragging = true; } }
public static void Save <T>(T o, string filenameONLY = null, IsolatedStorageScope iss = IsoConst.PdFls) { try { var isoStore = IsolatedStorageFile.GetStore(iss, null, null); using (var isoStream = new IsolatedStorageFileStream(IsoHelper.GetSetFilename <T>(filenameONLY, "json"), FileMode.Create, isoStore)) { using (var streamWriter = new StreamWriter(isoStream)) { new DataContractJsonSerializer(typeof(T)).WriteObject(streamWriter.BaseStream, o); // new XmlSerializer(o.GetType()).Serialize(streamWriter, o); streamWriter.Close(); } } } catch (Exception ex) { ex.Log(); throw; } }
public GameEffect(int effectId, string effectName, Vector3 pos, bool loop) { this.effectId = effectId; var prefab = (GameObject)ResourceManager.Instance.Load("Effects/" + effectName); if (prefab != null) { m_view = PoolManager.Instance.Spawn(prefab); } if (m_view != null) { m_view.transform.position = pos; IsoHelper.MoveAlongCamera(m_view.transform, Constants.EFFECT_Z_ORDER); IsoHelper.FaceToWorldCamera(m_view.transform); // REMARK:循环效果应该手动释放 if (!loop) { var trigger = m_view.GetComponent <EffectTrigger>(); if (trigger != null) { trigger.CompleteEvent += trigger_CompleteEvent; } else { //TODO 临时方案 m_animator = m_view.GetComponentInChildren <tk2dSpriteAnimator>(); if (m_animator != null) { m_animator.AnimationCompleted = OnAnimationCompleted; m_animator.DefaultClip.wrapMode = (loop ? tk2dSpriteAnimationClip.WrapMode.Loop : tk2dSpriteAnimationClip.WrapMode.Once); if (!m_animator.playAutomatically) { m_animator.Play(m_animator.DefaultClip); } } else { Debug.LogWarning(string.Format("effect {0} miss animator...", effectName)); } } } } }
public void Init(int size) { // tl.transform.localPosition = new Vector3(-IsoHelper.TILE_HALF_WIDTH + IsoHelper.TILE_HALF_WIDTH * 0.5f * (size-1),IsoHelper.TILE_HALF_HEIGHT + IsoHelper.TILE_HALF_HEIGHT * 0.5f * (size-1)); // bl.transform.localPosition = new Vector3(-IsoHelper.TILE_HALF_WIDTH + IsoHelper.TILE_HALF_WIDTH * 0.5f * (size-1),-IsoHelper.TILE_HALF_HEIGHT - IsoHelper.TILE_HALF_HEIGHT * 0.5f * (size-1)); // tr.transform.localPosition = new Vector3(IsoHelper.TILE_HALF_WIDTH + IsoHelper.TILE_HALF_WIDTH * (size - 1) + IsoHelper.TILE_HALF_WIDTH * 0.5f * (size-1), IsoHelper.TILE_HALF_HEIGHT + IsoHelper.TILE_HALF_HEIGHT * (size - 1) - IsoHelper.TILE_HALF_HEIGHT * 0.5f * (size-1)); // br.transform.localPosition = new Vector3(IsoHelper.TILE_HALF_WIDTH + IsoHelper.TILE_HALF_WIDTH * (size - 1) + IsoHelper.TILE_HALF_WIDTH * 0.5f * (size-1), -IsoHelper.TILE_HALF_HEIGHT - IsoHelper.TILE_HALF_HEIGHT * (size - 1) + IsoHelper.TILE_HALF_HEIGHT * 0.5f * (size-1)); var center = size * 0.5f - 0.5f; var dist = size * 0.5f + 0.5f; tl.transform.localPosition = new Vector3(center, 0, center + dist); tr.transform.localPosition = new Vector3(center + dist, 0, center); bl.transform.localPosition = new Vector3(center - dist, 0, center); br.transform.localPosition = new Vector3(center, 0, center - dist); IsoHelper.FaceToWorldCamera(tl.transform); IsoHelper.FaceToWorldCamera(bl.transform); IsoHelper.FaceToWorldCamera(tr.transform); IsoHelper.FaceToWorldCamera(br.transform); }
private void UpdateDestroy(float dt) { // 死亡了 但尚未置于死亡状态(则释放) if (currentHp <= 0 && this.State != EntityStateType.Dead) { this.State = EntityStateType.Dead; if (GameWorld.Instance.worldType == WorldType.Battle || GameWorld.Instance.worldType == WorldType.Replay) { BattleManager.Instance.OnEntityDestroy(this); } //创建战斗时被销毁的残渣 if (EntityTypeUtil.IsAnyBuilding(entityType)) { GameObject.Destroy(view.body.gameObject); GameObject.Destroy(view.hpBar.gameObject); if (view.shadow != null) { GameObject.Destroy(view.shadow.gameObject); } GameEffectManager.Instance.AddEffect("Phouse_die", GetRenderPosition());//TODO var destroyView = (GameObject)ResourceManager.Instance.LoadAndCreate("Misc/DestroyedBuildingView"); view.AddSubView(destroyView, Vector3.zero); IsoHelper.FaceToWorldCamera(destroyView.transform); IsoHelper.MoveAlongCamera(destroyView.transform, 19); Destroy(false); IsoMap.Instance.RemoveBuildingMapData(this);//移除占地数据,对象还是在IsoMap中 } else if (EntityTypeUtil.IsAnyActor(entityType)) { GameEffectManager.Instance.AddEffect("Psoldier_die", GetRenderPosition()); IsoMap.Instance.DelayRemoveEntity(this); Destroy(); } else { IsoMap.Instance.DelayRemoveEntity(this); Destroy(); } } }
public void Init(int size) { foreach (Transform child in transform) { Destroy(child.gameObject); } for (int i = 0; i < size; i++) { for (int j = 0; j < size; j++) { var tile = Instantiate(smallTilePrefab, IsoHelper.GridToPosition(i, j), Quaternion.identity) as GameObject; tile.transform.position = IsoHelper.GridToPosition(i, j); var localPos = tile.transform.localPosition; tile.transform.parent = transform; tile.transform.localPosition = localPos; IsoHelper.FaceToWorldCamera(tile.transform); } } }
virtual public void Init() { if (!inited) { inited = true; view.Init(); view.transform.position = GetRenderPosition(); if (EntityTypeUtil.IsFlyable(model.entityType)) { view.body.Translate(0, Constants.FLY_HEIGHT, 0, Space.Self); IsoHelper.MoveAlongCamera(view.shadow, -2 * Constants.SHADOW_Z_ORDER);//空军的阴影显示在建筑上面 } foreach (var tileEntityComponent in components) { tileEntityComponent.Init(); } } }
public void Init(int size) { //left fence for (int i = 0; i < size; i++) { var go = new GameObject("fence"); var sprite = go.AddComponent <tk2dSprite>(); sprite.SetSprite(spriteCollection.spriteCollection, "buildFence"); sprite.transform.parent = transform; sprite.transform.localPosition = new Vector3(i * 2, 0, 0); IsoHelper.FaceToWorldCamera(sprite.transform); } //right fence for (int i = 1; i < size; i++) { var go = new GameObject("fence"); var sprite = go.AddComponent <tk2dSprite>(); sprite.SetSprite(spriteCollection.spriteCollection, "buildFence"); sprite.transform.parent = transform; sprite.transform.localPosition = new Vector3(0, 0, i * 2); IsoHelper.FaceToWorldCamera(sprite.transform); } //lines for (int i = 0; i < size - 1; i++) { var go = new GameObject("fenceLineLeft"); var sprite = go.AddComponent <tk2dSprite>(); sprite.SetSprite(spriteCollection.spriteCollection, "buildFenceLeft"); sprite.transform.parent = transform; sprite.transform.localPosition = new Vector3(0, 0, i * 2); IsoHelper.FaceToWorldCamera(sprite.transform); var goRight = new GameObject("fenceLineRight"); var spriteRight = goRight.AddComponent <tk2dSprite>(); spriteRight.SetSprite(spriteCollection.spriteCollection, "buildFenceRight"); spriteRight.transform.parent = transform; spriteRight.transform.localPosition = new Vector3(i * 2, 0, 0); IsoHelper.FaceToWorldCamera(sprite.transform); } }
virtual public void Init(bool faceToMainCamera = true) { _animationFinishCallbacks = null; if (faceToMainCamera) { foreach (Transform child in transform) { if (child.GetComponent <tk2dSprite>() != null) { IsoHelper.FaceToWorldCamera(child); if (child.name.IndexOf("Shadow") != -1) { shadow = child; IsoHelper.MoveAlongCamera(child, Constants.SHADOW_Z_ORDER); } } } } body = transform.FindChild("body"); if (body == null)//多状态的 { SwitchBody(1); } else { animator = body.GetComponentInChildren <tk2dSpriteAnimator>(); //attachPoint = body.GetComponentInChildren<tk2dSpriteAttachPoint>(); this.effAttachPoint = body.GetComponentInChildren <tk2dSpriteAttachPoint>(); //RegisterSpriteChangeEvent(); } if (animator != null) { animator.AnimationCompleted = ontk2dSpriteAnimatorCallback_Completed; animator.AnimationEventTriggered = OnAnimationEventTriggered; animator.enabled = false; // REMARK:禁用掉然后手动更新 } }
/// <summary> /// load the settings and all the feed data from isolated storage /// </summary> public void LoadState(bool forceRefresh = false) { IsBusy = true; if (forceRefresh) { settings = GetSettingsFromConfigFile(); InitializeProperties(); } else { var isoData = IsoHelper.LoadIsoString(ISO_STORE_FILE); if (isoData == null || isoData.Length == 0) { settings = GetSettingsFromConfigFile(); InitializeProperties(); } else { var configSettings = GetSettingsFromConfigFile(); var isoSettings = DeserializeSettings(isoData); if (isoSettings.Version < configSettings.Version) { settings = configSettings; InitializeProperties(); } else { settings = isoSettings; InitializeProperties(); } } } IsBusy = false; }
public void Start() { IsoHelper.FaceToWorldCamera(transform); IsoHelper.MoveAlongCamera(transform, zOrder); }
private void Start() { isoHelper = GetComponent <IsoHelper>(); createMatrix(); }
public static TileEntity Create(OwnerType owner, EntityModel model, bool isFriendly = false) { var entityObj = LoadAndCreate(model); var tileEntity = new TileEntity(); tileEntity.owner = owner; tileEntity.model = model; tileEntity.State = EntityStateType.Idle; tileEntity.aiType = (EntityAiType)model.targetType; tileEntity.entityType = model.entityType; tileEntity.Friendly = isFriendly; if (model.tileSize > 0) { tileEntity.width = tileEntity.height = model.tileSize * 2; // REMARK:建筑实际占用格子扩大2倍 } else { tileEntity.width = tileEntity.height = 1; } tileEntity.currentHp = tileEntity.maxHp = Mathf.Max(model.hp, 1); // REMARK:这里设置最大hp的最小值为1,不然对于工人等直接就是dead状态。 tileEntity.animationNamePrefix = model.nameForResource + "_"; // REMARK:建筑按照格子建造、士兵按照边行走(所以士兵位置比建筑偏移(0.5,0.5)) if (EntityTypeUtil.IsAnyActor(model.entityType)) { tileEntity.renderTileSizeOffset = new Vector2((tileEntity.width * 0.5f) - 1.0f, (tileEntity.height * 0.5f) - 1.0f); } else { tileEntity.renderTileSizeOffset = new Vector2((tileEntity.width * 0.5f) - 0.5f, (tileEntity.height * 0.5f) - 0.5f); } tileEntity.view = entityObj.GetComponent <EntityViewComponent>(); if (tileEntity.view == null) { if (EntityTypeUtil.IsAnyActor(tileEntity.entityType)) { tileEntity.view = entityObj.AddComponent <ActorView>(); } else if (EntityTypeUtil.IsAnyTower(tileEntity.entityType)) { tileEntity.view = entityObj.AddComponent <TowerView>(); } else { tileEntity.view = entityObj.AddComponent <EntityViewComponent>(); } } if (EntityTypeUtil.IsAnyBuilding(tileEntity.entityType))//[建筑类] { //1格以上建筑有地皮 if (model.tileSize > 2) { var floorBase = (GameObject)ResourceManager.Instance.LoadAndCreate(model.raceType + "/Entities/Misc/Floor4");//地皮 tileEntity.view.AddSubView(floorBase, Vector3.zero); IsoHelper.FaceToWorldCamera(floorBase.transform); IsoHelper.MoveAlongCamera(floorBase.transform, Constants.FLOOR_Z_ORDER); floorBase.transform.localScale = Vector3.one * model.tileSize / 4;//REMARK 现有素材占4x4个tilesize } if (EntityTypeUtil.IsBarracks(model)) { tileEntity.blockingRange = 3; } else { tileEntity.blockingRange = model.tileSize * 2 - 1; } tileEntity.AddComponent <ConstructBuildingComponent>(); if (model.entityType == EntityType.Tower) { tileEntity.AddComponent <TowerComponent>(); } else if (model.entityType == EntityType.Wall) { tileEntity.AddComponent <WallComponent>(); } else if (EntityTypeUtil.IsGatherResourceBuilding(model)) { tileEntity.AddComponent <GatherResourceBuildingComponent>(); } else if (EntityTypeUtil.IsStorageResoruceBuilding(model)) { tileEntity.AddComponent <ResourceStorageBuildingComponent>(); } else if (EntityTypeUtil.IsArmyShop(model)) { tileEntity.AddComponent <ProductSoldierBuildingComponent>(); } else if (EntityTypeUtil.IsSkillShop(model)) { tileEntity.AddComponent <ProductSkillBuildingComponent>(); } else if (EntityTypeUtil.IsWorkerHouse(model)) { tileEntity.AddComponent <WorkerHouseComponent>(); } else if (EntityTypeUtil.IsFederal(model)) { tileEntity.AddComponent <FederalComponent>(); } else if (EntityTypeUtil.IsResearch(model)) { tileEntity.AddComponent <ResearchBuildingComponent>(); } } else if (EntityTypeUtil.IsAnyActor(model.entityType)) //[角色类] { // 战斗模式 家园模式 通用组件 tileEntity.AddComponent <ActorMoveComponent>(); if (GameWorld.Instance.worldType == WorldType.Home || GameWorld.Instance.worldType == WorldType.Visit) //家园模式 或者 访问模式 { // 家园模式 // 工人(添加工人组件&添加到工人小屋中) if (EntityTypeUtil.IsWorker(model)) { tileEntity.AddComponent <WorkmanComponent>(); var houseComp = IsoMap.Instance.GetWorkerHouseComponent(); Assert.Should(houseComp != null, "worker house is not exist..."); houseComp.AddAWorkman(tileEntity); } else { tileEntity.AddComponent <ArmyComponent>(); } } else //战斗模式 { tileEntity.AddComponent <GameBufferComponent>(); // 设置士兵的监视范围(寻找目标用) REMARK:设定为4.0秒可以移动的范围 tileEntity.monitorRange = Mathf.Clamp(model.speed * 4.0f, 5.0f, 20.0f); if (EntityTypeUtil.IsBombMan(model)) { tileEntity.monitorRange = 0.0f; // 暂时不限制炸弹人 tileEntity.AddComponent <BombManComponent>(); } else if (EntityTypeUtil.IsCurer(model)) { tileEntity.AddComponent <CurerComponent>(); } else if (isFriendly) // 友军/援军 { tileEntity.AddComponent <FriendComponent>(); } else { tileEntity.AddComponent <ActorComponent>(); } // 除【友军/援军】以外添加拆墙组件(REMARK:友军/援军不可拆墙) if (!isFriendly) { tileEntity.AddComponent <ActorDestroyWallComponent>(); } } } else if (EntityTypeUtil.IsAnyTrap(model)) // [陷阱类] { tileEntity.AddComponent <TrapComponent>(); } Assert.Should((tileEntity.blockingRange == 0 || (tileEntity.blockingRange % 2) == 1), "invalid blockingRange..."); Assert.Should(tileEntity.blockingRange <= tileEntity.width - 1 && tileEntity.blockingRange <= tileEntity.height - 1, "invalid blockingRange..."); return(tileEntity); }
public void Init(GuardAreaValue[,] guardMap) { transform.position = IsoHelper.MoveAlongCamera(Vector3.zero, Constants.GUARD_VIEW_Z_ORDER); foreach (Transform child in transform) { Destroy(child.gameObject); } var tile01 = (GameObject)ResourceManager.Instance.Load("Misc/Tile01"); var tile02 = (GameObject)ResourceManager.Instance.Load("Misc/Tile02"); var tile03 = (GameObject)ResourceManager.Instance.Load("Misc/Tile03"); for (int i = 0; i < Constants.EDGE_WIDTH; i++) { for (int j = 0; j < Constants.EDGE_HEIGHT; j++) { GameObject prefab = null; var value = guardMap[i, j]; var angle = 0; if (value == GuardAreaValue.BottomRight) { prefab = tile02; angle = 0; } else if (value == GuardAreaValue.BottomLeft) { prefab = tile02; angle = 90; } else if (value == GuardAreaValue.TopLeft) { prefab = tile02; angle = 180; } else if (value == GuardAreaValue.TopRight) { prefab = tile02; angle = -90; } else if (value == GuardAreaValue.Right) { prefab = tile01; angle = 0; } else if (value == GuardAreaValue.Bottom) { prefab = tile01; angle = 90; } else if (value == GuardAreaValue.Left) { prefab = tile01; angle = 180; } else if (value == GuardAreaValue.Top) { prefab = tile01; angle = -90; } else if (value == GuardAreaValue.Zero) { if (i + 1 < Constants.EDGE_WIDTH && j - 1 > 0 && guardMap[i + 1, j - 1] == GuardAreaValue.NIL) { prefab = tile03; angle = 0; } else if (i - 1 > 0 && j - 1 > 0 && guardMap[i - 1, j - 1] == GuardAreaValue.NIL) { prefab = tile03; angle = 90; } else if (i - 1 > 0 && j + 1 < Constants.EDGE_HEIGHT && guardMap[i - 1, j + 1] == GuardAreaValue.NIL) { prefab = tile03; angle = 180; } else if (i + 1 < Constants.EDGE_WIDTH && j + 1 < Constants.EDGE_HEIGHT && guardMap[i + 1, j + 1] == GuardAreaValue.NIL) { prefab = tile03; angle = -90; } } if (prefab != null) { var v1 = Instantiate(prefab, new Vector3(0, 0, 0), Quaternion.identity) as GameObject; v1.transform.parent = this.transform; v1.transform.localRotation = Quaternion.Euler(90, angle, 0); v1.transform.localPosition = new Vector3(i - 0.5f, 0, j - 0.5f); if (GameWorld.Instance.worldType == WorldType.Battle) { v1.GetComponent <tk2dSprite>().color = new Color(0.8f, 0.2f, 0.2f); } } } } }
void onF7(object o) { Process.Start("Explorer.exe", IsoHelper.GetIsoFolder()); }
public void PlayAnimationFaceToTile(string animationTypeName, TilePoint target, float fps = 0.0f) { view.PlayAnimation(animationNamePrefix + animationTypeName, GetDir5AndMirrorFlagFromDir8(GetDir8FromScreenAngle(MathUtil2D.GetAngleFromVector(IsoHelper.TileDirectionToScreenDirection(new Vector2(target.x - tilePos.x, target.y - tilePos.y))))), fps); }